# What changed in altair

> 63 changes in altair 5 to 6 from its official release notes, upgrade guides and advisories: 17 breaking, 4 deprecations, 8 new APIs and options. Each one cited. Sources checked 2026-11-12. HTML: https://unstale.sh/pypi/altair/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## altair 6

### Breaking changes

- Invalid property setter arguments now raise TypeError instead of being silently discarded. (6.3.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.3.0)
- Support for Python 3.10 is dropped. (6.3.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.3.0)
- Python 3.9 is dropped; the release also adds pandas 3 compatibility. (6.1.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.1.0)
- The default stack order of marks like bars and areas is now aligned with the color domain. (6.1.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.1.0)
- Parameter and view names are now hashed. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)
- Altair now compiles against Vega-Lite 6, specifically 6.1.0, so projects must use Vega-Lite 6 or later. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)
- The minimum required vegafusion version is now 2. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)

### New APIs and options

- Signals and params can now be passed to alt.datum[...] directly, instead of interpolating a parameter name into a string. (6.3.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.3.0)
- Expression objects now work as arguments to alt.value(). (6.3.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.3.0)
- Adds the ensure_ascii option to to_json(), with a default of False. (6.1.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.1.0)
- A new datasets module provides lazy access to datasets from vega-datasets. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)

### Behavior and default changes

- The olli integration is updated to v3. (6.2.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.2.0)
- Layering simple faceted charts that define the same facet variables is supported, instead of requiring layering before faceting. (6.1.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.1.0)
- Interactive charts automatically change the cursor to pointer to indicate they can be interacted with. (6.1.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.1.0)
- Tooltips now support newlines. (6.1.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.1.0)
- The `height` and `width` types changed from `int` to `float`. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)
- Altair expressions now allow NumPy scalar values. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)
- Altair is now thread-safe, and specifications should remain stable after re-running. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)
- Altair now emits a warning for deduplications. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)
- The editor can now be opened without validating the specification. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)
- The `.changed` property is now optional in `JupyterChart`. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)
- MaxRowsError messages now show `user_rows`. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)
- ValidationError messages now show Python types, providing more information when validation fails. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)

### Tooling

- Altair adds ty type-check support. (6.2.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.2.0)

### Fixes and other changes

- Missing anywidget is now reported for JupyterChart. (6.3.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.3.0)
- Avoids view name collisions in layered concatenations. (6.2.2) — [release notes](https://github.com/vega/altair/releases/tag/v6.2.2)
- Includes layered concat views in selection parameters. (6.2.2) — [release notes](https://github.com/vega/altair/releases/tag/v6.2.2)
- Dataset cache files are now written atomically. (6.2.1) — [release notes](https://github.com/vega/altair/releases/tag/v6.2.1)
- Params are propagated to the outer level after add_params in concat charts. (6.2.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.2.0)
- Fixes type issues with Chart mark methods. (6.1.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.1.0)
- Fixes type issues with Chart save methods. (6.1.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.1.0)
- Fixes typing issues for mypy 1.18 and above. (6.1.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.1.0)
- Preserves polars datetime timezones during serialization. (6.1.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.1.0)
- Identical specs that use different data now receive unique hashes. (6.1.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.1.0)
- Fixes non-unique view names per concat cell and corrects param.views. (6.1.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.1.0)
- Altair now accepts ZoneInfo(key='UTC'). (6.1.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.1.0)
- The typing for `ChartType.data` was corrected to resolve an LSP violation. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)
- The `&`, `|`, and `~` operators now preserve the empty property. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)
- The overload no longer incorrectly indicates that `True` is the default for `strict`. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)
- Altair now provides support for Python 3.14. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)
- Vega export was repaired. (6.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v6.0.0)

## altair 5

### Breaking changes

- The altair.sphinxext module has been removed; the altair-plot Sphinx directive is now part of the sphinxext-altair package. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- Escape colons in column names to avoid ambiguity with encoding types, for example "column\:name" instead of "column:name". (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- The deprecated datasets.py module has been removed. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- Specify a selection parameter's empty keyword argument as True or False instead of all or none, respectively. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- Ordered pandas categorical data are automatically encoded as sorted ordinal data. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- Parameters are introduced, including variable parameters and selection parameters, enabling interactive charts and replacing much of the old selection terminology. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- In many cases, replace the selection keyword argument with param, such as when specifying a filter transform. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- The Vega-Lite 3 and 4 wrappers have been removed. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- Rendering in Vega mode is deprecated, although saving a Chart as Vega format remains allowed. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- The default chart width changed from 400 to 300. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)

### Deprecations

- add_selection is deprecated; use add_params instead. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- The init keyword argument for a parameter is deprecated; use value instead. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- Use selection_point in place of the deprecated selection_single and selection_multi APIs. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- For point selections, use type=point instead of the deprecated type=single or type=multi. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)

### New APIs and options

- Experimental DataFrame Interchange Protocol support is available through the __dataframe__ attribute and requires pyarrow>=11.0.0. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- Channel options can be set with method-based syntax, such as alt.X(...).bin(...), alongside the existing attribute-based syntax. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- Offset channels support grouped bar charts and jitter. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- Set width="container" for responsive charts when saving to HTML or using the default html renderer. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)

### Behavior and default changes

- HTML chart saving supports inline output without requiring altair_saver to be installed. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)

### Fixes and other changes

- Displaying a chart no longer changes the shorthand syntax in the stored spec. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- disable_debug_mode is fixed. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
- A webdriver issue affecting Firefox's geckodriver is fixed. (5.0.0) — [release notes](https://github.com/vega/altair/releases/tag/v5.0.0)
