{"id":12416,"date":"2021-02-18T19:56:05","date_gmt":"2021-02-19T03:56:05","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/enhanced-component-properties-2021\/"},"modified":"2025-06-11T07:55:37","modified_gmt":"2025-06-11T14:55:37","slug":"enhanced-component-properties-2021","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/enhanced-component-properties-2021\/","title":{"rendered":"Enhanced component properties"},"content":{"rendered":"<p>We&#8217;ve added two great new experimental features to formula based components:<\/p>\n<ul>\n<li><strong>Behavior properties<\/strong>.\u00a0 You can now fire a custom event from the component to the hosting app.\u00a0 Previously, you could only fire <strong>OnReset<\/strong>.\u00a0\u00a0You can now, for example, fire your own <strong>OnChange<\/strong> event from a date picker component.<\/li>\n<li><strong>Property parameters<\/strong>.\u00a0 You can now pass parameters for a property evaluation, similar to how you would pass parameters to a parameterized query or function in other languages.\u00a0 \u00a0You can now, for example, define an output property <strong>MathUtils.RandBetween\u00a0\u00a0<\/strong>that does a calculation based on its parameters and is called like a function.<\/li>\n<\/ul>\n<p>With property parameters, <strong>you can now create simple user defined functions with formulas!<\/strong>\u00a0 There are some limitations, such as output properties must be pure without side effects, but it shows the direction we are headed.\u00a0 There will be more to come in the months ahead.<\/p>\n<p>As with all experimental features, this is a first look for feedback and these features may change dramatically.\u00a0 Please don&#8217;t use them in production until they reach Preview.\u00a0 To enable these features, toggle this switch under File &gt; Settings &gt; Advanced settings &gt; Experimental features:<br \/>\n<img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-13455\" height=\"134\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-11_13h51_51.png\" width=\"569\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-11_13h51_51.webp 569w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-11_13h51_51-300x71.webp 300w\" sizes=\"auto, (max-width: 569px) 100vw, 569px\" \/><\/p>\n<h2>Behavior properties<\/h2>\n<p>Let&#8217;s start simple.\u00a0 Imagine you&#8217;d like to create a component for collecting start and end dates.\u00a0 It might look like this with two date picker controls:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12418\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h21_07.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h21_07.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h21_07-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h21_07-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h21_07-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>Now, let&#8217;s say you wanted to know in your app if one of these two dates change.\u00a0 \u00a0The date picker controls have\u00a0<strong>OnChange<\/strong> events, but until now there was no way to plumb this through to the app that hosts the component.<\/p>\n<p>But now we can.\u00a0 We can add a new custom property, name it\u00a0<strong>OnChange<\/strong>, and make it&#8217;s property type\u00a0<strong>Behavior<\/strong>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12420\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h24_14.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h24_14.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h24_14-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h24_14-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h24_14-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>With this in place, we can now invoke this property from within our component as if it was a function call, shown here from the <strong>OnChange<\/strong> for both of the date pickers:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12421\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h27_48.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h27_48.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h27_48-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h27_48-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h27_48-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>And from within our app, we can write a function to take action when either of these date pickers change:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12423\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h31_19.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h31_19.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h31_19-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h31_19-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h31_19-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>The result:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12424\" height=\"666\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h35_01.gif\" width=\"1536\"\/><\/p>\n<p>Great!\u00a0 Easy so far.<\/p>\n<h2>Property parameters<\/h2>\n<p>Now, wouldn&#8217;t it be great if we could pass parameters to <strong>OnChange<\/strong>?<\/p>\n<p>Let&#8217;s return to our example and pass Begin and End dates to the OnChange formula.\u00a0 \u00a0Down at the bottom of the component property&#8217;s definition there is a new facility for adding Parameters:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12425\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h40_24.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h40_24.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h40_24-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h40_24-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h40_24-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>By selecting\u00a0<strong>+ New parameter<\/strong> we can add\u00a0<strong>Begin<\/strong> with a data type of <strong>DateTime<\/strong>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12426\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h41_35.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h41_35.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h41_35-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h41_35-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h41_35-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>And after doing the same thing for <strong>End<\/strong>, we will have two optional parameters:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12428\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h44_01.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h44_01.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h44_01-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h44_01-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h44_01-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>With these parameters added, we can return to our invocation in the component and update it to pass the current values from the date pickers to the event:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12429\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h47_57.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h47_57.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h47_57-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h47_57-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h47_57-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>Finally, we update the <strong>OnChange<\/strong> formula in the app to use these parameters.\u00a0 Here,<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12430\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h53_18.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h53_18.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h53_18-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h53_18-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h53_18-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>Note that because we added the parameters to the event, the formula&#8217;s value in the app will have returned to its default and our earlier customization will have been lost.\u00a0 This is a bug that we will fix soon (sorry, we&#8217;re still experimental).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12431\" height=\"666\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_11h55_49.gif\" width=\"1536\"\/><\/p>\n<p>In this example, the beginning and end dates might be available in this case as output properties.\u00a0 But there are other cases where there is information that is specific to the moment in time that the event was trigger, that might change by the time the formula reads it.\u00a0 \u00a0Using parameters fixes those values for that specific event invocation.<\/p>\n<h2>Pure functions<\/h2>\n<p>We can use property parameters in input and output properties too.\u00a0 A good example of this would would be a math utilities library.\u00a0 We don&#8217;t currently offer Excel&#8217;s <strong>RandBetween<\/strong> function in Power Apps.\u00a0 But, we can recreate it using the <strong>Rand<\/strong> function that we do support.<\/p>\n<p>Let&#8217;s start by creating a new <strong>MathUtils<\/strong> component with a <strong>RandBetween<\/strong> custom property of property type <strong>Output <\/strong>and Data type <strong>Number<\/strong>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12436\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h09_02.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h09_02.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h09_02-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h09_02-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h09_02-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>We&#8217;ll add two parameters to this property for the range.\u00a0 Excel names these parameters <strong>Bottom<\/strong> and <strong>Top<\/strong>, of type Number.\u00a0 These are both required parameters in Excel.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12433\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h03_14.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h03_14.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h03_14-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h03_14-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h03_14-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>And with the same thing done for <strong>Top<\/strong>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12437\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h09_51.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h09_51.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h09_51-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h09_51-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h09_51-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>Within the component, we&#8217;ll define the formula for calculating <strong>RandBetween\u00a0<\/strong>based on these parameters:<\/p>\n<pre>If( Top &gt;= Bottom,\u00a0\n\u00a0 \u00a0\u00a0Round( Rand() * (Top - Bottom) + Bottom, 0 ),\n    Blank()\n)<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12438\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h12_37.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h12_37.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h12_37-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h12_37-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h12_37-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>Now we can call it like a function from within our app.\u00a0 We will need to create an instance of this component in our app, with the default name <strong>MathUtils_1<\/strong>.\u00a0 Here two slider controls are used as input and the result is shown in a label control:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12439\" height=\"668\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h17_55.png\" width=\"1536\" srcset=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h17_55.webp 1536w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h17_55-300x130.webp 300w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h17_55-1024x445.webp 1024w, https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h17_55-768x334.webp 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>As the sliders change, a new random number between the two is calculated.\u00a0 Note that if\u00a0<strong>Bottom\u00a0<\/strong>is higher than\u00a0<strong>Top<\/strong> that a Blank value is returned:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-12440\" height=\"666\" src=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/12\/2020-12-07_12h21_09.gif\" width=\"1536\"\/><br \/>\n<strong>Wow, that&#8217;s a user defined function written in the Power Apps formula language!<\/strong>\u00a0 \u00a0Yes it is and cause for celebration.\u00a0 But it is only a first step and we are starting to see some of the awkward aspects and limitations:<\/p>\n<ul>\n<li><strong>RandBetween<\/strong> is a pure function &#8211; it does its work based purely on its input parameters.\u00a0 It can&#8217;t read state in the app, such as global variables or data sources.<\/li>\n<li><strong>RandBetween<\/strong> is a data flow property.\u00a0 It cannot change state within the component or the app.<\/li>\n<li>The component had to be instanced.\u00a0 It is a UX component that has to be placed on the screen, where in fact <strong>MathUtils<\/strong> has no UI at all.\u00a0 It would be better if <strong>RandBetween<\/strong> was simply a function in a <strong>MathUtils<\/strong> namespace and not object oriented.<\/li>\n<\/ul>\n<p>We are actively working to build on this foundation, to make this all cleaner, and address the limitations.<\/p>\n<p>Enjoy and please let us know what you think in the <a href=\"https:\/\/powerusers.microsoft.com\/t5\/Power-Apps-Community\/ct-p\/PowerApps1\">Power Apps community forum<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Enjoy two new experimental features for formula based components.  Behavior properties enable a component to fire a custom event into its container, such as OnChange.  Property parameters enable the passing of arguments for a property evaluation, providing our first steps toward formula based user defined functions.<\/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":[3424],"job-role":[],"product":[3473],"property":[],"topic":[3421],"coauthors":[2104],"class_list":["post-12416","post","type-post","status-publish","format-standard","hentry","audience-it-professional","content-type-news","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>Enhanced component properties - 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\/02\/18\/enhanced-component-properties-2021\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Enhanced component properties - Microsoft Power Platform Blog\" \/>\n<meta property=\"og:description\" content=\"Enjoy two new experimental features for formula based components. Behavior properties enable a component to fire a custom event into its container, such as OnChange. Property parameters enable the passing of arguments for a property evaluation, providing our first steps toward formula based user defined functions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/enhanced-component-properties-2021\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Power Platform Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-19T03:56:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-11T14:55:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-11_13h51_51.png\" \/>\n\t<meta property=\"og:image:width\" content=\"569\" \/>\n\t<meta property=\"og:image:height\" content=\"134\" \/>\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=\"5 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\/02\/18\/enhanced-component-properties-2021\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/greg-lindhorst\/\",\"@type\":\"Person\",\"@name\":\"Greg Lindhorst\"}],\"headline\":\"Enhanced component properties\",\"datePublished\":\"2021-02-19T03:56:05+00:00\",\"dateModified\":\"2025-06-11T14:55:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/\"},\"wordCount\":934,\"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\/02\/18\/enhanced-component-properties-2021\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-11_13h51_51.png\",\"keywords\":[\"Building UI\",\"Formulas\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/\",\"name\":\"Enhanced component properties - 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\/02\/18\/enhanced-component-properties-2021\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-11_13h51_51.png\",\"datePublished\":\"2021-02-19T03:56:05+00:00\",\"dateModified\":\"2025-06-11T14:55:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/#primaryimage\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-11_13h51_51.webp\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-11_13h51_51.webp\",\"width\":569,\"height\":134,\"caption\":\"graphical user interface, text, application\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enhanced component properties\"}]},{\"@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":"Enhanced component properties - 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\/02\/18\/enhanced-component-properties-2021\/","og_locale":"en_US","og_type":"article","og_title":"Enhanced component properties - Microsoft Power Platform Blog","og_description":"Enjoy two new experimental features for formula based components. Behavior properties enable a component to fire a custom event into its container, such as OnChange. Property parameters enable the passing of arguments for a property evaluation, providing our first steps toward formula based user defined functions.","og_url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/power-apps\/enhanced-component-properties-2021\/","og_site_name":"Microsoft Power Platform Blog","article_published_time":"2021-02-19T03:56:05+00:00","article_modified_time":"2025-06-11T14:55:37+00:00","og_image":[{"width":569,"height":134,"url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-11_13h51_51.png","type":"image\/png"}],"author":"Greg Lindhorst","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Greg Lindhorst","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/author\/greg-lindhorst\/","@type":"Person","@name":"Greg Lindhorst"}],"headline":"Enhanced component properties","datePublished":"2021-02-19T03:56:05+00:00","dateModified":"2025-06-11T14:55:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/"},"wordCount":934,"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\/02\/18\/enhanced-component-properties-2021\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-11_13h51_51.png","keywords":["Building UI","Formulas"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/","name":"Enhanced component properties - 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\/02\/18\/enhanced-component-properties-2021\/#primaryimage"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-11_13h51_51.png","datePublished":"2021-02-19T03:56:05+00:00","dateModified":"2025-06-11T14:55:37+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/#primaryimage","url":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-11_13h51_51.webp","contentUrl":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-content\/uploads\/2021\/02\/2021-02-11_13h51_51.webp","width":569,"height":134,"caption":"graphical user interface, text, application"},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/2021\/02\/18\/enhanced-component-properties-2021\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/"},{"@type":"ListItem","position":2,"name":"Enhanced component properties"}]},{"@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\/12416","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=12416"}],"version-history":[{"count":1,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/12416\/revisions"}],"predecessor-version":[{"id":130440,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/12416\/revisions\/130440"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/media?parent=12416"}],"wp:term":[{"taxonomy":"audience","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/audience?post=12416"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/content-type?post=12416"},{"taxonomy":"job-role","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/job-role?post=12416"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/product?post=12416"},{"taxonomy":"property","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/property?post=12416"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/topic?post=12416"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/coauthors?post=12416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}