Expo Go è un'app gratuita, disponibile su App Store e Google Play, che esegue il vostro progetto Expo su un telefono vero senza compilare nulla. Avviate il progetto sul computer, scansionate un codice QR, e la schermata che stavate modificando compare sul vostro iPhone o dispositivo Android pochi secondi dopo. Salvate un file, il telefono si aggiorna. Per una prima versione di un'app, è la strada più corta dal codice a un vero schermo touch.
È anche lo strumento che i principianti fraintendono di più. Expo Go non è la vostra app, e non è mai il binario che pubblicherete: è un contenitore che include già la parte nativa dell'Expo SDK e carica solo il vostro JavaScript. Questo singolo fatto spiega cosa può testare, cosa non può, gli errori di versione che incontrerete, e perché Expo ha aggiunto una regola di accesso con account nel 2026. Questa guida copre tutto, con il flusso di lavoro per entrambe le piattaforme.
Se Expo in sé è nuovo per voi, iniziate dalla nostra panoramica su cos'è Expo; questo articolo presuppone che abbiate un progetto e vogliate vederlo su un telefono.
Cosa fa davvero Expo Go
Un'app Expo ha due metà. La metà nativa è codice compilato: il runtime di React Native, i moduli dell'Expo SDK per fotocamera, posizione, notifiche o file, e qualsiasi libreria nativa aggiungiate. La metà JavaScript sono le vostre schermate e la vostra logica, impacchettate dal server di sviluppo Metro. Compilare la metà nativa richiede minuti su un Mac o su un servizio di build cloud; impacchettare la metà JavaScript richiede secondi.
Expo Go fornisce la metà nativa già compilata, una volta per tutti: un insieme fisso di moduli dell'Expo SDK compilati in un'unica app che Expo pubblica sugli store. Quando scansionate il codice QR, Expo Go chiede a Metro un manifest, scarica il vostro bundle JavaScript attraverso la rete locale e lo esegue dentro il proprio guscio nativo. Dal vostro lato non viene compilato nulla. Per questo è così veloce, e per questo funziona solo se il vostro progetto usa la stessa versione dell'SDK del build di Expo Go installato sul telefono.
Testare su iPhone e Android, passo dopo passo
Il flusso è lo stesso su entrambe le piattaforme, con una differenza nel 2026: su iPhone, Expo Go ora verifica che abbiate effettuato l'accesso con lo stesso account Expo della riga di comando che ha avviato il progetto.
1. Installare Expo Go e accedere
Su iPhone, installate Expo Go dall'App Store. La versione per l'SDK 57 è tornata sullo store a settembre 2026 dopo diversi mesi nella coda di revisione di Apple, durante i quali andava installata come build TestFlight personale. Su Android, installatela da Google Play, oppure da expo.dev/go se vi serve una versione dell'SDK più vecchia, che lo store non offre più.
Create poi un account Expo gratuito su expo.dev se non ne avete uno, e accedete due volte: in Expo Go sul telefono, e nella CLI di Expo sul computer con il comando expo login. Dal 3 settembre 2026, Expo richiede lo stesso account da entrambe le parti per aprire un progetto SDK 57 in Expo Go su un iPhone fisico. I simulatori sono esenti, i development build sono esenti, e Android riceverà la stessa regola più avanti. Se gli account sono diversi, il progetto semplicemente rifiuta di aprirsi.
2. Avviare il progetto e scansionare il codice QR
Nella cartella del progetto, eseguite npx expo start. Metro parte, stampa un codice QR nel terminale e un indirizzo della forma exp://192.168.x.x:8081. Su iPhone, aprite l'app Fotocamera integrata, inquadrate il codice QR e toccate il banner: apre direttamente Expo Go. Su Android, aprite Expo Go e usate il suo pulsante «Scan QR code». Se il telefono e il computer si vedono, il bundle viene scaricato e compare la vostra prima schermata.
Da lì, ogni salvataggio attiva il Fast Refresh: il componente modificato si ricarica sul posto, conservando lo stato dell'app quando possibile. Scuotete il telefono per aprire il menu sviluppatore, che permette di ricaricare manualmente, aprire l'ispettore degli elementi o attivare il monitor delle prestazioni.
3. Stessa rete, tunnel e gli errori più comuni
Il telefono carica il bundle dal vostro computer, quindi entrambi devono essere sulla stessa rete Wi-Fi e la rete deve permettere ai dispositivi di parlarsi. Le reti aziendali e degli hotel spesso lo bloccano. La soluzione è un tunnel: npx expo start --tunnel fa passare la connessione attraverso un URL ngrok che funziona da qualsiasi rete, al prezzo di un primo caricamento più lento. La maggior parte dei problemi restanti si riduce a una manciata di messaggi:
| Cosa vedete | Cosa significa | Cosa fare |
|---|---|---|
| Project is incompatible with this version of Expo Go | L'SDK del vostro progetto e l'Expo Go installato non corrispondono | Aggiornate il progetto con npx expo install expo@latest, oppure installate il build di Expo Go per il vostro SDK da expo.dev/go |
| Il progetto non si apre, o chiede di accedere | Solo iPhone: la CLI ed Expo Go non hanno effettuato l'accesso con lo stesso account | Eseguite npx expo whoami, accedete con expo login e controllate il nome dell'account nella scheda profilo di Expo Go |
| Something went wrong: could not connect to the server | Il telefono non raggiunge il vostro computer attraverso la rete | Stesso Wi-Fi per entrambi, porta 8081 consentita nel firewall, oppure riavvio con --tunnel |
| Native module cannot be null, o una schermata rossa all'avvio | Il progetto usa codice nativo che non fa parte dell'Expo SDK | Expo Go non può eseguirlo: passate a un development build per quel progetto |
| L'app si apre ma una funzionalità non fa nulla, senza errori | Una capacità che Expo Go non supporta, come le notifiche push remote | Testate quella funzionalità in un development build o in TestFlight |
Cosa Expo Go non può testare, e cosa usare al suo posto
Poiché la metà nativa è fissa, Expo Go si ferma esattamente dove il vostro progetto ha bisogno di codice nativo che non è nell'Expo SDK: una libreria nativa di terze parti, un config plugin che modifica il progetto iOS o Android, un modulo Swift o Kotlin personalizzato. Non può nemmeno mostrarvi ciò che esiste solo nel vostro binario: l'icona e la schermata di avvio, il bundle identifier, i deep link, gli acquisti in-app. Dall'SDK 53, Expo ha anche rimosso le notifiche push remote da Expo Go e rimanda ai development build per testarle.
Il sostituto è un development build: la vostra app, compilata una volta con gli strumenti di sviluppo all'interno, che installate sul telefono e poi ricaricate in diretta esattamente come con Expo Go. Contiene i vostri moduli nativi, la vostra icona e i vostri identificativi, e non ha bisogno di un account Expo per aprire un progetto. La verifica finale prima dell'invio è ancora un altro strumento: TestFlight su iOS e il canale di test interno su Google Play installano il vero binario di rilascio.
| Volete verificare | Expo Go | Development build | TestFlight / test interno Play |
|---|---|---|---|
| Schermate, navigazione, layout su uno schermo vero | Sì | Sì | Sì |
| Fotocamera, posizione, sensori, selettore di immagini (moduli expo-*) | Sì | Sì | Sì |
| Libreria nativa di terze parti o modulo nativo personalizzato | No | Sì | Sì |
| Notifiche push remote | No | Sì | Sì |
| Icona, schermata di avvio, deep link, acquisti in-app | No | Sì | Sì |
| Il binario esatto che gli utenti installeranno | No | No | Sì |
| Costo di configurazione | Nessuno | Un build (EAS o locale), poi ricarica in diretta | Un build di rilascio e un account store |
Expo Go dentro Cadrant
I progetti mobile nativi costruiti con il creatore di app mobile di Cadrant sono app Expo e React Native, quindi valgono le stesse regole. L'editor mostra l'anteprima dell'app in una cornice di telefono, e un codice QR apre il progetto in diretta in Expo Go sul vostro dispositivo. A causa della regola di accesso del 2026, il codice QR compare una volta collegato il vostro account Expo: create un account gratuito su expo.dev, generate un token di accesso personale, incollatelo in Impostazioni, Integrazioni, Expo, poi accedete a Expo Go sul telefono con lo stesso account. Cadrant avvia il server di sviluppo con il vostro token, così il controllo dell'account passa.
La maggior parte delle API expo-* gira lì direttamente, il che copre i test di tutti i giorni: fotocamera, posizione, sensori, selettore di immagini, notifiche locali. Per il codice nativo fuori dall'SDK, e per una verifica finale, pubblicate un build reale: il binario iOS viene compilato sul vostro account Expo e consegnato al vostro App Store Connect, dove TestFlight lo installa sui vostri dispositivi; su Android, il build arriva nel canale di test interno della vostra Play Console. La documentazione delle app mobile native descrive entrambi i percorsi.
In sintesi
- Expo Go è un contenitore precompilato per l'Expo SDK: carica il vostro JavaScript, mai il vostro codice nativo, e deve corrispondere alla versione dell'SDK del vostro progetto.
- Su iPhone, da settembre 2026, accedete con lo stesso account Expo nella CLI e in Expo Go, altrimenti il progetto non si apre; simulatori e development build sono esenti.
- Stesso Wi-Fi o tunnel, poi scansione: l'app Fotocamera su iPhone, lo scanner integrato su Android.
- Moduli nativi personalizzati, notifiche push remote, icone, deep link e acquisti richiedono un development build; il binario esatto richiede TestFlight o il canale interno di Play.
Usate Expo Go per ciò in cui è più bravo, vedere una schermata su un telefono vero trenta secondi dopo averla scritta, e passate a un development build il giorno in cui il vostro progetto ha bisogno di qualcosa che il contenitore non ha. Il passaggio è un build una tantum, non una riscrittura.