Nativo, Web ou Multiplataforma?
Existem três abordagens para construir um aplicativo mobile:
Nativo — código escrito na linguagem da plataforma: Kotlin ou Java para Android, Swift ou Objective-C para iOS. Acesso direto a todas as APIs do sistema operacional. O custo: duas codebases completamente separadas para a mesma funcionalidade.
Web (PWA) — uma aplicação web empacotada para funcionar offline e ser instalada na tela inicial. Usa HTML, CSS e JavaScript, rodando dentro do motor do navegador. Funciona nas duas plataformas com uma codebase só, mas fica limitada ao que o navegador permite — notificações push, acesso à câmera e sensores dependem do suporte do browser, que varia bastante entre Android e iOS.
Multiplataforma — frameworks como React Native, Flutter e Kotlin Multiplatform permitem escrever uma codebase que gera aplicativos nativos para ambas as plataformas. O trade-off é diferente de um PWA: o código roda fora do navegador, com acesso a APIs nativas, mas cada framework tem suas limitações e peculiaridades.
Neste livro, vamos usar React Native com Expo. O React Native traduz
componentes escritos em JavaScript/TypeScript para views nativas de cada
plataforma — um <View> vira um android.view.View no Android e uma
UIView no iOS. O Expo adiciona uma camada de ferramentas que simplifica o
setup: não precisa instalar Android Studio nem Xcode para começar a
desenvolver.
A escolha é pragmática. O TamoJunto já usa React no frontend web —
reutilizamos a mesma linguagem (TypeScript), os mesmos conceitos (componentes,
hooks, state, props) e parte da mesma lógica de negócio. Um desenvolvedor que
acabou de construir o EventList em React vai reconhecer imediatamente a
estrutura do código mobile.