Answer seven questions about your scenario and get a tailored recommendation for which Power Apps app type, data store, and licensing model to use.
Understanding the primary user group shapes the UI, deployment model, and licensing approach.
A side-by-side reference for all Power Apps app types and the key factors that differentiate them.
| Capability | Canvas App | Model-Driven App | Code App | Power Pages | Custom Web App |
|---|---|---|---|---|---|
| UI Control | Full control (drag-and-drop + Power Fx) | Limited — component-based, platform-driven layout | Full control (TypeScript + modern frameworks such as React or Vue) | Template-based + Liquid customisation | Total control (any framework) |
| Data Store | Dataverse, SharePoint, SQL, 400+ connectors | Dataverse only | Dataverse + 1,500+ Power Platform connectors via SDK | Dataverse | Any (Azure SQL, Cosmos DB, etc.) |
| Offline Support | Managed offline (Dataverse); basic local caching (SaveData / LoadData) without Dataverse | Managed mobile offline (Dataverse) | No native managed offline. Custom offline is possible using standard web techniques (service workers, browser storage), but must be built and maintained by the development team | No | Custom (service workers / local storage) |
| Mobile Native Feel | Strong — runs in Power Apps mobile player | Good — responsive, Power Apps mobile player | Browser only — no native mobile wrapper yet | Responsive web | If built for it (PWA / native wrappers) |
| Camera / GPS / Barcode | Native controls | Via custom PCF components | Via browser APIs | Limited | Full browser APIs |
| Row-Level Security | Depends on data store (Dataverse = yes; SharePoint = no) | Dataverse RLS — business units, teams, roles | Dataverse RLS | Web roles + table permissions | Custom implementation required |
| Business Process Flows | No | Native support | No | No | Custom build |
| Speed to Build | Fast (low-code, drag-and-drop) | Very fast for Dataverse-centric CRUD and back-office forms | Moderate — requires TypeScript and modern web framework skills | Fast for portal scenarios (templates) | Slowest — full-stack development required |
| Responsive by Default | Only if designed for it | Automatic | Developer controlled | Template-based | Developer controlled |
| Solution-Aware ALM | Yes for the app and app components; backend ALM depends on the data source (Dataverse = first-class; SharePoint = manual) | Yes — straightforward, first-class support | Yes — solution-aware deployment | Yes — solutions | Git / CI-CD (no Power Platform solution packaging) |
| Enterprise Integration Layer | Via connectors / Power Automate | Dataverse APIs, plug-ins, Azure service bus | 1,500+ Power Platform connectors via SDK, Dataverse, custom APIs | Dataverse APIs | Azure Functions, API Management, any middleware |
| Min. Licence | M365 included rights (standard connectors) or Premium | Power Apps Premium or Per App | Power Apps Premium or Per App | Power Pages capacity (authenticated / anonymous MAU) | None (Azure / hosting costs only) |
| Best For | Mobile data capture, task apps, frontline | Back-office CRUD, process-driven workflows, data-dense management | Branded custom UI with Dataverse + 1,500+ connectors, pro-dev teams | External-facing portals, partner/customer self-service | Fully bespoke apps with zero platform dependency |
Note: Code apps are a distinct code-first app model for building custom web apps connected to Power Platform. PCF (Power Apps component framework) is a separate technology for creating reusable components that can be embedded within canvas or model-driven apps.
Choosing the right backend is just as important as choosing the app type. The data layer is where security, scale, and ALM are enforced — not the app.
| Factor | SharePoint | Dataverse | SQL Server / Azure SQL | Azure Blob Storage | Azure Functions + API Layer |
|---|---|---|---|---|---|
| Licence Required | Included with M365 | Power Apps Premium / Per App | Premium connector + Azure costs | Premium connector + Azure costs | Premium connector (custom) + Azure costs |
| Row-Level Security | No native RLS — item-level permissions do not scale | Native — business units, teams, security roles | RLS policies available | Container-level ACLs only | Custom auth middleware |
| Record Scale | 5,000-item view threshold; degrades with item-level perms | Millions of records | Millions+ records | Petabytes (blob storage) | Depends on backing store |
| File / Image Storage | Excellent — purpose-built for documents | Expensive — consumes Dataverse file capacity | Possible (FILESTREAM / varbinary) | Purpose-built, highly cost-effective | Routes to Blob / SharePoint |
| Relationships | Lookup columns only — no true relational model | Full relational model with polymorphic lookups | Full relational model | None (key-value) | Depends on backing store |
| Audit Trail | Version history only | Full field-level auditing | Custom triggers / CDC | Access logs only | Custom logging |
| Managed Offline Sync | Not supported | Built-in offline profiles | Custom implementation | Custom implementation | Custom implementation |
| Solution-Aware ALM | Limited — lists are not solution components; ALM achievable via env variables and separate lists per environment, but manual and fragile | First-class — tables, security roles, env variables | External schema management | External | External (ARM / Bicep) |
| Best For | Documents, small lists, file storage alongside apps | Structured business data, enterprise apps, security-sensitive workloads | Existing SQL estates, analytics-heavy scenarios | Large files, images, media storage | Enterprise integrations, microservice orchestration, hybrid architectures |