Your canvas apps, as real code.
Fixed-price conversion to React and TypeScript. 3,631 formulas on the last one.
What actually happens
Real formulas from a real conversion — a five-screen expenses app on Dataverse, not a mock-up.
Power Fx, locked in a formula bar. No source control, no tests, no review.
// Employees screen · gallery items Search([@Employees], SearchInput1.Text, cr6bf_employeename, cr6bf_email, cr6bf_phone) // the save button SubmitForm(Form1)
Deterministic translation. Rules, not a model guessing at your logic.
3,631
formulas read — every one accounted for
3,542
translated automatically, by rule
89
handed to a developer, itemised and costed
TypeScript that compiles clean, in a repo you own.
pfx.Search(Employees, SearchInput1?.Text, (row) => row.cr6bf_employeename, (row) => row.cr6bf_email, (row) => row.cr6bf_phone) // SubmitForm, made explicit bx.submitForm("Form1", { dataSource: "Employees", item: RecordsGallery1?.Selected, values: { … } }, { onSuccess, onFailure })
And the 89 it wouldn't translate
Every one is listed, with the reason, in the report you get. Nothing is silently dropped — a stub goes into the source so the app still compiles and the gap sits where a developer will actually look.
// Employees screen · SidebarContainer1 · Visible If(And('Employees screen'.Size = ScreenSize.Small, Or(newMode, editMode)), false, true) → TODO(manual): canvas responsive breakpoints (ScreenSize) have no code-app equivalent — needs a CSS media query. Est. 7.5–16.5 h across 42 items.
You don't have to take my word for any of it
The demo and the deliverable are both on this page. No form, no call first.
Pricing
Published, fixed. You'll know what this costs before you speak to me.
- Every formula in your app, read and classified
- An itemised list of what needs a developer, with effort bands
- A fixed price for the migration itself
- Your app as a React and TypeScript code app
- Delivered into your own repository
- 50% deposit, balance on go-live, 30-day fixes window
- Two hours a month of changes and fixes
- Monthly in advance, cancel whenever
The questions people actually ask
What happens when I email you?
You get a reply from me, not a sales sequence. I'll ask for an export of your app (.msapp) and confirm the £495 before anything runs. If your app turns out to be a poor fit, I'll say so and you won't be invoiced.
Who owns the code?
You do, outright, including the generated source. It lands in your repository under your source control. There's no runtime licence and nothing to keep paying me for.
What happens to our data?
The converter reads your app's formulas and structure — not the records inside it. The generated app runs on seeded sample data until it's wired to your real environment.
Is this AI writing our app?
No. The translation is rule-based and deterministic. Anything the rules can't handle is reported as needing a developer rather than being guessed at — that's the 89 above.
Why would we move off canvas at all?
Code apps went generally available in February 2026. If you're hitting performance ceilings, want real source control and code review, or your licensing changed under you, that's the move. If none of those bite, stay where you are — it's a legitimate answer.
How long does a migration take?
The assessment is ten working days. The migration depends on what the assessment finds, and you'll have a fixed price and a duration before you commit to it.
Why this exists, and who you're dealing with
Power Apps code apps went generally available in February 2026, and Microsoft ships no path from canvas to code. You either rewrite by hand — quoted in months — or you stay where you are. I built the converter doing this work for a client, and it now translates the mechanical majority by rule.
I'm Ali Rey. I've spent my career in Microsoft 365 and the Power Platform, I do this work myself, and there's no account manager between us. If you want to talk it through before spending anything, say so and we'll get twenty minutes in the diary.