Ga direct naar inhoud

02 augustus 2022

Hybride (Flutter) app of native app ontwikkelen - maak je de juiste afweging?

Thomas vertelt over de vele belangrijke afwegingen & keuzes die bij de ontwikkeling van jouw app komen kijken. Handig!

Hybride (Flutter) app of native app ontwikkelen - maak je de juiste afweging?

Wil je een eigen app laten ontwikkelen, dan heb je best wat afwegingen te maken. Over de aanpak en het design, maar ook over de techniek bijvoorbeeld. Niet iedere organisatie die een app wil ontwikkelen lijkt zich daar helemaal bewust van, merken we. Maar sommige keuzes zijn van grote invloed op de (uiteindelijke) kosten of toekomstbestendigheid. Enige kennis van app-ontwikkeling voor het maken van de juiste afwegingen is dus geen overbodige luxe.

Het goede nieuws? Wij weten vaak binnen enkele minuten van een app-gesprek welke oplossing de beste keuze is voor jouw app. En kunnen je goed uitleggen waarom. Daar kom je echt verder mee! 

In dit artikel lees je meer over belangrijke afwegingen en keuzes die er zijn bij het laten ontwikkelen van een app. Maak jij de juiste afweging?

''Ik wil een Flutter-app''

Soms komen er mensen bij ons op kantoor die meteen een duidelijke wens op tafel leggen: “Ik wil een Flutter app”. Nadat ze gelezen hebben over de veelbelovende mogelijkheden met Flutter, zijn ze al volledig overtuigd. En toegegeven, Flutter klinkt ook ideaal. Bij deze ontwikkelingstechniek is er slechts één codebase nodig, waarmee je zowel een app voor iOS en Android tevoorschijn ‘tovert’. Je hebt dan dus ook maar één soort developer nodig (lees: minder kosten). En het gaat ook nog eens sneller. 

Toch kunnen wij als app-ontwikkelaars niet anders dan iets realistischer kijken naar deze veelbelovende (relatief nieuwe) open-source ontwikkeltechniek voor apps. Ik noemde het hierboven dan ook bewust ‘toveren’. Want toveren bestaat niet. Er komt nog behoorlijk wat bij kijken, om daadwerkelijk voor beide besturingssystemen een technisch perfect werkende app te halen uit één codebase. 

Flutter fan

Laat ik voor de duidelijkheid wel even voorop stellen: ik ben fan van Flutter! Het is fantastisch wat ze bij Google - de makers van dit Framework - in slechts enkele jaren voor elkaar hebben gekregen. Eigenlijk zijn ze hun grote concurrent React Native (van Facebook) in rap tempo voorbij gegaan. Flutter is namelijk al verder doorontwikkeld. En heeft recent zelfs de mogelijkheid gereleased om naast iOS en Android apps, ook desktop apps (voor Mac en Windows) en webapps (PWA’s) te ‘toveren’ uit dezelfde codebase. Daar heb je dus maar één programmeertaal voor nodig, dat is echt fantastisch!

Maar zoals gesteld: Flutter is lang niet altijd de beste oplossing voor je app-project. Er komt namelijk nog aardig wat werk bij voor developers om de codebase daadwerkelijk te distribueren naar een iOS en Android app. Zo heb je te maken met allemaal verschillende schermgroottes (in portret en landscape modus) en specifieke UI (User Interface) elementen voor beide besturingssystemen. Om alles netjes te schalen naar de juiste schermgrootte en te tonen zoals het bedoeld is, zijn er handmatige nog veel acties en checks nodig. Soms moet je de codebase ook uitbreiden met native code om het beste uit de app te halen. Je roept deze native iOS en Android code dan aan vanuit de Flutter codebase, als een soort tussenlaag.

React Native of Flutter vs Native

Hybride apps en Native apps, hoe zit het ook alweer? Voor als je niet zo bekend bent met het ontwikkelen van apps, volgt hier een korte uitleg. Een app ontwikkel je meestal voor de twee grootste typen besturingssystemen: iOS en Android. Maak je voor elk platform een eigen app, dan noem je dit native apps. Maar er zijn door de jaren heen ook frameworks ontstaan waarmee je met één codebase meerdere apps ontwikkelt. Die codebase is door developers te distribueren naar zowel een iOS app als een Android app. Dit noem je hybride apps. 

React Native is al lang een populair framework waarmee je hybride apps ontwikkelt. Flutter is als concurrent een paar jaar geleden begonnen, maar in die relatief korte tijd uitgegroeid tot ik kan wel zeggen: de populairste. Zeker met die laatste release voor desktop apps. Hoewel een desktop app lang niet altijd een behoefte is van organisaties die een app willen (het is vooral iets tofs voor de echt grote merken), is het wel een geweldige vernieuwende ontwikkeling. 

