9 min lezen
Van low-code naar AI-enabled development met Power Apps Code Apps
Low-code werkt goed, maar niet voor alles
Een van de sterke punten van Power Apps is hoe snel je iets werkends kunt bouwen. Voor bijvoorbeeld een aanvraagformulier, eenvoudige registratieapplicatie of interne beheerapplicatie kun je met een Canvas App vaak binnen korte tijd veel bereiken. Je hoeft geen volledige frontend vanaf nul te bouwen, omdat zaken zoals verbindingen met Dataverse, formulieren en controls al beschikbaar zijn.
Het wordt lastiger zodra de requirements verder gaan. Bijvoorbeeld wanneer een klant een heel specifieke interface wil, of wanneer een scherm veel interactieve onderdelen bevat. Dan kom je soms in situaties terecht waarbij je veel logica in Power Fx krijgt, meerdere collections nodig hebt of allerlei oplossingen bouwt om de gewenste gebruikerservaring voor elkaar te krijgen.
Dat betekent niet dat Canvas Apps daar niet voor gebruikt kunnen worden. De vraag is alleen of het op dat moment nog steeds de meest logische keuze is. Als developer moet je wat mij betreft steeds vaker kijken naar de oplossing die het beste past bij de requirement, in plaats van standaard te beginnen met één type Power App.
De afgelopen jaren hebben we binnen Power Platform vooral gewerkt vanuit het idee van low-code. Je bouwt relatief snel een applicatie met Canvas Apps of Model-driven Apps, gebruikt Dataverse voor de data en Power Automate voor processen op de achtergrond. Voor een groot deel van de bedrijfsapplicaties werkt dat nog steeds prima.
Toch zie je dat applicaties steeds uitgebreider worden. Gebruikers verwachten ondertussen dezelfde ervaring van een interne bedrijfsapplicatie als van een moderne website of mobiele app. Denk aan een goede responsive interface, snelle zoek- en filtermogelijkheden, dashboards en een interface die echt aansluit op het proces.
Daar komt nog iets bij: AI wordt steeds vaker onderdeel van het ontwikkelproces. Tools die code kunnen genereren zijn inmiddels goed genoeg om een developer serieus tijd te besparen, vooral bij bekende technologieën zoals React, TypeScript, JavaScript en CSS.
Daarmee ontstaat binnen Power Platform een interessante combinatie. Je hoeft niet meer alleen te kiezen tussen low-code of volledig maatwerk. Met Power Apps Code Apps kun je beide werelden steeds beter combineren.
AI verandert vooral hoe we ontwikkelen
AI-enabled development klinkt misschien alsof AI straks de complete applicatie voor je bouwt, maar in de praktijk zie ik dat anders. Voor mij zit de grootste winst vooral in het versnellen van werk dat je normaal zelf zou uitvoeren.
Stel dat je een overzichtspagina wilt bouwen in React waarop gebruikers hun declaraties kunnen bekijken. Je kunt zelf beginnen met de componenten, types, filters en styling, maar je kunt AI ook eerst een basis laten genereren.
Bijvoorbeeld op basis van een opdracht zoals:
Bouw een React-component voor een declaratieoverzicht. Toon datum, categorie, bedrag en status. Voeg filtering op status toe en zorg dat het scherm ook op mobiel bruikbaar is.
Daarmee heb je vrij snel een eerste versie waarop je verder kunt bouwen. Dat betekent alleen niet dat die code meteen productiegeschikt is. Je moet nog steeds controleren of de component goed in de bestaande architectuur past, hoe data wordt opgehaald, of foutafhandeling aanwezig is en of security goed geregeld is.
AI neemt dus een deel van het uitvoerende werk over, maar niet de verantwoordelijkheid voor de oplossing. Dat verschil vind ik belangrijk.
Wat zijn Power Apps Code Apps?
Power Apps Code Apps zijn bedoeld voor developers die een applicatie vanuit code willen bouwen, maar daarbij wel gebruik willen blijven maken van Power Platform. In plaats van een Canvas App te maken in Power Apps Studio werk je bijvoorbeeld vanuit Visual Studio Code met React en TypeScript.
Een simpele opzet kan er ongeveer zo uitzien:

Je hebt aan de voorkant dus veel meer vrijheid dan bij een traditionele Power App. Je bepaalt zelf hoe je componenten zijn opgebouwd, hoe je state beheert, hoe navigatie werkt en hoe de applicatie eruitziet.
Tegelijkertijd bouw je de oplossing niet volledig los van Power Platform. Dat is voor mij juist het interessante gedeelte van Code Apps.
Een andere manier van ontwikkelen
Wie voornamelijk Canvas Apps bouwt, zal vooral gewend zijn aan Power Apps Studio en Power Fx. Bij Code Apps ligt dat anders. Je werkt veel meer zoals je dat bij een normale webapplicatie zou doen, bijvoorbeeld met Visual Studio Code, React, TypeScript, Node.js, npm, Git en de Power Apps CLI.
De projectstructuur is daardoor ook herkenbaar voor developers die al ervaring hebben met webdevelopment. Bijvoorbeeld:

Je kunt zelf bepalen hoe uitgebreid je die structuur maakt. Voor een kleine applicatie hoeft dat niet ingewikkeld te zijn. Bij een grotere oplossing kun je componenten, services en businesslogica juist duidelijk van elkaar scheiden. Dat maakt zaken als code reviews, versiebeheer en automatisch testen ook een stuk vanzelfsprekender.
Waarom niet gewoon een losse React-app?
Dat was ook een van de eerste vragen die bij mij opkwam. Als je toch React gebruikt, waarom zou je dan geen normale React-app maken en deze bijvoorbeeld in Azure hosten?
Dat kan natuurlijk, maar je krijgt dan ook meer zaken die je zelf moet regelen. Denk aan authenticatie, hosting, API's en de koppelingen met achterliggende systemen.
Bij een Power Apps Code App blijf je dichter bij het Power Platform werken. Dat is met name interessant wanneer een organisatie Dataverse en andere Power Platform-componenten al gebruikt. Je kunt bijvoorbeeld Dataverse gebruiken voor je tabellen en security, Power Automate voor achtergrondprocessen en een Code App voor de gebruikersinterface.
Je bouwt dan niet één grote applicatie waarin alles zit, maar gebruikt verschillende onderdelen waarvoor ze geschikt zijn.
Dataverse blijft gewoon belangrijk
Code Apps betekenen niet dat Dataverse ineens minder relevant wordt. Sterker nog, juist de combinatie vind ik interessant.
Stel dat we een declaratieapplicatie bouwen. Dan zouden we bijvoorbeeld tabellen kunnen hebben voor declaraties, categorieën, medewerkers en goedkeuringen. Dataverse verzorgt dan het datamodel en de beveiliging van die gegevens.
Aan de voorkant kan een Code App verantwoordelijk zijn voor de gebruikerservaring. Denk aan een dashboard, het toevoegen van een declaratie, een overzicht van je eigen declaraties, filters, totaalbedragen en een duidelijke statusweergave. Voor het goedkeuringsproces zou vervolgens Power Automate gebruikt kunnen worden.
Zo gebruik je elk onderdeel waarvoor het sterk is.
Waar AI en Code Apps goed bij elkaar passen
Dit is naar mijn idee een van de interessantste onderdelen. AI-modellen zijn sterk in veelgebruikte programmeertalen en kunnen voor React en TypeScript redelijk snel bruikbare code opleveren. Dat werkt bijvoorbeeld goed bij het maken van een component, het aanpassen van een bestaande functie of het schrijven van een eerste unit test.
Als je alles zelf moet typen, kost zo'n eerste versie tijd. Met AI kun je sneller naar een werkende basis gaan en daarna je tijd besteden aan zaken die meer aandacht nodig hebben.
Denk bijvoorbeeld aan vragen als:
- Klopt de architectuur?
- Is de oplossing onderhoudbaar?
- Hoe wordt de data opgehaald?
- Klopt de security?
- Hoe gaan we om met fouten?
- Wat gebeurt er bij grote aantallen records?
- Hoe wordt de applicatie naar test en productie gebracht?
Daar zit uiteindelijk ook het verschil tussen simpelweg code laten genereren en daadwerkelijk AI-enabled ontwikkelen.
AI kent je omgeving niet automatisch
Dat is ook meteen iets waar je rekening mee moet houden. Een AI-tool kan prima een stukje code schrijven, maar kent niet automatisch alle afspraken binnen een klantomgeving.
AI weet bijvoorbeeld niet vanzelf welke securityrollen er bestaan, welke naming conventions worden gebruikt, welke DLP-policies actief zijn, welke solutionstructuur is afgesproken, welke integraties al bestaan of waar bepaalde businesslogica volgens de architectuur thuishoort.
Dat blijft dus werk voor de developer.
Een simpel voorbeeld is filtering. Je kunt in React prima schrijven:

