React Native vs Flutter: la differenza pratica nell'utilizzo

React Native vs Flutter: la differenza pratica nell'utilizzo

Vuoi sviluppare un'app mobile cross platform per iOS e Android e, come da prassi, inizi a fare una ricerca sul web. Individui, tra le diverse opzioni, React Native, sviluppato da Facebook, e Flutter, sviluppato da Google.

Quale scegliere?

Su internet è pieno di comparazioni tra questi due framework in cui è possibile leggere lunghi paragrafi su quale sia il linguaggio utilizzato o sulle diverse installazioni. Insomma, molta teoria e poca concretezza.

In questo articolo proverò a darti degli strumenti più pratici per semplificarti la scelta, secondo il mio punto di vista e la mia esperienza.

Partiamo sfatando alcuni miti.

False argomentazioni da entrambe le parti
  • Flutter è il futuro della programmazione mobile grazie a Fuchsia:

    Il mondo corre velocemente e ci si rende sempre più conto che nulla è per sempre, persino Android. Google, infatti, pare abbia in progetto di mandare in pensione il suo sistema operativo mobile, che utilizza Java per la grafica, sostituendolo con Fuchsia, che utilizza Dart. Di conseguenza, essendo Flutter il framework principle per sviluppare app su Fuchsia, ecco spiegato il motivo per cui in diversi affermano che Flutter sarà il futuro della programmazione mobile.

    Seppur questo scenario potrebbe essere vero, putroppo non ci è dato sapere come evolverà il futuro, essendo attualmente Fuchsia in fase iniziale. Per adesso possiamo concentrarci sul medio periodo e, se mai Fuchsia sarà confermato, dovremo ancora aspettare anni prima che si completi la sostituzione del sistema operativo.

    Quindi, React Native avrà ancora vita lunga davanti a sè, tenendo nota del fatto che molte compagnie investono tutt'ora molto su questo framework (es. Microsoft e Discord).

  • Dart, il linguaggio alla base di Flutter, è staticamente tipato, quindi più sicuro di Javascript:

    Avere un linguaggio dotato di tipi e che ci permette di avere maggiore sicurezza di compilazione e refactoring è estremamente importante nello sviluppo di un grande progetto. E, seppur questo inizialmente possa sembrare vero, va ricordato che nel vasto mondo di Javascript esiste già una soluzione chiamata Typescript, che ci permette di avere i tipi a nostra disposizione.

    Per precisare, ritengo che Dart in questo campo abbia ancora del margine di vantaggio che non potrà essere colmato facilmente: infatti Typescript non viene utilizzato da tutte le librerie su npm, quindi, anche utilizzandolo, non avremmo la stessa sicurezza del mondo Dart.

    Infine, Typescript utilizza le informazioni sui tipi solamente a tempo di compilazione, dopodichè compilerà in Javascript e, di conseguenza, il compilatore non potrà utilizzare le informazioni dei tipi per produrre del codice ottimizzato per il processore, cosa invece che avviene con Dart.

Valide argomentazioni tra Flutter vs React Native
  • Flutter è maggiormente ottimizzato di React Native:

    Grazie sia a Dart che all'intero framework nativo sviluppato dalla Google, possiamo sicuramente affermare che Flutter produca applicazioni sensibilmente più ottimizzate e veloci di React Native.

  • Flutter è maggiormente indicato di React Native per chi viene dal mondo nativo:

    Essendo stato uno sviluppatore nativo Android e sviluppando attualmente sia in Flutter che in React, sono personalmente concorde con questa affermazione. Il paradigma adottato da Flutter, l'ecosistema intorno ed il linguaggio Dart sono molto famigliari agli sviluppatori nativi. Dopotutto Flutter è stato sviluppato da Google, azienda al cuore dello sviluppo di Android.

  • Gli strumenti di sviluppo di Flutter sono migliori di quelli di React Native:

    Sinceramente è ancora uno dei punti molto deboli di React Native. Il numero e la qualità degli strumenti di sviluppo e diagnostica integrati con Flutter sono impressionanti ed estremamente validi per i professionisti che vogliono trovare colli di bottiglia da ottimizzare, debuggare con facilità e rapidità, e godere di un'ottima produttivià.

Maggiori differenze
  • Definizione della UI:

    È una delle carratteristiche che apprezzo maggiormente in React Native. La possiblità di utilizzare JSX e di separare gli stili dalla struttura dell'interfaccia grafica rendono il codice scritto in React Native leggermente più leggibile e mantenibile, sopratutto per chi è alle prime armi.

    Al contrario, Flutter tende a portare a componenti annidati tra di loro se non si ha l'accortezza di fare un po' di refactoring ogni tanto.

  • Librerie a disposizione:

    Ormai siamo tutti a conoscenza della portata e del numero di librerie offerte dall'ecosistema Javascript, oltre che dal numero di sviluppatori esperti in questo linguaggio.

    Dart invece, seppur sia un ottimo linguaggio con una continua e crescente (e soprendente) comunità, la sua grandezza non è paragonabile a quella di Javascript. Fortunatamente Dart ha dietro di sè Google, azienda che sta puntando molto a far crescere sia il linguaggio sia le librerie disponibili, quindi, nel corso del tempo, questo margine di vantaggio che Javascript potrebbe avere per alcune librerie andrà mano a mano riducendosi.

Per ricapitolare

Quindi, quale scegliere?

Una cosa è certa: non esiste una risposta sbagliata a questa domanda, poichè dipende dalla situazione in cui ci si trova e dalle risorse a disposizione.

Il mio consiglio è, per chi avesse già delle conoscenze avanzate di Javascript e cercasse un framework che permetta di cominciare immediatamente a sviluppare applicazioni cross platform, di optare per React Native.

Per chi, invece, avesse carta bianca, consiglierei certamente di valutare Flutter, creando almeno dei mockup prima di prendere una decisione.

Personalmente ho cercato di essere il più imparziale possibile scrivendo questo articolo, ma sicuramente, se dovessi consigliare ad un amico o esprimere un parere personale ad un'azienda, avrei solamente ottime parole per Flutter e lo consiglierei senza alcun rimorso.

Gabriel.


P.S. Sei uno sviluppatore mobile o aspirante tale?

Nel giugno del 2019 ho lanciato Flutter Start su fudeo.it, il corso in italiano in cui parto dai fondamentali e arrivo sino allo sviluppo passo-passo di un'app per notizie collegata con il sito dell'Ansa. È richiesta la conoscenza di almeno un linguaggio ad oggetti.
Clicca qui per scoprire di più!