Update: FeedSimple now runs on Experience Builder 1.20 (r005.018)
FeedSimple has been rebuilt for Experience Builder 1.20. This release focuses on 1.20 support and on hardening how external feed content is rendered, rather than new feed features.
Experience Builder 1.20 / JSAPI 5.0 support
FeedSimple now runs natively on ExB 1.20 with ArcGIS Maps SDK for JavaScript 5.0.4, Calcite 5.0, React 19, and Node.js 24 (tested on 24.16.0). The migration covered the JSAPI 5.0 getId() change, replacing the __esri ambient namespace with explicit @ArcGIS/core ESM imports, Calcite 5.0 NumericInput value widening, and ImmutableArray prop widening for ExB's immutable state, with all TypeScript errors cleared to zero. Type-only changes, no behavior loss.
Note: this build targets ExB 1.20 and is not backward compatible with 1.19. If you are still on 1.19, the previous standalone release on the Releases page covers you.
Security hardening (matters most for feed content)
Because FeedSimple renders content from external feeds, the shared template engine now defends against injection from feed data:
• HTML escaping on every substituted field value, so markup in a feed cannot inject into the card.
• Dangerous URL scheme blocking (javascript:, data:, vbscript:) in markdown links, images, and external link templates. Unsafe links render as plain text.
These protections are inherited automatically from shared-code and are covered by a dedicated security test suite.
Shared template engine with QuerySimple
Since r004, FeedSimple shares its rendering with QuerySimple through shared-code: the same {{field | filter}} token syntax, 16 chainable pipe filters (date, math, text, autolink), markdown formatting, pipe-delimited tables, and the visual Table Builder in settings. One engine, identical behavior across both widgets.
Reminder: FeedSimple is standalone and does not depend on QuerySimple or HelperSimple, but it does require shared-code (since r004). Copy both feed-simple and shared-code into your widgets folder.
A quick recap of what FeedSimple does
• Universal XML parsing: flat XML, nested formats like QuakeML, RSS 2.0, ATOM, and GeoRSS.
• Markdown card templates with token substitution and chainable filters.
• Color coding by exact match or numeric range, with per-range map symbol overrides and a collapsible color legend.
• Feed map layer: a client-side feature layer built from feed coordinates, with bidirectional card-to-map sync and configurable markers.
• Spatial join to an existing feature layer, with click-to-zoom and popups.
• Search, runtime sort, show-more pagination, and configurable polling with new-item highlighting.
• Responsive design with separate mobile card and popup templates.
Get it
Latest release and downloads: https://github.com/MapSimple-Org/ExB-Simple-Public/releases/tag/QS-r028.122-FS-r005.018
Copy feed-simple and shared-code into your-extensions/widgets, then rebuild.
Tested on: Experience Builder 1.20.0, ArcGIS Maps SDK for JavaScript 5.0.4, Calcite 5.0.2, React 19, Node.js 24.16.0.
Feedback and issues welcome in this thread.