Trodde React Native skulle spare masse tid, ble skuffa

Agens-CTO Håvard Fossli advarer mot å vurdere app-teknologi uten å tenke deg godt om.

Håvard Fossli er CTO i Agens, som blant annet utvikler apper til iOS og Android. De har prøvd React Native, men ble ikke spesielt imponerte. 📸: Privat
Håvard Fossli er CTO i Agens, som blant annet utvikler apper til iOS og Android. De har prøvd React Native, men ble ikke spesielt imponerte. 📸: Privat Vis mer

Tidligere i høst fortalte kode24 om hvilke teknologier norske utviklere snuser på for å lage iOS- og Android-apper i 2020.

I tillegg til rene native-apper i Swift og Kotlin, nevnte mange teknologier som React Native, Xamarin, Flutter og Ionic - som lar deg skrive én kodebase til flere plattformer.

- Men man bør spørre seg hva slags kompetanse man sitter på, og hvilke ambisjoner man har, sier CTO Håvard Fossli i Agens i ukas episode av podcasten vår kode24-timen.

Her er hans viktigste grunner til at Agens, selskapet bak store apper og spill som Norsk Tipping, NRK Radio, Skate City og Fantorangen, sverger til native-utvikling på både iOS og Android.

Og hvorfor du bør tenke deg godt om før du velger noe annet.

Sparte mindre tid

Agens har flere apper ute i produksjon som er koda i React Native - ett av mange alternativer til å skrive native-kode.

Blant annet den raske feedbacken fra utviklerverktøyene, den deklarative koden og selvfølgelig det å kunne dele koden mellom både iOS og Android lokket dem inn i React-verktøyet.

- Hypotesen var at det skulle være dobbelt så effektivt, når man skriver koden én gang. Men i realiteten erfarte vi at det kanskje bare var rundt 20 prosent raskere, sier Fossli i kode24-timen.

Utviklerne måtte nemlig bruke mye tid på ting de slipper ved ren native-kode. Blant annet dårligere og utdaterte pakker, og det å ikke kunne bruke alt Android og iOS serverer på gullfat til native-utviklere.

- Man bruker mye tid på å fighte med problemer som kommer nettopp på grunn av den ekstra abstraksjonen React Native gir, mener CTO-en.

- Du kan sitte en hel dag for å forstå hvorfor noe ikke fungerer. Vi trodde React Native skulle modnes fortere enn det har gjort, men dessverre har det gått mye tregere enn vi håpa på.

«Du kan sitte en hel dag for å forstå hvorfor noe ikke fungerer.»
Agens har foreløpig ikke testa Flutter og Xamarin, fordi konteksten ikke tilsier at dette er noe de ønsker. 📸: Privat
Agens har foreløpig ikke testa Flutter og Xamarin, fordi konteksten ikke tilsier at dette er noe de ønsker. 📸: Privat Vis mer

Fikk dårligere ytelse

Selv om ikke Agens sparte så mye tid som de trodde, sparte de altså tid, de kunne bruke utviklere som var mer komfortable i Javascript og React enn Kotlin og Swift og selskapet sier seg alt i alt fornøyd med resultatet.

- Men oppstartstida til appene blir tregere, ytelsen dårligere og de spiser batteri. Dermed endte vi med noe som ikke gikk så mye raskere å lage, hvor vi brukte mye tid på ting som vi ikke burde brukt tid på, og i tillegg gjorde vi tradeoffs på oppstartstid og ytelse, oppsummerer Fossli.

- Spørsmålet er om det er verdt det.

Agens-CTO-en påpeker dessuten at React Native på mange måter er en av de bedre verktøyene, da appene bruker plattformenes native-komponenter. Mens Flutter, som blant annet Coop går for, tegner alt opp i et OpenGL-canvas, som et slags spill. Da blir brukeropplevelsen merkbart dårligere, mener Fossli.

- Jeg er litt skuffa over at Flutter hele tida kommer opp på vektskåla blant de som vurderer teknologi. Der gjør man noen store tradeoffs, sier Fossli.

Agens vil ikke fortelle hvilke apper de har laget i React Native, men sier de er ganske fornøyde med resultatet, selv om ikke prosessen ble slik de håpa. 📸: Privat
Agens vil ikke fortelle hvilke apper de har laget i React Native, men sier de er ganske fornøyde med resultatet, selv om ikke prosessen ble slik de håpa. 📸: Privat Vis mer

Advarer mot å glemme kontekst

Poenget til Fossli er ikke å sable ned alt annet enn native-kode. Selv om apputvikling i to helt seperate løp kan ta mindre tid enn mange tror, blant annet ved å la en felles backend ta de tyngste løftene, er det ikke alle forunt å sitte på utviklere med Swift- og Kotlin-kompetanse.

«Det er problematisk å vurdere disse teknologiene helt uten kontekst.»

Poenget til Fossli er heller å advare mot å blindt putte React Native, Flutter, Xamarin, Ionic og de andre hybridløsningene på vektskåla.

- Jeg ville sett på to ting: Kompetansen til utviklerne, og ambisjonene med appen, gjentar han.

Er ambisjonene høye, får man i CTO-ens øyne det klart beste resultatet ved ren native-kode. Men han slår altså også et slag for å vurdere kompetanse: Har du en gjeng som kan React til fingerspissene, kan det være riktig å velge React Native. På samme måte kan C#-kompetanse bety at du bør vurdere Xamarin.

- Det er problematisk å vurdere disse teknologiene helt uten kontekst, oppsummerer han.

- Hva er konteksten? Hvilke ambisjoner har dere? Hvilken kompetanse sitter dere på? Det må være utgangspunktet. Og kan man begynne å putte teknologiene på vektskåla.