Cos’è Expo e perché usarlo nello sviluppo di app iOS e Android

Questo framework per applicazioni React semplifica il lavoro degli sviluppatori riducendo tempi di setup, test e manutenzione.

Sergio Panagia

Partner, Technical Director

Giacomo Alonzi

Developer

Expo è un framework che estende React Native, una libreria software nata in Meta (Facebook) per sviluppare app native iOS e Android con un’unica codebase scritta in JavaScript. Il suo SDK rende accessibili sia funzionalità native del dispositivo (per esempio la fotocamera e i sensori hardware) sia librerie di utilità standard (come ad esempio la predisposizione per l’autenticazione tramite i principali provider come Apple e Google). È anche possibile utilizzare librerie di terze parti purché, a priori, ne sia verificata la compatibilità.

Un grande beneficio arriva dall’utilizzo di Expo Application Services, un servizio Cloud che automatizza il processo di build (creazione di un eseguibile) e di rilascio su App Store e Google Play Store, permettendo al team di sviluppo di risparmiare tempo altrimenti dedicato ad attività di setup e configurazione nei rispettivi ambienti di sviluppo nativi.

Expo, nel modello operativo “managed workflow”, rende il team operativo in pochi minuti: grazie ad Expo CLI e all’app Expo Go, i developer possono eseguire e fare debug di una nuova app tramite il simulatore iOS o Android, tramite browser Web oppure tramite un dispositivo reale. Tutto ciò senza alcuna necessità di utilizzare software di sviluppo nativo Apple (Xcode) e Android (Android Studio) come avviene invece nello sviluppo React Native.

Expo Go accelera il processo di sviluppo e test poiché permette di eseguire codice JavaScript senza attendere il processo di build; permette inoltre di invitare utenti test in modo estremamente semplice, utilizzando un codice QR o un link, e cominciare così a ricevere feedback in tempi molto brevi.

Chi ha realizzato almeno un’app in React Native, sa che tornare dopo qualche tempo sul progetto per fare upgrade all’ultima versione, magari ad una major release, può diventare cosa lunga e frustrante per via dei frequenti breaking change – ovvero di incompatibilità del codice sviluppato in precedenza con la nuova versione del framework.

Expo “si mette in mezzo” tra il programmatore e React Native, imponendo per ciascuna sua release una e una sola versione di React Native – testata per compatibilità in modo approfondito e secondo un calendario prevedibile a priori (una volta a trimestre, a differenza dei rilasci di React Native, che non hanno specifica cadenza temporale).

Esistono, d’altro canto, implicazioni da valutare attentamente nello scegliere di adottare o meno questo framework.

L’aspetto più significativo è, a nostro parere, che Expo limita l’utilizzo di librerie di terze parti poiché si integra unicamente con componenti resi compatibili. Nonostante questi siano in costante aumento (al passo con l’adozione del framework), questa caratteristica rende necessaria un’importante riflessione nella fase di analisi iniziale di un nuovo progetto, in cui vengono definiti requisiti e specifiche. È bene precisare però che Expo permetterà comunque, in ogni momento, di convertire il progetto in una normalissima codebase React Native, ovviamente a costo di rinunciare ai benefici di Expo e di Expo Application Services.

Tirando le somme, Expo ci sembra una tecnologia davvero interessante per realizzare app native iOS e Android a partire da un unico codice sorgente. Lo sviluppatore esperto in React Native non avrà problemi a comprenderne le fondamenta, trovandosi a suo agio nell’utilizzo dell’SDK.

Il managed workflow, che rappresenta la vera forza del framework, è probabilmente molto adatto a piccoli team di sviluppo, che non possono contare su personale dedicato alle attività di setup e manutenzione. Ciò non toglie che il framework possa essere utile anche a team più strutturati e in progetti complessi: in questi casi sarà ancora più importante verificare a priori se i requisiti di progetto possono essere soddisfatti dalle API disponibili nativamente e – poiché il managed workflow non supporta codice nativo custom – se eventuali gap siano colmabili da codice JavaScript.




    Premi INVIO

    Procedi

    premi INVIO

    Grazie

    Ti contatteremo presto.