{"id":1683632,"date":"2022-08-16T09:00:52","date_gmt":"2022-08-16T16:00:52","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=1683632"},"modified":"2024-10-31T23:59:49","modified_gmt":"2024-11-01T06:59:49","slug":"im-a-developer-do-i-really-need-arcade","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade","title":{"rendered":"I\u2019m a developer. Do I really need Arcade?"},"author":6561,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[777102,738191,22941],"tags":[758502,32551],"industry":[],"product":[36591,761642,36831,36551,36601],"class_list":["post-1683632","blog","type-blog","status-publish","format-standard","hentry","category-arcade","category-developers","category-mapping","tag-app-development","tag-arcade","product-apps","product-platform","product-js-api-arcgis","product-arcgis-online","product-developers"],"acf":{"short_description":"Developers can already customize ArcGIS apps with almost any language. Learn why Arcade matters, and what you can do to leverage it in your apps.","flexible_content":[{"acf_fc_layout":"content","content":"<p>At <a href=\"https:\/\/www.esri.com\/en-us\/about\/events\/uc\/overview\">Esri UC<\/a> last month, I observed more interest in <a href=\"https:\/\/developers.arcgis.com\/arcade\/\">ArcGIS Arcade<\/a> than I ever had at an Esri conference. I heard questions ranging from the fundamentals, such as:<\/p>\n<ul>\n<li>What is Arcade?<\/li>\n<li>Where can I use Arcade?<\/li>\n<li>Why did Esri develop a new language instead of leveraging an existing one?<\/li>\n<\/ul>\n<p>\u2026to more specific questions like:<\/p>\n<ul>\n<li>How can I use Arcade to sort fields in my popup?<\/li>\n<li>Can Arcade be used to help me visualize the status of a project based on multiple fields?<\/li>\n<li>Can I control the execution of Arcade outside of a popup?<\/li>\n<\/ul>\n<p>But my favorite question was the following:<\/p>\n<p><strong>As a developer I can already use <em>(insert favorite programming language here)<\/em> to customize almost any ArcGIS app. Do I really need Arcade?<\/strong><\/p>\n<p>It\u2019s a great question that deserves much more than a catch-all \u201cit depends\u201d response (though it really does depend on what you\u2019re trying to accomplish).<\/p>\n<p>The TL;DR is yes, Arcade may help you more than you think. Especially when it comes to defining conditional content in one app where it can be <a href=\"#portability\">saved and reused in potentially hundreds of apps<\/a>, all without duplicating your code.<\/p>\n<p>Let\u2019s dive into some details that demonstrate how Arcade can benefit app developers. I\u2019ll start with some contextual examples of where Arcade is used. If you feel confident in your Arcade knowledge, feel free to skip straight to the <a href=\"#why\">Why developers should care about Arcade<\/a>.<\/p>\n<h2>What is Arcade?<\/h2>\n<p>In its most fundamental usage, Arcade is a calculator. It allows you to compute values derived from attributes in a layer. The result can be used in popups, labels and in renderers. Best of all, these scripts work throughout the ArcGIS system.<\/p>\n<p>In fact, when Arcade was <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/data-management\/mapping\/introducing-arcade\/\">first released in December 2016<\/a>, it could only be used for basic calculations and formatting with a few out of the box functions, very similar to a spreadsheet formula.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1683912,"id":1683912,"title":"Screen Shot 2022-08-11 at 5.47.06 PM","filename":"Screen-Shot-2022-08-11-at-5.47.06-PM.png","filesize":18094,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.47.06-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade\/screen-shot-2022-08-11-at-5-47-06-pm","alt":"A Microsoft Excel formula for calculating the percentage of the population under age 18.","author":"6561","description":"","caption":"A Microsoft Excel formula for calculating the percentage of the population under age 18.","name":"screen-shot-2022-08-11-at-5-47-06-pm","status":"inherit","uploaded_to":1683632,"date":"2022-08-12 00:47:40","modified":"2022-08-12 16:29:37","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":546,"height":138,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.47.06-PM-213x138.png","thumbnail-width":213,"thumbnail-height":138,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.47.06-PM.png","medium-width":464,"medium-height":117,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.47.06-PM.png","medium_large-width":546,"medium_large-height":138,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.47.06-PM.png","large-width":546,"large-height":138,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.47.06-PM.png","1536x1536-width":546,"1536x1536-height":138,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.47.06-PM.png","2048x2048-width":546,"2048x2048-height":138,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.47.06-PM.png","card_image-width":546,"card_image-height":138,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.47.06-PM.png","wide_image-width":546,"wide_image-height":138}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"image","image":{"ID":1683702,"id":1683702,"title":"Screen Shot 2022-08-11 at 3.42.07 PM","filename":"Screen-Shot-2022-08-11-at-3.42.07-PM.png","filesize":26081,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-3.42.07-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade\/screen-shot-2022-08-11-at-3-42-07-pm","alt":"Formula for calculating population under 18 in Arcade.","author":"6561","description":"","caption":"The same formula for calculating the percentage of the population under age 18 written in Arcade. $feature is the variable that provides the expression access to feature attribute values.","name":"screen-shot-2022-08-11-at-3-42-07-pm","status":"inherit","uploaded_to":1683632,"date":"2022-08-11 23:05:21","modified":"2022-08-12 16:30:13","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1012,"height":156,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-3.42.07-PM-213x156.png","thumbnail-width":213,"thumbnail-height":156,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-3.42.07-PM.png","medium-width":464,"medium-height":72,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-3.42.07-PM.png","medium_large-width":768,"medium_large-height":118,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-3.42.07-PM.png","large-width":1012,"large-height":156,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-3.42.07-PM.png","1536x1536-width":1012,"1536x1536-height":156,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-3.42.07-PM.png","2048x2048-width":1012,"2048x2048-height":156,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-3.42.07-PM-826x127.png","card_image-width":826,"card_image-height":127,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-3.42.07-PM.png","wide_image-width":1012,"wide_image-height":156}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Arcade has evolved over the years, making it more powerful. In fact, we&#8217;ve added more than 100 new Arcade functions, new language features (such as template literals), and expanded Arcade\u2019s presence throughout the ArcGIS system since its first release. Now Arcade looks and feels more like a full-fledged scripting language.<\/p>\n<p>For example, in the latest versions of Arcade, you can use it to <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-online\/mapping\/part-1-introducing-arcade-pop-up-content-elements\/\">customize popup content<\/a> and define conditional behavior in <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-online\/mapping\/upgrade-your-editing-experience-in-the-map-viewer-by-using-forms\/\">forms<\/a> and <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/ops-dashboard\/real-time\/getting-started-with-arcade-in-arcgis-dashboards\/\">dashboard elements<\/a> based on user input.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1683942,"id":1683942,"title":"Screen Shot 2022-08-11 at 5.36.01 PM","filename":"Screen-Shot-2022-08-11-at-5.36.01-PM.png","filesize":165030,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.36.01-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade\/screen-shot-2022-08-11-at-5-36-01-pm","alt":"Since its initial release, Arcade has matured into a language of nearly 190 built-in functions that can be used to create custom content and behavior in apps throughout the ArcGIS system.","author":"6561","description":"","caption":"Since its initial release, Arcade has matured into a language of nearly 190 built-in functions that can be used to define custom content and behavior in apps throughout the ArcGIS system.","name":"screen-shot-2022-08-11-at-5-36-01-pm","status":"inherit","uploaded_to":1683632,"date":"2022-08-12 00:48:50","modified":"2022-08-15 17:51:21","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1854,"height":1005,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.36.01-PM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.36.01-PM.png","medium-width":464,"medium-height":252,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.36.01-PM.png","medium_large-width":768,"medium_large-height":416,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.36.01-PM.png","large-width":1854,"large-height":1005,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.36.01-PM-1536x833.png","1536x1536-width":1536,"1536x1536-height":833,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.36.01-PM.png","2048x2048-width":1854,"2048x2048-height":1005,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.36.01-PM-826x448.png","card_image-width":826,"card_image-height":448,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.36.01-PM.png","wide_image-width":1854,"wide_image-height":1005}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h2>Where can I use Arcade?<\/h2>\n<p>You can only use Arcade within a few contexts of ArcGIS apps and APIs. In our documentation, we refer to the script&#8217;s execution context as the <a href=\"https:\/\/developers.arcgis.com\/arcade\/guide\/profiles\/\">profile<\/a>. An Arcade profile specifies <strong>where<\/strong> you can use Arcade, the profile <strong>variables<\/strong> (aka globals) that can be used as input data values to the expression, the language <strong>functions<\/strong> you may use, and the valid <strong>data types<\/strong> that may be returned from an expression. Another way to think of a profile is the <em>environment<\/em> that controls Arcade&#8217;s execution.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1683762,"id":1683762,"title":"Screen Shot 2022-08-11 at 4.29.30 PM","filename":"Screen-Shot-2022-08-11-at-4.29.30-PM-scaled.png","filesize":926741,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-4.29.30-PM-scaled.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade\/screen-shot-2022-08-11-at-4-29-30-pm","alt":"Arcade profiles supported by the ArcGIS API for JavaScript. Profiles define the context, variables, valid return types, and functions that may be used in expressions.","author":"6561","description":"","caption":"Arcade profiles implemented in the ArcGIS API for JavaScript. Profiles define the context, variables, valid return types, and functions that may be used in expressions.","name":"screen-shot-2022-08-11-at-4-29-30-pm","status":"inherit","uploaded_to":1683632,"date":"2022-08-11 23:30:05","modified":"2022-08-12 16:36:18","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":2560,"height":1355,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-4.29.30-PM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-4.29.30-PM-scaled.png","medium-width":464,"medium-height":246,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-4.29.30-PM-scaled.png","medium_large-width":768,"medium_large-height":407,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-4.29.30-PM-scaled.png","large-width":1920,"large-height":1016,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-4.29.30-PM-1536x813.png","1536x1536-width":1536,"1536x1536-height":813,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-4.29.30-PM-2048x1084.png","2048x2048-width":2048,"2048x2048-height":1084,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-4.29.30-PM-826x437.png","card_image-width":826,"card_image-height":437,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-4.29.30-PM-1920x1016.png","wide_image-width":1920,"wide_image-height":1016}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Let\u2019s check out a few scenarios where Arcade can be useful to you as a developer.<\/p>\n<ul>\n<li><a href=\"#scenario1\">Scenario 1. Calculate a new value.<\/a><\/li>\n<li><a href=\"#scenario2\">Scenario 2. Create custom popup content.<\/a><\/li>\n<li><a href=\"#scenario3\">Scenario 3. Customize app layout and behavior.<\/a><\/li>\n<\/ul>\n<p><a name=\"scenario1\"><\/a><\/p>\n<h2>Scenario 1: Calculate a new value<\/h2>\n<p>Arcade allows you to calculate new values based on existing attribute values in the layer or table. Each of the following are common examples of how Arcade can be useful when defining custom popup content or creating a new data variable for a visualization.<\/p>\n<h4><strong>Calculate a percentage or ratio based on two fields<\/strong><\/h4>\n<p>This very common workflow in mapping makes it easy for you to normalize a data variable by whatever variable you want without having to rely on the table to provide it. For example, you may need to visualize the percentage of the population under the age of 5.<\/p>\n<pre><code style=\"padding: 0.5em; color: #333; background: #f8f8f8;\">($feature.POP_0_5 \/ $feature.TOTAL_POPULATION) * <span style=\"color: #008080;\">100<\/span>\r\n<\/code><\/pre>\n<p>Or calculate the density of that population by square mile.<\/p>\n<pre><code style=\"padding: 0.5em; color: #333; background: #f8f8f8;\">$feature.POP_0_5 \/ AreaGeodetic($feature, <span style=\"color: #d14;\">\"square-miles\"<\/span>)\r\n<\/code><\/pre>\n<p>Arcade gives you the flexibility to explore various ways to represent your data without having to modify the underlying table.<\/p>\n<h4><strong>Classify data into user-friendly categories<\/strong><\/h4>\n<p>Another common use of Arcade is to classify data into user-friendly categories such as no risk, low risk, moderate risk, or high risk. Oftentimes a number isn&#8217;t relatable. Classifying numeric data with a relatable term may be all policy makers need to inform decision making.<\/p>\n<pre><code style=\"padding: 0.5em; color: #333; background: #f8f8f8;\">When(\r\n  $feature.TEMP &gt; <span style=\"color: #008080;\">110<\/span>, <span style=\"color: #d14;\">\"Extreme heat\"<\/span>,\r\n  $feature.TEMP &gt; <span style=\"color: #008080;\">95<\/span>, <span style=\"color: #d14;\">\"Abnormally hot\"<\/span>,\r\n  $feature.TEMP &gt; <span style=\"color: #008080;\">30<\/span>, <span style=\"color: #d14;\">\"Normal range\"<\/span>,\r\n  $feature.TEMP &gt; <span style=\"color: #008080;\">0<\/span>, <span style=\"color: #d14;\">\"Abnormally cold\"<\/span>,\r\n  <span style=\"color: #d14;\">\"Extreme cold\"<\/span>\r\n)\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"image","image":{"ID":1686472,"id":1686472,"title":"Screen Shot 2022-08-15 at 11.50.06 AM","filename":"Screen-Shot-2022-08-15-at-11.50.06-AM.png","filesize":60309,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-15-at-11.50.06-AM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade\/screen-shot-2022-08-15-at-11-50-06-am","alt":"Temperature data classified into categories with Arcade.","author":"6561","description":"","caption":"Temperature data classified into categories with Arcade.","name":"screen-shot-2022-08-15-at-11-50-06-am","status":"inherit","uploaded_to":1683632,"date":"2022-08-15 18:52:35","modified":"2022-08-15 18:53:27","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":696,"height":299,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-15-at-11.50.06-AM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-15-at-11.50.06-AM.png","medium-width":464,"medium-height":199,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-15-at-11.50.06-AM.png","medium_large-width":696,"medium_large-height":299,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-15-at-11.50.06-AM.png","large-width":696,"large-height":299,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-15-at-11.50.06-AM.png","1536x1536-width":696,"1536x1536-height":299,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-15-at-11.50.06-AM.png","2048x2048-width":696,"2048x2048-height":299,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-15-at-11.50.06-AM.png","card_image-width":696,"card_image-height":299,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-15-at-11.50.06-AM.png","wide_image-width":696,"wide_image-height":299}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h4><strong>Track work order progress<\/strong><\/h4>\n<p>I recently spoke with a customer working for a power company that uses web maps to track their work orders for clearing vegetation encroaching on distribution lines. They had fields describing the state of an incident:<\/p>\n<ul>\n<li><em>VegScore<\/em> &#8211; A category indicating the severity of the encroachment.<\/li>\n<li><em>WorkOrder<\/em> &#8211; When there is significant encroachment, a work order is assigned for someone to clear the vegetation.<\/li>\n<li><em>Assignee<\/em> &#8211; The name of the field worker assigned to do the work.<\/li>\n<li><em>Completed<\/em> &#8211; A field indicating if the work was complete.<\/li>\n<li><em>Audit<\/em> &#8211; When the work is completed, someone will inspect the work and indicate if it has been done properly.<\/li>\n<\/ul>\n<p>This customer wanted to easily visualize the stage of each work order without having to set up a new field. The following expression demonstrates how they can do this in Arcade.<\/p>\n<pre><code style=\"padding: 0.5em; color: #333; background: #f8f8f8;\">When(\r\n  $feature.Audit == <span style=\"color: #d14;\">\"Accepted\"<\/span>, <span style=\"color: #d14;\">\"Audit Accepted\"<\/span>,\r\n  $feature.Audit == <span style=\"color: #d14;\">\"Rejected\"<\/span>, <span style=\"color: #d14;\">\"Audit Rejected\"<\/span>,\r\n  $feature.Completed == <span style=\"color: #d14;\">\"Yes\"<\/span>, <span style=\"color: #d14;\">\"Work complete\"<\/span>,\r\n  !Empty($feature.Assignee), <span style=\"color: #d14;\">\"Work order Assigned\"<\/span>,\r\n  !Empty($feature.WorkOrder), <span style=\"color: #d14;\">\"Work order created\"<\/span>,\r\n  $feature.VegScore\r\n);\r\n<\/code><\/pre>\n<p>Arcade is the perfect solution for this scenario. Rather than creating new fields with computed values, Arcade allows us to dynamically derive values on each map refresh.<\/p>\n<h4><strong>Calculate an index<\/strong><\/h4>\n<p>Sometimes you may need to make sense of multiple data values that are related to one another. With Arcade, <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-living-atlas\/local-government\/index-maps-inform-help-inform-strategies\/\">you can create an index and map it<\/a> to help you identify geographic areas of concern or abnormality.<\/p>\n<p>The following expression demonstrates how you can <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-online\/mapping\/create-a-diversity-index-with-arcade\/\">use Arcade to calculate Simpson&#8217;s Diversity Index<\/a>.<\/p>\n<pre><code style=\"padding: 0.5em; color: #333; background: #f8f8f8;\"><span style=\"color: #333; font-weight: bold;\">function<\/span> <span style=\"color: #900; font-weight: bold;\">simpsonsDiversityIndex<\/span>(vals){\r\n  <span style=\"color: #333; font-weight: bold;\">var<\/span> k = <span style=\"color: #0086b3;\">Array<\/span>(Count(vals));\r\n  <span style=\"color: #333; font-weight: bold;\">var<\/span> t = sum(vals);\r\n  <span style=\"color: #333; font-weight: bold;\">for<\/span>(<span style=\"color: #333; font-weight: bold;\">var<\/span> i <span style=\"color: #333; font-weight: bold;\">in<\/span> vals){\r\n    <span style=\"color: #333; font-weight: bold;\">var<\/span> n = vals[i];\r\n    k[i] = n * (n-<span style=\"color: #008080;\">1<\/span>);\r\n  }\r\n  <span style=\"color: #333; font-weight: bold;\">var<\/span> s = Sum(k);\r\n  <span style=\"color: #333; font-weight: bold;\">var<\/span> di = <span style=\"color: #008080;\">1<\/span> - ( s  \/ ( t * (t-<span style=\"color: #008080;\">1<\/span>) ) );\r\n  <span style=\"color: #333; font-weight: bold;\">return<\/span> Round(di*<span style=\"color: #008080;\">100<\/span>);\r\n}\r\n\r\n<span style=\"color: #333; font-weight: bold;\">var<\/span> categories = [\r\n  $feature.categoryA,\r\n  $feature.categoryB,\r\n  $feature.categoryC,\r\n]\r\nsimpsonsDiversityIndex(categories);\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"image","image":{"ID":1559892,"id":1559892,"title":"Screen Shot 2022-04-21 at 9.14.14 AM","filename":"Screen-Shot-2022-04-21-at-9.14.14-AM.png","filesize":460103,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/04\/Screen-Shot-2022-04-21-at-9.14.14-AM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-online\/mapping\/create-a-diversity-index-with-arcade\/screen-shot-2022-04-21-at-9-14-14-am","alt":"Language diversity in southern California. Higher numbers indicate a higher probability that two people selected at random in the area will speak languages from different categories.","author":"6561","description":"","caption":"Language diversity in southern California. Higher numbers indicate a higher probability that two people selected at random in an area will speak languages from different categories.","name":"screen-shot-2022-04-21-at-9-14-14-am","status":"inherit","uploaded_to":1546922,"date":"2022-04-21 16:20:44","modified":"2022-08-15 16:22:20","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1298,"height":778,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/04\/Screen-Shot-2022-04-21-at-9.14.14-AM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/04\/Screen-Shot-2022-04-21-at-9.14.14-AM.png","medium-width":435,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/04\/Screen-Shot-2022-04-21-at-9.14.14-AM.png","medium_large-width":768,"medium_large-height":460,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/04\/Screen-Shot-2022-04-21-at-9.14.14-AM.png","large-width":1298,"large-height":778,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/04\/Screen-Shot-2022-04-21-at-9.14.14-AM.png","1536x1536-width":1298,"1536x1536-height":778,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/04\/Screen-Shot-2022-04-21-at-9.14.14-AM.png","2048x2048-width":1298,"2048x2048-height":778,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/04\/Screen-Shot-2022-04-21-at-9.14.14-AM-776x465.png","card_image-width":776,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/04\/Screen-Shot-2022-04-21-at-9.14.14-AM.png","wide_image-width":1298,"wide_image-height":778}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-online\/mapping\/create-a-diversity-index-with-arcade\/"},{"acf_fc_layout":"content","content":"<h3>Is Arcade really needed for simple calculations?<\/h3>\n<p>You may reasonably ask, &#8220;Hold on, why do I need Arcade to calculate a new value? Can\u2019t I just create a new field in my table or service and calculate it with SQL?&#8221;<\/p>\n<p>That question assumes you either own the underlying data, or you have editing access to the table. Because Arcade is a client-side solution, you don\u2019t actually edit the underlying data. It allows you to calculate data values and save them to your app without touching the service.<\/p>\n<p>Here are a few reasons why Arcade may be preferable even for simple calculations:<\/p>\n<ul>\n<li><strong>When you don\u2019t own the data<\/strong>, but need to calculate values or classify the data in your own way.<\/li>\n<li><strong>The underlying data updates so frequently<\/strong> it doesn\u2019t make sense to run a task to recalculate the derived values you need every five minutes, one hour, each day, etc. This is the case for the vegetation management work on the distribution lines.<\/li>\n<li><strong>The formula for classifying the data is fluid or under development.<\/strong> Have you ever created a new field and had to recalculate it multiple times (or even create additional fields) before getting what you were looking for? It\u2019s a messy workflow and can feel like a drag if the table calculations take a while. <em>Calculating values on the client protects the back end from unnecessary clutter.<\/em><\/li>\n<li><strong>Arcade provides a full suite of geometry functions<\/strong> not available in other languages, like SQL. That means you can use Arcade to calculate measurements like area in renderers and popups without needing to run a task or geoprocessing tool.<\/li>\n<\/ul>\n<p><a name=\"scenario2\"><\/a><\/p>\n<h2>Scenario 2: Create custom popup content<\/h2>\n<p>Arcade gives you capabilities beyond simple calculations. It allows you to declare variables, iterate through items in a list, write conditional statements with logical operators, and define custom functions. The following examples demonstrate how you can use Arcade to create dynamic popup content.<\/p>\n<h4><strong>Conditional popup content<\/strong><\/h4>\n<p>Sometimes you need different content elements to display in a layer&#8217;s popup depending on the underlying data. For example, the user may to see a list of features included in a cluster inside its popup. However, scrolling through a long list would be undesirable in very large clusters. With Arcade, you can set a condition so the popup of small clusters ( 20 features) would display categories summarizing the data in a table or charts. Arcade can define all that behavior with one expression in one popup template.<\/p>\n<p>If this interests you, I encourage you to check out <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-online\/mapping\/summarize-and-explore-point-clusters-with-arcade-in-popups\/\">this post<\/a> that describes how you can use Arcade to create popup content for clusters <em>conditional<\/em> on the number of features in the cluster.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1442872,"id":1442872,"title":"9-conditional-plants-list","filename":"9-conditional-plants-list.png","filesize":105136,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-plants-list.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-online\/mapping\/summarize-and-explore-point-clusters-with-arcade-in-popups\/9-conditional-plants-list","alt":"When fewer than 20 features exist in a cluster, then the popup will list the power plants included in the cluster along with the type of fuel for generating power and its total capacity.","author":"6561","description":"","caption":"When fewer than 20 features exist in a cluster, then the popup will list the power plants included in the cluster along with the type of fuel for generating power and its total capacity. Click the image to open the web map with this cluster popup configuration.","name":"9-conditional-plants-list","status":"inherit","uploaded_to":1442612,"date":"2021-12-17 23:28:09","modified":"2021-12-21 22:54:43","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":850,"height":449,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-plants-list-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-plants-list.png","medium-width":464,"medium-height":245,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-plants-list.png","medium_large-width":768,"medium_large-height":406,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-plants-list.png","large-width":850,"large-height":449,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-plants-list.png","1536x1536-width":850,"1536x1536-height":449,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-plants-list.png","2048x2048-width":850,"2048x2048-height":449,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-plants-list-826x436.png","card_image-width":826,"card_image-height":436,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-plants-list.png","wide_image-width":850,"wide_image-height":449}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/jsapi.maps.arcgis.com\/apps\/mapviewer\/index.html?webmap=00a37da3aa7441eeaa2600500e6fdb62"},{"acf_fc_layout":"image","image":{"ID":1442882,"id":1442882,"title":"9-conditional-types-list","filename":"9-conditional-types-list.png","filesize":90608,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-types-list.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-online\/mapping\/summarize-and-explore-point-clusters-with-arcade-in-popups\/9-conditional-types-list","alt":"When more than 20 features exist in a cluster, the popup will list the various fuel types for generating power within the cluster along with the number of power plants using each fuel type.","author":"6561","description":"","caption":"When more than 20 features exist in a cluster, the popup will list the various fuel types for generating power within the cluster along with the number of power plants using each fuel type. Click the image to open the web map with this cluster popup configuration.","name":"9-conditional-types-list","status":"inherit","uploaded_to":1442612,"date":"2021-12-17 23:28:11","modified":"2021-12-21 22:54:48","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":850,"height":450,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-types-list-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-types-list.png","medium-width":464,"medium-height":246,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-types-list.png","medium_large-width":768,"medium_large-height":407,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-types-list.png","large-width":850,"large-height":450,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-types-list.png","1536x1536-width":850,"1536x1536-height":450,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-types-list.png","2048x2048-width":850,"2048x2048-height":450,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-types-list-826x437.png","card_image-width":826,"card_image-height":437,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/12\/9-conditional-types-list.png","wide_image-width":850,"wide_image-height":450}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/jsapi.maps.arcgis.com\/apps\/mapviewer\/index.html?webmap=00a37da3aa7441eeaa2600500e6fdb62"},{"acf_fc_layout":"content","content":"<h4><strong>Popups enriched with Living Atlas data<\/strong><\/h4>\n<p>Arcade also provides functions for accessing data in other hosted feature services. That means you can query data from a layer in the Living Atlas, and <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-living-atlas\/decision-support\/enhance-your-pop-ups-using-arcade-living-atlas\/\">summarize that information based on the selected geography in your map<\/a>.<\/p>\n<pre><code style=\"padding: 0.5em; color: #333; background: #f8f8f8;\"><span style=\"color: #333; font-weight: bold;\">var<\/span> censusLayer = FeatureSetByPortalItem(\r\n  Portal(<span style=\"color: #d14;\">'https:\/\/www.arcgis.com\/'<\/span>), <span style=\"color: #d14;\">\"8dcf5d4e124f480fa8c529fbe25ba04e\"<\/span>, <span style=\"color: #008080;\">0<\/span>)\r\n<span style=\"color: #333; font-weight: bold;\">var<\/span> tract = First(Intersects($feature, censusLayer));\r\n\r\n<span style=\"color: #333; font-weight: bold;\">return<\/span> tract.Average_Household_Income;\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"image","image":{"ID":1621002,"id":1621002,"title":"Awesome sauce popup","filename":"Awesome-sauce-popup.png","filesize":98721,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/06\/Awesome-sauce-popup.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-living-atlas\/decision-support\/enhance-your-pop-ups-using-arcade-living-atlas\/awesome-sauce-popup","alt":"Popup enhanced with Living Atlas data.","author":"6461","description":"","caption":"","name":"awesome-sauce-popup","status":"inherit","uploaded_to":1620762,"date":"2022-06-21 17:59:05","modified":"2022-08-12 00:16:48","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":781,"height":723,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/06\/Awesome-sauce-popup-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/06\/Awesome-sauce-popup.png","medium-width":282,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/06\/Awesome-sauce-popup.png","medium_large-width":768,"medium_large-height":711,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/06\/Awesome-sauce-popup.png","large-width":781,"large-height":723,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/06\/Awesome-sauce-popup.png","1536x1536-width":781,"1536x1536-height":723,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/06\/Awesome-sauce-popup.png","2048x2048-width":781,"2048x2048-height":723,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/06\/Awesome-sauce-popup-502x465.png","card_image-width":502,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/06\/Awesome-sauce-popup.png","wide_image-width":781,"wide_image-height":723}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-living-atlas\/decision-support\/enhance-your-pop-ups-using-arcade-living-atlas\/"},{"acf_fc_layout":"content","content":"<p><a name=\"scenario3\"><\/a><\/p>\n<h2>Scenario 3: Customize app layout and behavior<\/h2>\n<p>Because of all the capabilities listed above, Arcade also allows you to customize configurable apps beyond the options provided in the configuration UI. Perhaps the best example of this is with <a href=\"https:\/\/www.esri.com\/en-us\/arcgis\/products\/arcgis-dashboards\/overview\">ArcGIS Dashboards<\/a> and form templates in editing workflows.<\/p>\n<h4><strong>Dashboards<\/strong><\/h4>\n<p>In Dashboards, Arcade can be used to customize the way indicator, list, and table elements render data points. You can also build robust visualizations based on new data sources queried and built completely in Arcade.<\/p>\n<p>The following image shows how Arcade can be used in a snowplow tracking dashboard to highlight list elements representing stopped trucks.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":797661,"id":797661,"title":"Arcade in List 5 - Highlight Stopped Vehicles","filename":"Arcade-in-List-5-Highlight-Stopped-Vehicles.png","filesize":58934,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/04\/Arcade-in-List-5-Highlight-Stopped-Vehicles.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/ops-dashboard\/real-time\/getting-started-with-arcade-in-arcgis-dashboards\/arcade-in-list-5-highlight-stopped-vehicles","alt":"Highlight Stopped Vehicles","author":"8482","description":"","caption":"","name":"arcade-in-list-5-highlight-stopped-vehicles","status":"inherit","uploaded_to":797531,"date":"2020-04-04 08:42:26","modified":"2020-04-04 08:42:36","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1200,"height":750,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/04\/Arcade-in-List-5-Highlight-Stopped-Vehicles-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/04\/Arcade-in-List-5-Highlight-Stopped-Vehicles.png","medium-width":418,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/04\/Arcade-in-List-5-Highlight-Stopped-Vehicles.png","medium_large-width":768,"medium_large-height":480,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/04\/Arcade-in-List-5-Highlight-Stopped-Vehicles.png","large-width":1200,"large-height":750,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/04\/Arcade-in-List-5-Highlight-Stopped-Vehicles.png","1536x1536-width":1200,"1536x1536-height":750,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/04\/Arcade-in-List-5-Highlight-Stopped-Vehicles.png","2048x2048-width":1200,"2048x2048-height":750,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/04\/Arcade-in-List-5-Highlight-Stopped-Vehicles-744x465.png","card_image-width":744,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/04\/Arcade-in-List-5-Highlight-Stopped-Vehicles.png","wide_image-width":1200,"wide_image-height":750}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/www.esri.com\/arcgis-blog\/products\/ops-dashboard\/real-time\/getting-started-with-arcade-in-arcgis-dashboards\/"},{"acf_fc_layout":"content","content":"<p>Check out these articles that outline how to use Arcade in various workflows within ArcGIS Dashboards.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/ops-dashboard\/real-time\/getting-started-with-arcade-in-arcgis-dashboards\/\">Getting started with advanced formatting using Arcade in Dashboards<\/a><\/li>\n<li><a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/ops-dashboard\/real-time\/pushing-the-limits-of-arcade-in-dashboards\/\">Pushing the limits of Arcade in dashboards<\/a><\/li>\n<\/ul>\n<p>This video also demonstrates more examples of how you can use Arcade to customize visualizations in dashboards.<\/p>\n"},{"acf_fc_layout":"kaltura","video_id":"1_j80nnvo7","time":false,"start":"240","stop":""},{"acf_fc_layout":"content","content":"<h4><strong>Editing data with forms<\/strong><\/h4>\n<p>Arcade allows you to <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/editing-featureform-fieldvisibility\/\">customize the behavior of field inputs<\/a> in forms for editing workflows. For example, instead of displaying all fields in various form elements, you can control field visibility (and the visibility of groups of fields) based on the values of other fields.<\/p>\n<p>You can also write expressions to automatically calculate field values based on the values of other fields as the user edits the data. Check out the 4-minute mark of this video to see a demonstration of this capability.<\/p>\n"},{"acf_fc_layout":"kaltura","video_id":"1_gv2m3hhm","time":true,"start":"240","stop":""},{"acf_fc_layout":"content","content":"<p><a name=\"why\"><\/a><\/p>\n<h2>Why developers should care about Arcade<\/h2>\n<p>Now you may have read everything to this point and thought, \u201cDo I <em>really<\/em> need Arcade to help me in any of these scenarios?\u201d<\/p>\n<p><strong>Scenario 1.<\/strong> Calculate new values. <em>Can\u2019t every programming language already do that?<\/em><br \/>\n<strong>Scenario 2.<\/strong> Create custom popup content. <em>Been there. <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/popup-customcontent\/\">Done that<\/a>.<\/em><br \/>\n<strong>Scenario 3.<\/strong> Customize app layout and behavior. <em>I already do this all the time. I\u2019m an app developer, remember?<\/em><\/p>\n<p>If you are developing only one app, then yes, you have a point. You can leverage a variety of programming languages in a number of ArcGIS developer products to create custom content for desktop, mobile, or web apps. However, there are two things Arcade does for you that will make your life easier as an app developer.<\/p>\n<ol>\n<li><strong>Arcade gives users the power<\/strong> to define conditional content without the need for a developer.<\/li>\n<li><strong>Arcade is portable.<\/strong> The same expression can be saved, shared, and understood by many apps on a variety of platforms.<\/li>\n<\/ol>\n<p>We&#8217;ve already covered how Arcade can help non-developers use Arcade to customize apps beyond configuration UIs. The ability to save and share expressions deserves a closer look.<\/p>\n<p><a name=\"portability\"><\/a><\/p>\n<h3>Portability<\/h3>\n<p><strong>Arcade is powerful because of its portability<\/strong> with other apps and maps throughout the ArcGIS system. Can you customize an app built with an ArcGIS API or SDK to fit your organization\u2019s needs? Absolutely. However, those customizations live only in the context of <em>one<\/em> application.<\/p>\n<p>What if you wanted to create dynamic popup content that desktop GIS users consumed at their workstations, and the same content could be consistently rendered on a mobile app by field workers, and by policy makers in a web app? With Arcade, you can define that dynamic content <strong>with one consistent language<\/strong> and share it for consumption in apps throughout your organization&#8217;s system.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1683932,"id":1683932,"title":"Screen Shot 2022-08-11 at 5.35.49 PM","filename":"Screen-Shot-2022-08-11-at-5.35.49-PM.png","filesize":157795,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.35.49-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade\/screen-shot-2022-08-11-at-5-35-49-pm","alt":"Esri implemented the Arcade engine in JavaScript, C++, and Java. No matter where you author an expression, the result can be saved and consistently interpreted in any ArcGIS app you deploy to your users.","author":"6561","description":"","caption":"Esri implemented the Arcade engine in JavaScript, C++, and Java. No matter where you author an expression, the result can be saved and consistently interpreted in any ArcGIS app you deploy to your users. That way, you don't have to write equivalent code in different languages for multiple apps. Arcade handles it in one place.","name":"screen-shot-2022-08-11-at-5-35-49-pm","status":"inherit","uploaded_to":1683632,"date":"2022-08-12 00:48:41","modified":"2022-08-12 19:02:25","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1645,"height":877,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.35.49-PM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.35.49-PM.png","medium-width":464,"medium-height":247,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.35.49-PM.png","medium_large-width":768,"medium_large-height":409,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.35.49-PM.png","large-width":1645,"large-height":877,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.35.49-PM-1536x819.png","1536x1536-width":1536,"1536x1536-height":819,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.35.49-PM.png","2048x2048-width":1645,"2048x2048-height":877,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.35.49-PM-826x440.png","card_image-width":826,"card_image-height":440,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/Screen-Shot-2022-08-11-at-5.35.49-PM.png","wide_image-width":1645,"wide_image-height":877}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>In the following presentation, I demonstrate Arcade&#8217;s portability using an expression I wrote that calculates <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-online\/mapping\/create-a-diversity-index-with-arcade\/\">diversity index for language groups in the United States<\/a>. The values of the layer\u2019s renderer and the popup content are all dynamically created using Arcade.<\/p>\n"},{"acf_fc_layout":"kaltura","video_id":"1_btkg8yyy","time":false,"start":0,"stop":""},{"acf_fc_layout":"content","content":"<p>Without Arcade, I would need to customize each mobile and web app in an attempt to make them behave and look the same. ?<\/p>\n<p>Thanks to Arcade, I can author expressions with one consistent syntax, save them to a web map, and load that map into almost any ArcGIS application (web, mobile, or desktop) and the content will persist, providing a consistent experience for all my end users.<\/p>\n<h2>Conclusion<\/h2>\n<p>You&#8217;re a developer. Do you really need Arcade?<\/p>\n<p>Given your use case, you may not need Arcade at all. However, there are many cases where it can make your app development much easier, especially if you deploy many apps to your organization. I believe it&#8217;s definitely worth your while to experiment and give Arcade a try.<\/p>\n"}],"authors":[{"ID":6561,"user_firstname":"Kristian","user_lastname":"Ekenes","nickname":"Kristian Ekenes","user_nicename":"kekenes","display_name":"Kristian Ekenes","user_email":"KEkenes@esri.com","user_url":"https:\/\/github.com\/ekenes","user_registered":"2018-03-02 00:18:32","user_description":"Kristian Ekenes is a Principal Product Engineer at Esri specializing in data visualization on the web. He works on the ArcGIS Maps SDK for JavaScript, ArcGIS Arcade, and Map Viewer in ArcGIS Online. Kristian's work focuses on researching and developing new and innovative data visualization capabilities of geospatial data in web maps, Arcade integration in web maps, and applications of generative AI assistants in web maps. Prior to joining Esri, he worked as a GIS Specialist for an environmental consulting company. Kristian has degrees from Brigham Young University and Arizona State University.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"related_articles":[{"ID":878991,"post_author":"6461","post_date":"2020-06-10 11:11:30","post_date_gmt":"2020-06-10 18:11:30","post_content":"","post_title":"Your Arcade Questions Answered","post_excerpt":"","post_status":"publish","comment_status":"open","ping_status":"closed","post_password":"","post_name":"your-arcade-questions-answered","to_ping":"","pinged":"","post_modified":"2024-11-01 00:17:42","post_modified_gmt":"2024-11-01 07:17:42","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=878991","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"2","filter":"raw"},{"ID":1546922,"post_author":"6561","post_date":"2022-04-21 10:06:41","post_date_gmt":"2022-04-21 17:06:41","post_content":"","post_title":"Create a diversity map with Arcade","post_excerpt":"","post_status":"publish","comment_status":"open","ping_status":"closed","post_password":"","post_name":"create-a-diversity-index-with-arcade","to_ping":"","pinged":"","post_modified":"2024-11-01 00:00:13","post_modified_gmt":"2024-11-01 07:00:13","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=1546922","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":1442612,"post_author":"6561","post_date":"2022-01-10 09:00:28","post_date_gmt":"2022-01-10 17:00:28","post_content":"","post_title":"Summarize and explore point clusters with Arcade in popups","post_excerpt":"","post_status":"publish","comment_status":"open","ping_status":"closed","post_password":"","post_name":"summarize-and-explore-point-clusters-with-arcade-in-popups","to_ping":"","pinged":"","post_modified":"2024-11-01 00:01:02","post_modified_gmt":"2024-11-01 07:01:02","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=1442612","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"4","filter":"raw"}],"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2022\/08\/card-arcade-2.jpg","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/06\/Banner-4.jpg"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>I\u2019m a developer. Do I really need Arcade?<\/title>\n<meta name=\"description\" content=\"Learn why Arcade matters and how its implementation gives developers the power to make portable customizations in a variety of apps.\" \/>\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.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"I\u2019m a developer. Do I really need Arcade?\" \/>\n<meta property=\"og:description\" content=\"Learn why Arcade matters and how its implementation gives developers the power to make portable customizations in a variety of apps.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T06:59:49+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade\"},\"author\":{\"name\":\"Kristian Ekenes\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b\"},\"headline\":\"I\u2019m a developer. Do I really need Arcade?\",\"datePublished\":\"2022-08-16T16:00:52+00:00\",\"dateModified\":\"2024-11-01T06:59:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade\"},\"wordCount\":9,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"App Development\",\"arcade\"],\"articleSection\":[\"Arcade\",\"Developers\",\"Mapping\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade\",\"name\":\"I\u2019m a developer. Do I really need Arcade?\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2022-08-16T16:00:52+00:00\",\"dateModified\":\"2024-11-01T06:59:49+00:00\",\"description\":\"Learn why Arcade matters and how its implementation gives developers the power to make portable customizations in a variety of apps.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"I\u2019m a developer. Do I really need Arcade?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b\",\"name\":\"Kristian Ekenes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png\",\"caption\":\"Kristian Ekenes\"},\"description\":\"Kristian Ekenes is a Principal Product Engineer at Esri specializing in data visualization on the web. He works on the ArcGIS Maps SDK for JavaScript, ArcGIS Arcade, and Map Viewer in ArcGIS Online. Kristian's work focuses on researching and developing new and innovative data visualization capabilities of geospatial data in web maps, Arcade integration in web maps, and applications of generative AI assistants in web maps. Prior to joining Esri, he worked as a GIS Specialist for an environmental consulting company. Kristian has degrees from Brigham Young University and Arizona State University.\",\"sameAs\":[\"https:\/\/github.com\/ekenes\",\"https:\/\/www.linkedin.com\/in\/kristian-ekenes\/\",\"https:\/\/x.com\/kekenes\"],\"gender\":\"male\",\"jobTitle\":\"Principal Product Engineer\",\"worksFor\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/kekenes\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"I\u2019m a developer. Do I really need Arcade?","description":"Learn why Arcade matters and how its implementation gives developers the power to make portable customizations in a variety of apps.","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.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade","og_locale":"en_US","og_type":"article","og_title":"I\u2019m a developer. Do I really need Arcade?","og_description":"Learn why Arcade matters and how its implementation gives developers the power to make portable customizations in a variety of apps.","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2024-11-01T06:59:49+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade"},"author":{"name":"Kristian Ekenes","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b"},"headline":"I\u2019m a developer. Do I really need Arcade?","datePublished":"2022-08-16T16:00:52+00:00","dateModified":"2024-11-01T06:59:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade"},"wordCount":9,"commentCount":0,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["App Development","arcade"],"articleSection":["Arcade","Developers","Mapping"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade","name":"I\u2019m a developer. Do I really need Arcade?","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2022-08-16T16:00:52+00:00","dateModified":"2024-11-01T06:59:49+00:00","description":"Learn why Arcade matters and how its implementation gives developers the power to make portable customizations in a variety of apps.","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/developers\/im-a-developer-do-i-really-need-arcade#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"I\u2019m a developer. Do I really need Arcade?"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b","name":"Kristian Ekenes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png","caption":"Kristian Ekenes"},"description":"Kristian Ekenes is a Principal Product Engineer at Esri specializing in data visualization on the web. He works on the ArcGIS Maps SDK for JavaScript, ArcGIS Arcade, and Map Viewer in ArcGIS Online. Kristian's work focuses on researching and developing new and innovative data visualization capabilities of geospatial data in web maps, Arcade integration in web maps, and applications of generative AI assistants in web maps. Prior to joining Esri, he worked as a GIS Specialist for an environmental consulting company. Kristian has degrees from Brigham Young University and Arizona State University.","sameAs":["https:\/\/github.com\/ekenes","https:\/\/www.linkedin.com\/in\/kristian-ekenes\/","https:\/\/x.com\/kekenes"],"gender":"male","jobTitle":"Principal Product Engineer","worksFor":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/author\/kekenes"}]}},"text_date":"August 16, 2022","author_name":"Kristian Ekenes","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/kekenes","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/06\/Banner-4.jpg","primary_product":"ArcGIS Maps SDK for JavaScript","tag_data":[{"term_id":758502,"name":"App Development","slug":"app-development","term_group":0,"term_taxonomy_id":758502,"taxonomy":"post_tag","description":"","parent":0,"count":7,"filter":"raw"},{"term_id":32551,"name":"arcade","slug":"arcade","term_group":0,"term_taxonomy_id":32551,"taxonomy":"post_tag","description":"","parent":0,"count":113,"filter":"raw"}],"category_data":[{"term_id":777102,"name":"Arcade","slug":"arcade","term_group":0,"term_taxonomy_id":777102,"taxonomy":"category","description":"","parent":0,"count":98,"filter":"raw"},{"term_id":738191,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":738191,"taxonomy":"category","description":"","parent":0,"count":423,"filter":"raw"},{"term_id":22941,"name":"Mapping","slug":"mapping","term_group":0,"term_taxonomy_id":22941,"taxonomy":"category","description":"","parent":0,"count":2692,"filter":"raw"}],"product_data":[{"term_id":36591,"name":"Apps","slug":"apps","term_group":0,"term_taxonomy_id":36591,"taxonomy":"product","description":"","parent":0,"count":649,"filter":"raw"},{"term_id":761642,"name":"ArcGIS Location Platform","slug":"platform","term_group":0,"term_taxonomy_id":761642,"taxonomy":"product","description":"","parent":36601,"count":214,"filter":"raw"},{"term_id":36831,"name":"ArcGIS Maps SDK for JavaScript","slug":"js-api-arcgis","term_group":0,"term_taxonomy_id":36831,"taxonomy":"product","description":"","parent":36601,"count":363,"filter":"raw"},{"term_id":36551,"name":"ArcGIS Online","slug":"arcgis-online","term_group":0,"term_taxonomy_id":36551,"taxonomy":"product","description":"","parent":0,"count":2428,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":763,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=js-api-arcgis","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/1683632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/6561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=1683632"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/1683632\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=1683632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=1683632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=1683632"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=1683632"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=1683632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}