1. Get started

  2.  Welcome
  3.  Get started
  4.  Run as a Windows service
  5.  Build your first app
  6.  Requirements
  7.  Accessibility support
  8.  Development overview
  9.  About release versions
  10.  What's new
  11.  Frequently asked questions
  12. Working with apps

  13.  Home page
  14.  Create or import an app
  15.  Edit and launch an app
  16.  Choose a theme
  17.  Select a map or scene
  18.  Add widgets
  19.  Widgets overview
  20.  Configure app attributes
  21.  Preview apps on smaller screens
  22.  Export as a template
  23.  Edit or preview template
  24.  Use URL parameters
  25.  Upgrade apps
  26. Configure 2D widgets

  27.  About widget
  28.  Add Data widget
  29.  Analysis widget
  30.  Attribute Table widget
  31.  Batch Attribute Editor widget
  32.  Basemap Gallery widget
  33.  Bookmark widget
  34.  Business Analyst widget
  35.  Chart widget
  36.  Controller widget
  37.  Coordinate widget
  38.  Coordinate Conversion widget
  39.  Cost Analysis widget
  40.  Data Aggregation widget
  41.  Directions widget
  42.  Distance and Direction widget
  43.  District Lookup widget
  44.  Draw widget
  45.  Edit widget
  46.  Emergency Response Guide widget
  47.  Extent Navigate widget
  48.  Filter widget
  49.  Full Screen widget
  50.  Geocoder widget
  51.  GeoLookup widget
  52.  Geoprocessing widget
  53.  Grid Overlay widget
  54.  Gridded Reference Graphic widget
  55.  Group Filter widget
  56.  Image Measurement widget
  57.  Home Button widget
  58.  Incident Analysis widget
  59.  Infographic widget
  60.  Info Summary widget
  61.  Layer List widget
  62.  Legend widget
  63.  Measurement widget
  64.  My Location widget
  65.  Near Me widget
  66.  Network Trace widget
  67.  Oblique Viewer widget
  68.  Overview Map widget
  69.  Parcel Drafter widget
  70.  Print widget
  71.  Public Notification widget
  72.  Query widget
  73.  Related Table Charts widget
  74.  Report Feature widget
  75.  Reviewer Dashboard widget
  76.  Scalebar widget
  77.  Screening widget
  78.  Search widget
  79.  Select widget
  80.  Share widget
  81.  Situation Awareness widget
  82.  Smart Editor widget
  83.  Splash widget
  84.  Stream widget
  85.  Suitability Modeler widget
  86.  Summary widget
  87.  Swipe widget
  88.  Threat Analysis widget
  89.  Time Slider widget
  90.  Visibility widget
  91.  Zoom Slider widget
  92. Configure 3D widgets

  93.  3DFx widget
  94.  About widget
  95.  Basemap Gallery widget
  96.  Compass widget
  97.  Coordinate widget
  98.  Daylight widget
  99.  Full Screen widget
  100.  Home Button widget
  101.  Layer List widget
  102.  Legend widget
  103.  Measurement widget
  104.  My Location widget
  105.  Navigate widget
  106.  Search widget
  107.  Share widget
  108.  Slides widget
  109.  Splash widget
  110.  Zoom Slider widget
  111. Widget development

  112.  Get started
  113.  Naming conventions
  114.  In-panel and off-panel widgets
  115.  Deploy your widget
  116.  Required files
  117.  Widget manifest
  118.  Extend BaseWidget
  119.  Required properties
  120.  Define the template
  121.  Configure the Demo widget
  122.  Add i18n support
  123.  Make widgets user-friendly
  124.  Build your first app
  125.  Communication to app container
  126.  Widget properties
  127.  Make widgets responsive
  128.  Communication between widgets
  129.  Dojo dijit
  130.  Make widgets configurable in builder
  131.  Make widgets backward compatible
  132.  Create a controller widget
  133.  Widget life cycle
  134.  Add help for your widget
  135.  Create a feature action in your widget
  136.  Provide and consume data sources in widgets
  137.  Best practices for unit testing
  138. Theme development

  139.  Theme elements
  140.  Create a theme
  141. 3D development

  142.  3D development guide
  143. Sample code

  144.  Create a custom in-panel widget
  145.  Create a ListView widget
  146.  Create a custom widget using the Report dijit
  147.  Create a new theme
  148.  Create a new style for a theme
  149.  Create a new default layout
  150.  Create a nondefault layout
  151.  Create a new panel
  152.  Create a new layout widget
  153.  Create a controller widget
  154.  Create a feature action in your widget
  155.  Send a layer to the Attribute Table widget
  156.  Open multiple widgets simultaneously
  157.  Use other libraries
  158.  Change the URL of ArcGIS API for JavaScript
  159. Deployment

  160.  Deploy your app
  161.  Use proxy
  162.  Web-tier authentication
  163.  Custom widget and theme deployment
  164.  Upgrade custom widgets and themes
  165. Framework reference

  166.  CSS framework
  167.  FeatureActionManager class
  168.  FilterManager class
  169.  LayerInfo class
  170.  LayerInfos class
  171.  LayerNode class
  172.  LayerStructure class
  173.  PanelManager class
  174.  SelectionManager class
  175.  Utils class
  176.  WidgetManager class
  177. dijit

  178.  FeaturelayerChooserFromMap class
  179.  FeaturelayerServiceBrowser class
  180.  FeatureSetChooserForSingleLayer class
  181.  Filter class
  182.  ImageChooser class
  183.  ItemSelector class
  184.  LayerChooserFromMap class
  185.  RendererChooser class
  186.  Report class
  187.  SnapShot class
  188.  SymbolChooser class
  189. JSON reference

  190.  App configuration
  191.  Map configuration
  192.  Widget configuration
  193.  Widget pool configuration
  194.  Widget on-screen configuration
  195.  Panel configuration
  196.  Group configuration
  197.  DataSource configuration
  198.  About
  199.  Analysis
  200.  Attribute Table
  201.  Basemap Gallery
  202.  Bookmark
  203.  Chart
  204.  Coordinate
  205.  Directions
  206.  Draw
  207.  Edit
  208.  Full Screen
  209.  Geocoder
  210.  Geoprocessing
  211.  Controller
  212.  Home Button
  213.  Image Measurement
  214.  Infographic
  215.  Layer List
  216.  Legend
  217.  Loading Page
  218.  Measurement
  219.  My Location
  220.  Near Me
  221.  Oblique Viewer
  222.  Overview Map
  223.  Print
  224.  Query
  225.  Report Feature
  226.  Reviewer Dashboard
  227.  Scalebar
  228.  Search
  229.  Share
  230.  Splash
  231.  Stream
  232.  Swipe
  233.  Time Slider
  234.  Zoom Slider
  235. What's new archive

  236.  What's new in version 2.23
  237.  What's new in version 2.22
  238.  What's new in version 2.21
  239.  What's new in version 2.20
  240.  What's new in version 2.19
  241.  What's new in version 2.18
  242.  What's new in version 2.17
  243.  What's new in version 2.16
  244.  What's new in version 2.15
  245.  What's new in version 2.14
  246.  What's new in version 2.13
  247.  What's new in version 2.12
  248.  What's new in version 2.11
  249.  What's new in version 2.10
  250.  What's new in version 2.9
  251.  What's new in version 2.8
  252.  What's new in version 2.7
  253.  What's new in version 2.6
  254.  What's new in version 2.5
  255.  What's new in version 2.4
  256.  What's new in version 2.3
  257.  What's new in version 2.2
  258.  What's new in version 2.1
  259.  What's new in version 2.0
  260.  What's new in version 1.3
  261.  What's new in version 1.2
  262.  What's new in version 1.1

