Sincronização e offline
O SuperMobile é uma PWA — Progressive Web App. Isso significa que o app funciona dentro do navegador (Chrome, Edge, Safari) mas se comporta como um app nativo: pode ser instalado na home do celular, abre em tela cheia sem barra de endereço, e mantém parte do funcionamento mesmo sem internet.
Instalando como app
Quando você abre o site pela primeira vez no celular, o navegador pode oferecer um botão "Instalar" ou "Adicionar à tela inicial". Aceite — o ícone do SuperMobile vai pra tela inicial e a partir daí abre como app independente.
No desktop (Chrome/Edge), aparece um ícone de instalação na barra de endereço. Mesmo comportamento.
O que funciona offline
| Sem internet, ainda funciona | Não funciona sem internet |
|---|---|
| Abrir o app, navegar entre menus | Carregar lista de clientes/produtos novos |
| Ver telas que já foram carregadas | Salvar pedido novo |
| Login com sessão ainda válida (token não expirou) | Calcular preço de item (depende do backend) |
| Tema claro/escuro | Aprovar/criar liberação |
| Estrutura visual de todas as páginas | Baixar PDF (se assinatura precisar do storage) |
Resumindo: você navega, mas qualquer operação de negócio precisa de conexão.
Indicador de offline
No canto inferior direito aparece uma notificação fixa quando você fica sem conexão:
Sem conexão Você pode navegar pelo shell do app, mas recursos online podem ficar indisponíveis.
A notificação some sozinha quando a conexão volta. O app detecta status de rede via eventos online/offline do navegador.
Atualização automática do app
Quando o time da Supersys publica uma versão nova:
- O app verifica atualizações a cada 60 segundos enquanto online
- Também verifica ao focar a janela e ao alternar de aba
- Quando há nova versão, aparece uma notificação fixa: "Atualizar app agora"
- Você decide quando atualizar — clicando, a página recarrega com a versão nova
- A atualização não interrompe trabalho em andamento; o aviso fica visível até você clicar
Como funciona o cache (técnico, mas útil)
O app usa Workbox (parte do PWA) com duas estratégias:
- Assets do app (HTML, CSS, JavaScript, fontes, ícones): cacheados indefinidamente. Por isso o app abre offline.
- APIs e dados de negócio (
/api/*,/MOB_VENDAS/*): NetworkOnly — sempre tenta a rede. Não há cache de dados. Garante que você nunca veja dado desatualizado, mas precisa estar online para qualquer consulta.
Por que essa escolha? Pedidos, preços e estoque mudam frequentemente. Cachear dados de negócio criaria divergências entre vendedores que poderiam levar a vendas com preço errado.
Entrando offline com pedido em digitação
Importante: se você está digitando um pedido e perde conexão antes de salvar:
- O que estiver na tela permanece — você pode continuar editando
- Mas não consegue clicar Salvar (o servidor não responde)
- Quando a conexão voltar, clique Salvar normalmente
Se você não tem certeza se a conexão voltou, olhe o canto inferior direito. Sem o aviso "Sem conexão" significa que tem rede.
Sincronização em background
Hoje, não. O app não tem sync queue automática que envia pedidos pendentes quando volta online — você precisa estar online no momento de salvar.
Se for um problema recorrente para o time comercial (vendedor em zona rural sem 4G), o time técnico pode adicionar um service worker com Background Sync API. É uma melhoria conhecida no roadmap.
Triagem rápida — suporte
| Sintoma | Causa provável | Ação |
|---|---|---|
| App não abre nem online | Cache antigo corrompido | Limpar dados do site no navegador, recarregar |
| "Sem conexão" persistente mesmo com Wi-Fi OK | DNS travado, VPN bloqueando, servidor da Supersys instável | Testar abrir outra aba; conferir status do servidor |
| Notificação "Atualizar app agora" não some | Usuário clicou X mas a versão antiga continua rodando | Clicar "Atualizar app agora" ou recarregar manualmente (Ctrl+Shift+R) |
| Pedido sumiu depois de salvar offline | Salvar offline não funciona — não houve gravação | Refazer com conexão, conferir antes de fechar pedido |
| Lista de clientes não atualiza | Cache do app está em pé, mas API responde — precisa de "Atualizar" | Clicar no botão Atualizar (ícone refresh) ou recarregar a página |
| App lento mesmo online | Bundle pesado em rede 3G/4G fraca | Esperar primeira carga; depois fica em cache local |
| Login OK mas dashboard não carrega dados | Token válido localmente, mas API rejeitando (403/500) | Reportar pro time técnico com hora/usuário |
Para o time técnico
- Manifest e Workbox configurados em
vite.config.tsviavite-plugin-pwa. registerType: 'prompt'— o app não atualiza silenciosamente, sempre pergunta.globPatterns: ['**/*.{js,css,html,ico,png,svg,woff2}']— assets cacheados.runtimeCachingcomNetworkOnlypara/api/,/MOB_VENDAS/,/config.js.- Componente
PwaStatus(canto inferior direito) escuta eventosonline/offlinee mostra/esconde notificação. - Sem IndexedDB para dados de negócio. Dados sensíveis (token, tenant) ficam em localStorage.
- Atualização:
setIntervalcheca novo SW a cada 60s, mais checagem emvisibilitychangeefocus.