Power Apps Code Apps: Building Multi-User Data Applications with Modern UI

In February 2025, Microsoft made code apps generally available in Power Apps — a new model that lets professional developers build production web applications using standard tools (TypeScript, React, VS Code) while keeping them fully inside the Power Platform ecosystem. This article summarises what is now possible, with a focus on teams of users collaborating through responsive, modern interfaces backed by real business logic.

Contents

  1. What are code apps?
  2. Multi-user data management
  3. Responsive and modern UI
  4. Business logic
  5. Developer workflow
  6. Enterprise governance and security
  7. Licensing and prerequisites
  8. How code apps relate to canvas and model-driven apps
  9. References

What are code apps?

Power Apps has always offered two flavours: canvas apps (drag-and-drop, formula-driven) and model-driven apps (data-first, Dataverse-native). Code apps are a third, complementary model aimed at professional developers who need:

In short: you write a TypeScript/React (or Vue, or plain JS) web app locally; Power Platform handles hosting, authentication, connector authorisation, DLP enforcement, and health monitoring without any extra configuration.

The feature reached General Availability on 5 February 2025, signalling Microsoft's commitment to it as a supported, production-ready path rather than a preview experiment.

Multi-user data management

A common real-world scenario: dozens of business users across different roles need to view, create, update, and delete records — think order management, equipment inspection logs, project tracking, or HR workflows. Code apps address this in several ways.

Dataverse as the shared data layer

Code apps connect to Microsoft Dataverse (the relational database built into Power Platform) through the standard connector. Dataverse provides:

1,400+ connectors via JavaScript

Beyond Dataverse, code apps can call any of the 1,400+ Power Platform connectors directly from TypeScript. This means a single app can read from SharePoint lists, write to SQL Server, trigger Power Automate flows, or query an external REST API — all with the same OAuth-managed credential model that Power Apps already uses, so users never handle raw secrets.

Intelligent data loading

Because the developer controls all data-fetching code, it is straightforward to implement patterns that would be hard or impossible in canvas apps: lazy loading, pagination, delta syncs, and column-selective queries that fetch only the fields the current view actually needs. This keeps the application fast even when the underlying tables hold millions of rows.

Responsive and modern UI

Power Apps code apps inherit the full capability of the modern web. There is no proprietary component model to work around.

Framework freedom

The starter template ships with React + TypeScript + Vite, but any framework (Vue, Svelte, SolidJS) or no framework at all is valid. This means developers can adopt whichever component library their team already knows: Fluent UI, Chakra UI, Ant Design, Tailwind CSS, and so on.

Fluent Design System

Microsoft's own guidance points to Fluent UI React v9 as the natural choice for apps that should look and feel like the rest of Microsoft 365. Fluent UI provides accessible, production-quality controls including data grids with sorting and filtering, date pickers, comboboxes, tab lists, progress indicators, dialogs, and side panels — all responsive and keyboard-navigable by default.

Responsive layouts

Because the developer writes CSS directly (or uses a utility framework), responsive breakpoints are no different from any other web project. A code app can display a full master-detail grid on a desktop and collapse to a single-column list on a mobile browser without special canvas-app workarounds.

Hot Module Replacement during development

The local dev server uses Hot Module Replacement (HMR): saving a file updates the running app in the browser instantly, without a full reload and without losing the current form state. This dramatically shortens the feedback loop when fine-tuning layout and interaction behaviour.

Business logic

This is where code apps most clearly surpass canvas apps for complex scenarios.

Client-side logic in TypeScript

Any logic that belongs in the presentation layer — field validation, computed values, conditional formatting, multi-step wizards, dependent dropdowns — is written in plain TypeScript. It is testable with standard unit-test tooling (Vitest, Jest) and can be shared across components with normal module imports.

Server-side logic via Dataverse plug-ins and custom APIs

For logic that must run on the server regardless of which client triggers it (data integrity rules, cross-table aggregations, integration events), Dataverse supports:

Offline and optimistic UI patterns

