0%

Getting Started &
Layout Mastery

Pages, rows, columns, sidebars, responsive design, and the layout patterns that make or break your app. This is the foundation everything else sits on.

๐ŸŒฑ Beginner โ€” 7 lessons ๐Ÿ”ฅ Intermediate โ€” 6 lessons ๐Ÿš€ Advanced โ€” 5 lessons

Your First App

Everything you need to go from a blank screen to a working app. No code, no tricks โ€” just the fundamentals done right.

Lesson 0

The EB builder interface โ€” what's where

Before you build anything, let's get oriented. When you open Experience Builder, you see a lot of panels. Here's what each one does.

๐Ÿงฐ

Left Sidebar โ€” Insert

Widgets live here. Drag them onto the canvas. Use the search icon at top to find specific widgets quickly.

๐ŸŒณ

Left Sidebar โ€” Outline

The page tree. Shows every widget nested inside its parent. This is your best friend for selecting deeply nested elements.

โš™๏ธ

Right Panel โ€” Settings

Content, Style, and Action tabs for whatever's selected. Changes here affect only the selected widget/container.

๐ŸŽฏ

Canvas โ€” Center

The app preview. Drag widgets here. Click to select. Resize by dragging edges. This is what your users will see.

๐Ÿ”‘ Top bar essentials
  • Live view (โ–ถ๏ธ button) โ€” toggles interactive preview. Widgets don't work without this on.
  • Device preview โ€” switch between desktop, tablet, and phone views
  • Lock layout โ€” prevents accidental widget moves while you configure settings
  • Save / Preview / Publish โ€” top right. Preview opens a new tab. Publish makes it live.
๐Ÿ’ก Think of it this way

The builder is like a photo collage app: the left panel is your toolbox of stickers (widgets), the center is your poster (canvas), and the right panel is the inspector that lets you customize whatever sticker you've selected. The outline tree is like the layers panel in Photoshop โ€” it shows you the stacking order and nesting.

Lesson 1

Pages โ€” the skeleton of your app

Every EB app starts with pages. A page is a full-screen view โ€” like a slide in a presentation or a screen in a mobile app.

1
Click the page icon (๐Ÿ“„) in the far-left icon bar
2
You'll see your pages listed. By default there's one page called "Page"
3
Click + New page to add more. Choose Fullscreen (fills the viewport) or Scrolling (content scrolls vertically)

Fullscreen Pages

Content fills the viewport exactly. Good for dashboard-style apps where everything is visible at once. No scrollbar.

Scrolling Pages

Content extends below the viewport. User scrolls to see more. Good for long-form apps, reports, and story-style layouts.

๐Ÿ”‘ Page tips
  • Your first page is the landing page โ€” what users see when the app loads
  • Add a header by clicking the header toggle in page settings โ€” it stays fixed across page navigation
  • Add a footer the same way โ€” great for credits, links, and branding
  • Pages can have windows (pop-up overlays) for secondary content like About panels
  • Use the page link settings to control URL paths and make pages bookmarkable
โš ๏ธ Common mistake

Don't use 15 pages when 3 pages with good navigation would work. Every page is a full context switch for the user. Use screen groups (Lesson 11) or sections to show/hide content within a single page instead.

Lesson 2

The Row and Column system

Rows and Columns are the invisible boxes that organize your widgets. Think of them as the framing studs in a wall โ€” you don't see them, but they hold everything in place.

๐Ÿ’ก Think of it this way

Imagine a bookshelf. A Row is a single shelf (horizontal). A Column is a vertical divider within a shelf. Your widgets are the books that go in the spaces between dividers. Rows stack vertically. Columns divide horizontally within a row.

โžก๏ธ

Row Widget

Divides space horizontally into up to 12 columns. Widgets sit side by side. The Row uses a 12-column grid โ€” each column is 1/12th of the row's width.

โฌ‡๏ธ

Column Widget

Stacks widgets vertically, like a scrolling page within a page. Widgets stack top to bottom. Scrollable if content overflows.

