Expo: Native apps met 1 codebase zonder gedoe
De wereld van app development staat niet stil. Expo is een van de nieuwste technologieën die ontwikkelaars helpt om sneller en makkelijker om apps op te zetten voor zowel iOS als Android, zonder het gedoe van native code. Je gebruikt gewoon JavaScript! In dit blog verkennen we wat Expo is, de mogelijkheden, en hoe jij ermee aan de slag gaat.
Wat is Expo?
Expo is een open-source framework, dat zich om React Native wikkelt om zo makkelijker iOS en Android-apps te ontwikkelen. Je schrijft nog steeds in dezelfde code als React Native (namelijk React/Javascript), maar je hebt geen gedoe meer met opzetten van Xcode en Android Studio. Het biedt een reeks tools, libraries en services die het bouwen en testen van apps versnelt en vereenvoudigt. Hierdoor kan je 100% concentreren op het schrijven van code.
Daarnaast is Expo flexibel. Je kan nog steeds native functionaliteiten gebruiken, ook al werk je alleen met Javascript. Daarnaast kan je op elk moment Expo uit je project halen en volledig native gaan, of de Expo app builden naar native zodat je het op een device kan gebruiken. Het beste van beide werelden dus!
Wanneer gebruik ik Expo?
Je gebruikt Expo wanneer je snel en efficiënt apps wilt ontwikkelen. Expo biedt een snelle manier om een MVP (Minimum Viable Product) op te zetten, waardoor klanten sneller kunnen testen en je het project sneller kunt bijsturen.
Bij Linku gebruiken we het precies om die reden. Zo ontwikkelen we inmiddels twee apps die met Expo zijn opgezet: de Inkt app (van Bergop) en de NDFF Invoer App (Bij12). Dankzij Expo vliegen we door de startfase en kunnen we de klant makkelijker betrekken.
Voor meer voorbeelden van apps die met Expo zijn gemaakt, bekijk deze lijst: Expo Apps 2024.
Om je verder te overtuigen van Expo, deel ik mijn favoriete features:
Expo Go App
Expo Go maakt het eenvoudig om je applicatie snel te testen. Download de app op je mobiel, scan de QR-code van je project, en de Expo Go app opent je applicatie op je telefoon. Zo kun je de app gebruiken en tegelijkertijd verder ontwikkelen.
Een nadeel van de Expo Go app is dat sommige native functies (zoals FaceID) niet beschikbaar zijn. Maar daar heeft Expo ook oplossing voor: Expo Dev build. Hiermee maak je een build die je code native maakt, waarna de native functies wel kunt gebruiken. Dat doe je door volgende commando uit te voeren:
npx expo run:[android|ios]
Expo Router
Een van de krachtigste functies van Expo is de Expo Router. Expo Router is een wrapper om React Navigation heen, zodat je zelf geen complex navigatiesysteem meer hoeft op te zetten. Vergelijkbaar met NextJS worden er routes gemaakt op basis van de files. Deze manier van opzetten van de navigatie maakt het beheren van je app pagina’s een fluitje van een cent. De bestanden in de ‘app’ map vormen de routes in je app.
Zie dit voorbeeld:
Andere voordelen van Expo router zijn:
- Native: Expo Router is gebouwd bovenop React Navigation suite, dus het is helemaal native.
- Makkelijk om te delen: Omdat ****elke pagina een URL heeft is het makkelijk om naar toe te linken, te delen en deeplinken.
- Snel: De routes zijn lazy-loaded, dus niet alle schermen worden geladen. Alleen wanneer het nodig is!
- Universeel: Je gebruikt dezelfde code voor iOS, Android en web!
EAS
Expo Application Services (EAS) is een cloud service voor Expo en React Native apps. Het biedt een uitgebreide reeks tools en services om verschillende aspecten van het ontwikkelproces te verbeteren. Onder andere build- en deploy-services, test tools, monitoring en analyse.
Ik ben met name fan van:
- Builden in de cloud: Met EAS build je apps voor zowel iOS en Android in de cloud. Geen gedoe meer met XCode en Android Studio.
- Builds automatisch naar app stores: Je build voer je automatisch door naar de stores. Dit stelt je in staat om snel iteraties door te voeren. Precies hoe web nu werkt!
EAS build
EAS Build is een service voor het bouwen van apps vanuit je Expo- of React Native projecten.
Het vereenvoudigt het bouwen van je apps voor distributie en maakt automatisering makkelijk met goede standaardinstellingen.
Ook het delen van builds met je team is makkelijker dankzij interne distributie, gebruikmakend van ad-hoc en/of bedrijfs-“universele” provisioning. Natuurlijk kun je dit ook toepassen om klanten te laten testen. Het uploaden naar twee verschillende stores is hiermee verleden tijd.
EAS build werkt goed samen met EAS Submit en EAS Update.
EAS Submit
EAS Submit is een service waarmee je jouw app kunt uploaden en indienen bij de Google Play Store en de Apple App Store. Omdat het een gehoste service is, kun je jouw app naar beide winkels uploaden zolang je EAS CLI op je computer kunt uitvoeren. Dit betekent dat je jouw Android- en iOS-apps eenvoudig kunt indienen vanaf je macOS-, Windows- of Linux-werkstation of vanaf de CLI. Dit versnelt het proces, omdat je het maar één keer hoeft uit te voeren voor beide winkels.
EAS Update
EAS Update is een service die updates levert voor projecten die de expo-updates
package gebruiken.
EAS Update maakt het eenvoudig om kleine bugs te repareren en snelle fixes door te voeren naar de stores. Het maakt het mogelijk om niet-native onderdelen van je app te vervangen met nieuwe onderdelen of code. Ook versnelt dit het uploadproces van updates naar de app stores.
Afhankelijkheid van Expo
Zoals je ziet biedt Expo meerdere voordelen voor ontwikkelaars, waaronder: snelle ontwikkeling, toegankelijkheid voor beginners, en een set van handige tools en services. Het team achter is Expo is toegewijd, zichtbaar door goede updates en snelle bugfixes. Ook worden er steeds meer tools en technieken toegevoegd om het bouwen van apps verder te versnellen en vereenvoudigen.
Ondanks deze toewijding zitten er altijd risico’s in het gebruik van een tool als Expo. Je bent en blijft afhankelijk van de ontwikkelaars om bugs op te lossen. Ook ben je gelimiteerd tot de features die Expo biedt. Daarnaast is de gemeenschap nog klein, waardoor je niet altijd antwoorden kunt vinden op je vragen.
Toekomst
In een wereld waar alles snel evolueert en ontwikkelt, gaat Expo ook mee. De toekomst van Expo ziet er veelbelovend uit met groeiende gemeenschap en voortdurende toevoegingen van functies en services.
De verwachting is dat het bouwen van een app voor alle platforms nog makkelijker wordt. Het is nu al mogelijk om voor web te bouwen, maar dit is nog in een beginfase. Daarnaast wil Expo het maken van desktop apps en tv apps makkelijker maken. Ik kijk uit naar de toekomst!
Tot slot: dit is een sneak peak van Expo + onze App starter boilerplate