npm / @grafana/scenes
@grafana/scenes
What changed in @grafana/scenes 6 to 8, from its official release notes, upgrade guides and advisories. Also covers @grafana/scenes-react. Sources checked 2026-10-18.
6 breaking26 new APIs and options1 performance16 behavior and defaults104 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@grafana/scenes 865 changes
Breaking changes 1
The global default option changes to render before activation, preventing flickering.
New APIs and options 9
Adds the ${__theme} macro for accessing theme tokens.
VizPanel adds a runtime transformations API.
Supports transformations provided by the system and URL, allowing developers to use those transformations with SceneDataTransformer.
Adds the $__namespace macro.
Exports POST_STORM_WINDOW from SceneRenderProfiler.
Adds an All value option for dashboard default filters.
Adds a content-fit rendering mode for VizPanel.
The viz panel renderer now includes data-testid, allowing developers to identify it in tests.
VizPanel supports a new subtitle prop.
Behavior and default changes 8
Filters now allow All interpolation.
SceneTimePicker hides time settings based on new state.
Forwards value meta to the filter.
QueryVariable fans out metric-find across multi-value datasource variables.
UrlSyncManager supports removing URL state for removed scene objects.
Fans out a multi-value datasource variable feeding an expression.
Dashboard error and notice status items are pushed into the panel header.
AdHocFilters supports free-form filter expression input in the combobox.
Fixes and other changes 47
Fixes a groupBy dismissal bug in filters.
Panel cleanup now preserves runtime transformation source values.
Translations were downloaded from Crowdin.
Fixes the duplicate input id for group by.
Adhoc filters use the component height theme token.
Moved PanelContextProvider above PanelChrome in dashboards to fix panel context behavior.
Undo/redo support for scene objects is fixed, so developers can use undo and redo with scene objects.
CustomVariable no longer keeps a value after its dependency clears.
Fixes the incorrect border color.
Match-all pills are no longer rendered as disabled.
Localizes the native All option label.
Adds an assistant button to the panel status popup.
Empty groupBy values are no longer stored.
Fixes the variable getting out of sync when the selection is cleared.
Fixes the picker staying empty after clearing the selection.
Surfaces query errors reported only through data.errors.
Fixes secondary query behavior.
The alert icon now links to its alert rule.
Fixes focus state when visual refresh is enabled.
Adhoc/GroupBy no longer applies variables to queries when applyMode is manual.
Shows a warning when the comparison is empty.
Shows the “show more” pill text before truncating it.
Adds data-plugin-id to the render boundary.
SceneTimeRangeCompare’s timeShiftAlignmentProcessor is now non-mutating and exported for use by developers.
Invalidates the fieldConfig cache on variable changes when variables are used.
Filters now propagate scopes and dashboard level filters to section vars.
Refresh is disabled when the scene is in image render mode.
Prevents stale cleanup from clobbering the enabled state.
Keys used in filters can now be reused in groupBy.
Ad hoc filter variables support per-key interpolation.
Filters no longer pass origin filters that are not applicable.
Fixes a name mismatch for the scope variable queryparam.
Passes sampled field names into arrayToDataFrame.
Filter key fetching waits for other variables to load first.
Fixes an issue with the multi value select on mobile.
Improves validation for filter origins.
Fixes the broken testId attribute.
Fixes getValue on ScopedVars.
Improves the error message shown when a panel plugin is out of date.
Panel dragging is prevented in view mode.
Fixes setting the wrong original filter value.
Skips legacy CircularDataFrame frames when clearing previous data.
Tab applies the filter and moves focus to the next focusable element.
Fixes the stale operator list shown in the free-form expression input.
VIzPanel now adds the data-viz-panel-id attribute, allowing developers to identify the panel in the DOM.
Incomplete filters are no longer stored in recents.
Filters now report interactions through behaviour.
@grafana/scenes 739 changes
Breaking changes 4
The adHoc API no longer has the wide-input prop.
Support for Datagrid was dropped ahead of deprecation.
rxjs is now a peer dependency because its types are brittle.
@grafana/scenes and @grafana/scenes-react now define package exports, exposing only specific files and blocking access to package internals; this is a breaking change.
New APIs and options 6
Adhoc introduces default groupbys.
The AdHoc UI adds groupby support and a unified UI.
Extended the Adhoc controller and variable to support the group-by operator, without adding UI.
Adds SetExactly mode to the series visibility config factory.
Adds getOriginalFilters as a public API on AdHocFiltersVariable.
Adds setOriginalFilters as a public API on AdHocFiltersVariable.
Behavior and default changes 2
Filters default to the combobox layout.
Clears the running query count when deactivated.
Fixes and other changes 27
Variables options search is case-insensitive, so searches no longer depend on letter case.
Clears incomplete data on deactivation to prevent stuck panels.
Adds time range validation when zooming or moving the time range backwards and forwards.
Checks metadata when deciding whether to emit transformation data, correcting the emission decision.
Dashboard filter settings are preserved when editing a panel.
Fixes interaction with multi-value filter pills.
Fixed datasource-template runtime routing for multi-select fan-out.
The controller method for adHoc is optional, so implementations do not need to provide it.
Introduces clearPreviousFieldValues to mitigate a React fiber memory issue.
Improves accessibility for Variables.
Filters: NonApplicability adapts to the unified experience.
Matchall filters are no longer passed to getKey methods.
Filters recommendations now use unified adhoc.
Groupbys are unified with filters in SQR.
Preserves value labels when storing and restoring origin filters.
Fixes URL sync instability for duplicate variable names.
Improved the collapsible state for Adhoc.
The collapse button announces the row title.
Deduplicates filters in AdHocFiltersRecommendations.
Fixes filter values for AdHocFiltersVariable.
Recommendations are shown only when the data source supports them.
Makes the self-referencing variable check more general.
Fixed groupBy variable update logic.
Passes featureToggles into applyFieldOverrides.
Adds backwards compatibility for custom variables that reference themselves.
SQR still emits when requestId changes, even if the data is identical.
GroupByVariable now subscribes to defaultValue updates and synchronizes them to value.
@grafana/scenes 649 changes
Breaking changes 1
Removes the tab inactive frame detection backup mechanism from SeneRenderProfiler.
New APIs and options 11
Adds ControlSourceRef to the variable state.
Adds a bulk validation method for origin filters.
@grafana/scenes adds support for ad hoc filters, groupby, and localvalue.
AdHocFiltersVariable supports custom placeholders.
Adds allValue to variables.
Adds the requestIdPrefix option to SceneQueryRunner.
Introduces the regexApplyTo variable field.
Variables support object values with multiple properties.
AdhocFiltersVariable exposes originFilters in links.
Adds a placement property to Data Layers.
Adds a panel-level performance attribution system.
Performance 1
Fixes a performance issue with the unique key logic in UrlSyncManager.
Behavior and default changes 6
GroupBy defaults to the old key retrieval method.
GroupByVariable now uses a new datasource API method.
AdHocVariable adds a collapse button and a clear all option.
Supports datasource drilldown recommendations and recent drilldowns.
Filters add per-panel non-applicable pills.
Decoupled AdHocFiltersComboboxRenderer from AdHocFiltersVariable, allowing the renderer to be used independently.
Fixes and other changes 30
AdHocFilters exposes a way to get the original value of a default filter.
GroupByVar allows the current value to overwrite the default value.
SQR tries to preserve referential equality when data hasn't changed.
Fixes context macros.
Gets the datasource from queries when it is not on the panel.
Deduplicates properties indices when converting a QueryVariable to metric find values.
Variables options search now uses stricter input matching.
Filter values are no longer escaped in Preview.
Removes height when the grid is empty.
Fixes backspace key not removing filters properly.
SceneQueryRunner handles undefined state.data in cancelQuery.
Parsing data frames now always adds the numeric value field to MetricFindValue properties.
MetricFindValue parsing now allows numeric value fields.
Fixes setting the active index for grouped labels in AdHocVar.
Adds subs to filters and grouping changes in filtering recommendations.
CustomVariable preserves all JSON properties in options.
VizPanelMenuRenderer now provides PanelMenuItem.target.
Changes the Switch variable ID so it does not overlap with the dashboard control label.
Fixes text formatting for variables with multi-props.
Fixes breaking behavior in toMetricFindValues for variables.
Variable UI optimisations improve the GroupBy variable interface.
When a dashboard URL carries an invalid refresh value, the value is rounded down to the nearest valid refresh interval instead of defaulting to the minimum allowed value.
Fixes the applicability check on drilldown variables.
VizPanel no longer passes an empty array to titleItems.
Fixes urlSync issues that caused wrong interpolation in queries.
Switch Variable adds an id for the input.
Fixed UrlTimeRangeMacro so dashboard links preserve the browser timezone.
RefreshPicker text is translated, making it available in internationalised interfaces.
Preserves float gridPos values in SceneGridLayout.
Fixes rounding on old-style adhoc filters.