Voor de interface kan dat nuttig zijn, maar daarmee heb je nog geen security geregeld. Als een gebruiker bepaalde records niet mag bekijken, moet dat niet alleen via een filter in de frontend worden opgelost. De security moet ook op het dataniveau goed zijn ingericht.
Dit soort dingen moet je blijven beoordelen, ongeacht hoeveel code AI voor je schrijft.
Wanneer zou ik voor een Code App kiezen?
Ik zou niet bij iedere nieuwe aanvraag direct naar Code Apps grijpen. Voor eenvoudige applicaties zijn Canvas Apps vaak sneller en eenvoudiger. Een Code App wordt interessanter als er bijvoorbeeld veel eisen zijn aan de gebruikerservaring.
Denk aan complexe dashboards, uitgebreide tabellen, veel filtering, specifieke responsive layouts, maatwerkcomponenten, veel interactie op één scherm of bestaande React-componenten die hergebruikt kunnen worden.
Voor een simpele registratie met een paar velden zou ik nog steeds eerder naar Canvas of Model-driven kijken. De techniek moet passen bij het probleem.
Canvas, Model-driven of Code App?
Er is wat mij betreft geen winnaar tussen deze drie. Ze lossen verschillende problemen op.
Voor een sterk proces- en datagedreven applicatie kan een Model-driven App een logische keuze zijn. Als je snel een flexibele businessapplicatie wilt bouwen, is een Canvas App vaak geschikt. Heb je veel vrijheid nodig aan de voorkant en wil je werken zoals je gewend bent vanuit moderne webdevelopment, dan komt een Code App sneller in beeld.
In de praktijk zal het vaak juist een combinatie zijn. Bijvoorbeeld:

En misschien zit er voor beheer daarnaast nog een Model-driven App bij. Dat hoeft elkaar niet in de weg te zitten.
De rol van de Power Platform-developer verandert
Wat ik vooral interessant vind aan deze ontwikkeling, is dat het werk van een Power Platform-developer breder wordt. Een paar jaar geleden lag de focus misschien voornamelijk op het bouwen van schermen, Power Fx en flows.
Dat blijft belangrijk, maar daarnaast krijg je steeds vaker te maken met TypeScript, API's, ALM, Git, Azure en nu ook AI-tooling. Daardoor verschuift de rol steeds meer van iemand die alleen een app bouwt naar iemand die bepaalt hoe de complete oplossing in elkaar moet zitten.
Welke techniek gebruiken we waar? Welke businesslogica zetten we in Dataverse en welke in de frontend? Hebben we Power Automate nodig of is iets anders geschikter? Wanneer kiezen we voor een Canvas App en wanneer voor een Code App? En welke delen kunnen we verantwoord door AI laten versnellen?
Dat zijn uiteindelijk interessantere vragen dan alleen: hoeveel code kan AI voor ons schrijven?
Tot slot
Power Apps Code Apps vind ik vooral interessant omdat ze de grens tussen low-code en traditionele development kleiner maken. Je kunt binnen dezelfde Power Platform-omgeving een applicatie bouwen met technologieën zoals React en TypeScript, terwijl je nog steeds gebruik kunt maken van onderdelen zoals Dataverse en Power Automate.
AI maakt die combinatie nog interessanter. Niet omdat AI straks automatisch perfecte applicaties oplevert, maar omdat je als developer sneller kunt bouwen en meer tijd kunt besteden aan architectuur, security en de kwaliteit van de oplossing.
Ik verwacht daarom ook niet dat Code Apps Canvas Apps of Model-driven Apps gaan vervangen. Waarschijnlijk gaan we juist vaker verschillende vormen naast elkaar gebruiken.
De vraag wordt dan niet meer:
Bouwen we dit low-code of met code?
Maar eerder:
Welke combinatie past het beste bij deze applicatie?
En precies daar wordt AI-enabled application development interessant.
Ben je overtuigd en wil je zelf aan de slag met Power Platform en AI-enabled development? Dan ben je bij e-mergo aan het juiste adres. We helpen je van idee en architectuur tot een werkende, schaalbare oplossing.
Blijf op de hoogte
Wil je geen blog missen? Schrijf je dan in voor onze nieuwsbrief. Zo ontvang je elke maand alle nieuwste content direct in je mailbox. Je kunt je inschrijven via de knop hieronder.
Geschreven door

Mohamed Ellabbari
Low-Code Consultant