ADR-005: Abandono do FlashList v2
Status: Implementado Data (estimada): commit
46c7eee3—fix: ununse flashlist v2 due infinite unnecessary rerendersTipo: ADR Retroativo
Contexto
O app usa listas longas de músicas que precisam de performance (scroll suave, sem jank). FlashList da Shopify é o sucessor recomendado de FlatList no ecossistema React Native.
Decisão
Abandonar FlashList v2 e retornar ao FlatList padrão do React Native. A razão documentada no commit é: "infinite unnecessary rerenders" — o componente estava causando re-renderizações em loop, provavelmente por incompatibilidade com o padrão de dados usado (EntityAdapter do Redux Toolkit ou Unistyles).
Alternativas Consideradas
- Manter FlashList v2 + investigar a causa dos rerenders — descartado (custo-benefício)
- FlashList v1 — possivelmente avaliado, não adotado (commit não menciona v1)
FlatListnativo — adotado: confiável e sem comportamento inesperadoSectionList— não aplicável para a lista flat de músicas
Consequências
- 🟢 Eliminação de rerenders desnecessários — melhora de performance imediata
- 🟡 FlatList tem performance inferior em listas muito longas (sem reciclagem de células)
- 🟢 Sem dependência de biblioteca terceira para componente crítico de UI
- 🟡 Se o catálogo crescer muito, pode ser necessário avaliar
@legendapp/listou similar