LayoutDirectionBest for
RowHorizontal (side by side)Map + sidebar, multiple equal panels, dashboard grids
ColumnVertical (stacked)Scrolling content, widget stacks, form-like layouts
Flow Row (new!)Horizontal continuousIcon bars, button groups, flexible horizontal alignment
1
Drag a Row widget onto the canvas
2
Hover at the divider between columns โ€” drag to resize. The number shows how many of the 12 grid units each column takes.
3
Drag widgets into each column. A Map in the left 8 columns, a List in the right 4 columns โ€” classic dashboard layout!
๐Ÿงช Try this classic layout

Row (12 cols) โ†’ Left 8 cols: Map widget โ†’ Right 4 cols: Column widget containing a List and a Chart stacked vertically. Congratulations โ€” you just built the skeleton of 80% of all operational dashboards.

Lesson 3

The Sidebar widget โ€” the drawer pattern

The Sidebar is one of EB's most useful layout widgets. It creates a collapsible panel that the user can open/close with an arrow toggle. Perfect for tools, legends, and filters that shouldn't take up screen space all the time.

1
Drag a Sidebar widget onto the canvas (make it fullscreen)
2
The Sidebar has two zones: the main area (always visible) and the sidebar panel (toggleable). In the settings, choose which side the panel is on (left or right).
3
Drag your Map into the main area
4
Drag a Column into the sidebar panel, then drop a Legend, Layer List, and Filter inside the column
๐Ÿ”‘ Sidebar settings
  • Side: Left or Right โ€” pick based on your audience's expectations
  • Collapsible: Toggle whether users can open/close the panel
  • Default state: Open or Collapsed when the app first loads
  • Width: Set a specific pixel or percentage width for the panel
  • Overlay vs Push: Overlay mode makes the sidebar float over the main content. Push mode resizes the main content.
โš ๏ธ Don't nest Sidebar inside Row

The Sidebar widget should typically be a top-level container (directly on the page). If you nest it inside a Row, it gets constrained and doesn't behave as expected. Let it be the master container, then put your Row inside its main area.

Lesson 4

Adding your first widgets

With a layout in place, it's time to fill it. Here are the widgets you'll use in almost every app, and the one thing to know about each.

WidgetWhat it doesFirst thing to configure
MapShows your web map or sceneClick "Select map" โ†’ choose a web map from your content or AGOL
TextDisplays text, titles, descriptionsClick into it and type. Use the formatting bar for headings, bold, links.
ImageDisplays an imageUpload, URL, or connect to data for dynamic images
ButtonClickable buttonSet the link action โ€” URL, page, or widget trigger
ListRepeating cards from dataConnect to data source first, then design the template item
LegendMap legendJust drop it in โ€” auto-connects to the map
Layer ListToggle layer visibilityDrop in, it auto-connects. Customize which layers appear in settings.
FilterLet users filter dataConnect to data, choose field, set filter type (value, range, etc.)
๐Ÿงช Build a simple app right now

Sidebar (full page) โ†’ Main area: Map widget (connected to any web map) โ†’ Sidebar panel: Column โ†’ Legend + Layer List + Filter. That's a fully functional, publishable app in about 5 minutes.

Lesson 5

Connecting widgets to data

This is the most important step most beginners miss or get wrong. Widgets don't automatically know about your data โ€” you have to connect them.

Web Map (has layers)
โ†’
Map Widget (displays it)
โ†’
Data Source (created automatically)
โ†’
Other widgets connect to it

When you add a Map widget and select a web map, EB automatically creates data sources for each layer in that map. Other widgets (List, Table, Chart, Filter) connect to these data sources.

1
Add a Map widget and connect it to a web map
2
Add a List widget somewhere. In its settings, click Select data.
3
You'll see your map's layers listed. Pick one โ€” the List now shows records from that layer.
4
Same process for Table, Chart, Filter โ€” always "Select data" first, then configure the widget.
๐Ÿ”‘ Data sources vs Data views
  • Data source: The raw connection to a layer. All features, no filters.
  • Data view: A filtered lens on a data source. You can create data views with specific filters, and multiple widgets can use different views of the same data.
  • When widgets share the same data source, they automatically stay in sync โ€” select a feature in one, it highlights in the other.