Use URL parameters

Apps created with Web AppBuilder can be modified directly with URL parameters. The URL always begins with <your app>/? and includes one or more of the parameters listed below. Your app can be deployed in your web server or in Web AppBuilder. To include more than one parameter, use an ampersand (&) to separate the parameters. The following is an example:

The following is a deployed app:

https://<your hosted app>/?find=380 new york street, redlands, ca&locale=fr

The following is an app launched in Web AppBuilder:

https://<your machine name>:3344/webappbuilder/apps/4/?find=380 new york street, redlands, ca&locale=fr
TipTip:

There is another way to construct URL parameters. Add the Share widget to the app and click Link Options. Link preview displays the parameters you selected, and a shortcut link that includes the URL parameters is automatically generated. Be aware that the Search widget must be enabled in the app to use the find parameter.

NoteNote:

Currently, 3D apps do not support URL parameters.

Encode the query parameters

All query parameters must be encoded. Encoding replaces invalid characters with % followed by their hex equivalent.

For example, the following is an unencoded URL parameter:

https://<your app>/?find=380 new york street, redlands, ca

Here is the same parameter encoded:

https://<your app>/?find=380%20new%20york%20street,%20redlands,%20ca

The web has many free sites and tools for generating encoded URLs. For example, Albion Research Ltd. has a URLEncode and URLDecode Page. For readability, the rest of the examples in this topic are not encoded.

Center the map

To center the map at a particular location, set center= using geographic coordinates (x,y) or projected coordinates (x,y,WKID).

CautionCaution:

You can use commas or semicolons as separators. Use semicolons if your numbers use colons as their decimals.

The following is a geographic coordinates example:

