Ionic vs React Native: qual o melhor framework? Pois é! 2020 começou e cá estamos nós, refazendo a pergunta que não quer calar.
Praticamente todos os desenvolvedores mobile se aproximaram dessa pergunta nos últimos anos e cada um puxa a brasa pra sua sardinha.
Mas se você chegou agora e esse assunto de Ionic vs React Native ainda te confunde (ou se você já está no mercado há quase dez anos e esse assunto ainda assim te confunde), sorte sua:
Eu, portador da verdade universal, estou aqui para lhe ajudar. 😀
O que é Ionic?
Ionic é um framework de desenvolvimento para aplicativos móveis em HTML5, para criar aplicativos híbridos.
Os aplicativos construídos no Ionic rodam em uma webview, que tem acesso à camada nativa da plataforma onde ela está sendo executada.
Esses aplicativos híbridos trazem vários benefícios, como portabilidade e agilidade no desenvolvimento.
O Ionic traz pra gente vários elementos de interface de usuário que deixam a aplicação com uma “cara mobile”, e tem todas as facilidades (e algumas das falhas) que o desenvolvimento para web tem.
O Ionic usa o Cordova como ponte para acessar as funções nativas da plataforma, como a câmera e localização, por exemplo.
O que é React Native?
React Native é um framework que usa React, uma biblioteca JavaScript desenvolvida pelo Facebook para a criação de interfaces de usuário.
Os aplicativos feitos no React Native são escritos usando JSX, que é JavaScript misturado com uma linguagem de marcação parecida com XML.
Mas, ao invés de rodar em uma webview, o React Native renderiza a interface usando as APIs nativas da plataforma onde a aplicação vai rodar.
Então, seu aplicativo vai ter controles nativos, e coisas como rolar a página tem a sensação de serem nativas porque, bem, elas são.
O React Native também usa uma thread separada para a interface de usuário, o que deixa ele mais rápido.
Isso significa que a experiência de usuário é mais próxima a aplicativos nativos, porque eles seguem os padrões impostos pelo sistema operacional.
Porém, apesar de um bom conjunto de componentes nativos estar disponível por padrão, nem todos os componentes nativos estão disponíveis no React Native.
O que essas diferenças significam na prática?
Ionic?
O desenvolvimento de uma aplicação em Ionic é bem parecido com o de uma aplicação web:
o Ionic tem uma coleção de componentes para construir aplicações híbridas, que são todos basicamente componentes HTML5, para construir sua interface de usuário.
Você pode customizar esses elementos com CSS com uma certa liberdade, apesar de algumas tarefas serem um pouco mais difíceis do que outras.
A última versão do Ionic (que é a que você deveria usar) é construída sobre Angular, então se você tem familiaridade com Angular, vai gostar do Ionic.
Apesar da stack de tecnologias do Ionic ser maior (você vai usar HTML, CSS, Typescript, Angular, etc) não é tão difícil aprender, pois essas tecnologias são amplamente usadas, e você provavelmente já domina uma parte delas.
React Native
Já o desenvolvimento de uma aplicação em React Native, por entregar uma experiência mais próxima à nativa.
Ou seja, requer que o desenvolvedor pense a aplicação de uma maneira um pouco diferente, levando em consideração as especifidades das plataformas para as quais ele está desenvolvendo.
Por exemplo, no Android, temos uma barra de ferramentas que é bastante customizável, com a navegação sendo no topo da tela.
Já no iOS tradicionalmente tem sua barra de navegação no rodapé da tela.
O Android também geralmente prefere um menu acessado pelo famoso botão hambúrguer, ao passo que no iOS a navegação é geralmente feita por abas.
Estilizar a interface no React Native também é um pouco mais complicado, já que não dá pra fazer isso com CSS.
Então, há uma curva de aprendizado a ser vencida aí, mas o React oferece também o acesso a funcionalidades nativas da plataforma, ao passo que o Ionic precisaria de plugins para ter esse acesso.
O reuso de código também é muito mais proeminente no React.
Qual é mais fácil de aprender?
Ionic ou React? A resposta correta seria “depende do seu histórico”.
Geralmente, a curva de aprendizado do React Native é um pouco mais íngreme. Em termos de comunidade, Ionic ou React Native são bem grandes e receptivas.
É muito fácil achar informação sobre ambos os frameworks na Internet, porém a documentação do React é muito básica e rasa demais.
A documentação do Ionic é mais consistente, mas frequentemente bem simples e básica.
Em contrapartida, é muito mais fácil encontrar documentação para os plugins Ionic.
O React tem uma boa biblioteca de plugins que expandem suas capacidades, mas não é bem esse o foco da tecnologia.
Porém, tenha em mente que testar as aplicações em React é um pouco mais difícil, porque você precisa de um dispositivo físico ou um emulador para os testes, ao passo que com o Ionic, você pode realizar testes no browser.
Em um ambiente profissional isso normalmente não é um problema, mas é um pouco complicado quando você está estudando a tecnologia.
O React Native também tem poucos componentes prontos, já o Ionic tem uma biblioteca respeitável de componentes já desenvolvidos e estilizados.
Qual eu devo usar: Ionic ou React Native?
Isso mesmo que você leu, na batalha entre Ionic vs React, quem escolhe o melhor framework é você!
Se você já usa React, React Native é a escolha natural.
Se você prioriza performance, experiência de usuário, ou é do tipo obcecado pelo feelingnativo de cada plataforma, vá de React.
Isso também vale caso você precise de funcionalidades como Bluetooth ou geolocalização em segundo plano.
Se você gosta de consistência visual na interface, tem experiência com desenvolvimento web, procura uma curva de aprendizado menor, gosta da proposta de PWAs ou é fã de Angular, experimente o Ionic.
Chegar diretamente a uma conclusão não é a coisa mais simples do mundo, entre Ionic vs React Native, estou tentado a dizer “siga seu coração”.
Mas no final, escolher entre Ionic vs React Native não é muito diferente de escolher entre console vs PC: depende dos seus requisitos.
Até a próxima!