Executando verificação de segurança...
2

Não se limite ao localStorage

O localStorage é um recurso que acredito que todo desenvolvedor web deveria conhecer e que a maioria dos aplicativos deveria usar. No entanto, ele não é a única solução para armazenar dados no navegador e também não é a melhor solução para todos os casos.

Cookies

Os cookies são uma ótima solução para armazenar dados com mais segurança, quando nem o usuário nem algum script mal intencionado deve ser capaz de acessar a informação, e para quando o dado também deve estar disponível no servidor.
Um dos problemas da sua solução para dark theme é que, quando o aplicativo inicia, ele não sabe qual é a preferência de tema escuro do usuário até ler o localStorage. Isso pode causar o problema de muitos aplicativos piscando com um tema diferente quando iniciam e, em seguida, trocando rapidamente.
Os cookies são enviados em todas as requisições feitas para o seu site, inclusive na primeira, então seu aplicativo pode ser enviado para o cliente já com a opção de tema escolhida da última vez.

IndexedDB

IndexedDB é uma solução de armazenamento assíncrono do tipo chave-valor, onde o valor pode ser qualquer coisa compatível com um valor em um JSON, ou seja, sem a necessidade de stringify ou parse. Além disso, o tamanho disponível costuma ser muito maior do que o do localStorage (o limite do localStorage costuma ser de 5MB, enquanto o do indexedDB costuma ser de 20% a 80% do espaço livre em disco).
Um dos problemas do seu exemplo do carrinho de compras é que, como o localStorage é síncrono, dependendo do tamanho da lista e das informações nela contidas, a thread principal pode acabar sendo bloqueada por mais tempo do que o desejado, principalmente porque JSON.stringify e JSON.parse são operações razoavelmente custosas.

Carregando publicação patrocinada...