Why 500 matters for Canvas Apps?

By | April 14, 2023

There is something magical about five hundred:

  • I have never really had a chance to test it, but, it seems, once you are over 500 connections on Linkedin, it’ll be displaying “500+ connections”
  • There is Fortune 500 ranking of the largest companies
  • There is 500 “catch-all” web server error

AND, ready for the next one?

There is 500 limit on the number of controls you should be adding to your canvas applications:


I am pretty sure you can add more, of course. There is no hard limit – as in, your application will not stop working if you add 501 controls to it.

However, you just need to keep in mind that:

  • All those screens you are adding to the canvas app keep working even when they are invisible
  • If you have 30 controls per screen, then, even once you have 10-15 screens, you are already getting close to 500 controls in total
  • Plus there are all the formulas, all the event handlers, etc

So, yes, there is definitely some logic there. What’s interesting, though, is that 500 controls is, actually, not that many at all.

Come to think of it, you can have up to 1024 columns in a SQL table, which translates to a smaller number of columns in a Dataverse table, but you can still have over 500 columns in just a single table. If you choose to add all of those to your Canvas App… you will be over that empirical limit right away.

Which really leads to some obvious conclusions:

  • We should not be trying to use Canvas Apps to covers really advanced / complicated functionality. For a bunch of reasons, Canvas Apps are better suited for the handling of very specific tasks – they are not meant to cover broader ranges of functionality
  • From that perspective, Model-Driven applications might really fit those complex scenarios better since they have lots of embedded UI optimizations (and they also have a lot of out of the box features, too). Although, of course, you can always use Custom Pages in your model-driven applications if and when you want to provide more fine-tuned UI behaviors for the specific scenarios

Leave a Reply

Your email address will not be published. Required fields are marked *