Story Map Cascade
The Story Map Cascade℠ app lets you combine narrative text with maps, images, and multimedia content in an engaging, full-screen scrolling experience. In a Cascade story, sections containing text and in-line media can be interspersed with "immersive" sections that fill the screen with your maps, 3D scenes, images, and videos. Cascade is ideal for making compelling, in-depth stories that are very easy for people to navigate.
- Feedback / support
- Customize the look and feel
- Developer guide
A Cascade story can be created from ArcGIS Online, from the Esri Story Maps website, or from ArcGIS Enterprise. The Cascade story's data are stored in a Web Application Item. This repository provides the application source code for developers who want to customize the application.
First, create your Cascade story in ArcGIS using the step-by-step tutorial. Once your story is ready, you have to find its ID in ArcGIS. The ID is a 32 character string that you will find in your web browser's address bar when you are viewing your story.
- Download the application
- Deploy the application on your webserver. See FAQ for details
- Edit index.html, find the configuration section on line 47 and paste in your application ID
- Navigate to index.html (e.g.,
You can continue to use the builder in ArcGIS to modify your story.
If you are using ArcGIS Enterprise, please follow the instructions at the end of
app/config.js to configure the application.
Feedback / support
We would love to hear from you!
- StoryMaps Website
- Story Maps community forum
- Let us know about your story
- Story Maps Developers' Corner
- ArcGIS Blog
When you contact us, don't hesitate to include a link to your application to make it easier for us to understand what you are working on.
What are the supported browsers?
Cascade stories are supported on Internet Explorer 11 and above, Chrome, Firefox, Safari and the most recent tablet and smartphone devices.
Cascade authoring is supported on a desktop computer for Chrome, Firefox, and Safari. We are considering support for other browsers.
We actively test the application in all major browsers but if you experience difficulties, especially with the builder, we recommend that you use Chrome.
Tips for your content
Can I keep my story private?
Yes, the regular ArcGIS security model applies. By default your story is private, you can share it through Cascade builder or ArcGIS. When you share your story through the Cascade builder, its maps and layers will also be shared if you own them or have privileges to share them. You will still need to make sure webscenes and embedded apps are accessible to your audience when you share, as they are not shared automatically with the story.
Can I use private web maps or layers?
When the story is hosted in ArcGIS Online or ArcGIS Enterprise, users who don't have access to the story or a web map used in the story will be redirected to the ArcGIS sign-in page. It is not possible to display an authentication dialog in the application when it's hosted in ArcGIS.
When the story is hosted on your web server, by default an authentication dialog will appear inside the application. But we recommend that you configure the application to use OAuth. OAuth 2.0 based authentication is available for ArcGIS Online users with developer or organizational accounts and ArcGIS Enterprise users. Follow this procedure to add and register an application to get an OAuth application ID. Once you have that application, open
index.html, locate the
configOptions section and fill the
If you are using secured services but don't want users to have to authenticate, you can use a proxy to store the username/password to be used, see Working with Proxy Services, and add proxy rules to specify what services need to use the proxy by editing
Deploying a Cascade story requires use of ArcGIS Online or ArcGIS Enterprise. The Cascade content must be created using the Cascade builder and will live in a Web Application Item.
Can I use the template without ArcGIS Online or ArcGIS Enterprise?
This is not a supported use case at this time. Please let us know if you are interested in such a scenario.
Where is the data stored?
The Cascade data are stored in a Web Application Item in ArcGIS Online or an ArcGIS Enterprise portal. This includes the narrative content, reference to any media used (web maps, web scenes, pictures, audio, videos, web pages), and app-wide settings.
The images, audio, and videos that you include in your story using the builder are not loaded into ArcGIS unless you upload them through the ArcGIS option. You have to make sure that those medias that are stored on other services are, and will remain, accessible to your audience.
Can I deploy Cascade using ArcGIS Enterprise?
Yes, Cascade is included with ArcGIS Enterprise starting at version 10.5.1.
Can I use the builder if I host the app on my own web server?
Yes, when the story is configured with an application ID, adding the URL parameter
edit will open the builder. You will be prompted for user authentication.
How do I deploy the application on a web server?
If you are not familiar with web servers, here are some solutions:
- Use the web server that comes with your Operating System. On Windows, this is Internet Information Services (IIS); if you have a
C:\inetpub\wwwrootfolder on your computer, you should be able to access its content using
- On Windows or Mac OS, use a simple web server like Mongoose (not recommended for production)
If you are experiencing some rendering issues like improper symbols appearing instead of icons, you will have extra configuration to perform. Some servers require the configuration of a new mime type to be able to serve Cascade fonts correctly. See the following links for more information:
Can I use a single deployment of Cascade for multiple stories?
Yes. If you have customized the application and deployed it on your server, you don't need to copy it multiple times, edit index.html and paste a different application ID for each story you want to publish.
index.html, locate the
configOptions section and fill the
authorizedOwners property with the ArcGIS Online or for ArcGIS login of the owner(s) of the story you want to use. This makes it possible for the application to display any of stories created by the specified user(s) through a URL parameter.
Example of the same application displaying two stories:
In addition to the configuration offered by the builder, the file
app/config.js provides various additional settings. This is for example the place where you can override some settings like the list of Geocoder services to be used (changes override ArcGIS Online or your Organization default settings). See the documentation provided in that file for more details.
Customize the look and feel
Cascade currently offers a light and dark theme and the option to choose between four different fonts. Other look and feel customizations can be done using the regular application download and including the css/html overrides directly into
style tag is already present for you in
index.html (search for
/* CUSTOM CSS RULES */).
viewer-min.js, ...). In addition to being hard to edit, this will make application update complex for you.
If you want to change the behavior of one functionality or want to add new one, follow the developer guide below.
For more infomation about using and customizing Esri's Storytelling Apps follow the Story Maps Developers' Corner.
Application life cycle
Cascade fires events that allow customization with loose integration. This means that you don't need to understand the application internals to implement simple extensions.
To try those events, look in the file
In addition to the events described above, the story data, configuration and useful helpers functions can be accessed through the global variable
console.log("Story title", app.Controller.getStoryTitle()); console.log("Sections objects", app.data.sections); console.log("First section bookmark", app.data.sections.getBookmark()); console.log("First section text preview", app.data.sections.getPreviewText()); console.log("Sections display informations", app.display.sections); console.log("Second section vertical position (px)", app.display.sections.top); console.log("IDs of all the ArcGIS content in the story", app.Controller.getArcGISContent());
Clone the repository or download a copy of the repository as a zip file.
To build a production version of the application from the source code, you first need to install Node.js.
Then initialize the environment by running the following commands in the Cascade folder:
npm install –g grunt-cli
This will create a new
node-modules folder in your project root with all the tools required to build the application. If you have trouble running the second command, see this documentation on how to install grunt-cli locally.
How to use the application from the source code
- Make accessible the Cascade folder on a web server. Use your favorite server or run one with
grunt server; this will start a server on port
- If using an ArcGIS Enterprise portal, configure the
app/config.js(close to the bottom of the file)
- Run the following command:
- Navigate to index.html using the URL parameter
appidto specify the web item to be loaded, e.g.:
configOptions.appidis not supported in development mode)
- If you want to use a non-public story or the builder you need to configure an
index.html. Follow this procedure to add and register an application to get an OAuth application ID. Once you have that application, open
index.html, locate the
configOptionssection and fill the
How to build the application from the source code
- Open a terminal and navigate to the Cascade folder
- Run the following command:
The deploy folder now contains the built application that you can deploy to your web server.
Issues building the application
The build script performs code validation through ESLint. You can disable those validations by editing
Gruntfile.js -- look for the following comments
/* Comment out to disable code linting */.
The application is structured as follows:
|src/||Main source code folder with index.html|
|src/app/config.js||App configuration file (loaded at execution time)|
|src/app/storymaps/tpl/||Cascade modules (build configuration files in the root)|
|src/app/storymaps/tpl/builder/||Builder modules (main modules are Builder.js, BuilderView.js)|
|src/app/storymaps/tpl/core/||Core modules (main modules are Core.js, MainView.js)|
|src/app/storymaps/tpl/view/||UI components of the viewer and builder|
|src/app/storymaps/tpl/view/media/||Map, Scene, Image, Audio, Video, WebPage, Text|
|src/app/storymaps/tpl/view/section/||Cover, Sequence, Immersive and Title sections|
|src/app/storymaps/tpl/utils/||Utils, sharing, some external libraries|
|src/app/storymaps/issue-checker/||Issue checking utility (finds errors in story)|
|src/lib/||Dependencies (included in the final app)|
|src/lib-build/||Dependencies used by the build (not included in final app)|
The main dependencies are:
|app/viewer-min.css||Compressed CSS loaded when accessing the story as a viewer|
|app/builder-min.css||Compressed CSS loaded when accessing the story as an author|
|app/print-min.css||Compressed CSS loaded when accessing the story in print mode|
Depending on the URL parameters, index.html will load the corresponding files.
Find a bug or want to request a new feature? Please let us know by submitting an issue.
Esri welcomes contributions from anyone and everyone. Please see our guidelines for contributing.
Copyright © 2016-2018 Esri
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
A copy of the license is available in the repository's LICENSE.txt file.
Some open-source components of this project are licensed under other License terms, see
src/lib/ folder for respective license files.
|React||BSD with patent grant|
Additionally, The Unite Gallery open-source library is located at
src/app/storymaps/tpl/utils/UniteGallery.js. It is licensed MIT; those portions modified by the Story Maps team are licensed Apache 2.0 with the rest of this project.