When it comes to developing solutions in the Microsoft Power Platform, one of the fundamental questions I get asked on a regular basis is whether a canvas or model-driven app should be used. This article is meant to compare the two and provide some basic questions to ask yourself before you make that decision.
What is a Canvas App?
A Canvas app is an application built in the Power Apps Studio using a drag and drop style interface. Canvas apps feature a highly customizable interface, allowing the User Interface to drive the interactions, and providing an ideal platform for highly-branded applications. Canvas apps can also connect to a wide variety of Data sources (over 200 at the time of this article).
When designing a Canvas app, you will need to consider the primary mode that you expect users to interact with the application in, either portrait or landscape. While Microsoft has made this less of a concern by allowing for different screen ratios and custom resolutions, Canvas apps are still not truly responsive.
Canvas apps are best suited for a simple task-based process.
Examples of this that we have implemented for clients (or ourselves) are:
- Vacation Request
- Project Site Request
- Site Inspection
- Time Tracker
- In/Out Board
- Parking Spot Reservation
- Employee Recognition
What is a Model-Driven App?
A Model-driven app is a great option when you have well-structured data in Dataverse, and are more concerned about driving the interaction through complex business logic rather than the interface. If your data structure has not been well-thought out, or you need to do a high degree of customization to the interface, then a Canvas app will be a better option for you.
Model-Driven applications will provide you a natively responsive application that your users can easily access from both desktop and mobile devices, that can be implemented quickly through saving the effort required to build the user interface. Model-driven applications have a user interface created based on the model of the data, and the components added to the application for interaction. However, while they are ideal for mobile use due to the responsiveness of the interface, it is important to note that they require a data connection to the Dataverse database to be used, so if there is a requirement to support offline interaction, a Model-Driven app will not meet the need.
Examples of Model-Driven applications:
- Customer Relationship Management Systems (CRM)
- Human Resources Information Systems (HRIS)
- Inventory Management System
- Asset Tracking System
Which Type Should I Use?
Here are a few questions to consider to help you decide:
What data source am I going to use?
- If you are planning to use multiple data sources outside of Dataverse, then a Canvas app is the way to go.
- If your data is entirely housed within a Dataverse database, a Model-Driven app will speed up the design and development of the application considerably, by removing the need to spend significant effort on the user interface.
Is the data available somewhere else already?
While this isn’t necessarily a specific deciding factor between your options, this is a fairly common consideration when designing the architecture of your app in the Power Platform.
Rather than establishing a new source of data for the sake of establishing one, does the data you need already exist in some system of record? For example, if creating an employee onboarding or account request app, and you already have the necessary data in a Human Resources Information System (HRIS), consider whether it makes sense to connect directly to that data source rather than establishing a new one.
Is this app to support a task or simple process, or is this a complex application?
My favourite part of Canvas apps is the fact that I can rapidly implement an application to address a gap or provide efficiency when it comes to simple tasks. Consider what you are looking to automate/digitize; is it a linear process of capturing data from a user and taking action on it, or do we need a complex system to manage multiple operations related to the same data (CRM is a prime example, Dynamics 365 is a Model-Driven application).
Keep in mind that a full solution could be made up of several applications, both Canvas and Model-Driven, to satisfy business requirements in the most efficient way possible. So the decision need not be completely black and white.
You may want to create a model-driven application to work with sales data, tracking and reporting, but use a Canvas application to enable your salespeople to quickly generate quotes on the spot for your customers using a highly customized, branded interface.
Does the user interface need to be highly customized?
If you are looking to implement a customized, branded application with a user interface that supports the user activity, a Canvas app is the best option.
Does it need to be responsive?
While there have been enhancements to Canvas app creation, they are still not truly responsive, generally requiring us to evaluate the primary mode that users will interact with the application and making a choice to implement the interface in either a portrait or landscape-first mode. If the application needs to be truly responsive on both desktop and mobile, then a Model-Driven app should be a primary consideration.
Is there a requirement for the app to be available for offline use?
Model-Driven apps require a connect to the Dataverse database housing the data powering it, so if you have a requirement to be able to use the app when you are offline or in poor data coverage, you’ll need to use a Canvas app to meet that need.