Power Fx explained
The Power Fx formula language — Excel-like syntax, where it's used in the Power Platform, and what's different from JavaScript.
Power Fx is Microsoft's low-code formula language. It's the language used in Power Apps canvas apps, Dataverse formula columns, certain Power Automate scenarios, and is being adopted across more of the Power Platform every release. Designed deliberately to feel like Excel — strongly typed, declarative, functional — it's accessible to anyone who has ever written =SUMIF(...) in a spreadsheet.
Excel-like syntax. Power Fx looks like Excel formulas. = prefix isn't used in Power Apps but the syntax is Filter(Customers, Country = "Sweden"), Sum(Orders.Total), If(Status = "Active", "Yes", "No"). Anyone fluent in spreadsheets is productive in Power Fx within hours.
Declarative. Power Fx is declarative — you describe what you want, not how to compute it. The runtime decides evaluation order, caching, and dependencies. Variables are mostly avoided; named formulas and collections (in-memory tables) are the idiomatic way to manage state.
Functions. Hundreds of built-in functions cover text manipulation, math, dates, table operations (Filter, Sort, AddColumns, GroupBy, Sum, Count), navigation, controls, and data connection actions. Most have direct Excel equivalents.
Records and tables. First-class data types. A record is a JSON-like object: {Name: "Karen", Country: "Sweden"}. A table is a list of records. Table operations are vectorised — Filter(Customers, Country = "Sweden") returns a table without explicit looping.
Tables and connectors. When connected to Dataverse, SharePoint, SQL, or another data source, tables in Power Fx are backed by the underlying source. Delegation matters: functions that can be evaluated server-side (delegable) run efficiently on large datasets; non-delegable functions fall back to a 2000-row client-side limit. The maker is warned in the editor when they write a non-delegable expression.
Where it's used.
- Canvas Power Apps — every property of every control is a Power Fx expression.
- Dataverse formula columns — calculate values stored on records, similar to Excel formulas in a sheet column.
- Power Apps custom pages — embedded in model-driven apps with Power Fx behaviour.
- Power Automate desktop — increasingly in flow design.
- Excel — the syntax is converging; some Power Fx functions are now in Excel directly.
Differences from JavaScript. No variables required, no statements, no loops. Side effects exist (Set, Patch, Collect, Navigate) but are expressions, not statements. Errors propagate as values rather than thrown exceptions.
Limits. Not Turing-complete in the traditional sense — there are no arbitrary loops. Heavy programmatic logic still belongs in JavaScript (in HTML web resources), Power Automate flows, or C# plug-ins.
Adoption. Excel-literate users build working apps in days. Microsoft is open-sourcing the language; a Power Fx command-line interpreter exists for testing expressions.
Related guides
- PCF controls in Power AppsWhat Power Apps Component Framework (PCF) controls are, when to use them, and the developer toolchain to build, package, and deploy.
- Power Apps Component Framework (PCF) control developmentHow to build custom controls with the Power Apps Component Framework — the dev environment, lifecycle, manifest, packaging, and the common pitfalls for production PCFs.
- Power Apps modern controlsHow the modern control set in canvas apps differs from classic controls — Fluent UI styling, accessibility defaults, theming, and migration considerations.
- Power Apps monitoring and Application InsightsHow to monitor Power Apps in production — App Monitor, Application Insights integration, and the operational patterns for performance and error tracking.
- Power Apps performance tuningHow to make Power Apps canvas and model-driven apps fast — startup time, screen render, data fetching, formula optimisation, and the patterns that matter.