Power Fx explained

By Emil Björk · Microsoft business apps consultant, Gothenburg

The Power Fx formula language — Excel-like syntax, where it's used in the Power Platform, and what's different from JavaScript.

Reviewed May 20262 min read · 404 wordsPublished
On this page (8)

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.

Frequently asked questions

Where is Power Fx used?

Every property of every control in canvas Power Apps, Dataverse formula columns, custom pages embedded in model-driven apps, increasingly Power Automate, and the syntax is converging with Excel itself.

How is Power Fx different from Excel formulas?

The syntax is deliberately Excel-like — Filter, Sum, If — but expressions run against tables backed by data sources, records are first-class JSON-like values, and side effects such as Set, Patch, and Collect exist as expressions rather than statements.

What is delegation in Power Fx?

Whether a function can be evaluated server-side by the data source. Delegable expressions run efficiently on large tables; non-delegable ones fall back to a client-side limit of 2,000 rows, and the editor warns when you write one.

Can Power Fx replace JavaScript or C#?

Not for heavy programmatic logic. Power Fx has no arbitrary loops or statements; complex logic still belongs in JavaScript web resources, Power Automate flows, or C# plug-ins.

Further reading

Microsoft Docs & product blog

Related guides

Browse every guide in Power Platform or just Power Apps.

Was this helpful?

Signals which guides land and which need work. No account, no comment box — corrections go through the contact page.

Spot something wrong or want a topic covered? Send a correction or a topic request — both are welcome.