Lesson 6

The Accordion widget โ€” stacking tools vertically

When you have multiple tools (Legend, Layer List, Filters, Bookmarks) but limited space, the Accordion widget stacks them with collapsible headers. Only one section is open at a time.

1
Drag an Accordion widget into your sidebar or any Column
2
It starts with placeholder items. Drag your Legend into the first item, Layer List into the second, Filter into the third.
3
Click each item's header to rename it: "Legend", "Layers", "Filters"
๐Ÿ’ก Think of it this way

An Accordion is like a stack of file drawers โ€” you pull open one drawer at a time. Everything stays organized, and users only see what they've actively opened. Perfect for mobile-friendly sidebars.

๐ŸŽ“ Beginner section complete!

You now have: the builder interface, pages, rows/columns, Sidebar layout, widget basics, data connections, and the Accordion pattern. You can build a functional app. The Intermediate section teaches you to make it professional.

Professional Layouts

Responsive design, widget controllers, headers and footers, fixed vs scrolling content, and the layout patterns that separate good apps from great ones.

Lesson 7

Responsive design โ€” one app, every screen

Your app will be viewed on desktops, tablets, and phones. EB gives you three device views in the builder. The critical thing to understand: changes in a smaller view only affect that view and smaller.

๐Ÿ”‘ The cascade rule
  • Desktop settings cascade down to tablet and phone
  • Tablet settings override desktop for tablet and phone only
  • Phone settings override everything for phone only
  • This means: design desktop first, then fix tablet issues, then fix phone issues
What you can change per viewWhat you can't change per view
Widget position and sizeWhich widgets exist (all views share the same widgets)
Visibility (show/hide widgets)Widget content settings
Row column proportionsData connections
Padding and marginsAction configurations
๐Ÿงช Quick responsive fix

Switch to phone view. Select your Row. Change it from 2 columns (8/4 split) to 1 column (12/12 stacked). Now your map takes full width on mobile, and the sidebar content stacks below. 90% of responsive problems are solved by adjusting Row column ratios per device view.

Lesson 8

The Widget Controller โ€” toolbar pattern

Instead of having Legend, Layer List, and Bookmarks all visible at once, the Widget Controller puts them behind toolbar icons. Users click an icon to open that tool. Like a toolbar in ArcGIS Pro.

1
Drag a Widget Controller onto your layout (usually inside a map or overlaying it)
2
In its settings, click + Add widget to add tools
3
Add Legend, Layer List, Bookmarks, Search โ€” each gets an icon in the toolbar
4
Set the behavior: open one at a time (recommended) or allow multiple
๐Ÿ“‹ Widget Controller settings
  • Display: Icon only, Icon + label, or label only
  • Placement: Where the tool panel appears relative to the toolbar
  • Only open one: When one tool opens, others close. Keeps the UI clean.
  • You can set a default open widget so one tool is visible when the app loads
๐Ÿ’ก When to use what

Accordion = tools in a sidebar (vertical, always visible space). Widget Controller = tools overlaying a map (compact, icon-driven). Choose based on whether you have dedicated sidebar space or not.

Lesson 9

Headers and footers

Headers stay at the top of every page. They're the perfect place for your app title, logo, navigation, and login widget.

1
Open Page settings (click the page in the outline, or the gear icon)
2
Toggle on Header โ€” a header bar appears at the top of your page
3
Drag widgets into the header: Image (for logo), Text (for title), Menu widget (for page navigation)
๐Ÿ”‘ Header tips
  • The header is shared across all pages โ€” design it once, it appears everywhere
  • Set a fixed height (usually 56-72px) to keep it compact
  • Use a Flow Row inside the header to align logo left, title center, buttons right
  • The Menu widget auto-generates page navigation links โ€” add it to the header for multi-page apps
  • The new Login widget (Oct 2025) is perfect for the header โ€” let users sign in/out
