1. Início
  2. Mobile
  3. Desenvolvimento para mobile: Ionic, React-Native ou Flutter, qual usar?

Desenvolvimento para mobile: Ionic, React-Native ou Flutter, qual usar?

desenvolvimento-para-mobile

Qual a melhor Cross Platform quando o assunto é desenvolvimento para mobile? Ionic, React-Native ou Flutter?

Mas calma, antes de falarmos sobre estas três plataformas, vamos antes entender um pouco melhor do motivo em termos optado por elas.

Qual a melhor plataforma para desenvolvimento mobile?

Realmente estamos fazendo uma pergunta que nos últimos anos tem se colocado a frente de várias pessoas envolvidas em um projeto de App Mobile.

Claro que também temos diversas outras soluções de Cross Platform, como o Xamarim e Phonegap.

Mas nessa altura, temos que concordar que as três tecnologias discutidas neste artigo encabeçam as escolhas das maiorias das empresas e grupos que trabalham com apps multiplataforma.

Podemos dizer então que a melhor escolha deve estar entre as mais utilizadas na prática, no dia a dia, certo?

Então vamos juntos tentarmos entender o que cada uma tem a nos oferecer e ver se encontramos algo prático que justifique a seleção.

No desenvolvimento para mobile tudo depende da ocasião

Realmente não queria começar este artigo dessa forma, mas acho que seria desleal com você leitor, que está procurando justamente esta resposta.

Mas agora vai uma frase clichê que você provavelmente já ouviu por aí em alguma circunstância onde o autor não gostaria de se comprometer:

Não existe bala de prata no mundo da tecnologia.

E acho que infelizmente esta frase nunca serviu tão bem quanto no universo em que estamos lidando.

Então o que podemos fazer aqui, é tentar ver como cada solução se comporta em alguns cenários específicos e tentar te ajudar a encontrar o que melhor se enquadra, caso precise.

Bom, não vou me estender muito na parte teórica, pois isso você encontra em diversos materiais na internet, e com certeza falando muito melhor do que eu, mas vamos tentar ao menos definir conceitos básicos de cada uma.

Ionic

Como no próprio site oficial da Ionic se define “Cross-platform apps. Built with the web”, ou seja, faça aplicativos como você faz sistemas para Web.

E não considero como simplesmente um “Webview mais parrudo” como já vi muitos falarem.

Em suas versões mais atuais, podemos dizer que ele consegue entregar os mesmos recursos de seus concorrentes, acessando funções nativas como a câmera, e por ser web, integrando uma grande gama de framework’s como o React, Angular e Vue.

Ele também dá a possibilidade de entregar uma versão para Desktop e até mesmo utilizar PWA’s.

E assim podemos pensar: “Pronto! Achamos a solução perfeita! Afinal é tudo feito com web, diminuindo a curva de aprendizagem de uma grande parcela de programadores, integra as principais tecnologias Javascript’s de SPA’s e possibilita criar um App Desktop!”.

Realmente ele é bem versátil, mas temos que lembrar que para fazer tudo isso, e ser uma solução tão alto nível, ela tem que “ficar longe” do hardware do seu dispositivo, e realmente passar por um Webview e por uma “ponte” que é feita com a tecnologia do Cordova.

Assim por mais versátil que seja, temos que deixar em mente que performance não está entre suas qualidade, e dependendo da regra de negócio que estamos observando, ele pode trazer uma certa dor de cabeça.

React-Native

Aqui temos, o que arrisco em dizer, ser o mais famoso dos 3, tendo como sua base, o próprio ReactJS, framework desenvolvido pelo Facebook para desenvolver plataformas SPA’s que não apenas se tornou o principal concorrente do AngularJS, mas o deixou para trás pelo menos no desenvolvimento de aplicações Web.

O React-Native desenvolve apps utilizando Javascript e Typescript, e ao contrário do Ionic, sua Bridge com o dispositivo é muito mais performática.

E com o Javascript, ele consegue acessar as API’s Nativas do aparelho que está rodando de uma forma muito mais rápida que as tecnologias híbridas.

Com esse acesso nativo ele consegue entregar os atributos característicos de cada dispositivo, como botões, input’s, datePickers etc, assim, dando uma maior impressão de estar usando um app de desenvolvimento nativo.

Tirando o fato da sua grande comunidade, e com isso, já existem bibliotecas que possibilitam usá-lo em ambiente web e desktop.

Agora sim! Encontramos a solução ideal!? Calma…

Temos que lembrar que para acessar os componentes nativos ele ainda precisa do JavaScript, pois não sabe “conversar com a máquina” como um app nativo sabe, e é claro, a nossa curva de aprendizado estará mais restrita, tendo que saber utilizar a tecnologia do React.

Flutter

E por fim, temos o Flutter, a mais nova das 3 soluções. Mantido pela Google, e trazendo um outro conceito de tecnologias Cross Platform.

Ele também trabalha com o padrão de SPA’s utilizado no React-Native, mas no lugar de usar componentes, usa o que é chamado de Widgets e a estrutura de seus projetos são formados por uma árvore de Widgets.

E assim podemos pensar qual é sua diferença com o React-Native, e está justamente em dois pontos principais:

  • Sua linguagem, que é o Dart, uma tentativa do Google para substituir o JavaScript em 2011 (Mas que não deixa a desejar em nada);
  • A forma como ele se comunica com os dispositivos, usando além das API’s nativas, uma biblioteca de interface gráfica, chamada Skia que também pertence ao Google atualmente.

Logo seu aplicativo não acessa funções nativas, mas sim, roda como um jogo no device, entregando experiências bem mais interativas e visuais que as outras opções.

>> Crie um perfil na GeekHunter e receba propostas alinhadas ao seu perfil. São mais de 1000 vagas abertas, inclusive de Vagas Flutter.

Como definir qual é a melhor plataforma de desenvolvimento para mobile?

Como dito no início, o conceito de “melhor” deverá ser aplicado em situações controladas, então a maneira que decidi desenvolver este artigo foi expondo cenários específicos e fazendo um exercício mental sobre qual tecnologia se enquadra melhor.

Se a sua situação não se aplica a nenhuma delas (o que provavelmente será a maioria) tente replicar a mesma lógica de pensamento, talvez isso te ajude a chegar em uma decisão final.

“Tenho um website sem muitas funções interativas com seus usuários, não tenho experiência com desenvolvimento para mobile, e já trabalho com Web”.

Este é um típico caso que ocorre com vários desenvolvedores web, e na maioria das vezes o foco aqui, não será coisas como performance e complexidade de funções dentro do software, mas sim entregar um resultado controlado e se possível em um prazo rápido.

Um bom exemplo disso é quando uma empresa possui CRM e pede ao seus Engenheiros de Softwares responsáveis para fazer um App que permita a seus clientes acompanharem o andamento da entrega de seus produtos.

Veja que não estamos falando de nada muito “complexo” dentro da regra total do negócio, mas que precisa ser feito.

Acho que pensar em uma ferramenta como o Ionic te ajude nessa situação, pois já temos uma experiência prévia em web e o foco atual da equipe não é, e não será no desenvolvimento para mobile, e já existe uma solução pré-existente.

Assim podemos ver que quando pensamos em entrega de valor, de forma rápida e sem grandes investimentos ou curva de aprendizagem, o Ionic se sai muito bem.

Mas quer dizer que é o único? De maneira alguma! Mas preciso me dar essa licença poética de escolher se quero que este texto faça algum sentido para seu problema de escolha.

“Minha empresa já possui soluções em softwares, e agora quer levar estas mesmas soluções para o desenvolvimento mobile”.

Aqui temos uma situação um pouco mais abrangente e provavelmente várias outras respostas, mas lembro que isso é um exercício mental e você também pode fazê-lo dentro do seu universo de trabalho.

Como experiência própria eu mesmo passei por esta situação, onde já existe um modelo de negócio validado e que buscava se expandir, nesse ponto, devemos colocar em pauta vários fatores como:

  • Quais as stacks de seus programadores?
  • Como foram desenvolvidas as soluções atuais?
  • Será necessário contratar novos colegas de trabalho?
  • Investimento?
  • Tempo?

E por aí vai…

Mas aqui vou tomar todos esses pontos como críticos e vou apontar para o React-Native, isso por que, estamos falando de uma solução que das 3, é a mais conceituada, trabalha com uma linguagem de programação muito disseminada em nossa área (Javascript) e assim, termos uma oferta de mão de obra e comunidade muito grande a nossa disposição.

Isso permite uma redução de riscos e projeções mais coerentes para o futuro destes projetos.

“Tudo é novo, novo negócio, novo produto, novos conceitos”.

Agora vamos colocar a situação onde queremos iniciar com tudo neste cenário.

Apresentar atualidade, modernidade e protagonismo é muito importante, principalmente falando de tecnologia.

Vale lembrar que vou tirar o quesito “investimento” dessa equação, imaginando que estamos em um cenário perfeito.

Neste caso, pensar no Flutter faz bastante sentido, pois não é precipitado dizer que das 3 soluções aqui, é a que tem um crescimento maior de comunidade e adesão, e está muito ligada ao mundo de Startups.

Neste ponto muito provavelmente teremos uma significativa curva de aprendizado da equipe, ou raras – e caras – contratações pontuais de profissionais bem capacitados.

Mas a longo prazo, teremos uma solução moderna, mais performática, e que pode ser a tendência futura do mercado.

Agora você pode pensar:

“Mas a minha situação? Não se aplica a nenhum destes cenários de desenvolvimento para mobile e ainda tenho dúvida de qual escolher!”.

Bom, agora você vai precisar estudar e conversar bastante, ver pontos críticos do seu negócio, como tempo, investimento, risco, mercado, engajamento etc.

E ainda sim pode ser possível que você encontre mais de uma solução possível. Neste ponto, “perder” um tempo fazendo Hello World pode ser interessante e provavelmente vai ajudar na sua decisão.

Pronto, já escolhi, mas e se eu me arrepender?

Lembre-se sempre que estamos falando de tecnologia, e mais especificamente de programação, onde ferramentas oscilam o tempo todo em nosso universo.

E se você já está no universo Cross Platform, pode se sentir sortudo, pois mesmo que tenha que mudar de estratégia no meio do caminho, você ainda pode precisar de um investimento final de esforços menor que projetos feitos de forma nativa.

E nem sempre tudo que você já fez está perdido, pois várias decisões sobre como o produto final deve funcionar já foram tomadas, e agora é só botar a mão na massa!

Espero que este artigo tenha sido mais uma ferramenta útil para ajudar na sua decisão, e sempre lembrando que experimentar, testar e voltar atrás, são rotinas deste mundo em que vivemos, e quanto mais experimentamos opções, menos dúvidas temos de qual é a ideal para o nosso caso.

Categorias

Leituras Recomendadas

Quer receber conteúdos incríveis como esses?

Assine nossa newsletter para ficar por dentro de todas as novidades do universo de TI e carreiras tech.