ADR-007: MMKV como Storage de Configurações e Estado Rápido
Status: Implementado Data (estimada): commit
c73286b4—fix(mmkv): use mmkv instead of a web specific alternativeTipo: ADR Retroativo
Contexto
O app precisa de armazenamento síncrono e de alta performance para configurações do usuário (tema, tamanho de fonte, flags de feature) e estado da autenticação. AsyncStorage é assíncrono e mais lento para leituras frequentes.
Decisão
Usar react-native-mmkv como camada de preferências síncronas. Para o ambiente web (react-native-web), foi criada uma estratégia de adaptação (MmkvWebStrategy) que emula a API MMKV usando localStorage.
Alternativas Consideradas
AsyncStorage— descartado (assíncrono, API mais verbosa para configurações)localStoragediretamente — descartado no nativo por incompatibilidade- "Alternativa web-specific" mencionada no commit — descartada por inconsistência de API
- Redux Persist — descartado para configurações simples (sobrecarga desnecessária)
Consequências
- 🟢 Leitura síncrona de configurações — zero latência percebida
- 🟢 API unificada nativo/web via estratégia de adaptação
- 🟡 MMKV não é transacional — operações compostas não têm atomicidade garantida
- 🟢 Performance: MMKV é ~10x mais rápido que AsyncStorage em benchmarks React Native