In questo articolo, condivideremo i pro e i contro della creazione di app Expo e React Native. Esistono due modi per creare un’app React Native: puoi utilizzare la CLI di Expo o puoi utilizzare React Native. Pianificando di creare  un’app multipiattaforma, potresti confonderti tra React Native o Expo.

Ma qual è il modo migliore tra i due? Eseguiamo un’analisi approfondita di React Native Init vs Expo e scopriamo cosa si adatta meglio al tuo progetto.

Cos’è React Native Init?

React Native è diventato un framework popolare per creare app multipiattaforma con JavaScript. Il suo principale vantaggio è la possibilità di creare app multipiattaforma. Consente di fornire un’interfaccia utente molto migliore rispetto alle attuali opzioni ibride sul mercato, più vicine a quelle delle app native. Le primitive React eseguono il rendering nell’interfaccia utente della piattaforma nativa, ciò significa che la tua app utilizzerà le stesse API della piattaforma nativa di altre app. Avrai bisogno di Xcode o Android Studio per iniziare.

Cos’è Expo?

Expo è un framework per creare app con React Native. Expo è un set di strumenti e servizi creati per React Native. Ti aiuterà a realizzare facilmente app ibride realizzate con React Native, stiamo parlando di un framework che fornisce un elenco di strumenti che semplificano la creazione dell’app e tutto ciò che concerne la fase di testing. Expo inoltre fornisce un flusso di lavoro di sviluppo più robusto e conveniente a livello di flessibilità.

Pro e contro di React Native

Il vantaggio principale dell’utilizzo di React Native è che puoi condividere il codice tra iOS e Android invece di scrivere e mantenere due basi di codice completamente separate

Situazioni in cui React Native CLI è la scelta migliore:

  • Prototipi funzionanti;
  • App con interfaccia utente semplificata;
  • App multipiattaforma di base;
  • App senza un uso massiccio di API native;
  • Applicazioni con interfaccia utente complessa;
  • Servizi di costruzione come monitor della batteria;
  • App create appositamente per un singolo sistema operativo;
  • App che non hanno molte animazioni.

Vantaggi di React Native:

  • Puoi includere moduli nativi codificati in Java/Objective-C.
  • Lo sviluppo di file .apk e .ipa è molto più semplice che con Expo.
  • Codice riutilizzabile e componenti predefiniti.
  • Interfaccia utente semplificata.
  • Supporto plug-in di terze parti.
  • Architettura modulare.

React Native ha dato una grande spinta allo sviluppo di applicazioni mobili, ma presenta alcuni aspetti negativi. Recentemente Airbnb e Udacity hanno condiviso la loro esperienza in React Native. Hanno concluso che questa piattaforma ha molti vantaggi anche se non è possibile utilizzare questa soluzione per creare qualsiasi tipo di app mobile.

Contro della CLI nativa di React:

  • Richiede Android Studio e XCode per eseguire i progetti.
  • Non puoi creare un’app per iOS senza avere un Mac.
  • Non è necessario collegare il dispositivo tramite USB da utilizzare per i test.
  • Non è necessario importare manualmente i caratteri in XCode.
  • Se vuoi inviare la tua app a qualcuno devi inviare l’intero file .apk / .ipa.
  • Devi installare e collegarti con, ad esempio, npm Push-Notifications, Asset Manager.
  • Impostare correttamente un progetto di lavoro è piuttosto difficile e può richiedere tempo.
  • Richiede un alto livello di configurazione.
  • Richiede una conoscenza di base della struttura delle cartelle Android e iOS.

Pro e contro di Expo CLI

Iniziamo con i contro di Expo di fatto  ha parecchie limitazioni. E se la tua app ha bisogno di una cosa specifica, devi verificare se Expo la supporta o meno. In modo che tu possa sapere che non dovresti prendere in considerazione l’utilizzo di Expo fin dall’inizio.

Contro di Expo CLI

Esiste una bella guida che delinea alcune delle limitazioni, quindi non esaminerò l’intera faccenda. Consiglio di leggere questo elenco prima di prendere una decisione; il problema più grande è che non possono essere usati i moduli nativi.

Alcune API iOS e Android non sono disponibili

L’altra cosa da notare è che alcune delle API del dispositivo non sono supportate, anche questa è una cosa importante: niente Bluetooth, niente Web RTC. Comunque, molte funzionalità sono in fase di sviluppo in questo periodo, quindi è meglio controllare l’elenco di  richieste di funzionalità disponibile qui.

Pro di Expo CLI

Dovendo chiamare un collegamento React o entrare in CocoaPods e installare cose, spesso si incontrano difficoltà, per compatibilità o durante il “linking” tra parte nativa e react. Con Expo non hai questi problemi. Expo ha creato una libreria e puoi integrarla con facilità. Tutte le librerie  sono molto veloci e facili da integrare, quindi questo è un enorme vantaggio. L’altra cosa da sapere è che ci sono anche molte librerie JavaScript che puoi usare con Expo.

Migliore esperienza di sviluppo

L’esperienza dello sviluppatore è decisamente migliore: build e hot reloading sono molto più veloci. Un’altra cosa interessante è che non è necessario che il telefono sia collegato al computer per eseguirlo. Puoi eseguire l’app che stai sviluppando tramite Wi-Fi sincronizzandola tra diversi telefoni, il che è fantastico. Quindi puoi digitare sul tuo computer e mentre apporti modifiche tutti i dispositivi collegati si aggiornano automaticamente.

Più facile da aggiornare alle nuove versioni

L’aggiornamento è molto più agevole. Nel documento di aggiornamento, vedrai i passaggi che devi seguire per aggiornarlo a una nuova versione. Non ci vuole molto per farlo.

Expo SDK 

Le app Expo vengono fornite con Expo SDK. E apre molte funzionalità a tuo vantaggio.  BarcodeScanner ,  MapView ,  ImagePicker e molti altri sono disponibili per l’uso.

File .apk e .ipa

Expo prevede la generazione di un file IPA per iOS e di un file APK per Android.

In conclusione

Come vedi, entrambi i modi hanno i loro pro e contro. Quindi quale è meglio usare? Dipende. Ad esempio Expo può essere più adatto per  lo sviluppo di un MVP, proprio perché consente di fornire un prodotto funzionante molto velocemente. Puoi rendere l’app scalabile e aggiungere funzionalità extra e continuare a lavorare con l’app.