{"id":13681,"date":"2021-03-02T05:50:11","date_gmt":"2021-03-02T13:50:11","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/what-is-microsoft-power-fx\/"},"modified":"2025-06-11T07:55:26","modified_gmt":"2025-06-11T14:55:26","slug":"what-is-microsoft-power-fx","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/what-is-microsoft-power-fx\/","title":{"rendered":"What is Microsoft Power Fx?"},"content":{"rendered":"<p>Microsoft Power Fx is the low code language for expressing logic across the <a href=\"https:\/\/powerplatform.microsoft.com\/en-us\/\">Microsoft Power Platform<\/a>. \u00a0It is the same language that is at the heart of <a href=\"https:\/\/powerapps.microsoft.com\/en-us\/\">Microsoft Power Apps canvas apps<\/a>\u00a0today and is inspired by <a href=\"https:\/\/www.microsoft.com\/en-us\/microsoft-365\/excel\">Microsoft Excel<\/a>.\u00a0 \u00a0It enables the full spectrum of development from &#8220;no code&#8221; to &#8220;pro code&#8221; with no cliffs in between, enabling diverse teams to collaborate and save time and expense.\u00a0 We are very excited to bring it to more of the Power Platform and to share it with everyone as open source.\u00a0 Only through a strong user community can a language grow and flourish.<\/p>\n<p><a href=\"https:\/\/aka.ms\/LowcodeLanguageIgnite\">Today\u2019s announcement<\/a>\u00a0is a statement of direction.\u00a0 We have a lot of work to do to extract Power Fx from the Power Apps home where it grew up.\u00a0 We are actively working to integrate Power Fx into\u00a0<a href=\"https:\/\/powervirtualagents.microsoft.com\/en-us\/\">Microsoft Power Virtual Agents<\/a>, <a href=\"https:\/\/powerplatform.microsoft.com\/en-us\/dataverse\/\">Microsoft Dataverse<\/a>, and <a href=\"https:\/\/docs.microsoft.com\/en-us\/powerapps\/maker\/model-driven-apps\/model-driven-app-overview\">Model-driven Power Apps<\/a>. We&#8217;ll use these as our test beds for getting the packages right for open source sharing.\u00a0 We have setup a GitHub repository for our open source at <a href=\"https:\/\/github.com\/microsoft\/Power-Fx\">https:\/\/github.com\/microsoft\/Power-Fx<\/a> where you can begin to share your thoughts about the language.\u00a0 There isn\u2019t much there today, just a copy of <a href=\"https:\/\/aka.ms\/powerfxdocs\">some early documentation<\/a> which we are also in the process of extracting from Power Apps.<\/p>\n<p>When we say \u201cacross the Microsoft Power Platform\u201d you may be wondering if there are any implications for Power BI\u2019s existing <a href=\"https:\/\/docs.microsoft.com\/en-us\/powerquery-m\/\">M<\/a> and <a href=\"https:\/\/docs.microsoft.com\/en-us\/dax\/\">DAX<\/a> languages.\u00a0 The answer is no.\u00a0 Power Fx is complimentary to and has no impact on these languages, all three will live happily together.\u00a0 M and DAX focus on reading, shaping, joining, and summarizing large amounts of data while Power Fx focuses on reading and writing smaller sets of relational data.<\/p>\n<h2>Think Excel<\/h2>\n<p>What if you could build an app as easily as you build a spreadsheet?<\/p>\n<p>What if you could leverage your existing spreadsheet knowledge?<\/p>\n<p>These were the questions that inspired the creation of Power Apps and Power Fx.\u00a0 Hundreds of millions of people create spreadsheets with Excel every day, let\u2019s bring app creation to them that is easy and leverages Excel concepts that they already know.<\/p>\n<p>Replicating Excel\u2019s expression language for data types, operators, and core functions is fairly straightforward.\u00a0 This table shows all of Power Fx\u2019s pure functions, the ones marked in green are identical or very close to Excel\u2019s version:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-13683\" height=\"574\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54.png\" width=\"1601\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54.webp 1601w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54-300x108.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54-1024x367.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54-768x275.webp 768w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54-1536x551.webp 1536w\" sizes=\"auto, (max-width: 1601px) 100vw, 1601px\" \/><\/p>\n<p>Excel has many more functions than this and we are adding more all the time to Power Fx. We also meet with the Excel team and discuss what they are adding next and how we can add functions that stay consistent with their direction.<\/p>\n<p>But you don\u2019t just write <em>expressions<\/em> in Excel, you write <em>formulas <\/em>or recipes for how to calculate a specific cell\u2019s value.\u00a0 <strong>A1 = B2 * 2<\/strong> is a formula that defines the value of <strong>A1<\/strong> at all times and is recalculated automatically as <strong>B2<\/strong> changes.<\/p>\n<p><em>Power Fx follows this same formula pattern<\/em>.\u00a0 Cells are replaced with the properties of controls or objects.\u00a0 Here\u2019s an example where we have taken <a href=\"https:\/\/stackoverflow.com\/questions\/350264\/how-can-i-perform-a-reverse-string-search-in-excel-without-using-vba\">this Excel formula from Stack Overflow for reverse string search<\/a>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt='Excel with the formula: =RIGHT(A1,LEN(A1)-FIND(\"|\",SUBSTITUTE(A1,\" \",\"|\",LEN(A1)-LEN(SUBSTITUTE(A1,\" \",\"\")))))' class=\"alignnone wp-image-13710 size-full\" height=\"201\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_18h03_09.png\" width=\"656\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_18h03_09.webp 656w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_18h03_09-300x92.webp 300w\" sizes=\"auto, (max-width: 656px) 100vw, 656px\" \/><\/p>\n<p>And created a Power Fx formula from it.\u00a0 All that is different is that the references to cells have been replaced with references to control properties:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-13696\" height=\"452\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_14h43_00.gif\" width=\"1204\"\/><\/p>\n<p>Not only does this same syntax and same functions work in Power Fx, but notice something else in the animation.\u00a0 As <strong>Input.Text<\/strong> changes (the top box), <strong>Label.Text<\/strong>\u00a0(the bottom box) is automatically recalculated.\u00a0 The app is <em>behaving<\/em> like a spreadsheet, <em>it is recalculating<\/em>.<\/p>\n<p>Here is another more colorful example that uses a formula for the <strong>Fill<\/strong> color of the screen.\u00a0 As the sliders that control Red, Green, and Blue are changed, the background color automatically changes, as it is being recalculated:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Power Fx Formula: Fill = RGBA( RedSlider.Value, GreenSlider.Value, BlueSLider.Value, 100% )\" class=\"alignnone wp-image-13708 size-full\" height=\"432\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_17h17_02.gif\" width=\"1416\"\/><\/p>\n<p>There are no OnChange events for the slider controls as would be common in other languages. \u00a0In fact, <em>there is no way to explicitly set the Fill property value at all<\/em>.\u00a0 Which has a huge advantage: there is only one source of truth.\u00a0 If the color isn\u2019t working correctly, one only needs to look to this one formula to understand why.\u00a0 You don\u2019t need to search through your app to find a rogue piece of code that set the property at an unexpected time.\u00a0 In fact there is no time element, the correct formula values are always maintained.<\/p>\n<p>Note something else in the animation.\u00a0 As the sliders are set to a dark color, the labels for Red, Green, and Blue change to white to compensate.\u00a0 This is done through a simple formula on each label control&#8217;s <strong>Color<\/strong> property:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Power Fx Formula: =If( BlueSlider.Value+GreenSlider.Value+RedSlider.Value &lt; 150, White, Black )\" class=\"alignnone wp-image-13711 size-full\" height=\"431\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_18h05_03.png\" width=\"1420\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_18h05_03.webp 1420w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_18h05_03-300x91.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_18h05_03-1024x311.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_18h05_03-768x233.webp 768w\" sizes=\"auto, (max-width: 1420px) 100vw, 1420px\" \/><\/p>\n<p>What&#8217;s great about this is that it is isolated from what is happening for the <strong>Fill<\/strong> color,\u00a0\u00a0<em>these are two entirely different calculations.\u00a0<\/em>\u00a0Instead of large monolithic procedures, Power Fx logic is typically lots of smaller formulas that are independent.\u00a0 That&#8217;s easier to understand and enables enhancements without disturbing existing logic.<\/p>\n<p>Power Fx is a declarative language, just as Excel is.\u00a0 The maker defines <em>what<\/em> behavior they want, but it is up to the system to determine and optimize <em>how<\/em> and <em>when<\/em> to accomplish it. \u00a0To make that practical, most work is done through pure functions without side effects, making Power Fx also a functional language, again just as Excel is.<\/p>\n<p>Now there is a time and a place for imperative, step-by-step, logic and Power Fx offers this too.\u00a0 Apps write back changes to databases and start automations with the press of a button, while spreadsheets do not do these things.\u00a0 Whenever possible, for all the benefits cited above and consistency with Excel, we favor the declarative approach.<\/p>\n<h2>Low code<\/h2>\n<p>Power Fx describes business logic in concise, yet powerful, formulas.\u00a0 Most logic can be reduced to one-liners with plenty of expressiveness and control for more complex needs.\u00a0 The goal is to keep the number of concepts a maker needs to understand to a minimum, ideally no more than an Excel user would already know.<\/p>\n<p>For example, to lookup the first name of the employee for an order, one would write the following Power Fx.\u00a0 Beyond Excel concepts, the only added concept used here is &#8220;.&#8221; notation for drilling into a data structure, in this case for <strong>.Employee.&#8217;First Name&#8217;<\/strong>.\u00a0 This animation shows the mapping between the parts of the Power Fx formula and the concepts that need to be explicitly coded in the equivalent JavaScript.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-13718\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/03\/2021-03-01_10h27_38.gif\" width=\"1264\"\/><\/p>\n<p>Let\u2019s look more in depth at all the things that Power Fx is doing for us and the freedom it has to optimize because the formula was declarative:<\/p>\n<ul>\n<li><strong>Asynchronous.<\/strong>\u00a0 All data operations in Power Fx are asynchronous.\u00a0 The maker doesn\u2019t need to specify this, nor does the maker need to synchronize after the call is over.\u00a0 Most importantly, the maker doesn\u2019t need to be aware of this concept at all, they don\u2019t need to know what a promise or lambda function is.<\/li>\n<li><strong>Local and remote.\u00a0\u00a0<\/strong>Power Fx uses the same syntax and functions for data that is local in-memory and remote in a database or service.\u00a0 The user need not think about this distinction.\u00a0 Power Fx automatically delegates what it can to the server to process filters and sorts there more efficiently.<\/li>\n<li><strong>Relational data.\u00a0<\/strong> Orders and Customers are two different tables, related through a many-to-one relationship.\u00a0 The OData query requires an &#8220;$expand&#8221;\u00a0with knowledge of the foreign key, similar to a Join in SQL.\u00a0 The formula has none of this, in fact database keys are another concept the maker doesn\u2019t need to know about.\u00a0 The maker can use simple dot notation to access the entire graph of relationships from a record.<\/li>\n<li><strong>Projection.<\/strong>\u00a0 When writing a query, many developers will naively write &#8220;select * from \u2026&#8221; that brings back all the columns of data.\u00a0 Power Fx does analysis of all the columns that are used through the entire app, even across formula dependencies.\u00a0 Projection is automatically optimized and again the maker need not even know what that word means.<\/li>\n<li><strong>Retrieve only what is needed.<\/strong>\u00a0 In this example, the <strong>LookUp<\/strong> function implies that only one record should be retrieved and that is all that is brought back.\u00a0 If more records are requested by using the <strong>Filter<\/strong> function, for which thousands of records may qualify, only a single page of data is brought back at a time, on the order of a hundred records.\u00a0 The user must gesture through a gallery or data table to see the additional data, and it is automatically brought in for them.\u00a0 The maker can reason about large sets of data without needing to think about limiting data requests to reasonable chunks.<\/li>\n<li><strong>Runs only when is needed.<\/strong>\u00a0 We defined a <em>formula<\/em> for the Text property of the label control.\u00a0 As the variable <strong>Selected<\/strong> changes, the <strong>LookUp<\/strong> is automatically recalculated and the label updated.\u00a0 The maker did not need to write an OnChange handler for Selection, needing to remember that this label is dependent upon it.\u00a0 This is declarative programming as discussed earlier: the maker specified <em>what<\/em> they wanted to have in the label, not <em>how<\/em>\u00a0or <em>when<\/em>\u00a0it should be fetched.\u00a0 In fact, if this label is not visible because it is on a screen that is not visible or its Visible property is false, we can defer this calculation until the label is visible and effectively eliminate it if that rarely happens.<\/li>\n<li><strong>Excel syntax translation.<\/strong>\u00a0 Excel is used by hundreds of millions of users, most of which know that \u201c&amp;\u201d is used for string concatenation. \u00a0JavaScript uses \u201c+\u201d and other languages use \u201c.\u201d.\u00a0 We are meeting makers where they are, leveraging the knowledge they already have.<\/li>\n<li><strong>Display names and localization.\u00a0\u00a0&#8216;First Name&#8217;\u00a0<\/strong>is used in the Power Fx formula while <strong>nwind_firstname\u00a0<\/strong>is used in the JavaScript equivalent.\u00a0 In Dataverse and SharePoint, there is a <em>display name<\/em> for fields and tables as well as a unique <em>logical name<\/em>.\u00a0 The display names are often much more user friendly, as in this case, but they have another important quality: they can be localized.\u00a0 If you have a multi-lingual team, each team member can see table and field names in their own language.\u00a0 In all cases, Power Fx makes sure that the correct logical name is sent to the database automatically.<\/li>\n<\/ul>\n<h2>Always live<\/h2>\n<p>There is another Excel trait that is critical for citizen developers: immediate feedback.\u00a0 If you stop to think about it, Excel has no edit mode, compile step, or run state.\u00a0 What\u2019s great is that you&#8217;ve probably never thought about that before: you load your spreadsheet, you edit formulas and values freely, and you get your answers.\u00a0 <em>The spreadsheet is always live while in Excel<\/em>\u00a0<em>and there is no distinction made between editing and running<\/em>.\u00a0 Changes in any value or formula are immediate propagated throughout the spreadsheet and the maker can quickly check for the right answer.\u00a0 Any errors that Excel detects are surfaced immediately and don\u2019t interfere with the rest of the spreadsheet.<\/p>\n<p>Power Fx strives for this same live experience.\u00a0 It incorporates an incremental compiler to update formulas while the app is running and without disturbing state.\u00a0 In the animation below, the order number is displayed in a label control dependent on the slider control, even though there are two errors on the labels below it.\u00a0 The app is very much alive and interactive.\u00a0 A first attempt at fixing the Employee formula with <strong>.InvalidName <\/strong>results in an immediate red squiggly line and error displayed as it should, but the app keeps running.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-13691\" height=\"570\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_00h01_12.gif\" width=\"1524\"\/><\/p>\n<p>Watch what happens when <strong>.Employee<\/strong> is typed in.\u00a0 This edit causes the Data pane to add the Employees table, the metadata for this table is retrieved, and suggestions for fields are immediately offered.\u00a0 We just walked across a relationship from one table to another and the system made the needed adjustments to the app\u2019s references.\u00a0 The same thing happens when adding <strong>.Customer<\/strong>.<\/p>\n<p>After each edit, the slider continues on with its last value and any variables retain their value.\u00a0 Throughout, the order number has continued to be displayed in the top label as it should.\u00a0 <em>The app has been live, processing real data, the entire time.<\/em>\u00a0 We can save it, walk away, and others can open and use it \u2013 just like Excel.\u00a0 There is no build step, no compile, there is only a publish step to determine which version of the app is ready for users.<\/p>\n<h2>No code<\/h2>\n<p>One does not need to read and write Power Fx to start expressing logic.\u00a0 There are lots of customizations and logic that can be expressed through simple switches and UI builders.\u00a0 We build these \u201cno code\u201d tools to read and write Power Fx to ensure there is plenty of headroom for someone to take it further, acknowledging that \u201cno code\u201d tools will never offer all the expressiveness of the full language.\u00a0 Even when used with \u201cno code\u201d builders, we have deliberately kept the formula bar front and center in Power Apps to educate the maker on what we are doing on their behalf so they can begin to learn Power Fx.<\/p>\n<p>Let\u2019s look at some examples.\u00a0 In Power Apps, the property panel provides \u201cno code\u201d switches and knobs for the properties of the controls.\u00a0 In practice most property values are static.\u00a0 We\u2019ll use the color builder to change the background color of the Gallery.\u00a0 What you will notice is that the formula bar reflects this change, updating the formula to a different <strong>RGBA<\/strong> call.\u00a0 At any time, the maker can go to the formula bar and take this a step further, in this example using <strong>ColorFade<\/strong> to adjust the color.\u00a0 The color property still shows in the properties panel, but an <em>fx<\/em> appears on hover and the maker is directed to the formula bar.\u00a0 This is fully two way: removing the <strong>ColorFade<\/strong> call returns the color to something the property panel can understand and we can again use it to set a color.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-13688\" height=\"818\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_12h18_08.gif\" width=\"1408\"\/><\/p>\n<p>Here\u2019s a more complicated example.\u00a0 The gallery is showing a list of <strong>Employees<\/strong> from Dataverse.\u00a0 Dataverse provides views over table data.\u00a0 We can select one of these and the formula is changed to use the <strong>Filter<\/strong> function with this view name.\u00a0 The two drop downs can be used to dial in the correct table and view without touching the formula bar.\u00a0 But, as in this example, let\u2019s say you want to go further and add a sort.\u00a0 We can do that in the formula bar and the property panel again shows an <em>fx <\/em>icon and directs modifications to the formula bar.\u00a0 And again, if we simplify the formula to something the property panel can read and write, it again can be used.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-13687\" height=\"818\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_12h23_09.gif\" width=\"1408\"\/><\/p>\n<p>These have been simple examples.\u00a0 We believe Power Fx makes a great language for describing no code interactions.\u00a0 It is concise, powerful, and easy to parse, and provides the headroom that is so often needed with \u201cno cliffs\u201d up to low code.<\/p>\n<h2>Pro code<\/h2>\n<p>The other direction on the user spectrum is just as important.\u00a0 Low code makers build things that sometimes require the help of an expert or are taken over by a professional to maintain and enhance.\u00a0 Professionals also appreciate that low code development can be easier, faster, and less costly than building in a professional tool.\u00a0 Not every situation requires the full power of Visual Studio.<\/p>\n<p>Professionals want to use professional tools to be the most productive.\u00a0 This is why in January we introduced <a href=\"https:\/\/powerapps.microsoft.com\/en-us\/blog\/source-code-files-for-canvas-apps\/\">language tooling that unpacks a canvas app into constituent parts<\/a> that can be edited with Visual Studio Code or Visual Studio:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-13669\" height=\"800\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/03\/Gif2.gif\" width=\"1280\"\/><\/p>\n<p>And enables Power Fx to be put under source control with GitHub or Azure DevOps:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-13698\" height=\"900\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/GitHubChange.gif\" width=\"1440\"\/><\/p>\n<p>Power Fx supports formula based components for sharing and reuse.\u00a0 A few weeks ago we announced support for <a href=\"https:\/\/powerapps.microsoft.com\/en-us\/blog\/enhanced-component-properties\/\">parameters to component properties<\/a>, enabling the creation of pure user defined functions with more enhancements on the way.<\/p>\n<p>In addition, Power Fx is great at stitching together components and services built by professionals.\u00a0 Out of the box <a href=\"https:\/\/docs.microsoft.com\/en-us\/powerapps\/maker\/canvas-apps\/connections-list\">connectors<\/a> provide access to hundreds of data sources and web services, <a href=\"https:\/\/docs.microsoft.com\/en-us\/connectors\/custom-connectors\/define-blank\">custom connectors<\/a> enable Power Fx to talk to any REST web service, and <a href=\"https:\/\/docs.microsoft.com\/en-us\/powerapps\/developer\/component-framework\/create-custom-controls-using-pcf\">code components<\/a> enable Power Fx to interact with fully custom JavaScript on the screen and page.<\/p>\n<h2>Language evolution<\/h2>\n<p>Evolving programming languages forward is both necessary and tricky. Everyone, rightfully so, is concerned that a change no matter how well intentioned could break existing code and require users to learn a new pattern.\u00a0 Power Fx takes backward compatibility very seriously, but we also strongly believe that we won\u2019t always get it right the first time and we will collectively learn what is best as a community.\u00a0 We must evolve and Power Fx designed support for language evolution in from the very beginning.<\/p>\n<p>A language version stamp is included with every Power Fx document that is saved.\u00a0 If we want to make an incompatible change, we write what we call a \u201cback compat converter\u201d that rewrites the formula automatically the next time it is edited.\u00a0 If it is something major that we need to educate the user about, we\u2019ll also display a message with a link to the docs.\u00a0 Using this facility, we can still load apps built with the preview versions of Power Apps from many years ago despite all the changes that have occurred since then.<\/p>\n<p>Let\u2019s take an example. In 2018, we introduced the <strong>ShowError<\/strong> function to display an error banner with a red background.\u00a0 This is how it looked in 2018:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt='Former Power Apps formula: ShowError( \"There is a problem!\" )' class=\"alignnone wp-image-13689 size-full\" height=\"580\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2018b.png\" width=\"1200\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2018b.webp 1200w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2018b-300x145.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2018b-1024x495.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2018b-768x371.webp 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p>Users loved it, but they also asked us for a way to show a success banner (green background) or an informational banner (blue background).\u00a0 So, we came up with a more generic <strong>Notify <\/strong>function that took a second argument for the kind of notification.\u00a0 We could have just <em>added<\/em> <strong>Notify <\/strong>and kept <strong>ShowError<\/strong> the way it was.\u00a0 But we didn\u2019t, we <em>replaced<\/em> <strong>ShowError <\/strong>with<strong> Notify<\/strong>.\u00a0 Yes, that\u2019s right, we removed a function that had previously been in production with something else.\u00a0 Why?\u00a0 There would have been two ways to do the same thing, it would have caused confusion especially for new users, and most importantly it added complexity.\u00a0 Was some small user re-education required?\u00a0 Yes.\u00a0 But nobody complained, everybody appreciated the change, and then moved on to their next <strong>Notify<\/strong> feature: timeout control (which we have also added).\u00a0 For all the users we may have now, there are so many more to come, let\u2019s get it right for them.<\/p>\n<p>This is how the same app looks when loaded into today\u2019s Power Apps.\u00a0 No action was required by the user to make this transformation happen, it was automatic upon open:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt='Power Fx Formula: Notify( \"There is a problem!\", Error )' class=\"alignnone wp-image-13690 size-full\" height=\"580\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021b.png\" width=\"1200\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021b.webp 1200w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021b-300x145.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021b-1024x495.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021b-768x371.webp 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p>This works because Power Apps today is a closed system.\u00a0 One of our challenges will be to retain this ability as we open up to more contexts and more ways of working with source code.<\/p>\n<h2>What comes next?<\/h2>\n<p>We have a lot of work to do.\u00a0 ?\u00a0 We\u2019ve announced our plans and introduced everyone to Power Fx.\u00a0 Now we need to extract the language and documentation from Power Apps canvas and generalize it for other contexts.\u00a0 We are on it! \u00a0Again, our open source home will be at <a href=\"https:\/\/github.com\/microsoft\/Power-Fx\">https:\/\/github.com\/microsoft\/Power-Fx<\/a>.\u00a0 As we make progress, we\u2019ll share progress and demos through the GitHub site, conferences, webinars, and this blog.<\/p>\n<p>This has been only a high level introduction to Power Fx, there is so much more to the story.\u00a0 You can learn more in the <a href=\"https:\/\/aka.ms\/powerfxdocs\">fledgling Power Fx docs<\/a> or you can read about it in the existing <a href=\"https:\/\/docs.microsoft.com\/en-us\/powerapps\/maker\/canvas-apps\/working-with-formulas\">Power Apps docs<\/a>.\u00a0 You can also experience it today in <a href=\"https:\/\/powerapps.microsoft.com\">Power Apps canvas with a free trial<\/a>.<\/p>\n<p>Language improvements are also going to keep coming.\u00a0 We have a long backlog including named formulas, more user defined and Excel functions, more data types, finishing error handling, dynamic schema, and declarative alternatives to App.OnStart \u2013 just to name a few. \u00a0There is so much more to come.<\/p>\n<p>Open source is an invitation for you to join us on this journey.\u00a0 The whole point is to build community and openly discuss your feedback, your issues, and your ideas.\u00a0 We can begin that discussion right now.\u00a0 Power Fx is the low code language for everyone, not just to use but to contribute too.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Microsoft Power Fx is the low code language for expressing logic across the Microsoft Power Platform. \u00a0It is the same language that is at the heart of Microsoft Power Apps canvas apps\u00a0today and is inspired by Microsoft Excel.\u00a0 \u00a0It enables the full spectrum of development from no code to pro code with no cliffs in between, enabling diverse teams to work together and saving everyone time and money.\u00a0 We are very excited to bring it to more of the Power Platform and to share it with everyone as open source.\u00a0 Only through a strong user community can a language grow and flourish.<\/p>\n","protected":false},"author":86,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","ms-ems-related-posts":[],"footnotes":""},"audience":[3378],"content-type":[],"job-role":[],"product":[3473],"property":[],"topic":[3421],"coauthors":[2104],"class_list":["post-13681","post","type-post","status-publish","format-standard","hentry","audience-it-professional","product-power-apps","topic-application-modernization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>What is Microsoft Power Fx? - Microsoft Power Platform Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is Microsoft Power Fx? - Microsoft Power Platform Blog\" \/>\n<meta property=\"og:description\" content=\"Microsoft Power Fx is the low code language for expressing logic across the Microsoft Power Platform. \u00a0It is the same language that is at the heart of Microsoft Power Apps canvas apps\u00a0today and is inspired by Microsoft Excel.\u00a0 \u00a0It enables the full spectrum of development from no code to pro code with no cliffs in between, enabling diverse teams to work together and saving everyone time and money.\u00a0 We are very excited to bring it to more of the Power Platform and to share it with everyone as open source.\u00a0 Only through a strong user community can a language grow and flourish.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/what-is-microsoft-power-fx\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Power Platform Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-02T13:50:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-11T14:55:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1601\" \/>\n\t<meta property=\"og:image:height\" content=\"574\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Greg Lindhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Greg Lindhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/greg-lindhorst\/\",\"@type\":\"Person\",\"@name\":\"Greg Lindhorst\"}],\"headline\":\"What is Microsoft Power Fx?\",\"datePublished\":\"2021-03-02T13:50:11+00:00\",\"dateModified\":\"2025-06-11T14:55:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/\"},\"wordCount\":3370,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54.png\",\"keywords\":[\"Formulas\",\"Power Fx\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/\",\"name\":\"What is Microsoft Power Fx? - Microsoft Power Platform Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54.png\",\"datePublished\":\"2021-03-02T13:50:11+00:00\",\"dateModified\":\"2025-06-11T14:55:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#primaryimage\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54.webp\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54.webp\",\"width\":1601,\"height\":574,\"caption\":\"table, Excel\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What is Microsoft Power Fx?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#website\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/\",\"name\":\"Microsoft Power Platform Blog\",\"description\":\"Innovate with Business Apps\",\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization\",\"name\":\"Microsoft Power Platform Blog\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"width\":194,\"height\":145,\"caption\":\"Microsoft Power Platform Blog\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/person\/dbd4cb8af4503e696f240353831f05d4\",\"name\":\"Greg Lindhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g0133d144d5ed416197bd3b29ccd9a59c\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g\",\"caption\":\"Greg Lindhorst\"},\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/gregli\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What is Microsoft Power Fx? - Microsoft Power Platform Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/","og_locale":"en_US","og_type":"article","og_title":"What is Microsoft Power Fx? - Microsoft Power Platform Blog","og_description":"Microsoft Power Fx is the low code language for expressing logic across the Microsoft Power Platform. \u00a0It is the same language that is at the heart of Microsoft Power Apps canvas apps\u00a0today and is inspired by Microsoft Excel.\u00a0 \u00a0It enables the full spectrum of development from no code to pro code with no cliffs in between, enabling diverse teams to work together and saving everyone time and money.\u00a0 We are very excited to bring it to more of the Power Platform and to share it with everyone as open source.\u00a0 Only through a strong user community can a language grow and flourish.","og_url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/what-is-microsoft-power-fx\/","og_site_name":"Microsoft Power Platform Blog","article_published_time":"2021-03-02T13:50:11+00:00","article_modified_time":"2025-06-11T14:55:26+00:00","og_image":[{"width":1601,"height":574,"url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54.png","type":"image\/png"}],"author":"Greg Lindhorst","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Greg Lindhorst","Est. reading time":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/greg-lindhorst\/","@type":"Person","@name":"Greg Lindhorst"}],"headline":"What is Microsoft Power Fx?","datePublished":"2021-03-02T13:50:11+00:00","dateModified":"2025-06-11T14:55:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/"},"wordCount":3370,"commentCount":0,"publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54.png","keywords":["Formulas","Power Fx"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/","name":"What is Microsoft Power Fx? - Microsoft Power Platform Blog","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#primaryimage"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54.png","datePublished":"2021-03-02T13:50:11+00:00","dateModified":"2025-06-11T14:55:26+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#primaryimage","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54.webp","contentUrl":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-28_13h01_54.webp","width":1601,"height":574,"caption":"table, Excel"},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/03\/02\/what-is-microsoft-power-fx\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/"},{"@type":"ListItem","position":2,"name":"What is Microsoft Power Fx?"}]},{"@type":"WebSite","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#website","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/","name":"Microsoft Power Platform Blog","description":"Innovate with Business Apps","publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#organization","name":"Microsoft Power Platform Blog","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","width":194,"height":145,"caption":"Microsoft Power Platform Blog"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/#\/schema\/person\/dbd4cb8af4503e696f240353831f05d4","name":"Greg Lindhorst","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g0133d144d5ed416197bd3b29ccd9a59c","url":"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g","caption":"Greg Lindhorst"},"url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/gregli\/"}]}},"bloginabox_animated_featured_image":null,"bloginabox_display_generated_audio":false,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Power Platform Blog","distributor_original_site_url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/13681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/users\/86"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/comments?post=13681"}],"version-history":[{"count":1,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/13681\/revisions"}],"predecessor-version":[{"id":130430,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/13681\/revisions\/130430"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/media?parent=13681"}],"wp:term":[{"taxonomy":"audience","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/audience?post=13681"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/content-type?post=13681"},{"taxonomy":"job-role","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/job-role?post=13681"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/product?post=13681"},{"taxonomy":"property","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/property?post=13681"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/topic?post=13681"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/coauthors?post=13681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}