What is powerapps-modals?
Overview
powerapps-modals gives you the tool to build attractive modals in Model-driven apps fast & easy. You just need to configure the modal configuration and start calling it from your client code.
Why?

Roadmap
Click here to see the roadmap of powerapps-modals
Installation
Go to this link and download the latest release managed zip file, and then install it in your environment
How to use?
- Install the zip files in your environment
- Prepare your Json
{
"icon": "success",//warning //error
"labels": [
{ "text": "Activation Succeeded", "type": "h1" },
{
"text": "Enter customer name and email to submit the request to the next stage",
"type": "h2",
},
],
"inputs": [
{
"id": "customername", //used to get the value when the modal object is returned
"label": "Customer Name",
},
{
"id": "customeremail",
"label": "Customer Email",
},
],
"buttons": [
{
"id": "button-cancel", //used to know what button was clicked, retunred with modal return object
"label": "Cancel",
"type": "white", //blue //red
},
{
"id": "button-submit",
"label": "Submit",
"type": "blue",
},
],
}
- Call it from your script
let pageInput: Xrm.Navigation.PageInputHtmlWebResource = {
pageType: "webresource",
webresourceName: "vite_/viteapps/pages/modals.html",
data: JSON.stringify(modalJsonObject), //modalJsonObject, pass your json object here
};
let navigationOptions: Xrm.Navigation.NavigationOptions = {
target: 2, // 2 is for opening the page as a dialog.
width: 400, // default is px. can be specified in % as well.
height: 500, // default is px. can be specified in % as well.
position: 1, // Specify 1 to open the dialog in center; 2 to open the dialog on the side. Default is 1 (center).
title: "Record activation modal", //recommended to enter title here
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions).then(
function success(returnedValues) {
console.log(returnedValues);
/*
Return values object comes in the below format
{
inputs:object //holds the inputs and what the user filled them in with, you can get them by using the input id as the identifier
clickedButton:string // the id of the button the user clicked
}
for the above example you can get your inputs like the below
*/
let clickedButton = returnedValues.clickedButton; //if the user clicked on submit button it will return "button-submit"
let customerName = returnedValues.inputs["customername"]; //returns what user filled in the customer name input
let customerEmail = returnedValues.inputs["customeremail"]; //returns what user filled in the customer email input
},
function error(e) {
// Handle errors
}
);
That's it :)
Published on:
Learn moreRelated posts
Power Apps Vibe Coded Experience [Preview]
Here's how you can now create a Canvas App using a Vibe coded experience. This is Node based and the type is Code. Let's see how we can get to...
Power Apps Code Apps – Trigger a Power Automate Flow
In this article, I walk you through how to add and trigger a Power Automate cloud flow from a Power Apps code app. What type of flows can be a...
Power Apps – Dataverse Agent users with Microsoft Entra Agent ID
We’re introducing a new feature in public preview, Dataverse Agent users, powered by Microsoft Entra Agent ID. Rollout of this feature will st...
Power Platform Fundamentals #5: Building Your First Canvas App in Power Apps: Step-by-Step Guide from Setup to Deployment: Quick Read Series
Introduction Organizations today need quick, user-friendly business applications that can be built rapidly without heavy development effort. T...
Power Apps- Information regarding the end of support for the preview Analytics experience in Power Apps
On June 8, 2026, the preview Analytics experience in Power Apps, which allows makers to view usage, performance, and error metrics for apps, w...
Power Apps – Enhanced Search Experience in Grid Filters and Lookup Fields
We are introducing a faster, more intuitive search experience in Power Apps grid filters and lookup fields. This update replaces the legacy se...
Accelerating Model-Driven App Development with Power Apps Generative Pages: A Simpler Way – Part 1
We frequently work with clients who need modern, interactive, and visually appealing custom pages inside their model-driven apps. Most clients...