https://<your app>/?center=34,-50

The following is a projected coordinates example:

https://<your app>/?center=500000,5500000,102100

Define the scale level

To define the scale level of the map, use the center= and level= parameters. The level parameter accepts the level ID of the cache scale as listed in the map service's REST endpoint. The following is an example:

https://<your app>/??center=20,45&level=4

Define the scale

To define the scale of the map, use the center= and scale= parameters. The scale parameter accepts the cache scale as listed in the map service's REST endpoint. The following is an example:

https://<your app>/?center=20,45&scale=4622324

Define the extent

To define the extent of the map, use extent= to define the extent of the map. The extent parameter accepts geographic coordinates (GCS) as MinX,MinY,MaxX,MaxY , projected coordinates (PCS) as MinX,MinY,MaxX,MaxY,WKID, or Well-Known Text String (WKT) as MinX,MinY,MaxX,MaxY,WKT. You can use commas or semicolons as separators. Use semicolons if your numbers use colons as their decimals.

The following is a geographic coordinates example:

https://<your app>/?extent=-117.20,34.055,-117.19,34.06

The following is a projected coordinates example:

https://<your app>/?extent=-13079253.954115,3959110.38566837,-12918205.318785,4086639.70193162,102113

The following is a Well-Known Text String example:

https://<your app>/?extent=1008562.1255,1847133.031,1060087.7901,1877230.7859,wkt=PROJCS["NAD_1983_HARN_StatePlane_Illinois_East_FIPS_1201",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]]

Set layers' visibility

To set the layers' visibility for the map, you can use showLayers= to specify visible layers, or use hideLayers= to turn layers off. The showLayers= and hideLayers= parameters accept a single layer ID or multiple layer IDs. For multiple layers, use a semicolon to separate the list of IDs (&showLayers=<layerID>;<layerID>;<layerID>).

The following is an example: https://<your app>?extent=-117.20,34.055,-117.19,34.06&showLayers=Census_8491;Census_8492;Census_8493

Layer names are also acceptable. However, using the layer ID is more reliable because the layer name can be changed. You can retrieve the layer ID from the content of the web map item: https://<your portal url>/sharing/rest/content/items/<webmapItemID>/data/?f=pjson.

When you use the showLayers= or hideLayers= parameters to set the visibility for a sublayer, it only affects the visibility of layers at the same level. For example, if your map contains two group layers (A and B) with three sublayers each (A1, A2, A3 and B1, B2, B3), and you use the showLayers= parameter to show sublayer B2, both group layers A and B will still be turned on in the map, but the sublayers B1 and B3 will be turned off.

TipTip:

When the value to parameter showLayers= or hideLayers= is empty, no layers will be visible, or all layers will be visible correspondingly.

CautionCaution:

If you list a lot of layers or the names are lengthy when you set the showLayers= or hideLayers= parameter, the URL may be too long for the server to interpret. (Different servers can have unique length limitations for URLs.)

Find a location or feature to open the map

To find a location or feature to use to open the map, use find=. The map is automatically zoomed to the closest match and a callout marker is added to the map. The find parameter accepts single-line addresses, partial addresses (such as city only or country only), place-names, longitude-latitude coordinates, and features in searchable layers (such as 1916352001 for a parcel identification number [PIN]). The following is an example:

https://<your app>/?find=380 new york street, redlands, ca
CautionCaution:

All query parameters must be encoded, and the Search widget must be enabled in the app to use this parameter.

Add a point

To add a point to the map, use marker=<x>,<y>. The point is added to the map at the specified x and y location. You can also include the following optional properties:

  • <wkid>—Spatial reference of the x,y coordinates added to the map. If you do not include a WKID, GCS coordinates are used.
  • <encoded title>—Title of the point pop-up. If you do not include a title, the pop-up will be empty.
  • <encoded icon URL>—Symbol for the point. If you do not include a symbol, a blue marker symbol is used.
  • <encoded label>—Label next to the point symbol.

Keep the following in mind when adding a point:

  • <x>,<y> are required.
  • Be sure to encode the title, icon, and label parameters.
  • You must add properties in this order: marker=<x>,<y>,<wkid>,<encoded title>,<encoded icon URL>,<encoded label>.
  • You can use commas or semicolons as separators. Use semicolons if your numbers use colons as their decimals.
  • Use empty values. Do not use spaces. For example, if you want to specify a label and no other optional property, add the label as the sixth parameter with empty values for the others (x;y;;;;label).
  • If you want the map to zoom in (in addition to centering on the point), include the level= parameter.

The following is an example:

https://<your app>/?marker=-79.234826;38.147884;;Race start and finish;;Grindstone 100 Ultra Marathon&level=7

Query feature

