⚡ Gabriel Caiana
imagem principal do site

Como armazenar dados no navegador sem fazer bagunça


Se você já trabalhou com e-commerce — sabe que a experiência do usuário precisa ser suave, rápida e eficiente. Ninguém quer perder tempo refazendo filtros, adicionando tudo de novo ao carrinho ou se cadastrando a cada nova visita.

Mas e se eu te disser que você pode melhorar isso com algo que todo navegador moderno já oferece? Sim, estou falando dos storages locais.

Neste artigo, vamos ver como usar o localStorage, sessionStorage e IndexedDB na prática, com exemplos de um pet shop online. Bora?


🏪 1. localStorage: o pet shop lembra de você

Imagine que o cliente entra no seu e-commerce, escolhe “ração para gato castrado”, muda o tema para escuro, e seleciona frete para São Paulo. Seria bem chato se, ao voltar depois, tudo isso fosse esquecido, né?

É aí que entra o localStorage: uma gaveta do navegador onde você pode guardar pequenas informações entre sessões.

// Tema escuro salvo no navegador
localStorage.setItem("theme", "dark");

// Cidade padrão
localStorage.setItem("userLocation", "São Paulo");

// Filtros de busca
localStorage.setItem("lastSearch", JSON.stringify({ pet: "gato", categoria: "ração" }));

Agora, quando o cliente voltar, você pode carregar isso automaticamente. 💫

💡 Quando usar:

  • Tema claro/escuro
  • Últimos filtros aplicados
  • Produto visualizado recentemente
  • Carrinho (se não usar cookies ou backend)

🐶 2. sessionStorage: só dura enquanto o doguinho estiver na aba

Digamos que o usuário está finalizando uma compra e preenche dados do endereço. Mas aí ele resolve dar uma olhada rápida no Instagram (quem nunca?) e fecha a aba sem querer.

Se você quiser que, ao reabrir, ele não tenha os dados salvos (por segurança ou consistência), use o sessionStorage. Ele vive só enquanto a aba estiver aberta.

🐾 Exemplo prático:

// Armazenar progresso do checkout
sessionStorage.setItem("checkoutStep", "2");

// Dados temporários do formulário
sessionStorage.setItem("shippingInfo", JSON.stringify({
  rua: "Rua dos Poodles", 
  numero: 42
}));

Ideal para fluxos sensíveis, como checkout ou login, onde manter dados após fechar a aba pode ser arriscado ou desnecessário.


🐕 3. IndexedDB: seu banco de dados (offline) no navegador

Se você quiser oferecer uma experiência offline, cache de produtos, ou armazenar uma lista grande (ex: histórico de compras), IndexedDB é o caminho.

É um banco de dados real, embutido no navegador. Assíncrono, poderoso, e ideal para quando localStorage não dá conta.

🐾 Exemplo real: cache de produtos para navegação offline

const request = indexedDB.open("petStoreDB", 1);

request.onupgradeneeded = function (event) {
  const db = event.target.result;
  db.createObjectStore("products", { keyPath: "id" });
};

request.onsuccess = function (event) {
  const db = event.target.result;
  const tx = db.transaction("products", "readwrite");
  const store = tx.objectStore("products");

  // Caching os produtos da home
  store.put({ 
    id: 1, 
    nome: "Ração Premium Cat", 
    preco: 89.90 
  });
};

Você pode, por exemplo, guardar os últimos produtos navegados, exibir quando o usuário estiver offline e até oferecer uma busca local.


🍪 E os cookies?

Os cookies ainda são úteis, principalmente quando você precisa que os dados viajem até o servidor — como um token JWT para autenticação.

Mas cuidado: o limite é de ~4KB por cookie e eles são enviados a cada request. Prefira cookies apenas para o essencial.


🔐 Sobre segurança (sério agora)

Nunca, nunca armazene:

  • Senhas
  • Tokens de acesso
  • Dados pessoais sensíveis

Esses storages podem ser acessados via JavaScript e, portanto, vulneráveis a ataques XSS. Se precisar armazenar algo sensível, use cookies seguros com HttpOnly e Secure, e sempre sanitização no frontend/backend.


🧠 Qual usar no seu e-commerce pet?

O que guardarOnde guardar
Tema, filtros, cidade, preferênciaslocalStorage
Progresso do checkoutsessionStorage
Histórico de navegação, cacheIndexedDB
Token de sessão (com segurança)cookie (HttpOnly)

🎁 Dica bônus: use bibliotecas que ajudam

Gerenciar tudo isso na mão pode virar um caos. Existem libs que tornam a experiência mais suave:

  • localForage – IndexedDB + localStorage, com API simples
  • Dexie.js – IndexedDB com cara de banco relacional
  • idb – wrapper leve, com promises

✨ Conclusão

Seja um e-commerce ou uma plataforma de e-learning, saber usar os storages certos faz diferença real na experiência do usuário. Você melhora performance, personalização e até reduz hits no backend.

E o melhor: tudo isso está ao alcance do navegador, sem instalar nada.

Então, da próxima vez que um cliente visitar sua loja e encontrar tudo do jeito que deixou, lembre-se: talvez ele nem saiba, mas foi o localStorage que fez o trabalho sujo 🧼