Pular para o conteúdo

React Native

O que é o React Native?

React Native é um framework de desenvolvimento de aplicativos móveis que permite criar aplicativos nativos para iOS e Android usando JavaScript e a biblioteca React. Ele permite que os desenvolvedores usem o mesmo código base para criar aplicativos para ambas as plataformas, economizando tempo e esforço de desenvolvimento.

O React Native recebe esse nome por, apesar de ser para várias plataformas, ele gera aplicativos “nativos” para cada plataforma.

Tendo como base o diagrama acima, note que quando utilizamos o componente de imagem <Image /> no código React Native, ele gera um componente ImageView para Android e um componente UIImageView para iOS. Não precisamos entrar muito a fundo no código nativo de cada plataforma, mas entenda que o React Native é nativo da forma como ele gera a interface gráfica, ele utiliza a renderização gráfica nativa do dispositivo. Entenderemos melhor quando vermos as alternativas ao React Native e como cada abordagem roda seus aplicativos.

Apesar de renderizar a interface de forma nativa, sua lógica de programação é feita em JavaScript. Não há uma compilação e isso pode ser um problema para aplicativos que dependem de muita performance em nível de processamento, já que o JavaScript além de ser uma linguagem interpretada, não tem suporte ao multithread que é o uso de threads para paralelizar tarefas, o que pode trazer um grande ganho de performance. Ainda assim é possível contornar esses problemas escrevendo código nativo.

O que é o React?

React é uma biblioteca JavaScript de código aberto desenvolvida pelo Facebook, projetada para facilitar a criação de interfaces de usuário (UI) interativas e dinâmicas para aplicativos da web e móveis. Ele foi inicialmente lançado em 2013 e ganhou uma enorme popularidade desde então devido à sua eficiência e facilidade de uso.

O React utiliza o uma extensão de sintaxe JavaScript que permite aos desenvolvedores escrever marcações parecidas com o HTML diretamente em seus arquivos JavaScript. Isso facilita a criação de componentes com uma mistura de lógica e marcação, tornando o código mais legível e fácil de manter.

O fato do React ser uma biblioteca que não se preocupa na renderização na tela, mas sim com o desenvolvimento da inteface e seus comportamentos, possibilitou a existência do React Native, pois outras bibliotecas foram implementadas em cima do React para “dizer” como cada componente vai ser renderizado na tela. Dessa forma, o React Native foi desenvolvido inicialmente para funcionar para iOS e Android, mas já existem projetos que extendem seu funcionamento para mais plataformas, como Windows (e XBOX), MacOS, Linux, Web.

Alternativas

Outras alternativas de ferramentas para o desenvolvimento mobile são:

Flutter

O Flutter é uma alternativa do Google que utiliza o Dart, uma linguagem que compila para Android e iOS, e a engine SKIA, que renderiza os componentes de forma não nativa.

Quanto à renderização, o Flutter é o “inverso” do React Native. A parte de lógica de programação roda nativamente, pois seu código é compilado, mas a renderização dos componentes na tela é feita em uma engine que não é a nativa do sistema em que está rodando.

Ionic

O Ionic é uma alternativa que é nativa pois possibilita a interação com funcionalidades nativas do disposito, como acesso à camera, bluetooth e outros sensores, mas sua renderização é feita através de uma WebView (literalmente um navegador para cada aplicativo), e o código é escrito utilizando HTML, CSS, JS (podendo ser utilizados também os famosos Frameworks Web).

O Ionic pode ser uma ótima alternativa para quando se tem um site/Sistema Web já em desenvolvimento e, no meio do caminho do desenvolvimento, surge a necessidade de ter uma versão para Android e/ou iOS, pois todo o código já pronto não será descartado, mas terão que ser feitos ajustes para acessar as funcionalidades nativas do dispositivo.

Xamarin

O Xamarin é uma alternativa da Microsoft que utiliza o C#, compilando o código de forma totalmente nativa para ambos os sistemas Android e iOS.

É uma ótima alternativa para desenvolvedores que já têm familiaridade com o ecossistema da Microsoft, utilizando C# e .NET, mas por ser uma ferramenta que é muito dependente do Visual Studio (cuidado para não confundir com o VS Code), pode ter um custo adicional, já que é uma IDE paga para desenvolvimento em empresas.

Nativo (Java/Kotlin para Android e Swift para iOS)

Quando não há a necessidade de um aplicativo para mais de uma plataforma e performance é realmente algo muito necessário, provavelmente a melhor alternativa é ir para o desenvolvimento nativo de cada plataforma.

Kotlin Multiplatform

O Kotlin Multiplatform é uma alternativa que centraliza a regra de negócio (a lógica do app), mas possibilita escrever o código nativo da interface para Android iOS, ou até mesmo utilizar o Compose Multiplatform (que gera a interface para ambas as plataformas).

É uma tecnologia recente, que não tem tanta adoção ainda da comunidade, mas pode ser uma ótima alternativa quando há grande necessidade de performance e que o código deva ser reaproveitado para as duas plataformas.

Por que utilizamos o React Native na Comp?

Para a escolha do React Native na Comp, foram levados os seguintes pontos em consideração

  • Curva de aprendizado baixa: Já utilizamos o React e o JavaScript/TypeScript em outras áreas, dessa forma fica mais fácil de os membros trocarem de área de desenvolvimento
  • Baixa necessidade de desempenho: Geralmente, nossos apps não necessitam de tanto processamento, sendo apps que coletam dados, tem seu login e enviam para um back-end mas não contém algo como, tratamento de imagens, cálculos intensos ou processamento em grandes listas.
  • Fácil de configurar o ambiente de desenvolvimento: O React Native com o Expo é muito simples de se instalar, comparado com suas alternativas, além de facilitar o build do aplicativo e o upload para as lojas Google Play e App Store.
  • Expo Updates: como o React Native tem uma camada nativa e uma camada de JavaScript, é possível atualizar a camada de JavaScript por fora da Google Play ou App Store. Isso pode parecer coisa pouca, mas essas lojas têm verificações rígidas quanto as políticas de publicação, e sempre revisam todas as atualizações, processo que pode durar por semanas.