To query a feature and zoom to it, you can use one of the following options:

  • query=<layer name>,<field name>,<field value>
  • query=<layer id>,<field name>,<field value>
  • query=<layer name>, <where clause>
  • query=<layer id>, <where clause>
TipTip:

You can also construct URL parameters interactively. Add the Share widget to the app and click Link Options. Choose the Query a feature and zoom to it option and select the layer, field, and field value you want to query against. Copy the URL in Link preview that contains the URL parameters you specified. Remove the Share widget from the app if it's not needed.

CautionCaution:

All the query parameters are case sensitive and must be encoded.

The where clause follows SQL standard. When where clause has, for example, the IN operation, use the semicolon instead of separating layer name or id from the where clause with commas, as shown below. The reason is because a comma is used in the where clause specifically to build the list of values such as ('A11', 'A12', 'A13) or ('Charlotte', 'Chicago'). This allows the query parameter to be parsed properly to distinguish what the layer and where clause are.

  • query=<layer name>; <where clause>
  • query=<layer id>; <where clause>

Since the layer name can be changed, it is strongly recommended that you use the layer ID in the query. You can retrieve the layer ID from the web map ID, as shown below.https://<your portal url>/sharing/rest/content/items/32a83775654249dcae6b8f2eff5d4072/data/?f=pjson.

CautionCaution:

Make sure the web map is shared publicly when you retrieve the layer ID.

For example, a layer is added to the map individually, as shown below in the JSON format. It has a layer id of Census_8491, field name of POP2000, and field value of 1211537. You can perform the following queries:

id: "Census_8491",
layerType: "ArcGISFeatureLayer",
url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3",
visibility: true,
opacity: 1,
mode: 1,
title: "Census - states",

https://<your app>/?query=Census_8491,POP2000,1211537
https://<your app>/?query=Census_8491,POP2000=1211537

You can also do queries against the string or OBJECTID.

https://<your app>/?query=Census_8491,STATE_NAME,California
https://<your app>/?query=Census_8491,STATE_NAME='California'
https://<your app>/?query=Census_8491,OBJECTID,1

Often a layer is added as a group of map services. To query a sublayer in a group, use <layer id_sublayer id> as the layer id instead. Using the following layer as an example, it has a layer id of Census_3217 and a sublayer id of index of 3. The layer id for the sublayer should be Census_3217_3. You can perform the following queries:

id: "Census_3217",
layerType: "ArcGISMapServiceLayer",
url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer",
visibility: true,
opacity: 1,
title: "Census"

https://<your app>/?query=Census_3217_3,POP2000,1211537
https://<your app>/?query=Census_3217_3,POP2000=1211537
https://<your app>/?query=Census_8491;STATE_NAME in ('California', '')

Switch locale

To switch the app language, use the locale URL parameter and a two-letter ISO 639-1 language code. Web AppBuilder supports all languages that ArcGIS Online supports, which includes the following language codes: ar, bg, bs, ca, cs, da, de, el, en, es, et, fi, fr, he, hr, hu, id, it, ja, ko, lt, lv, nb, nl, pl, pt-br, pt-pt, ro, ru, sk, sl, sr, sv, th, tr, uk, vi, zh-cn, zh-hk, and zh-tw.

To use your app in French, for example, append locale=fr to the URL like this:

https://<your app>/?locale=fr

Control when to turn on mobile layout

The app supports two styles of layout based on the screen size. One is for desktop and one is for mobile devices. When either the height or width of a screen display is less than 600 pixels, the mobile layout is applied automatically. However, this may result in unexpected behavior when the app is embedded in a website. For example, the pop-up in the website changes to the mobile layout style. To control the layout style, use mobileBreakPoint=<pixel number>. For example, you can remain in desktop style until the screen size is less than 300 pixels, as shown below:

https://<your app>/?mobileBreakPoint=300

Run apps in a different config file

By default, the app runs in the config.json file in the stemapp or stemapp3d folder. If you want to apply a different config file to the app, such as myConfig.json in the stemapp\sample-configs folder, use config=<file name>.

The following is an example:

https://<your app>/?config=sample-configs/myConfig.json

Disable WebGL

By default, the app renders layers using WebGL. Disabling WebGL may improve memory issues on small devices, including phones and tablets. If you want to disable WebGL, use disableFLWebGL=1.

The following is an example:

https://<your app>/?disableFLWebGL=1

Switch map navigation mode to classic

By default, the app uses CSS3 transformations (if supported by the browser) to provide a smoother experience while panning and zooming the map. CSS3 transformations may cause performance issues on devices with less memory, including phones and tablets. If you want to switch from "css-transform" mode to "classic" mode, use mapUseClassicNavMode=1.

The following is an example:

https://<your app>/?mapUseClassicNavMode=1