Guides

/

Dashboards and Linked Views

Dashboards and Linked Views

Charts in the same browser document can synchronize view ranges without round-tripping every pan or zoom through Python. Give them the same link_group and choose the synchronized axes with link_axes.

Use unique group names for independent dashboard regions. Link only x when panels share time but use different y units. Facet domains remain independent at runtime by default; opt into synchronized navigation with facet_chart(..., link="x"), link="y", or link="both". link=True is a convenient alias for link="both", while False and None disable runtime axis linking. A linked axis also shares its initial domain, even when its matching share_x/share_y flag is false. Set link_select=True to echo the same data-space brush predicate and selection highlighting across the facet panels.

Application-Driven Coordination

Range linking is browser-local. For a stateful dashboard, use on_select or on_view_change to send a small semantic payload to the host application, update filters there, and build the affected state-backed charts. XY does not silently apply an arbitrary cross-filter to unrelated datasets.

Standalone HTML can link ranges and retain local interactions, but it cannot invoke Python callbacks. Notebook widgets and the Reflex live tier can.

Many Charts and the Context Budget

Browsers cap the number of live WebGL contexts on a page. XY's client keeps a default budget of 12: least-recently-visible off-screen charts can be snapshotted and release their contexts, then reacquire one when they return to view or receive pointer interaction.

This makes dashboards with more than 12 total charts practical; it is not a promise that an unlimited number can remain simultaneously visible with live GPU contexts. A layout that keeps more than the budget visible at once can still trigger browser-side context eviction.

For dense dashboards:

  • Virtualize or paginate panels that are not visible.
  • Prefer facets when panels share one data and layout contract.
  • Give each chart an explicit height so responsive layout does not collapse.
  • Inspect memory_report() and avoid retaining unbounded streaming history.
  • Test scroll recovery and interaction on the browsers used in production.
Built with Reflex