3 min read

Experimental Git version control for Power Apps Studio

How many of you have seen this dialog in Power Apps Studio:

Argh.  Somebody else has the app open.  I’m locked out and now need to ask the other person to finish up and close the app.   If only we could work in parallel, two or more makers working in the same app at the same time, our team would be more productive.

We have heard your collective Arghs loud and clear in Redmond.  For some time now we have been actively working on co-authoring.

As a first step, we are introducing a new experimental feature that eliminates the dreaded lock dialog.  Two or more makers can load a Canvas app in Power Apps Studio, make independent changes, and save to merge those changes with other makers.  Merges are semantically aware of the app structure, making for a much cleaner result.

This is not the full real-time co-authoring experience that Microsoft Office enjoys.  That is what we aspire to.  This experimental feature is just a first step, to evaluate the user experience and our merge logic.  Changes are merged asynchronously as each maker saves and syncs changes to the version control store.

In the below animation, Emily and John are working on the same app at the same time.  Each is making edits to the app and sharing with the other.  Behind the scenes, Azure DevOps is the Git provider that is being used to manage the versions, and we can use ADO’s Blame feature to attribute changes to each maker in the Power Fx YAML file format.

Note that these makers are working exclusively in Power Apps Studio, making and saving changes, and loading changes from others, as they normally would.  They don’t need to be aware of the merges that are happening behind the scenes or the Git repo that is holding the versions (beyond entering their Git credentials to initially load).  This enables fusion teams to work together, with a professional developer who sets up and manage the app, enabling citizen developers to work side-by-side in Power Apps Studio.

We are announcing this new functionality today, but it is not yet available as we are putting the finishing touches on it now.  It will arrive by the beginning of December.  We’ll announce when it is ready in the Power Apps community forum.

The documentation covers all the details and known limitations.

Experimental, really

But before I go on, I need to explain that not all experimental features are created equal.  Some are pretty well baked and the direction is clear, and some are truly experimental to seek your feedback and will see significant change.

This feature is of the latter variety, it is truly experimental.   As an experimental feature it is disabled by default and makers will need to go out of their way to enable it.  If you try it and don’t like it, you can always stop using the feature by disconnecting from version control.  But we hope you will give it a try and let us know what you think.

In particular, our use of Git is evolving.   The Dataverse team is working on a comprehensive approach to version control that this feature will ultimately plug into.  Requirements such as using a personal access token that we do not store on your behalf should be eased with deeper integration.

Feedback welcome!

When it becomes available, give it a go and please let us know what you in the Power Apps community forum.   We’ll announce updates there.

Key to this feature is its ability to intelligently merge, and that is one of the aspects for which we would really like your feedback.  We are trying to make merges as automatic as possible, avoiding the need for user help.  In fact there is no conflict resolution UI in the product at this time.  We know some UI will likely be needed for some situations, we just don’t know how aggressive we can be and we need your help to get the balance right.