Skip to main content
guideliving

Building Canvas Apps with Power Platform at CMS

Experience-based guidance for building Power Platform Canvas apps at CMS, with a focus on responsive design, accessibility, reusable components, data architecture, ALM, and security.

Reviewed Fri Jul 10 2026 00:00:00 GMT+0000 (Coordinated Universal Time) · Sensitivity: internal

#Findings

#Design and layout

  1. Design with mobile and responsive behavior in mind unless the app is desktop-only.
  2. Use containers and nested containers instead of fixed X/Y positioning.
  3. Centralize theme, color, spacing, and reusable UI settings (prefer App.Formulas where appropriate).

#Accessibility and controls

  1. Design for Section 508 from the beginning.
  2. Rename controls with meaningful names (avoid Label1, Button1, etc.).
  3. Validate modern controls for keyboard navigation, screen-reader support, focus behavior, and accessible labels.

#Components and reuse

  1. Encourage reusable component libraries.
  2. Clarify that passing large datasets into components may impact delegation and performance.

#Naming consistency

  1. Use consistent product names throughout: Canvas Apps, Power Platform, Dataverse, Power Apps, Microsoft Entra ID, GitHub.

#Data and performance

  1. Design the backend data model first with delegable queries.
  2. Use paging for large datasets. Avoid collections unless they are necessary, small, and temporary.

Before designing a new Dataverse schema for a new project, check the Microsoft Government Solutions data models — pre-built, reusable Dataverse table schemas designed for federal agencies. Modules covering people, organizations, documents, approvals, compliance frameworks, HR, case management, programs and services, incidents, and more. Using an existing module avoids rebuilding common structures and improves cross-app consistency.

#Performance

  1. Minimize App.OnStart loading.
  2. Prefer delegable queries.
  3. Test using production-sized datasets.

#Error Handling

  1. Use IfError().
  2. Display user-friendly messages.
  3. Log unexpected failures.

#Environment Configuration

  1. Use environment variables.
  2. Avoid hard-coded URLs, GUIDs, email addresses, and connection references.

#ALM and solution management

  1. Recommend using the approved solution/publisher.
  2. Create new assets from within the intended solution.
  3. Promote changes regularly to UAT instead of waiting until development is complete.

#Security and access management

  1. Prefer assigning security roles through Dataverse teams rather than directly to users.
  2. Where appropriate, leverage Microsoft Entra ID group teams for easier membership management.
power-platformcanvas-appsaccessibilitydataverse