Lesson 10

The Flow Row โ€” flexible horizontal layout

Added in February 2025, the Flow Row is different from the regular Row. Instead of a rigid 12-column grid, it positions widgets in a continuous flow โ€” like inline elements in a web page.

Regular Row

12-column grid. Fixed proportions. Resizing one column affects others. Best for major layout divisions.

Flow Row

Continuous flow. Widgets auto-adjust when siblings are removed. Best for button bars, icon groups, header content.

๐Ÿงช Use Flow Row for headers

Inside your header: Flow Row โ†’ Image (logo, fixed width 120px) + Text ("My App Title", flexible) + Button ("Help") + Login widget. They align horizontally and space naturally. Much easier than fighting with a 12-column Row for header content.

Lesson 11

Sections and Screen Groups

These two containers let you show different content in the same space โ€” like tabs or a slideshow. They're how you avoid creating too many pages.

๐Ÿ“‘

Section

Multiple "views" in one container with navigation dots or arrows. Like a carousel. Good for step-by-step workflows or alternate views of the same data.

๐Ÿ“ฑ

Screen Group

Multiple "screens" in one container that can be triggered by buttons or widget actions. More control than Sections. Think of it as a mini-app within your app.

๐Ÿ“‹ When to use which
  • Section: User-browsable views with built-in nav (dots/arrows). Best for: image galleries, step-by-step guides, info panels.
  • Screen Group: Programmatically controlled views triggered by buttons or data actions. Best for: tabbed interfaces, conditional content, multi-step forms.
  • Pages: Completely separate layouts with unique URLs. Best for: fundamentally different app functions (Dashboard page vs. Report page vs. Help page).
Lesson 12

Fixed vs Scrolling content

In a fullscreen page, you often want some things to stay put (map, header) while other things scroll (a panel of results). The key is understanding how Column overflow works.

๐Ÿ”‘ The overflow trick
  • A Column can be set to scroll when its content exceeds its height
  • Set the Column to a fixed height (or let it fill its container), and content that overflows will scroll
  • This means: put your scrolling content (List, Table, filters) inside a Column within a fixed-height Row section
  • The map stays fullscreen and fixed. The sidebar Column scrolls independently.
๐Ÿ’ก The classic pattern

