Power Apps Quick Reference
This is a condensed reference for the Power Fx functions and patterns that come up in nearly every canvas app: navigation, data functions, string/table manipulation, and variable/state management. It's meant to be scanned, not read start to finish — use it the way you'd use a syntax cheat sheet while actually building a screen, jumping straight to the function you half-remember instead of relearning the whole language from scratch.
Cricket analogy: It is like a fielding captain glancing at a laminated match-situation card taped to the stumps for D/L par-score calculations instead of doing the math from memory under pressure.
Navigation and Screen Functions
Navigate() moves between screens and optionally applies a transition (Fade, CoverRight, None) plus an optional context-variable record passed as the third argument, which is the standard way to send data to the destination screen without relying on a global variable. Back() returns to the previous screen in the navigation stack, and App.ActiveScreen lets a formula reference the currently displayed screen by name, useful for conditional logic that needs to know where the user currently is.
Cricket analogy: It is like a third umpire's review process moving through defined stages, ball-tracking, snicko, replay, each stage receiving exactly the context it needs from the previous one rather than starting from scratch.
// Navigation
Navigate(scr_OrderDetail, ScreenTransition.Fade, {OrderID: gal_Orders.Selected.OrderID});
Back();
App.ActiveScreen.Name
// Data functions
LookUp(Orders, OrderID = 1001)
Filter(Orders, Status = "Open")
SortByColumns(Orders, "OrderDate", SortOrder.Descending)
Patch(Orders, LookUp(Orders, OrderID = 1001), {Status: "Shipped"})
Remove(Orders, LookUp(Orders, OrderID = 1001))
Collect(colOrders, {OrderID: 1002, Status: "New"})
// String / table functions
Concatenate("Order #", Text(1001))
Split("a,b,c", ",")
Text(Now(), "mm/dd/yyyy")
With({Total: Sum(colOrders, Amount)}, Text(Total, "$#,##0.00"))
// Variables
Set(varUserRole, "Manager"); // global
UpdateContext({locIsEditing: true}); // screen-scopedData Functions and Delegation Notes
LookUp() returns the first matching record for a condition and is delegable when the condition uses supported comparisons, while Filter() returns every matching record and is the workhorse for building gallery data sources; both delegate only as far as the connector allows, so a Filter() combining a delegable and a non-delegable condition still triggers the warning for the whole expression. Patch() updates or creates a record and accepts a table of changes for bulk operations, Collect()/ClearCollect() build local collections in client memory, and Remove()/RemoveIf() delete records — RemoveIf() in particular is convenient but non-delegable on many sources, so it's best used only on already-filtered, small result sets.
Cricket analogy: It is like the difference between an umpire checking just one specific delivery (LookUp) versus reviewing an entire over's worth of deliveries for no-balls (Filter), each request scoped very differently.
Quick delegation rule of thumb: comparison operators (=, <>, <, >), StartsWith, and basic AND/OR generally delegate across most connectors; Len(), Left()/Right()/Mid() outside of StartsWith/EndsWith, and RemoveIf() are common non-delegable culprits worth double-checking against your specific data source.
String, Table, and Common Utility Functions
Concatenate() and the & operator join strings, Text() formats numbers/dates/booleans into display strings using format codes, and With() lets you compute an intermediate value once (like a Sum() total) and reuse it within a single formula without a separate Set() call polluting global state. For working with tables, ForAll() iterates and can build a new table by transforming each row, AddColumns() appends a computed column to an existing table without mutating the source, and Coalesce() returns the first non-blank value from a list of candidates, which is a clean way to supply a default when a lookup might return blank.
Cricket analogy: It is like a scorer combining runs, extras, and wickets into a single running total line (Concatenate) versus building an entirely new derived stats column for strike rate per over (AddColumns) without touching the original ball-by-ball log.
ForAll() building large derived tables and RemoveIf() on non-delegable conditions are two of the most common causes of a formula silently only processing a partial dataset or running far slower than expected. When either appears in a formula touching a large data source, double check delegation before assuming the logic itself is correct.
- Navigate() moves screens with an optional transition and context-variable payload; Back() returns to the prior screen.
- LookUp() returns one matching record; Filter() returns all matches; both only delegate as far as the connector supports.
- Patch() creates/updates records; Collect()/ClearCollect() build client-side collections; Remove()/RemoveIf() delete records.
- RemoveIf() is convenient but frequently non-delegable — best reserved for small, already-filtered result sets.
- Text() formats values for display; With() computes a reusable intermediate value without polluting global state.
- ForAll() iterates and can build a transformed table; AddColumns() appends a computed column without mutating the source.
- Coalesce() returns the first non-blank value from a candidate list, a clean pattern for supplying defaults.
Practice what you learned
1. What does the optional third argument to Navigate() do?
2. What is the key functional difference between LookUp() and Filter()?
3. Why is RemoveIf() flagged as a common performance trap?
4. What does AddColumns() do compared to editing the source table directly?
5. What does Coalesce() return?
Was this page helpful?
You May Also Like
Power Apps Best Practices
A practical playbook for naming conventions, formula hygiene, data modeling, and governance that keeps canvas apps maintainable as they scale.
Performance Optimization
How to diagnose and fix slow canvas apps: delegation limits, load-time strategy, formula caching, and the Monitor tool.
Power Apps Interview Questions
A structured review of the Power Apps interview question areas that come up most often: fundamentals, delegation, data modeling, and architecture.
Related Reading
Related Study Notes in Microsoft Technologies
Browse all study notesWindows 10 / UWP Development Study Notes
.NET · 30 topics
Microsoft TechnologiesWindows Batch Scripting Study Notes
Batch · 30 topics
Microsoft TechnologiesMFC (Microsoft Foundation Classes) Study Notes
C++ · 30 topics
Microsoft TechnologiesSilverlight Study Notes
.NET · 30 topics
Microsoft TechnologiesXAML Study Notes
.NET · 30 topics
Microsoft TechnologiesWPF (Windows Presentation Foundation) Study Notes
.NET · 30 topics