Wanneer welk framework kiezen?

Hoewel het dus fantastisch klinkt (en ook is, zeg ik als Flutter fan), moeten we het enthousiasme dus een klein beetje nuanceren als het gaat om daadwerkelijke Flutter-apps. De ontwikkeltechniek werkt goed, bij relatief simpele apps. Maar bij iets meer complexiteit of geavanceerde functionaliteiten, wordt het een ander verhaal. Dan zijn er te veel nadelen, die uiteindelijk tegenwerken. 

In een eerder blogartikel noemde ik al een paar nadelen van Flutter. Zo zijn er bepaalde aspecten die in Flutter nog niet goed ondersteund worden. Zoals: bluetooth, geavanceerde native technieken of externe API-koppelingen.

Maar los van deze beperkingen, zijn er meer nadelen die goed zijn om te benoemen voor een goede afweging. Zo is het goed om je te beseffen dat React Native en Flutter allebei open-source frameworks zijn. Dit betekent dat er aan ontwikkeld wordt binnen een community van developers. Ze werken (vaak in hun vrije tijd) aan stukjes code die door andere developers gebruikt kunnen worden in de ontwikkeling van apps. Packages, noemen we die stukjes code. 

Een mooi fenomeen. En er is zeker een actieve community, waarbinnen veel doorontwikkeling plaatsvindt. Maar toch ben ik ook realistisch als ik zeg: je loopt altijd een beetje achter. Ter verduidelijking een voorbeeld. De update iOS16 komt eraan in september. Bij Native apps zijn we in staat om met een aantal relatief kleine aanpassingen een update van een app uit te rollen, waardoor de nieuwste features vanuit de software update daarin gebruikt kunnen worden. 

Bij Flutter apps duurt dit meestal maanden, soms nog langer. Je bent geheel afhankelijk van de updates die binnen de community gelanceerd worden. En je weet dus nooit wanneer. Voor een specifieke functionaliteit, kan het soms lang duren voor het beschikbaar is. Soms komt het zelfs nooit, of niet op exact dezelfde manier zoals in de UI bedoeld was. Daarbij is gebruik ook altijd ‘op eigen risico’. Er is geen garantie op de mate van kwaliteit.

Wanneer kiezen voor Flutter?

Is je beoogde app simpel? Of vooral ondersteunend, omdat er bijvoorbeeld al een website is waar gebruikers geavanceerd dingen doen? En blijft de app zo, ook in de toekomst? Dan kun je met Flutter heel goed uit de voeten. En profiteer je dus van de tijdswinst en enige kostenbesparing. 

Maar zodra er sprake is van meer complexiteit, of later in de doorontwikkeling aan de orde komt, is het slim om goed door te denken. Kan wat je wil wel in Flutter? Maak je de goede keuze, ook voor de toekomst? Over bijvoorbeeld geavanceerde native technieken of koppelingen met externe API’s moet goed nagedacht worden. Wij gaan dan graag met je in gesprek en weten meestal na enkele vragen al wat voor jouw app de beste oplossing is. 

Tot slot: zijn de kosten voor Native apps 2x zo hoog?

Afsluitend wil ik graag een misvatting de wereld uit helpen. Vaak wordt er bij native apps gedacht aan dubbele kosten, omdat je twee apps te ontwikkelen hebt. Een logische gedachte wel, maar wij ervaren dit binnen ons mobile team anders. Omdat we zoveel ervaring hebben in het ontwikkelen van iOS en Android apps, zijn wij heel snel in het ontwikkelen van deze apps. We weten precies waar we op moeten letten. En dit levert relatief gezien een aanzienlijke tijdswinst op. 

Voor Flutter heb je maar één developer nodig. Maar die moet wel met twee verschillende besturingssystemen rekening houden. Het handmatige werk dat nog nodig is nadat de codebase geschreven is, moet niet onderschat worden. 

Al met al zijn je kosten bij een Native app zeker niet twee keer zo hoog. Er zit wel een verschil in de kosten. En hoe groter de app, hoe groter het verschil meestal is. Maar vaak is dit verschil veel minder groot dan gedacht. En dan heb je wel twee apps met de best mogelijke gebruikerservaring. Iets om over na te denken. 

Ook eens in gesprek over jouw app-wensen?

Ons mobile team helpt je graag verder!


  • Breda - Reduitlaan 29, 4814 DC
  • Eindhoven - Torenallee 3, 5617 BA
  • Rotterdam - Hofplein 19, 3032 AC