[Upcoming] Explicit interaction syntax for Canvas Dashboard

Hi there! :wave:

We’re glad to share our upcoming explicit_interactions syntax for Canvas dashboard!

:fire: Why this feature?

Currently, canvas dashboards auto-links filters and charts sharing a dataset behind the scenes, and only record the exceptions in interactions syntax

That causes two real problems:

  • Bad experience for both human and AI - you can’t tell what a dashboard actually does from its code alone.
  • Long code files, especially on tabbed dashboards (every cross-tab pair needs its own disabled: true line) and disabled linked filters (every same-dataset filter pair you don’t want linked needs its own suppression line).

:bulb: What’s new

A new explicit_interactions list states every active connection directly, and name target blocks without CustomMapping wrapper needed.

:x: Before (old syntax)

Only the disabled links are visible, not the active connections

interactions: [
  FilterInteraction {
    from: 'f1'
    to: [
      CustomMapping {
        block: ['v3', 'v4']
        disabled: true
      }
    ]
  }
]

:white_check_mark: After (new syntax)

Active connections stated directly:

explicit_interactions: [
  FilterInteraction {
    from: 'f1'
    to: ['v1', 'v2']
    field: r(model.field)
  }
]

What’s written is what’s active - no hidden defaults to resolve.

:eyes: Migration

We don’t support mass conversion yet, but the transition is seamless:

  • New dashboards automatically use the explicit_interactions: syntax
  • Existing dashboards convert when you next update their control or cross-filter setup
  • The legacy interactions: syntax remains functional - no breaking changes.

:spiral_calendar: Timeline

We expect it live around mid-September.

What do you think of this update? Drop your thoughts below - we’d love to hear your feedback!:point_down: