Skip to content

ADR-005: Abandono do FlashList v2

Status: Implementado Data (estimada): commit 46c7eee3fix: ununse flashlist v2 due infinite unnecessary rerenders Tipo: 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)
  • FlatList nativo — adotado: confiável e sem comportamento inesperado
  • SectionList — 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/list ou similar