React Native è un framework che permette di creare app native per iOS, Android e web usando il linguaggio di programmazione JavaScript e la libreria React. Expo è un insieme di strumenti e servizi che facilitano lo sviluppo con React Native, offrendo funzionalità come il fast refresh, le notifiche push, le API native e il deployment over the air . Ecco l’indirizzo della pagina ufficiale https://expo.dev/.
Con Expo, è possibile creare un solo progetto che funziona su tutti i dispositivi degli utenti, senza dover installare Xcode o Android Studio, che altrimenti sarebbero necessari. Basta avere Node.js e un telefono (o, ancora più minimalista, un emulatore di telefono!). Inoltre, Expo offre una app chiamata Expo Go che permette di visualizzare il proprio progetto scansionando un codice QR dal terminale (https://reactnative.dev/docs/environment-setup).
Tuttavia, Expo non è perfetto e presenta alcuni limiti che bisogna tenere in considerazione prima di sceglierlo. Uno dei principali limiti è che Expo supporta solo i moduli nativi inclusi nel suo SDK, quindi non è possibile usare librerie di terze parti che richiedono il linking nativo. Questo significa che alcune funzionalità come le mappe, la realtà aumentata o il pagamento in-app potrebbero non essere disponibili o funzionare solo su alcune piattaforme.
Un altro limite di Expo è che richiede una connessione a internet per funzionare, sia in fase di sviluppo che di produzione. Questo può essere un problema se si vuole testare l’app offline o se si vuole distribuirla su store alternativi. Inoltre, Expo ha dei tempi di aggiornamento del suo SDK piuttosto lunghi, quindi potrebbe non essere sempre allineato con le ultime versioni di React Native.
Infine, Expo può essere più lento e pesante rispetto a una app nativa pura, a causa dell’overhead del runtime e del bundle JavaScript. Questo può influire sulle performance e sull’esperienza utente, soprattutto su dispositivi meno potenti o con poca memoriahttps://docs.expo.dev/.
Se questi limiti sono troppo restrittivi per il proprio progetto, ci sono alcune alternative a Expo che vale la pena esplorare. Una di queste è React Native CLI, che è lo strumento ufficiale per creare app native con React Native. Con React Native CLI, si ha il pieno controllo sul codice nativo e si può usare qualsiasi libreria o modulo nativo disponibile. Tuttavia, questo richiede di installare e configurare Xcode e Android Studio, di gestire manualmente le dipendenze native e di compilare l’app per ogni piattaforma.
Un’altra alternativa a Expo è Ionic, che è un framework che permette di creare app ibride con Vue.js (o altri framework come Angular o React), usando componenti web ottimizzati per il mobile e integrando le funzionalità native tramite plugin. Ionic offre anche una app chiamata Ionic DevApp che permette di visualizzare il proprio progetto scansionando un codice QR dal terminale. Ionic ha il vantaggio di essere più flessibile e compatibile rispetto a Expo, ma ha lo svantaggio di essere meno performante e nativo rispetto a React Native o Vue Native (attenzione: quest’ultimo è ora sconsigliato!).