Skip to content

ADR-002: styled-components → react-native-unistyles

Status: Implementado Data (estimada): feature/unistyles-14 → master (commits 2afc9153, b6fb2b78) Tipo: ADR Retroativo


Contexto

O app usava styled-components como sistema de estilos. Com a expansão para suporte multi-plataforma (iOS, Android, Web), dark theme e Material You, a solução apresentou limitações de performance e de adaptação responsiva.

Decisão

Migrar completamente para react-native-unistyles v3, que oferece:

  • Tokens de design tipados (temas)
  • Breakpoints responsivos nativos
  • Suporte a múltiplos temas sem re-renders
  • Compatibilidade com react-native-web

Alternativas Consideradas

  • StyleSheet.create puro — descartado por falta de temas e breakpoints
  • tamagui — avaliado implicitamente; descartado provavelmente por sobrecarga de build
  • Manter styled-components — descartado por performance em listas longas

Consequências

  • 🟢 Melhor performance em listas de músicas (sem re-renders de tema)
  • 🟢 Sistema de temas unificado (CLARO, ESCURO, CLARO_LEGADO, CLARO_ALTERNATIVO)
  • 🟡 Breakpoints legacy (xs, sm, md) ficaram deprecated na migração — ainda existem no código
  • 🟢 Material You (#55) implementado sobre o novo sistema de temas