Naming conventions for Canvas Apps on Microsoft’s Power Platform
Intelligent design-time decisions can have an enormous impact on any piece of software in the long run, but certainly within low-code environments.
At first, naming conventions might seem to introduce an unnecessary element of complexity for citizen developers. However, they aren’t that difficult to learn and once applied they will prove invaluable when working with controls and variables in the formula bar.
When a control is added to the screen, the associated element in the tree menu on the left gets a rather verbose but - truth be told - highly descriptive name. When it comes to the type at least. We still need to replace the counter with what the control represents.
How can we retain the type information conveyed by this name, while also ensuring brevity? Prefixes to the rescue!
A caveat about screens
Prefixes cannot be applied to screens. Screen names are used by assistive technology and should therefore be spelled out in full, e.g. Home Screen, Detail Screen. Apart from inside the Navigate function, they aren’t used much when working in the formula bar anyway.
Some considerations
Prefixes carry the benefit of being concise and enabling easy autocompletion when you start typing in the formula bar. The prefixes allow you to identify controls and variables more easily in more complex formulas. When you don’t know the name of the field but you do know it is a text input, type txt and the autocomplete functionality will find it.
Although the default names use PascalCase, I write the prefixes in lower case, thereby turning the names into camelCase, e.g. lblDescription. This conveys that the type information only comes second to the actual meaning of that specific control.
A capital letter should be used for each separate word, in line with the dictionary, e.g. lblFirstName instead of lblFirstname. For the sake of unity, all prefixes are trigrams. They always contain three characters. The type should not be repeated: e.g. galProducts and not galProductsGallery
Furthermore, all names must be globally unique so whenever you want to use the same name for a control on multiple screens you can suffix the name with the initials of the screen name. If a label with the text Description would appear on both the Home Screen and Detail Screen, you could use lblDescriptionHS and lblDescriptionDS respectively.
Some trigrams have been borrowed from earlier documentation, others have been added by me personally. The latter will be indicated by an asterisk. I hope this list might be useful for some. You might encounter other naming conventions somewhere else, but a system is always better than no system. Here we go:
Variables
col — Collection ( + plural)
loc*— Local variable
gbl* — Global variable
Most used controls
btn — Button (+ infinitive of the action verb + object)
gal — Gallery (use a plural, avoid repeating “gallery” or “list”)
ico — Icon
img — Image
lbl — Label
shp — Shape (default name indicates subtype, e.g. Arrow1 and could become shpArrowNext)
txt — Text input (for currencies, add the currency code as a suffix)
Some more form controls
cbx *— Check box
cmb — Combo box (if you allow multiple selections, use a plural)
crd — Card (individual field of a form control)
drp — Dropdown
dte — Date picker
frm* — Form, Entity form or Form viewer
lbx* — List box
rdo — Radio
sld — Slider
Other controls
aud — Audio
att*— Attachments
cam — Camera
cch* — Column chart
clm*— Column (part of a Data Table control) (avoid “col”!)
com* — Component (use the screen initials if you use it on multiple screens)
con* — Container
exp* — Export data
fps — Forms Pro survey
grp — Group
imp* — Import data
htm — Html text
lch* — Line chart
lgd — Legend
mic — Microphone
msv*— Microsoft Stream video
pbi* — Power BI tile
pch* — Pie chart
pdf — PDF viewer
pen* — Pen input
rte*— Rich text editor
tbl — Data table
tim — Timer
vid* — Video
AI capabilities
bar* — Barcode scanner
bcr* — Business card reader
fpr* — Form processor
obd* — Object detector
txr * — Text Recognizer
As the platform is evolving rapidly, I presume more controls will be added soon.
Happy renaming!

