Tjenester
Flutter-utvikling – én kodebase for iOS og Android
Kundene deres har både iPhone og Android, men dere vil ikke bygge og vedlikeholde to apper. Det er en god grunn til å velge Flutter-utvikling: én kodebase, to butikker. Vi er et appstudio i Trondheim som bygger Flutter-apper til fast pris, med publisering i App Store og Google Play inkludert og kildekoden i deres eie.
Flutter er Googles åpne rammeverk for apper, skrevet i programmeringsspråket Dart. Koden kompileres til maskinkode for iOS og Android, ikke til noe som tolkes underveis, og grensesnittet tegnes av Flutters egen grafikkmotor i stedet for plattformens innebygde komponenter. Samme kodebase kan også bygges for web, Windows, macOS og Linux. Flutter i Norge er heller ikke nytt: Coop skrev om hovedappen sin i Flutter allerede i 2019, etter gode erfaringer fra Coop Key-appen til den ubemannede butikken på Majorstuen.
01
Når Flutter passer
Flutter passer best når appen skal ut til både iPhone og Android samtidig, og når dere vil at den skal se lik ut på begge. Fordi Flutter tegner alt selv, får appen samme uttrykk uansett telefon, og designeren kan bygge et eget designsystem uten å slåss med hva Apple og Google leverer av standardknapper. Det er verdifullt for merkevarer med tydelig profil, for handel og for medlemsapper.
Det passer også når tiden er knapp. Én kodebase betyr at begge versjoner bygges parallelt, og i våre priser koster to separate native apper rundt 60 % mer enn én Flutter-app. Feil rettes ett sted. Nye funksjoner kommer på begge plattformer samme dag.
Og det passer når dere kanskje trenger en web-versjon senere. En intern app for ansatte, et enkelt kundepanel eller en kioskskjerm kan bygges fra samme Flutter-kode. Trenger dere først og fremst en nettbasert løsning, er likevel en ren webapp eller PWA ofte et bedre valg.
02
Når vi fraråder Flutter
Vi anbefaler ikke Flutter til alle. Skal appen lene seg tungt på plattformspesifikke funksjoner, som Apple Watch, widgets på iPhone, Live Activities, avansert Bluetooth eller bakgrunnstjenester på Android, får dere mer for pengene med native iOS-apputvikling eller Android-apputvikling. Alt dette går an i Flutter gjennom plugins og egen native kode, men da bygger dere native-delene uansett, og gevinsten krymper.
Har dere allerede et team som kan Swift eller Kotlin, eller en eksisterende native app som fungerer, er det sjelden lurt å bytte til Flutter bare fordi det er mulig. Og har dere et team som lever i React og TypeScript, er React Native-utvikling den naturlige veien til kryssplattform, fordi de kan gjenbruke kompetansen sin. Vi tar valget sammen med dere i en appavklaring, og forklarer hvorfor.
03
Dette leverer vi i en Flutter-app
En Flutter-app fra oss er ikke bare skjermer i Dart. Leveransen dekker hele kjeden fra design til drift:
- Designsystem i Figma som oversettes til gjenbrukbare Flutter-komponenter, med støtte for mørk modus og tekstskalering.
- Ryddig arkitektur med tydelig tilstandshåndtering, slik at neste utvikler forstår koden uten å ringe oss.
- Kodegjennomgang av all kode, automatiske bygg og tester (CI/CD) ved hver endring, og enhetstester, widget-tester og integrasjonstester på ekte enheter.
- Innlogging, push-varsler, betaling, kart, kamera og offline-lagring, samt en backend bygget for formålet, se backend, API og integrasjoner.
- Publisering i begge butikker på deres egne kontoer, og en web-versjon der det gir mening.
Der Flutter mangler et ferdig plugin for noe dere trenger, skriver vi den native biten selv i Swift eller Kotlin og kobler den til Dart gjennom Flutters platform channels. Det er en vanlig del av jobben, ikke et unntak.
04
Norske integrasjoner fungerer i Flutter
Et naturlig spørsmål er om Vipps og BankID fungerer i en Flutter-app. Svaret er ja. Vipps MobilePay leverer HTTP-baserte API-er, ikke egne Flutter-biblioteker, og integrasjonen skjer mellom deres backend og Vipps. Appen sender brukeren til Vipps-appen for godkjenning og får svar tilbake. BankID og ID-porten bruker OpenID Connect, en åpen standard som fungerer likt uansett rammeverk. Det samme gjelder Altinn, HelseID, regnskapssystemer som Fiken og Tripletex, og Entur.
05
Flutter, React Native eller native? Slik står alternativene mot hverandre
| Flutter | React Native | Native (Swift/Kotlin) | |
|---|---|---|---|
| Språk | Dart | TypeScript/JavaScript | Swift og Kotlin |
| Grensesnitt | Tegnes av Flutters egen motor; identisk på begge plattformer | Bruker plattformens egne komponenter; ser litt ulikt ut på iOS og Android | Plattformens egne komponenter |
| Ytelse | Svært god; kompileres til maskinkode | God; JavaScript-lag mot native kode | Best |
| Plattformer fra samme kode | iOS, Android, web, Windows, macOS, Linux | iOS, Android, web via ekstra bibliotek | Én plattform per kodebase |
| Kostnad ved iOS og Android | Én kodebase; grunnprisen i våre pakker | Én kodebase; grunnprisen i våre pakker | To kodebaser; i våre priser rundt 60 % dyrere |
| Passer best når | Eget designuttrykk, begge plattformer, kanskje desktop eller web | Team som kan React, hyppige småoppdateringer | Plattformspesifikke funksjoner, høyest ytelse |
Vi har skrevet en egen guide om valget mellom Flutter eller React Native, med norske eksempler.
06
Hva koster en Flutter-app?
Prisene dekker design, utvikling for begge plattformer, testing og publisering. Alle priser er eks. mva.
- 2 dager + 1 uke til leveranse
Appavklaring
to dagers produktworkshop, kravspesifikasjon, skisser, teknisk arkitektur og bindende fastpristilbud
20 000 kr fast pris.
Beløpet trekkes fra prosjektprisen om dere går videre med oss.
- 2–12 uker
MVP-app
én kjerneflyt, iOS og Android fra én kodebase, backend, publisering
fra 20 000 kr
- 4–7 måneder
Bedriftsapp
innlogging, backend, push, adminpanel, 1–2 integrasjoner
fra 100 000 kr
- 6–12 måneder
Kompleks app / plattform
betaling, roller, flere integrasjoner, sanntid, KI
fra 200 000 kr
Timepris ved løpende arbeid
utvikling 700 kr/t
arkitektur og teknisk ledelse 990 kr/t
MVP-pakken vår er bygget rundt nettopp kryssplattform: én kjerneflyt, begge butikker, én kodebase. Det er derfor den starter på 20 000 kr, ikke det dobbelte. Betalingen fordeles med 30 % ved oppstart, 40 % ved godkjent betaversjon og 30 % ved lansering. Full oversikt finner dere under priser på apputvikling. Vil dere ha et tall nå, tar appkalkulatoren ett minutt.
07
Slik jobber vi med Flutter-utvikling
Vi starter med en appavklaring og et bindende tilbud. Deretter lager vi flyter og skjermer i Figma og lar dere teste en klikkbar prototype, se appdesign og UX. Så bygger vi appen i to ukers sprinter med demo hver uke, og dere får nye versjoner på egne telefoner via TestFlight og Google Plays testspor gjennom hele prosjektet.
Etter lansering får dere 90 dagers feilgaranti, og kan velge en avtale om vedlikehold og drift av app. Den dekker de årlige iOS- og Android-oppdateringene og oppgradering til nye Flutter-versjoner. Hele prosessen står under slik jobber vi.
08
Kvalitetskrav og garantier i Flutter-prosjekter
All kode i Flutter-appen gjennomgås før den slås sammen, dere har tilgang til repoet hele veien, og etter lansering gjelder 90 dagers feilgaranti. Hele standarden står under kvalitet og garantier.
09
Vanlige spørsmål om Flutter-utvikling
Er Flutter modent nok for bedriftsapper?
Ja. Flutter kom i første stabile versjon i desember 2018, forvaltes av Google og brukes i Norge av blant andre Coop, som skrev om hovedappen sin i Flutter i 2019. Økosystemet av plugins dekker det en vanlig bedriftsapp trenger. Det viktigste for levetiden er at koden er ryddig skrevet og at appen vedlikeholdes, og det gjelder uansett teknologi.
Fungerer Vipps og BankID i Flutter?
Ja. Begge integreres gjennom åpne API-er og standarder som er uavhengige av rammeverket. Vipps-betaling settes opp mellom backend og Vipps' ePayment-API, og appen sender brukeren til Vipps-appen for godkjenning. BankID og ID-porten bruker OpenID Connect. Vi har egne sider om Vipps-integrasjon og BankID- og ID-porten-innlogging.
Hvordan er ytelsen sammenlignet med native?
For de fleste bedriftsapper merker ikke brukerne forskjell. Dart-koden kompileres til maskinkode, og Flutters grafikkmotor Impeller kompilerer det den trenger på forhånd, slik at animasjoner ikke hakker første gang de vises. Apper som er ekstremt tunge på 3D, video eller sanntidsgrafikk, bygger vi likevel native.
Kan dere overta eller videreutvikle en eksisterende Flutter-app?
Ja. Vi starter med en kodegjennomgang der vi ser på Flutter-versjon, arkitektur, avhengigheter og testdekning, og gir dere en skriftlig vurdering med anbefalt plan. Ofte begynner overtakelsen med å oppgradere til gjeldende Flutter- og OS-versjoner før vi bygger noe nytt. Dette kan gjøres innenfor en vedlikeholdsavtale. Trenger dere heller Flutter-kapasitet i eget team, kan dere leie en apputvikler.
Kan Flutter-appen også kjøre på web og desktop?
Ja. Flutter bygger for web, Windows, macOS og Linux fra samme kodebase. Web-versjonen egner seg best til innloggede løsninger som interne verktøy og kundepaneler, ikke til offentlige nettsider som skal rangere på Google, der en vanlig webapp gir bedre resultat. Skal appen kjøre flere steder, planlegger vi det fra start.
Hvor lang tid tar en Flutter-app?
En MVP med én kjerneflyt tar 2–12 uker fra oppstart til begge butikker. En bedriftsapp med innlogging, backend, push og adminpanel tar 4–7 måneder. Fordi begge plattformer bygges samtidig, kommer iOS- og Android-versjonen ut samme dag. Se også MVP-utvikling.
Neste steg
Be om tilbud på Flutter-appen
Beskriv hva appen skal gjøre, hvem som skal bruke den, og hvilke systemer den må snakke med. Vi svarer med en anbefaling om Flutter, React Native eller native, og et prisspenn, fra oss i Trondheim. Flutter-prosjekter for bedrifter i Oslo og Bergen kjører vi med workshop hos dere og demo på video hver uke.
Lurer dere på om Flutter passer, holder det med tre setninger om appen. Send dem til oss, så får dere en ærlig teknologianbefaling og et prisspenn innen én virkedag. Dere kan også prøve appkalkulatoren og se et veiledende prisestimat på 60 sekunder.
Eller skriv til[email protected]
Kilder
- Flutter, FAQ (Google, Dart, kompilering til maskinkode, egen grafikkmotor, plattformer) – https://docs.flutter.dev/resources/faq
- Flutter, multiplattform (mobil, web, desktop, innebygde enheter fra én kodebase) – https://flutter.dev/multi-platform
- Flutter, Impeller-grafikkmotoren – https://docs.flutter.dev/perf/impeller
- Flutter, platform channels for native kode – https://docs.flutter.dev/platform-integration/platform-channels
- kode24, «CoopX flytter til Flutter» (4. november 2019) – https://www.kode24.no/artikkel/coopx-flytter-til-flutter/113264
- Vipps MobilePay, API-oversikt – https://developer.vippsmobilepay.com/docs/APIs/
- Vipps MobilePay, anbefalt appflyt – https://developer.vippsmobilepay.com/docs/knowledge-base/app-flow/
- Digdir, ID-porten OpenID Connect – https://docs.digdir.no/docs/idporten/oidc/oidc_guide_idporten
- Google Developers Blog, Flutter 1.0 (4. desember 2018) – https://developers.googleblog.com/en/flutter-10-googles-portable-ui-toolkit/