{"id":5327,"date":"2019-09-11T00:06:00","date_gmt":"2019-09-11T07:06:00","guid":{"rendered":""},"modified":"2025-06-11T08:02:09","modified_gmt":"2025-06-11T15:02:09","slug":"collaborative-development-for-powerapps-canvas-apps","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/collaborative-development-for-powerapps-canvas-apps\/","title":{"rendered":"Collaborative Development for PowerApps Canvas Apps"},"content":{"rendered":"<p>If you are part of a larger team and you were wondering how you can enable co-development on your app, this blog post is for you. As you probably already know, PowerApps does <span style=\"text-decoration: underline\">not<\/span> support multiple developers working simultaneously on the same app.\u00a0 However, with the recent release of canvas components, it&#8217;s now possible to divide and conquer app development by deconstructing your apps into many components. Components allow you to clearly define the input\/output and the desired behavior making your app more modular. Testing as well becomes easier as you can test individual components in isolation with each other.\u00a0 In this blog, I will present some ideas to successfully orchestrate collaborative development across your team using components.<\/p>\n<p>Let&#8217;s take a concrete example. Let&#8217;s imagine a 3-4 person team that is tasked to\u00a0 build an event management app.\u00a0 The app will have a scrolling list of events\/sessions. Users can see the details of session and comment on the session. There is also a news feed that helps users stay engaged with app. You can download this app here\u00a0<a href=\"https:\/\/aka.ms\/powerapps\/componentappsample\">https:\/\/aka.ms\/powerapps\/componentappsample<\/a><\/p>\n<p>\u00a0<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"wp-image-5881 size-large alignnone\" height=\"135\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/09\/team-1024x264.png\" width=\"525\"\/><br \/>\n<strong>Nat <\/strong>is a\u00a0back end developer who will be in charge of creating the initial database needed for the project. Nat will work with the team to define the various entities and relationships required to fulfill the various requirements. Later in the project, he can take on building functional components such as the map control.<\/p>\n<p><strong>Cam<\/strong>\u00a0is in charge of shared components.\u00a0 Navigation controls, Header, Hamburger menus falls under the shared team responsibility. Cam\u2019s role is to not only make this project successful, but also extract generic components that can be re-used across multiple apps. The Search box and pre-loader are good examples of such components. As we will see later, those will be packaged in the Contoso Shared Component app.<\/p>\n<div><strong>Imani<\/strong> is an Architect\/Integrator who will take charge of creating what we can call a \u201cMaster\u201d app, which will eventually will ship to production. \u00a0In the early stages of the project, this app will only be concerned with loading data, placeholder screens and generic menus\/navigation components that were initially available as shared component built by Cam. Eventually, the app will incorporate all the functional components and business logic to complete the scenario.<\/div>\n<div><\/div>\n<div>\n<div><strong>Adi<\/strong> will build the functionality that is specific to this app, e.g. the gallery of sessions, filtering by day, etc. These will be built as components as well. Cam &amp; Adi can work independently with the clear understanding of what are the input\/outputs of those components and how they are going to be linked to produce a functioning app.<\/div>\n<\/div>\n<div><\/div>\n<p><b>App Skeleton\u00a0<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"760\" alt=\"\" class=\"alignnone size-large wp-image-5627\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/08\/BasicApp-1024x760.png\"\/><\/p>\n<p>Imani&#8217;s priority is to enable others on the team to start contributing. He can ensure that there is a consistent way across the app to load data and pass it to other screens and components.\u00a0 To do so, Imani uses a\u00a0<a href=\"https:\/\/aka.ms\/starterapptemplate\">starter app template<\/a> with well known established patterns\u00a0. Taking a closer look at the app, you will see that the OnVisible of HomeScreen looks like this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-large wp-image-5628\" height=\"364\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/08\/templateOnVisible-1024x709.png\" width=\"525\"\/><\/p>\n<p>The team should be familiar with the data loading patterns and other patterns that will not only help build a well <a href=\"https:\/\/powerapps.microsoft.com\/en-us\/blog\/powerapps-optimization-techniques\/\">performing<\/a> and <a href=\"https:\/\/powerapps.microsoft.com\/en-us\/blog\/tips-for-a-maintainable-extensible-app\/\">maintainable<\/a> app but also makes it easier to collaborate on the same app.<\/p>\n<p>They will be able to use the some collections and global variable defined in this screen.<\/p>\n<p>Passing data to other screens would look like this. (E.g The OnSelect of the gallery control)<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"48\" alt=\"\" class=\"alignnone size-large wp-image-5629\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/08\/Navigate-1024x48.png\"\/><\/p>\n<p>Notice the use of context variable in the Navigate function. This ensures decoupling the Homescreen from the DetailViewScreen (DetailViewScreen does not need to know about Gallery.Selected. It&#8217;s dealing directly with SelectedItem)<\/p>\n<p>This is essentially all that is needed to enable other users to start contributing to the app.\u00a0 Imani and team can now start breaking down the app into different components. Each component will have a set of input\/outputs that the team\u00a0agrees on. In the case of the conference app here is what the team agreed on for the home screen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"511\" alt=\"\" class=\"aligncenter wp-image-5914 size-large\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/09\/CmpInOut-1024x511.png\"\/><\/p>\n<p>You can see from the image above, The Search component output is fed directly to the Filter Text Input of Session Gallery component. Similarly, the day filter output is fed directly into the Filter Day input of the Session Gallery. The Session Gallery has another input that indicated where to navigate when the gallery is clicked. It also keeps the selected item exposed in the Selected Property.<\/p>\n<p><strong>Forking the App<\/strong><\/p>\n<p>Both Adi\u00a0&amp; Nat\u00a0will find it useful to work with real data as they are building their components. For that, Imani will duplicate the &#8220;master&#8221; app. They can work off a copy of the app even though\u00a0any more progress of the master app will not be reflected here. That&#8217;s all right though, they will only be using the data loading portion of the app in order to have a more realistic input to their component as they make progress. In fact, we should expect little changes to the master at this point. Additional functionality to the master app should be brought via components. These components should all be created withing their respective component libraries as outlined in the following doc\u00a0<a href=\"https:\/\/docs.microsoft.com\/en-us\/powerapps\/maker\/canvas-apps\/component-library\">https:\/\/docs.microsoft.com\/en-us\/powerapps\/maker\/canvas-apps\/component-library<\/a>\u00a0. Individuals working on the components can test their work by importing (or refreshing) the component library into the forked app. Cam, who is more concerned with generic \/ app agnostic components can work off the Shared Components Library.<\/p>\n<p>This is what the environment should look like:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"301\" alt=\"\" class=\"aligncenter wp-image-10030 size-large\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/componentLibrary-1024x301.png\"\/><\/p>\n<p>Once the components are ready, Imani can import them into the master app.\u00a0 It&#8217;s worth noting that Imani used the Contoso Shared Components app in the initial setup of the master app. This is an app that the shared component team (Cam) made available to the entire organization. Shared components can be themed to adhere to the branding and color guidelines of the organization.\u00a0 You can get started with your own shared components library by downloading components from the github repository <a href=\"https:\/\/github.com\/microsoft\/powerapps-tools\/tree\/master\/Components\">here<\/a>.<br \/>\nThe header, hamburger, lower navigation menu and the pre-loader are all located in this app.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"860\" height=\"474\" alt=\"\" class=\"aligncenter wp-image-10032 size-full\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/editcomponent.png\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/editcomponent.webp 860w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/editcomponent-300x165.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/editcomponent-768x423.webp 768w\" sizes=\"auto, (max-width: 860px) 100vw, 860px\" \/><\/p>\n<p>The timeline for the project could look like the following:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"307\" alt=\"\" class=\"aligncenter wp-image-5882 size-large\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/09\/Branches2-1024x307.png\"\/><\/p>\n<p>As you can see here, the blue line represents the master app main &#8220;branch&#8221;.\u00a0 Components would be integrated into the app by Imani or other designated &#8220;integrators&#8221;. Generic components would simply be imported. Other custom components such as the DayFilter and Gallery would be integrated into the master app as they become ready. The arrow coming out of the the blue line\u00a0represents the action of copying the master app.\u00a0 Every now and then, a component might need to be updated, in that case, another copy of the app can be done (as in Component B Update in the diagram above). In this case, the copy will also contain any other component previously integrated.\u00a0 One has to ensure that those components are removed from the copy app before re-integrating into the master app (note: this last step will not be required once the studio offers a richer component library &#8211; work in progress).<\/p>\n<p>At the end of the process, we should have a production app entirely composed of components as you can see in the image below.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"882\" height=\"917\" alt=\"\" class=\"alignnone size-full wp-image-5695\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/08\/finalApp.png\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/08\/finalApp.webp 882w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/08\/finalApp-289x300.webp 289w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/08\/finalApp-768x798.webp 768w\" sizes=\"auto, (max-width: 882px) 100vw, 882px\" \/><\/p>\n<p>More recently, Microsoft Engineers built a set of <a href=\"https:\/\/powerapps.microsoft.com\/en-us\/blog\/crisis-communication-a-power-platform-template\/\">Emergency response apps <\/a>and <a href=\"https:\/\/powerapps.microsoft.com\/en-us\/blog\/emergency-response-solution-a-microsoft-power-platform-solution-for-healthcare-emergency-response\/\">Hospital emergency response solutions.<\/a> They used components to as a fundamental mean to rapidly and consistently develop those applications:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" alt=\"Placeholder\" class=\"aligncenter size-large wp-image-9717\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2020\/04\/1224-1024x576.png\"\/><\/p>\n<p>In conclusion, I think that distributing app development work via components is a viable approach to collaborative development. It makes apps modular, easily extensible, testable, and encourages re-use across apps. Give it a try. Let us know what you think.<\/p>\n<p>Download the starter <a href=\"https:\/\/aka.ms\/powerapps\/starterapp\">template<\/a>\u00a0and the sample component based <a href=\"https:\/\/aka.ms\/powerapps\/componentappsample\">conference app<\/a><\/p>\n<p>\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you are part of a larger team and you were wondering how you can enable collaborative development, this blog post is for you.<\/p>\n","protected":false},"author":101,"featured_media":5914,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","ms-ems-related-posts":[],"footnotes":""},"audience":[3378],"content-type":[3423],"job-role":[],"product":[3473],"property":[],"topic":[3421],"coauthors":[2051],"class_list":["post-5327","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","audience-it-professional","content-type-tips-and-guides","product-power-apps","topic-application-modernization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Collaborative Development for PowerApps Canvas Apps - Microsoft Power Platform Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Collaborative Development for PowerApps Canvas Apps - Microsoft Power Platform Blog\" \/>\n<meta property=\"og:description\" content=\"If you are part of a larger team and you were wondering how you can enable collaborative development, this blog post is for you.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/collaborative-development-for-powerapps-canvas-apps\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Power Platform Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-09-11T07:06:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-11T15:02:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/CmpInOut.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1670\" \/>\n\t<meta property=\"og:image:height\" content=\"834\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mehdi Slaoui Andaloussi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mehdi Slaoui Andaloussi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/mehdi-slaoui-andaloussi\/\",\"@type\":\"Person\",\"@name\":\"Mehdi Slaoui Andaloussi\"}],\"headline\":\"Collaborative Development for PowerApps Canvas Apps\",\"datePublished\":\"2019-09-11T07:06:00+00:00\",\"dateModified\":\"2025-06-11T15:02:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/\"},\"wordCount\":1299,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/CmpInOut.webp\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/\",\"name\":\"Collaborative Development for PowerApps Canvas Apps - Microsoft Power Platform Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/CmpInOut.webp\",\"datePublished\":\"2019-09-11T07:06:00+00:00\",\"dateModified\":\"2025-06-11T15:02:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#primaryimage\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/CmpInOut.webp\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/CmpInOut.webp\",\"width\":1670,\"height\":834,\"caption\":\"graphical user interface\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Collaborative Development for PowerApps Canvas Apps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#website\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/\",\"name\":\"Microsoft Power Platform Blog\",\"description\":\"Innovate with Business Apps\",\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization\",\"name\":\"Microsoft Power Platform Blog\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"width\":194,\"height\":145,\"caption\":\"Microsoft Power Platform Blog\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/person\/cb94deacde69a416821745caea3a4ea9\",\"name\":\"Mehdi Slaoui Andaloussi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/7d08f4b5403b8c9bcddc1a86d1029fe871d0429f3b1bcf391b42f4f6de826c74?s=96&d=mm&r=gee4168e8cdfe65faaf608acb5baeaed5\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7d08f4b5403b8c9bcddc1a86d1029fe871d0429f3b1bcf391b42f4f6de826c74?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7d08f4b5403b8c9bcddc1a86d1029fe871d0429f3b1bcf391b42f4f6de826c74?s=96&d=mm&r=g\",\"caption\":\"Mehdi Slaoui Andaloussi\"},\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/mehdis\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Collaborative Development for PowerApps Canvas Apps - Microsoft Power Platform Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/","og_locale":"en_US","og_type":"article","og_title":"Collaborative Development for PowerApps Canvas Apps - Microsoft Power Platform Blog","og_description":"If you are part of a larger team and you were wondering how you can enable collaborative development, this blog post is for you.","og_url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/collaborative-development-for-powerapps-canvas-apps\/","og_site_name":"Microsoft Power Platform Blog","article_published_time":"2019-09-11T07:06:00+00:00","article_modified_time":"2025-06-11T15:02:09+00:00","og_image":[{"width":1670,"height":834,"url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/CmpInOut.png","type":"image\/png"}],"author":"Mehdi Slaoui Andaloussi","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Mehdi Slaoui Andaloussi","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/mehdi-slaoui-andaloussi\/","@type":"Person","@name":"Mehdi Slaoui Andaloussi"}],"headline":"Collaborative Development for PowerApps Canvas Apps","datePublished":"2019-09-11T07:06:00+00:00","dateModified":"2025-06-11T15:02:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/"},"wordCount":1299,"commentCount":0,"publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/CmpInOut.webp","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/","name":"Collaborative Development for PowerApps Canvas Apps - Microsoft Power Platform Blog","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#primaryimage"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/CmpInOut.webp","datePublished":"2019-09-11T07:06:00+00:00","dateModified":"2025-06-11T15:02:09+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#primaryimage","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/CmpInOut.webp","contentUrl":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/09\/CmpInOut.webp","width":1670,"height":834,"caption":"graphical user interface"},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2019\/09\/11\/collaborative-development-for-powerapps-canvas-apps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/"},{"@type":"ListItem","position":2,"name":"Collaborative Development for PowerApps Canvas Apps"}]},{"@type":"WebSite","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#website","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/","name":"Microsoft Power Platform Blog","description":"Innovate with Business Apps","publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization","name":"Microsoft Power Platform Blog","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","width":194,"height":145,"caption":"Microsoft Power Platform Blog"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/person\/cb94deacde69a416821745caea3a4ea9","name":"Mehdi Slaoui Andaloussi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7d08f4b5403b8c9bcddc1a86d1029fe871d0429f3b1bcf391b42f4f6de826c74?s=96&d=mm&r=gee4168e8cdfe65faaf608acb5baeaed5","url":"https:\/\/secure.gravatar.com\/avatar\/7d08f4b5403b8c9bcddc1a86d1029fe871d0429f3b1bcf391b42f4f6de826c74?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7d08f4b5403b8c9bcddc1a86d1029fe871d0429f3b1bcf391b42f4f6de826c74?s=96&d=mm&r=g","caption":"Mehdi Slaoui Andaloussi"},"url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/mehdis\/"}]}},"bloginabox_animated_featured_image":null,"bloginabox_display_generated_audio":false,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Power Platform Blog","distributor_original_site_url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/5327","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/users\/101"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/comments?post=5327"}],"version-history":[{"count":1,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/5327\/revisions"}],"predecessor-version":[{"id":130783,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/5327\/revisions\/130783"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/media\/5914"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/media?parent=5327"}],"wp:term":[{"taxonomy":"audience","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/audience?post=5327"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/content-type?post=5327"},{"taxonomy":"job-role","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/job-role?post=5327"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/product?post=5327"},{"taxonomy":"property","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/property?post=5327"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/topic?post=5327"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/coauthors?post=5327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}