{"id":614592,"date":"2019-10-10T10:31:14","date_gmt":"2019-10-10T17:31:14","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=614592"},"modified":"2019-10-10T10:31:14","modified_gmt":"2019-10-10T17:31:14","slug":"whats-new-in-arcgis-api-for-javascript-october-2019","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019","title":{"rendered":"What&#8217;s New in ArcGIS API for JavaScript (October 2019)"},"author":7451,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[37101],"tags":[473672,473662,96582,27491,468882],"industry":[],"product":[36831,36601],"class_list":["post-614592","blog","type-blog","status-publish","format-standard","hentry","category-announcements","tag-3-30","tag-4-13","tag-arcgis-api-for-javascript","tag-jsapi4","tag-whats-new-october-2019","product-js-api-arcgis","product-developers"],"acf":{"short_description":"The October update to the ArcGIS API for JavaScript (versions 4.13 and 3.30) brings a lot to the table. Read this blog to find out more.","flexible_content":[{"acf_fc_layout":"content","content":"<p>Welcome to the October update of the ArcGIS API for JavaScript (versions 4.13 and 3.30). Version 4.13 introduces new exciting functionality, and improves upon the behavior and performance of existing functionality. This blog discusses some of the highlights of this release. Check out the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/release-notes\/\" target=\"_blank\" rel=\"noopener\">Release notes for 4.13<\/a> for a complete list of updates.<\/p>\n"},{"acf_fc_layout":"content","content":"<p><strong>Performance Improvements<\/strong><\/p>\n<p>With each release we continue to make performance improvements. The VectorTileLayer was enhanced with progressive drawing and better tile caching. In 3D SceneViews, the improved VectorTileLayer rendering allows for smoother navigation in scenes with vector basemaps.<\/p>\n<p>For FeatureLayers, we increased the stability of z-order, and improved the performance of rendering large polyline and polygon features. Our optimized loading strategy makes 3D SceneLayer now load twice as fast.<\/p>\n<p><strong>Improved 3D Rendering<\/strong><\/p>\n<p>A new lighting and shading model improves the sense of depth, contrast, and definition of 3D content like buildings, trees, and symbols. Also, when looking closely at available 3D models, you\u2019ll notice material properties like the metallic shine on vehicles and infrastructure.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":632352,"id":632352,"title":"Improved 3D Rendering","filename":"improved-rendering.gif","filesize":168389,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/improved-rendering.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019\/improved-rendering","alt":"Improved 3D Rendering","author":"7451","description":"Improved 3D Rendering","caption":"Improved 3D Rendering","name":"improved-rendering","status":"inherit","uploaded_to":614592,"date":"2019-10-10 14:51:15","modified":"2019-10-10 14:51:28","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1000,"height":562,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/improved-rendering-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/improved-rendering.gif","medium-width":464,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/improved-rendering.gif","medium_large-width":768,"medium_large-height":432,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/improved-rendering.gif","large-width":1000,"large-height":562,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/improved-rendering.gif","1536x1536-width":1000,"1536x1536-height":562,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/improved-rendering.gif","2048x2048-width":1000,"2048x2048-height":562,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/improved-rendering-826x465.gif","card_image-width":826,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/improved-rendering.gif","wide_image-width":1000,"wide_image-height":562}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/release-notes\/#improved-rendering-in-3d-scenes"},{"acf_fc_layout":"content","content":"<p>Draped Vector and Raster data, including basemaps, elevation, and imagery now load and display a more homogeneous scale level. Layers showing content with different level of detail (LOD) can be challenging to display with tilted views of the Scene. Now, rather than loading and displaying many scale levels, the API loads and displays the same LOD in large parts of the view.<\/p>\n<p><strong>Swiper, no swiping?<\/strong><\/p>\n<p>Do you need to compare imagery? For example, comparing features before and after a natural disaster, or examining urban development over time. If yes, then the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-widgets-Swipe.html\" target=\"_blank\" rel=\"noopener\">Swipe widget<\/a> provides a simple tool to show a portion of a layer or layers on top of a 2D map. Layers can be swiped vertically or horizontally to easily compare two layers, or see what is underneath a layer. Bonus: you can even <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/widgets-swipe-scroll\/index.html\" target=\"_blank\" rel=\"noopener\">use multiple Swipe widgets<\/a> to create a seemingly infinite scroll between different layers. Click the GIF below to see a live sample.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":630732,"id":630732,"title":"Swipe widget","filename":"widgets-swipe2.gif","filesize":1067949,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/widgets-swipe2.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019\/widgets-swipe2","alt":"Swipe widget","author":"7451","description":"Swipe widget","caption":"Swipe widget sample","name":"widgets-swipe2","status":"inherit","uploaded_to":614592,"date":"2019-10-08 22:12:52","modified":"2019-10-08 22:15:58","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":993,"height":526,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/widgets-swipe2-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/widgets-swipe2.gif","medium-width":464,"medium-height":246,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/widgets-swipe2.gif","medium_large-width":768,"medium_large-height":407,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/widgets-swipe2.gif","large-width":993,"large-height":526,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/widgets-swipe2.gif","1536x1536-width":993,"1536x1536-height":526,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/widgets-swipe2.gif","2048x2048-width":993,"2048x2048-height":526,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/widgets-swipe2-826x438.gif","card_image-width":826,"card_image-height":438,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/widgets-swipe2.gif","wide_image-width":993,"wide_image-height":526}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/widgets-swipe\/index.html"},{"acf_fc_layout":"content","content":"<p><strong>Attribute driven composite symbols<\/strong><\/p>\n<p>The <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-DictionaryRenderer.html\" target=\"_blank\" rel=\"noopener\">Dictionary Renderer<\/a> builds each symbol on-the-fly based on one or several attribute values, and also handles a nearly infinite number of unique combinations. Now you can symbolize layers using a dictionary of symbols configured with multiple attributes. For example, you may want to symbolize alternative fuel stations so that each symbol reflects the fuel type, network type, connector type, etc. This approach is used when symbol specifications lead to many symbol permutations that would be inappropriate for UniqueValueRenderer.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":630402,"id":630402,"title":"Visualize data with dictionary renderer","filename":"dictionary-renderer.png","filesize":101743,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/dictionary-renderer.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019\/dictionary-renderer","alt":"Visualize data with dictionary renderer","author":"7451","description":"Visualize data with dictionary renderer","caption":"Visualize data with dictionary renderer sample","name":"dictionary-renderer","status":"inherit","uploaded_to":614592,"date":"2019-10-08 21:33:04","modified":"2019-10-08 21:33:15","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":799,"height":396,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/dictionary-renderer-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/dictionary-renderer.png","medium-width":464,"medium-height":230,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/dictionary-renderer.png","medium_large-width":768,"medium_large-height":381,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/dictionary-renderer.png","large-width":799,"large-height":396,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/dictionary-renderer.png","1536x1536-width":799,"1536x1536-height":396,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/dictionary-renderer.png","2048x2048-width":799,"2048x2048-height":396,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/dictionary-renderer.png","card_image-width":799,"card_image-height":396,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/dictionary-renderer.png","wide_image-width":799,"wide_image-height":396}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/visualization-dictionary\/index.html"},{"acf_fc_layout":"content","content":"<p><strong>Super-duper Measurements<\/strong><\/p>\n<p>The <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-widgets-Measurement.html\" target=\"_blank\" rel=\"noopener\">Measurement widget<\/a> is designed to simplify the user experience and maximize flexibility. A single measurement widget can now be used in both 2D and 3D to measure distance and area. This new widget encapsulates the capabilities from the four current measurement widgets. It allows developers to configure the UI to best match their specific requirements. An upcoming blog post will dive into more details.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":615162,"id":615162,"title":"Measurement widget","filename":"2D_measures.gif","filesize":675803,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/2D_measures.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019\/2d_measures","alt":"Measurement widget","author":"7451","description":"","caption":"Measurement widget sample","name":"2d_measures","status":"inherit","uploaded_to":614592,"date":"2019-09-26 20:46:51","modified":"2019-09-26 20:47:14","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1073,"height":603,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/2D_measures-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/2D_measures.gif","medium-width":464,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/2D_measures.gif","medium_large-width":768,"medium_large-height":432,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/2D_measures.gif","large-width":1073,"large-height":603,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/2D_measures.gif","1536x1536-width":1073,"1536x1536-height":603,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/2D_measures.gif","2048x2048-width":1073,"2048x2048-height":603,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/2D_measures-826x465.gif","card_image-width":826,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/2D_measures.gif","wide_image-width":1073,"wide_image-height":603}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/widgets-measurement\/index.html"},{"acf_fc_layout":"content","content":"<p><strong>BasemapLayerList Widget<\/strong><\/p>\n<p>The <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-widgets-BasemapLayerList.html\" target=\"_blank\" rel=\"noopener\">BasemapLayerList widget<\/a> is similar to the LayerList widget, but targets basemaps instead. The widget displays a list of basemaps that can have their visibility toggled on and off. Base layers and reference layers are divided into separate sections and can be optionally reordered and renamed.<\/p>\n<p><strong>ScaleRangeSlider Widget<\/strong><\/p>\n<p>The <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-widgets-ScaleRangeSlider.html\" target=\"_blank\" rel=\"noopener\">ScaleRangeSlider widget<\/a> allows the user to set a maximum and minimum scale based on named scale ranges. When a layer is assigned to the widget, the minScale and maxScale are set to the scale range of the layer.<\/p>\n<p>Now let&#8217;s look at what got an upgrade.<\/p>\n<p><strong>PointCloudLayer Popups<\/strong><\/p>\n<p><a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-PointCloudLayer.html\" target=\"_blank\" rel=\"noopener\">PointCloudLayer<\/a> now supports pop-ups, allowing you to utilize the vast amount of information coming from LiDAR and photography-based scans. Select individual points in a point cloud scene layer to inspect properties such as the classification code, elevation and intensity. Use existing capabilities like the PopupTemplate or <a href=\"https:\/\/developers.arcgis.com\/arcade\/\" target=\"_blank\" rel=\"noopener\">Arcade<\/a> expressions allow you to create custom popup layouts.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":632332,"id":632332,"title":"PointCloudLayer Pop-ups","filename":"point-cloud-layer-pop-ups.jpg","filesize":151646,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/point-cloud-layer-pop-ups.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019\/point-cloud-layer-pop-ups","alt":"PointCloudLayer Pop-ups","author":"7451","description":"PointCloudLayer Pop-ups","caption":"PointCloudLayer Pop-ups","name":"point-cloud-layer-pop-ups","status":"inherit","uploaded_to":614592,"date":"2019-10-10 14:45:43","modified":"2019-10-10 14:46:37","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":800,"height":533,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/point-cloud-layer-pop-ups-213x200.jpg","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/point-cloud-layer-pop-ups.jpg","medium-width":392,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/point-cloud-layer-pop-ups.jpg","medium_large-width":768,"medium_large-height":512,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/point-cloud-layer-pop-ups.jpg","large-width":800,"large-height":533,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/point-cloud-layer-pop-ups.jpg","1536x1536-width":800,"1536x1536-height":533,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/point-cloud-layer-pop-ups.jpg","2048x2048-width":800,"2048x2048-height":533,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/point-cloud-layer-pop-ups-698x465.jpg","card_image-width":698,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/point-cloud-layer-pop-ups.jpg","wide_image-width":800,"wide_image-height":533}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/layers-pointcloud-portal\/index.html"},{"acf_fc_layout":"content","content":"<p><strong>ImageryLayer Updates<\/strong><\/p>\n<p>With the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-ImageryLayer.html\" target=\"_blank\" rel=\"noopener\">ImageryLayer<\/a> you can now display images in their original coordinate system by specifying the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-geometry-SpatialReference.html#imageCoordinateSystem\" target=\"_blank\" rel=\"noopener\">imageCoordinateSystem<\/a> of the 2D MapView. This will allow you to visualize your images without any distortion in its original form. Lastly, performance has been improved in that there will be fewer files requested from CDN, and applications with imagery layers will load faster.<\/p>\n<p><strong>Bookmark Editing<\/strong><\/p>\n<p>The <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-widgets-Bookmarks.html\" target=\"_blank\" rel=\"noopener\">Bookmarks widget<\/a> now supports adding, editing, deleting, and reordering bookmarks within the widget by setting the editingEnabled property to true. You can also add new bookmarks manually using the <code>createBookmark()<\/code> method.<\/p>\n<p><strong>Smarter Mapping<\/strong><\/p>\n<p>Smart mapping defaults can now be generated for any basemap or background color, whether with a customized vector tile style, or no basemap at all. We also added <code>zoomOptions<\/code> to the smart mapping sliders, allowing you to zoom to smaller ranges within the slider track. This makes styling layers easier for skewed datasets.<\/p>\n"},{"acf_fc_layout":"content","content":"<p><strong>API Modernization<\/strong><\/p>\n<p>We made several updates to modernize and strengthen the API:<\/p>\n<ul>\n<li>96% of the codebase is written in TypeScript.<\/li>\n<li>We are planning to make the API return native Promise by default at 4.14, then completely remove Dojo promise at 4.15.<\/li>\n<li>We tackled some preparatory work to remove the dependency on Dojo&#8217;s <code>declare<\/code> module.<\/li>\n<\/ul>\n"},{"acf_fc_layout":"content","content":"<p><strong>Would you like to learn more?<\/strong><\/p>\n<p>If you are looking for the full list of enhancements, updates, and bug fixes, be sure to check out the release notes and new samples:<\/p>\n<ul>\n<li>Version 4.13 <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/release-notes\/index.html\">release notes<\/a> and <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/index.html?search=4.13\">sample apps<\/a><\/li>\n<li>Version 3.30 <a href=\"https:\/\/developers.arcgis.com\/javascript\/3\/jshelp\/whats_new.html\">what&#8217;s new<\/a><\/li>\n<\/ul>\n"}],"authors":[{"ID":7451,"user_firstname":"Noah","user_lastname":"Sager","nickname":"Noah Sager","user_nicename":"noah-sager","display_name":"Noah Sager","user_email":"NSager@esri.com","user_url":"https:\/\/www.noahsager.net\/","user_registered":"2018-03-21 18:21:19","user_description":"Passionate about JavaScript, maps, and writing (not necessarily in that order). Big fan of squirrels. Journeyman mapper of Utility Lines and Public Restrooms. Product Engineer on the ArcGIS API for JavaScript team. In Noah\u2019s spare time, he also enjoys parenting.","user_avatar":"<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=96&#038;d=blank&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=192&#038;d=blank&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' loading='lazy' decoding='async'\/>"},{"ID":3801,"user_firstname":"Andy","user_lastname":"Gup","nickname":"andygup","user_nicename":"andygup","display_name":"Andy Gup","user_email":"agup@esri.com","user_url":"http:\/\/www.andygup.net","user_registered":"2018-03-02 00:15:25","user_description":"I spend a ton of time outdoors and when not on a mountain somewhere I'm a Sr. Product Engineer for the ArcGIS Maps SDK for JavaScript. I work on ES modules, 3rd party JavaScript frameworks, and other cool mapping-related goodies.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/andy_gup_thumb4-1.png' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"related_articles":[{"ID":543762,"post_author":"4271","post_date":"2019-07-02 16:18:10","post_date_gmt":"2019-07-02 23:18:10","post_content":"","post_title":"What's New in ArcGIS API for JavaScript (July, 2019)","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"whats-new-in-arcgis-api-for-javascript-july-2019","to_ping":"","pinged":"","post_modified":"2019-07-03 08:40:08","post_modified_gmt":"2019-07-03 15:40:08","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=543762","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":613182,"post_author":"7641","post_date":"2019-10-01 22:07:17","post_date_gmt":"2019-10-02 05:07:17","post_content":"","post_title":"What's new in ArcGIS Online (October 2019)","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"whats-new-arcgis-online-october-2019","to_ping":"","pinged":"","post_modified":"2021-09-02 08:08:01","post_modified_gmt":"2021-09-02 15:08:01","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=613182","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":609852,"post_author":"9752","post_date":"2019-10-31 10:30:46","post_date_gmt":"2019-10-31 17:30:46","post_content":"","post_title":"Map Viewer Beta: Coming Soon","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"map-viewer-beta-coming-soon","to_ping":"","pinged":"","post_modified":"2019-11-27 11:49:24","post_modified_gmt":"2019-11-27 19:49:24","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=609852","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"}],"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/4dot13_card.png","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/4dot13_wide_new.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>What&#039;s New in ArcGIS API for JavaScript (October 2019)<\/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.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What&#039;s New in ArcGIS API for JavaScript (October 2019)\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\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\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019\"},\"author\":{\"name\":\"Noah Sager\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/31358cd525c152696fcd5fe96f49e068\"},\"headline\":\"What&#8217;s New in ArcGIS API for JavaScript (October 2019)\",\"datePublished\":\"2019-10-10T17:31:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019\"},\"wordCount\":9,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"3.30\",\"4.13\",\"ArcGIS API for JavaScript\",\"jsapi4\",\"whats new october 2019\"],\"articleSection\":[\"Announcements\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019\",\"name\":\"What's New in ArcGIS API for JavaScript (October 2019)\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2019-10-10T17:31:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What&#8217;s New in ArcGIS API for JavaScript (October 2019)\"}]},{\"@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\/31358cd525c152696fcd5fe96f49e068\",\"name\":\"Noah Sager\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=96&d=blank&r=g\",\"caption\":\"Noah Sager\"},\"description\":\"Passionate about JavaScript, maps, and writing (not necessarily in that order). Big fan of squirrels. Journeyman mapper of Utility Lines and Public Restrooms. Product Engineer on the ArcGIS API for JavaScript team. In Noah\u2019s spare time, he also enjoys parenting.\",\"sameAs\":[\"https:\/\/www.noahsager.net\/\",\"https:\/\/www.linkedin.com\/in\/noah-sager\",\"https:\/\/x.com\/noashx\"],\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/noah-sager\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What's New in ArcGIS API for JavaScript (October 2019)","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\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019","og_locale":"en_US","og_type":"article","og_title":"What's New in ArcGIS API for JavaScript (October 2019)","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","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\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019"},"author":{"name":"Noah Sager","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/31358cd525c152696fcd5fe96f49e068"},"headline":"What&#8217;s New in ArcGIS API for JavaScript (October 2019)","datePublished":"2019-10-10T17:31:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019"},"wordCount":9,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["3.30","4.13","ArcGIS API for JavaScript","jsapi4","whats new october 2019"],"articleSection":["Announcements"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019","name":"What's New in ArcGIS API for JavaScript (October 2019)","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2019-10-10T17:31:14+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"What&#8217;s New in ArcGIS API for JavaScript (October 2019)"}]},{"@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\/31358cd525c152696fcd5fe96f49e068","name":"Noah Sager","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=96&d=blank&r=g","caption":"Noah Sager"},"description":"Passionate about JavaScript, maps, and writing (not necessarily in that order). Big fan of squirrels. Journeyman mapper of Utility Lines and Public Restrooms. Product Engineer on the ArcGIS API for JavaScript team. In Noah\u2019s spare time, he also enjoys parenting.","sameAs":["https:\/\/www.noahsager.net\/","https:\/\/www.linkedin.com\/in\/noah-sager","https:\/\/x.com\/noashx"],"url":"https:\/\/www.esri.com\/arcgis-blog\/author\/noah-sager"}]}},"text_date":"October 10, 2019","author_name":"Multiple Authors","author_page":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/whats-new-in-arcgis-api-for-javascript-october-2019","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/4dot13_wide_new.jpg","primary_product":"ArcGIS Maps SDK for JavaScript","tag_data":[{"term_id":473672,"name":"3.30","slug":"3-30","term_group":0,"term_taxonomy_id":473672,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":473662,"name":"4.13","slug":"4-13","term_group":0,"term_taxonomy_id":473662,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw"},{"term_id":96582,"name":"ArcGIS API for JavaScript","slug":"arcgis-api-for-javascript","term_group":0,"term_taxonomy_id":96582,"taxonomy":"post_tag","description":"","parent":0,"count":58,"filter":"raw"},{"term_id":27491,"name":"jsapi4","slug":"jsapi4","term_group":0,"term_taxonomy_id":27491,"taxonomy":"post_tag","description":"","parent":0,"count":111,"filter":"raw"},{"term_id":468882,"name":"whats new october 2019","slug":"whats-new-october-2019","term_group":0,"term_taxonomy_id":468882,"taxonomy":"post_tag","description":"","parent":0,"count":20,"filter":"raw"}],"category_data":[{"term_id":37101,"name":"Announcements","slug":"announcements","term_group":0,"term_taxonomy_id":37101,"taxonomy":"category","description":"","parent":0,"count":1957,"filter":"raw"}],"product_data":[{"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":361,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":761,"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\/614592","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\/7451"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=614592"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/614592\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=614592"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=614592"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=614592"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=614592"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=614592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}