localStorage - штука для удобного кеширования, а не обязательная часть бизнес логики.
Вот что сделает ваш сайт, если у пользователя отключен localStorage? Вариантов два - получить корзину с сервера либо упасть с ошибкой.
А что будет, если пользователь очистит localStorage? Если у него место на диске кончится? Если он добавил товары с ноута, потом зашел на сайт с телефона,и хочет оплатить, а localStorage в телефоне пуст?
Попробуйте, что сделает в таком случае яндекс-маркет.
Никто не мешает записать в localStorage товар с отметкой "id=null", отправить запрос на сервер, и после ответа от сервера, что все ок, заказ в базе, дописать в localStorage его id. И при следующем открытии страницы, если вы нашли товары с id=null - повторить попытку синхронизации с сервером.
Заодно неплохо бы продумать ситуацию, когда пользователь добавил в корзину два товара, потом с телефона добавил еще два, а потом зашел с третьего устройства, и что он в таком случае увидит?
теперь появляются догадки, почему движки интернет-магазинов не такие простые как хотелось бы. В одной только корзине куча проблем :)