Because the developer controls the full fetch/mutate cycle, it is practical to implement optimistic updates (show the UI change immediately, reconcile with the server in the background) and even offline queuing, patterns that improve perceived performance for users on slow or intermittent connections.

Developer workflow

The local development loop looks familiar to any web developer:

  1. Scaffold from the official starter: pac powerapps init
  2. Run npm run dev — a local Vite server starts with HMR enabled
  3. Authenticate once against your Power Platform environment; connectors resolve through that session
  4. Commit to Git; push triggers a CI pipeline that calls pac powerapps push to deploy to the managed host

The Power Apps CLI (pac) handles packaging and deployment; there is no manual ZIP-and-upload step. Multiple environments (dev, test, production) are managed through Power Platform's standard environment promotion tooling, including the Solution framework for ALM.

Local vs. hosted: During development the app runs on localhost. In production it runs on Power Platform's Managed Host — a multi-tenant, globally distributed runtime that Microsoft operates. Developers do not provision or configure any web servers.

Enterprise governance and security

Because code apps run inside Power Platform rather than as standalone Azure App Service apps, they inherit the platform's governance controls automatically:

Control How it applies to code apps
Microsoft Entra ID authentication Zero-config SSO; users authenticate with their work account, no app registration required from the developer
Conditional Access policies MFA requirements, compliant-device checks, and location policies enforced at login without any code changes
Data Loss Prevention (DLP) policies Connectors classified as Business or Non-Business by the tenant admin; the runtime blocks any connector call that violates policy
Connector consent flows Automated OAuth consent is collected from end-users on first run; no shared service account credentials needed
Power Platform Monitor Built-in diagnostics dashboard for tracing connector calls, errors, and performance without custom logging infrastructure
Environment-level isolation Dev, test, and production are fully isolated Power Platform environments; promoting a solution does not carry raw credentials across

Licensing and prerequisites

Code apps require Power Apps Premium licensing for end-users (the same licence tier required for canvas apps that use premium connectors or Dataverse). Developers additionally need:

The pac CLI and the starter template are free and open-source; the official repository is github.com/microsoft/PowerAppsCodeApps.

How code apps relate to canvas and model-driven apps

Canvas app Model-driven app Code app
Primary author Power user / citizen developer Solution architect / admin Professional developer
UI authoring Drag-and-drop studio Auto-generated from data model Full code (HTML/CSS/JS frameworks)
Responsive layout Limited; requires careful container layout Good for list/form patterns Full control; any CSS approach
Business logic location Power Fx formulas Power Fx + server-side plug-ins TypeScript + server-side plug-ins
Testability Limited (Test Studio) Limited Full unit/integration test suites
Connector access from UI Power Fx connectors Dataverse only (direct) Direct JavaScript API calls
Source control YAML/JSON export XML solution export Native Git; plain source files

The three models are complementary. A realistic enterprise solution might use a model-driven app for back-office data entry, a canvas app for a simple mobile approval screen, and a code app for a custom, data-dense dashboard that none of the other two can render efficiently.

When to choose code apps: teams of users who need a pixel-precise, highly interactive data application; scenarios requiring real npm dependencies or custom rendering logic; or projects where the developer team already works in TypeScript and needs proper unit tests and CI/CD.

References

  1. Microsoft Power Apps Blog — Generally available: host and run code apps in Power Apps (February 5, 2025)
  2. Microsoft Learn — Power Apps code apps overview
  3. Microsoft Learn — Apply business logic using code in Dataverse
  4. Microsoft Learn — Responsive design guidelines for Power Apps
  5. Microsoft Learn — Code components for canvas apps (Power Apps Component Framework)
  6. GitHub — microsoft/PowerAppsCodeApps — official starter template and samples
  7. Bridgeall — Power Apps Code Apps — The New Pro-Developer Frontier in Power Platform (March 2026)
  8. DEV Community — Code Apps in Power Apps: Unlocking Pro-Code Potential in a Low-Code World
  9. Ari Levin — Code Apps in Power Apps are now Generally Available (GA)

Published May 2025.