1) Single Level of Abstraction
localStorage - низкоуровневый api,
restore - высокоуровневый api
2) DI
localStorage - внешняя зависимость с состоянием
3)
Обеспечение уникальности ключей?
Версионирование формата и миграции?
Получение из другого источника?
Если этот источник не синхронный что изменится?
Если данные испорчены, как обрабатывать ошибку?
Как протестировать?
Вот и ответ.
для тех кому важны миграции кстати есть indexeddb, в котором необходимость обеспечивать миграцию данных заложена изначально
localStorage это как S3 — что-то по быстрому накидать и залить, не парясь)
но вот про di прям в точку — с помощью di в effect.use можно заменить локалстораж на код для для в nodejs