Everything as Code - ALM with Canvas Apps
With the recent experimental announcement of the PowerApps Solution Packager, we now have a much better way of managing Canvas Apps in your source code repository. This moves us much closer to a better ALM story for the whole of the Power Platform so that my top 3 principles can be followed:
- Everything as code – The single point of truth for all artifacts (solution metadata, apps, code, data, versioning, releases) should be under source control.
- Environments as cattle, not pets – When the entire solution is under source control, environments can be built and deleted for specific purposes – e.g. features, experiments, testing. I wrote a recent post on this.
- Define your Branching Strategy – A branching strategy is defined as describing how features/releases are represented as branches. Each time a new feature (or group of linked features) is worked on, it should happen in a source code branch. Code can be merged between each branch when ready to be integrated, built and released. Branches normally would have an associated PowerPlatform environment to allow you to work in parallel to other changes without the risk of introducing changes that should not be released. The gitflow branching strategy is a great starting point to use.
The Power Apps Solution Packager (pasopa) brings us closer to the 'everything as code' mantra - by unpacking a Canvas App into source code files that allow you to merge in changes from other branches and then re-pack. Eventually, this will make its way into the Power Apps CLI and Solution Packager.

Here are a couple of videos I've done on the subject of the PowerApps Solution Packager:
- ▶ Canvas Apps As Code??! Power Platform Unpacked #10
- ▶ Managing Canvas Apps as Source Code using Branches and Pull Requests
Published on:
Learn moreRelated posts
Power Apps – Public preview for Microsoft 365 Copilot chat in canvas apps
We are announcing Microsoft 365 Copilot chat for canvas apps in Power Apps. This feature is now available for public preview. How does this af...
How to add smart offline capabilities in embedded canvas apps
Learn how to smartly add offline capabilities in embedded canvas apps! You can store multiple records related to multiple different records! T...
How to add offline capabilities in embedded canvas apps
Have you ever wanted to add offline or caching capabilities to embedded canvas apps? Learn a very simple way to make that happen! The post How...
Power Apps – Enable online mode to access Dataverse for Canvas apps
We are announcing the ability to enable online mode to access Dataverse for Canvas apps in Power Apps. This feature will reach public preview ...
New quality updates to modern controls in canvas apps
This release delivers quality and reliability improvements across nine modern controls in canvas apps, including Combo Box, Text Input, and Da...
How to change the attachment on a note in canvas apps
Changing the attachment of a note is super easy in a model-driven app, not so much in a canvas app. Learn how to do it! The post How to change...
How to add a title and description when uploading an attachment in canvas apps
Uploading attachments through model-driven apps allows you to specify title & description but canvas app doesn't. Learn how you can! The...
How to work with Dataverse Attachments in canvas apps
Learn how to work with the Attachments Dataverse table in canvas apps. We will review how to create, delete, and view existing attachments! Th...
How to work with Dataverse Notes in canvas apps
Learn how to work with the Notes Dataverse table in canvas apps. We will review how to create, edit, delete, and view existing notes! The post...
Best Practices: Canvas Apps & Power Pages Integration
Golden Rule:Canvas Apps are NOT designed for external users. Power Pages is.Most best practices focus on when to avoid integration and how to ...