I have been building Power Apps Canvas Apps for years. The process has always had friction: design in the Studio, hit publish, wait, inspect the result, go back, adjust, repeat. It works, but it’s slow. So when I saw that there was a canvas-authoring MCP for Claude Code, I wanted to see if AI could take over the repetitive parts.

What worked well, what broke, and what I learned along the way.

This post is an honest account of what happened – what worked well, what broke, and what I learned along the way. The app is a lightweight CRM for demo purposes: five screens, sales pipeline tracking, and contact logging.

The Setup

The `canvas-authoring` MCP connects Claude Code to the Canvas App Studio through Power Apps’ coauthoring API. The configuration is a single `.mcp.json` file in the project folder. Claude did all these for me, I just told what I wanted.

Once the MCP was configured, I created new Canvas App in the browser with Coauthoring turned on. Claude connects to that live session — any YAML Claude writes goes straight to your editor in real time, and any manual changes you make sync back to Claude when you ask. There’s no import/export cycle. No file pushing. Claude is a live co-editor.

 I created new Canvas App in the browser with Coauthoring turned on
I created new Canvas App in the browser with Coauthoring turned on

Planning the Screens

Before touching any code, Claude sketched the five screens on the chat:

  • Home today’s actions and unhandled quote requests
  • Customers searchable list with company count
  • Customer Card details, quick dial/email buttons, activity history
  • Log Contact fast form: customer + contact method + notes + next action date
  • Pipeline deals by status with euro summaries
Wireframes for Log Contact and Pipeline screens
Wireframes for Log Contact and Pipeline screens

Since the SharePoint lists weren’t ready yet, all data would run on mock collections in `App.OnStart`. That was a deliberate choice — build the UI first, wire the data later.

Building Five Screens in Parallel

This is where Claude Code’s architecture shines. The `/canvas-app` skill runs a planner agent first — it designs the layout strategy, color palette, and data model, then writes a shared `canvas-app-plan.md`. After that, it fires one screen builder agent per screen, all simultaneously.

Claude Code terminal showing 5 parallel canvas-screen-builder agents running, with the Power Apps tree view showing all 5 screens appearing
Claude Code terminal showing 5 parallel canvas-screen-builder agents running, with the Power Apps tree view showing all 5 screens appearing

All five screens appeared in the Power Apps tree view within minutes. The color system, navigation, and control naming were all consistent across screens because every builder read the same plan document.

The mock data (five customers, five activities, five deals) came through cleanly. Navigation worked. Badges were color-coded by action date.

The Layout Problem

The first iteration had an obvious issue.

First iteration, the top and bottom bars are taking too much height.

The header and the bottom navigation bar each occupied roughly a third of the screen height. The content got the remaining third. On a landscape desktop screen, this looked completely wrong.

Power Apps showing the broken layout — header and navBar each taking 1/3 of screen height
Power Apps showing the broken layout — header and navBar each taking 1/3 of screen height

I knew the fix had to be somewhere in the AutoLayout container settings. I didn’t know exactly where. I told Claude what I was seeing and asked it to investigate the root cause.

Claude identified that the `FillPortions` property was missing from the header and navBar containers. It added them — but the layout still didn’t look right after the fix was compiled.

The reason: I had also changed the header direction from Vertical to Horizontal manually in the Power Apps editor, and when Claude pushed the corrected YAML via `compile_canvas`, it overwrote my manual change. We were going in circles.

Understanding the Root Cause

After a few failed attempts, I fixed HomeScreen manually in the Power Apps editor. That gave me a clean reference to work from.

The root cause turned out to be a Power Apps AutoLayout behavior that’s easy to miss. Claude did not understand it but I decided to fix it manually, it was faster.

Fixing manually the UI details
Fixing manually the UI details (mock data visible)

Copying the Fix to Other Screens

Once HomeScreen was correct, I asked Claude to replicate the same pattern to the other four screens. Claude synced the app state, read the corrected HomeScreen, understood the pattern, and applied it consistently.

Claude updating the yml codes
Claude updating the yml codes

It did not help, the problems was there still. But It took me 10 minutes to fix the screens looking good. Then I asked Claude to check what did I change and learn from that.

What I Learned

  • I should have given proper wireframes or design the structure my self
  • Once I got something ready, I should have fixed it manually first before trying to tell Claude what is wrong
  • Claude still did not get it right even I took screenshots what was wrong
  • Claude does very fast many UIs which are quite usable and branded
  • Claude Code definitely helps developing but skills needs to be on the person prompting Claude