One of the longest-standing mottos of the Power Platform has been ‘no cliffs’. This somewhat odd phrase has definitely stood the test of time due to its simplicity and its powerful message. That is - you shouldn’t ever find yourself developing solutions using the Power Platforms ‘low-code’ features and suddenly finding that you hit an un-passable ‘cliff’. Instead, there are multiple avenues forwards using various degrees of ‘pro-code’ features. I think the message also hints at being able to start as a small app and grow into a larger enterprise one without hitting cliffs – although this story is still unfolding.
In parallel to the Power Platform ‘no-cliffs’ story is the saga of the 1st party Dynamics 365 apps that sit on top of the Dataverse and Power Platform (tale of three realms). Originally, Dynamics 365 was the platform, but since the two have mostly separated, they are on somewhat separate development cycles. That said, of course, many features are built by the Power Platform team for a specific need of the Sales/Service/Marketing apps – or at least, they use the features before they are publicly available. This creates a rather nice testing ground and promotes a component based architecture – rather than the original monolithic platform approach of the Dynamics CRM days.
Black-box user interfaces
But here’s the thing. With each release of the Dynamics 365 apps comes user interface features that are both beautiful, but alas painfully out of reach of pure Power Platform Apps unless you want to do some awesome pro-coding!
There have been some amazing steps made recently that makes it much easier to create beautiful low-code model-driven app user interfaces:
- App convergence - custom pages
- Power Fx commanding
- Model-driven side panels
- Fluent UI controls in canvas apps
- PCF code components in canvas apps
These awesome features allow us to create beautiful low-code user interfaces and then extend them using pro-code components. Using PCF code components inside Custom Pages makes it possible to create some really complex user interfaces using libraries like React and Fluent UI – but it’s certainly not low-code!
Take the new Deal Manager in 2021 Wave 2 of the Dynamics 365 Sales App. It has some rather juicy-looking user interface. Underneath all that beauty is some awesomely productivity functionality such as opportunity scoring & custom metrics.
My point? I would love it if the platform allowed us to build low-code user interfaces with ease and efficiency to look just like this – or at least similar. If you have the appetite and the willingness to build/support custom user interfaces, then the components used by the 1st party apps should be there to use in custom apps instead of having to revert to pro-code. The primary reasons to buy licenses for the 1st party apps should be about the functionality and features that it provides. The user interface should be provided by the platform. Furthermore, if we wanted to customise the 1st party user interface, they should be easily extendable. The Deal Manager currently is one monolithic closed Power Apps Component Framework control that has very limited customisability.
I would love for the ethos of the 1st party apps to be about delivering as much functionality as possible using low-code features rather than reverting to pro-code – this would benefit both the Platform and its customers.
Extendable using the low-code platform
I hope in future releases there will be more focus on component-based user interfaces where screens like the 1st party Deal Manager screens are actually composite screens built using mostly standard components that are provided by the platform – with only very exceptional 1st party specific user interfaces being inside PCF components.
This would make these screens editable/extendable by customers if desired instead of the black-box that they mostly are today. If a completely different user interface is required that looks similar, then the same components should be able to be added using low-code to glue them together.
This is needed so that we don’t return to the days when it was very common for ‘out of the box’ features to be black-boxes and not usable or extendable by customizers.
Starting from Primitives is hard to maintain
Canvas Apps often get referred to as ‘pixel perfect’ apps. You can certainly build beautiful user interfaces using primitives such as lines, rectangles, galleries, and buttons. But this comes at a cost. The Dataverse for teams sample apps are visually stunning – but if you look at how they are written you will see what I mean. Starting from primitives in this way to build apps that look like model-driven apps is very complex and hard to maintain. The trouble is that it starts to undermine the benefits of a low-code platform when you have apps of this level of complexity. When we build business apps, we need components that hide us from most of the complexity and leave us to write the functionality needed. This is what app convergence is really about – being able to have the best of both worlds - model-driven and canvas apps:
- Build complex metadata-driven user interfaces quickly that are consistent and easy to maintain
- Create custom layouts using drag-and-drop components with Power Fx code to glue functionality together.
So, at what point can we say that the apps have converged?
I don’t think converged apps means the end of stand-alone canvas apps – there is always going to be a time and place for ‘pixel-perfect’ low code apps that have a very custom look and feel. Instead, let’s hope we see canvas components such as forms, editable grids, command bars, tab controls & model-driven charts that can be glued together with Power Fx, to create beautiful custom composed pages so we can focus on building business features, and having to hand-craft every grid, command bar and form. This is not a new idea - check out my app convergence predictions from back in 2019 (Why do we have 2 types of apps) where I describe my idea of being able to ‘unlock’ a model-driven page so that it turns into a canvas page, composed with all the model-driven app components – now wouldn’t that be cool!
UG Summit NA
Those nice people at Dynamic Communities have asked me to be a Community Ambassador for SUMMIT NA 2021. This is going to be an exciting in-person event (fingers crossed) where I'll be speaking about custom pages and Power FX command buttons - it would be great to see you there if you are at all able to travel to Houston, Texas. I will be talking more about app convergence and doing some demos of where we are today - App Convergence is Almost Here with Customer Pages in Model-Driven Apps.
If you are in North America and feel comfortable yet with an in-person event you can also register using the Promo code Durow10 to get a 10% discount if you've not already registered!