Sidebar layout โ†’ Main area: Map (fills space, doesn't scroll) โ†’ Sidebar panel: Column set to fill height with overflow:scroll โ†’ Inside the Column: lots of widgets that scroll within the sidebar while the map stays fixed. This is how every professional EB dashboard works.

๐ŸŽ“ Intermediate section complete!

You now have: responsive design cascade, Widget Controller toolbar, headers/footers, Flow Row, Sections vs Screen Groups, and the fixed/scrolling pattern. These are the layout techniques that separate beginner apps from professional ones.

Production Patterns

Templates, app state management, page visibility, embed widget patterns, and the layout recipes we use for real Red Cross disaster operations.

Lesson 13

Templates โ€” save and reuse your layouts

Once you've built a layout you like, save it as a template so you never start from scratch again.

1
Build your app with the layout, widgets, and styling you want as your base
2
Go to the app's item page in ArcGIS Online (Content โ†’ find the app)
3
In Settings, mark it as a template
4
Now when you create a new EB app, your templates appear in the gallery under "My templates"
๐Ÿ”‘ Template strategy for organizations
  • Create a "Starter Dashboard" template with your org's header, branding, and common widget layout
  • Create a "Field Ops" template with map + mobile-friendly sidebar for field staff
  • Create a "Public Info" template for public-facing apps with scrolling layout and no login required
  • Share templates with your org group so everyone starts from the same professional foundation
Lesson 14

Page visibility and role-based access

New in October 2025: you can restrict who sees specific pages based on their ArcGIS user type or group membership. Combined with the Login widget, this lets you build multi-audience apps.

๐Ÿ“‹ How it works
  • In page settings, find Page visibility restriction
  • Set it to restrict by user type (Creator, Editor, Viewer) or group (specific ArcGIS group)
  • Users who don't meet the criteria simply don't see that page in the navigation
  • Combine with the Login widget in the header for a complete auth flow
๐Ÿฅ Red Cross example

Page 1 (public): Shelter locations map โ€” anyone can see it. Page 2 (restricted to "EOC Staff" group): Operational dashboard with shelter capacity, resource tracking, volunteer assignments. Same app, different audience, one URL.

Lesson 15

The Embed widget โ€” apps within apps

The Embed widget lets you put other web content inside your EB app: ArcGIS Dashboards, Survey123 forms, YouTube videos, external websites, or even other EB apps. It's an iframe under the hood.

๐Ÿ”‘ Embed patterns
  • ArcGIS Dashboard embed: Use for complex dashboard visualizations that EB can't replicate natively
  • Survey123 embed: Add data collection forms directly in your app
  • Help documentation: Embed an HTML help page (use the experience-builder-help-creator skill to generate it!)
  • Video tutorials: Embed YouTube or training videos on a help page
  • External sites: Show FEMA resources, NWS forecasts, or any web tool inline
โš ๏ธ Embed limitations

Not all websites allow embedding (they block iframes via X-Frame-Options). ArcGIS products generally allow it. External sites may not. Also, if embedding secure content, use the Login widget with the "Redirect to sign-in page" option โ€” the pop-up window option doesn't work for Embed widget authentication.

Lesson 16

App state โ€” remembering where the user was

New in June 2025: EB can now restore app state. This means if a user zooms the map, opens a sidebar, and filters data, they can get a URL that preserves all of that. Incredibly useful for sharing specific views.

๐Ÿ“‹ What gets preserved
  • Map extent (zoom level and center point)
  • Layer visibility states
  • Filter selections
  • Sidebar open/closed state
  • Active page and screen group view
๐Ÿฅ Operational use case

An EOC coordinator zooms to Hurricane impact zone, filters shelters to "Open" only, opens the resource panel. They copy the URL and paste it in a Slack channel. Everyone who clicks that link sees exactly that view. No "okay now zoom to Florida and click the filter..." instructions needed.

Lesson 17

Layout recipes for disaster operations

After building dozens of operational apps, here are the layout patterns that work best for real-world disaster response.

๐Ÿ“Š

EOC Dashboard

Layout: Fullscreen โ†’ Header (logo + title + Login) โ†’ Sidebar (right, default open) โ†’ Map in main area โ†’ Sidebar: Column โ†’ Accordion with Summary stats / Shelter List / Resource filters

๐Ÿ“ฑ

Field App

Layout: Fullscreen โ†’ No header (maximize map space) โ†’ Map (full) โ†’ Widget Controller floating on map with: Search, Bookmarks, Edit, Directions. Sidebar: collapsed by default, contains Layer List + Filters.

๐Ÿ“‹

Public Info Hub

Layout: Scrolling page โ†’ Header (logo + Menu) โ†’ Hero section with Text + Image โ†’ Map section (fixed height, e.g. 500px) โ†’ Scrolling content below: shelter locations List + resource info Text blocks + Footer.

๐Ÿ“ˆ

Situation Report

Layout: Multi-page โ†’ Page 1: Dashboard overview (map + key metrics) โ†’ Page 2: Detailed tables (Table widget full width) โ†’ Page 3: Charts and trends โ†’ Shared header with page Menu for navigation.

๐Ÿ“š Related guides
  • Arcade guide โ€” make your widgets data-driven with dynamic text, styling, and icons
  • Data & Widgets guide (coming) โ€” deep dive on List, Table, Chart, Filter configuration
  • Actions guide (coming) โ€” make widgets communicate with each other
  • Themes guide (coming) โ€” apply consistent branding across all your apps
๐Ÿš€ You finished the Layout guide!

You've covered every major layout concept in Experience Builder โ€” from basic pages and rows all the way through responsive design, Widget Controllers, sections, templates, role-based pages, embed patterns, app state, and operational layout recipes. This is the foundation for everything else in the EB Field Guide.