Select to view content in your preferred language

Save Instance Widget

1588
19
04-29-2025 09:50 PM
Status: Open
Labels (1)
SvenJensen
Occasional Contributor

Hello everyone, my name is Sven. I’m a university student based in Vancouver, BC, currently pursuing a degree in Computer Science with a minor in Geographic Information Science (GIS).

Inspired by the Save Session Widget for WebAppBuilder I have created the Save Instance Widget for Experience Builder.

Visit my website JensenGIS to download the compiled widget, view the demo video and Github repository. I would really appreciate anyones feedback on the Save Instance Widget. Thanks!




Here is more information about the widget:

The Save Instance Widget lets you save and share the current state of your web map in Experience Builder — including extent, visible layers, basemap, graphics, and more. It's inspired by the classic Save Session Widget from Web AppBuilder, but built specifically for ArcGIS Experience Builder.

Installation

You can download the latest compiled version of the Save Instance Widget from JensenGIS.


Setup

Once downloaded, follow Esri’s guide on how to add custom widgets to your Experience Builder installation.

  1. Place the widget inside your /widgets directory.
  2. In Experience Builder, go to the Insert Widget tab and scroll down to the Custom Widgets section.
  3. Drag the Save Instance Widget onto your toolbar.
  4. Configure the widget by selecting a map for it to interact with.

That’s it — you’re ready to go.


Usage

Save an Instance

Enter a name for the instance and click the Save Instance button.
instanceName.png

 



 



 

Load an Instance

Click the Load Instance button to apply a previously saved map state.
instanceLoad.png

 

 

 

 

Rename an Instance

Click the Edit Instance Name button and enter a new name when prompted.
instanceRename.png

 

 

 

 

 
Download an Instance

Click Download Instance to export a .txt file containing that instance.
instanceDownload.png

You can also download all saved instances using the Download Instances button at the bottom right of the widget.

 

Clear Instance Graphics

Click Clear Instance Graphics to remove any graphics associated with the instance from the map.
instanceClearGraphics.png

 

 

 


I'd love to get instance-loaded graphics working with the Esri Draw Widget at some point. It’ll take a bit of setup, but if it’s something people are asking for, I’m happy to start looking into it — just let me know!

 

Delete an Instance

Click Delete Instance to permanently remove it from your saved list.
instanceDelete.png

 

 

 


Sharing Instances

To share a saved instance, simply send the .txt file to another user. They can import it using the Upload Instances button in the bottom-left corner of the widget.

In the future, I’d love to add support for cloud storage of instances — let me know if that’s something you’d use!

Bugs & Feature Requests

Have a bug to report or a feature idea?
Please open an issue on this GitHub repo or leave a comment on this post.

I’m also happy to hear requests for:

  • Migrating existing Web AppBuilder widgets to Experience Builder
  • Building new custom widgets for open-source release or for private use.

Stay tuned — more tools are coming soon!

19 Comments
AustinWolf1994

This is a really great widget. Awesome work, Sven! The only thing I think would be really useful with this widget is to overwrite Instances that already exist. For instance, if I open my instance (Austin's Instance) and move to a different spot or toggle the visibility of a few different layers, I would want to save my Instance with this widget without having to first delete and then save. 

SvenJensen

Hi @AustinWolf1994,

Thanks! I'm glad you like the widget.

Overwriting already saved instances is a great idea. I will implement this feature for the next release.
Thank you for your feedback!

Cheers,

Sven

Brian_McLeer

This is a great widget, thank you for releasing it! 

Brian_McLeer

Some feedback I would suggest is changing the dialogue boxes like this:

Brian_McLeer_2-1748626447275.png

To be something within the widget. This widget offers a function like this when the user clicks delete. 

Brian_McLeer_3-1748626558418.png

 

Some feedback I had with working @JeffreyThompson2 on the widget above was adding a user acknowledgment of local storage which the widget above has as well before automatically using local storage. Also a reminder for users that local storage is not a good solution for long term storage. 

Brian_McLeer_5-1748627451286.pngBrian_McLeer_6-1748627462069.png

 

Brian_McLeer

Other feedback request:

In the settings in developer edition, enable the option to have the clear instance graphics button be hidden or shown within the widget. If the application doesn't have the out of the box Draw tool, the button doesn't have anything to correlate with. 

Brian_McLeer_0-1748633994213.png

 

Brian_McLeer

Enhancement Request: Instances look to be transferrable to any application, not one particular application. I implemented the widget in two testing sites with different URLs, and the saved instance of 1 can be viewed in the other. The request is for saved instances to be unique per application (URL). 

SvenJensen

@Brian_McLeer,

Thank you for all this amazing feedback and creating GitHub issues! Your Custom Draw Widget enhancements are an inspiration, very cool.

I am excited to begin implementing your requested enhancements this week! I have been working on an hosted version of the widget and would love to hear your feedback on the idea. The hosted widget stores the user's saved instances on a secure web server, users can access instances from any device/browser and share instances simply by inputting another user's email. I would love to get this hosted version working with the Custom Draw Widget so users can seamlessly update and share graphics in realtime.

However as of right now the Save Instance Hosted is on pause as I will resolve the GitHub issues first.

Cheers!
Sven

Brian_McLeer

Thank you @SvenJensen for putting the time into this widget, I think many organizations will benefit from it! I like the idea of the Save Instance Hosted version. 

PierreloupDucroix

Hello @SvenJensen this looks great !

I am using ExB Dev Edition 1.17, I placed your widget in the client\dist-prod\widgets folder but cannot see it in the widget list. I also tried to place it in the \client\your-extensions\widgets folder and run npm run build:prod (but I don't think it is necessary since it is already built) with the same result.

Is it working in ExB developer edition ? Or only in the portal ExB version.

[EDIT] I found that a custom widget should be placed in the client\dist\widget (and not dist-prod) folder after it has been built. Then you have to modify the widgets-info.json file to add information and manifest about it.

Now it is working in the dev edition. And I wonder if you have plan to add translation.

Anyway, great job !