I’ve been hands‑on with Generative Pages in Model‑Driven Power Apps. Short version: you get results fast. And when you already know Dataverse and the client APIs, they get really good, really quickly. Microsoft’s goal is simple, describe a page, pick your tables, and let AI generate React code plus the wiring. You will then refine in a conversation and ship. No Power Fx layer, but direct code generation. That matters for performance and iteration speed.
I put it to work on something fun: my Fantasy Football tracker. One table with all relevant NFL players. I wanted a richer list experience than a default view. Filters, quick access, and a detail peek without kicking the user out of flow.
So I built a Generative Page.

It took me minutes to get a decent page looking page. Especially when I asked it to look like a Model-Driven App, it immediately applied Fluint Ui. Then I nudged it with prompts and a bit of platform knowledge to make it just the way I want it.
Learning #1 — Link the player name to the Main Form
Now that I have a list of NFL Players, I want to be able to click on them for more details or to edit it. You can ask the Generative Page functionality to wire something up, but I want a different route. As we are in a Model-Driven App, I want to mix and match best of both worlds. I want to use the Main Form of the NFL Player.
Prompt I used:
“I want to create a hyperlink on the player name to the Main Form of the NFL Player table.”
The agent generated the list, wired the click, and opened the record. Excellent start, I was surprised it worked as advertised, Generative Pages let you describe the intent and bind to Dataverse tables right inside the designer.

But… it opened in a new tab. I wanted a modal. Inline to avoid context switch.
Learning #2 — Teach the agent a better API
Then I asked:
“Can we open the form as a modal instead?”
This did not work at all. So I peeked at the generated code and saw that it leaned on Xrm.Navigation.openForm. That explains the new tab. “openForm” is designed to open entity forms (and quick creates), and it explicitly points you to navigateTo when you need a main form in a dialog. Yes, the docs literally say: “To open a main form as a dialog, use the navigateTo method instead.”
So I told the agent:
“You cannot open the form as a dialog with the openForm method. Use
Xrm.Navigation.navigateTo. A dialog mimics my requirement of a modal better.”
That single correction changed the UX completely.


Xrm.Navigation.navigateTo supports opening entity records and custom pages as dialogs, with options for target, position, width/height, and a success callback when the dialog closes.
If you’ve never used it for modals, the pattern looks like this:
// Open the NFL Player main form as a modal dialog
Xrm.Navigation.navigateTo(
{
pageType: "entityrecord",
entityName: "new_nflplayer", // logical name
entityId: playerIdGuid // open existing record
// formId: "optional-form-guid" // pick a specific form if you need it
},
{
target: 2, // 2 = dialog
position: 1, // 1 = center, 2 = side
width: { value: 50, unit: "%" },
height: { value: 80, unit: "%" },
title: "Player Details"
}
).then(
function () { /* code after dialog closes */ },
function (error) { console.error(error); }
);
Microsoft shows similar options in the client API docs, and plenty of community examples demonstrate dialogs with navigateTo.
Why I’m bullish on Generative Pages
Generative Pages get you 70% there in minutes. Another 20% comes from creativity, and the last 10% is where platform knowledge pays off.
- You know which API gives you the UX you want (
navigateTovs.openForm). - You can shape prompts with the right terms: “modal,” “dialog,” “open inline,” “not a new tab.”
- You can read the generated code and nudge it to better practices (e.g., avoiding full‑page navigation for details).
This is exactly the maker‑plus‑AI loop I like: the agent scaffolds, you guide.

And yes, Generative Pages and the broader Platform are still evolving. Generative Pages are scoped to model‑driven apps, with a dedicated experience in the app designer and an AI agent that generates React. You iterate conversationally and publish pages individually. That’s fine. The speed trade‑off is worth it for many scenarios.
Will I keep building Custom Pages?
Probably not.
Generative Pages cover what I used Custom Pages for, bespoke UI, rich experience, inline actions, and a modern UX. But then with less friction, more flexibility and faster iteration. The key is to link your Generative Page to your Model‑Driven App and make the app experience complementary. That gives you the same “canvas‑style” experience inside a model‑driven app, minus the overhead of designing and building a Custom Page.
For the Fantasy Football app, the Generative Page won: prompt → list UI → link → modal. Done. It’s the experience I want.
The Future Is Generative
Generative Pages aren’t just a shortcut, they are a shift in how we build apps. Instead of hand‑crafting every pixel or wiring every event, we describe intent and let AI scaffold the experience. Then we refine with platform knowledge.
This is the new maker loop: prompt → generate → guide → ship. It’s faster, more flexible, and closer to how modern development will feel across the Power Platform.
Custom Pages? They’ll still exist for edge cases. But for most scenarios, Generative Pages will become the default.