Dash 1.0

Dash has been in active development for more than two years. In that time
we’ve seen it evolve into a robust framework with a worldwide community of
users. As we continued building Dash, talking and working with Dash users,
we developed new features that obsoleted old ones, discovered which
settings are awkward or confusing to new users, and overall accumulated a
lot of ideas for how to improve the experience of building Dash apps.

A lot of these ideas have already been built into Dash. Sometimes they
require changes that break backward compatibility. When these changes were
small enough we added them anyway - we’re still on major version 0 so
SemVer allows breaking changes after all - but
others we still held back because we expected them to impact too many
users.

Dash version 1.0, in addition to various new features and upgrades we
discuss elsewhere, collects those breaking changes all in one release.
With it we are affirming the maturity and stability of the Dash and
Dash component API. After making this migration, which we expect will
impact a sizable fraction of Dash users in one way or another, Dash will
not introduce any breaking changes unless and until we bump the major
version again. That commitment includes the public API of the whole Dash
“core”: , , ,
and .

Here are the changes Dash developers need to know about to transition apps
from v0.43 (the last release in the v0.x series) to v1.0.


dash

Removed undo/redo buttons

The undo & redo buttons in the corner of every app are removed by default,
but if you want to re-enable them, set:



dash_table

Lots of properties are renamed and/or restructured for better
self-consistency and extensibility.

Old Prop New Prop Notes
column.clearable dropdown*.clearable clearable is a property of dropdowns, not really of columns. So it has moved into dropdown, dropdown_conditional, and dropdown_data.
column.deletable For multi-line headers, accepts an array of booleans rather than a number. For example, if there are multiple headers and you want the second header row to be deletable, this would be [False, True].
column.hidden REMOVED Will be added back later in a different form. Follow dash-table#314 for updates.
column.id Accepts strings only; numbers can be cast to string.
column.options dropdown Similar to clearable, options is a dropdown property, not a column property.
column.editable_name column.renamable Similar to deletable, for multi-line headers, accepts an array of booleans rather than a number.
column_conditional_dropdowns dropdown_conditional Still an array of objects, but structure changed to {clearable: boolean, if: {column_id, filter_query}, options: array of {label, value}}.
column_conditional_tooltips tooltip_conditional Just renamed, structure is unchanged.
column_static_dropdown dropdown Changed from an array of objects to an object of objects. Keys are column IDs, values are {clearable: boolean, options: array of {label, value}}.
column_static_tooltip tooltip Renamed, values are unchanged.
content_style REMOVED Deemed unnecessary. NOTE - This was added back in 1.0.2 (dash-table==4.0.2) under the name the “fill_width” property name.
dropdown_properties dropdown_data Structure changed to match data: an array of objects, keys are column IDs, values are {clearable: boolean, options: array of {label, value}}.
derived_filter_structure derived_filter_query_structure Just renamed, values are unchanged.
filter filter_query Renamed, values are unchanged.
filtering filter_action Values changed: 'fe' is now 'native', 'be' is now 'custom', and false is now ‘none'
n_fixed_columns fixed_columns Now accepts an object {headers: boolean, data: number} instead of a number. headers=True fixes all row action columns (select/delete), data is the number of data columns to fix after the headers.
n_fixed_rows fixed_rows Now accepts an object {headers: boolean, data: number} instead of a number. headers=True fixes all header rows, data is the number of data rows to fix after the headers.
pagination_mode page_action Values changed: 'fe' is now 'native', 'be' is now 'custom', and false is now ‘none'
pagination_settings page_current, page_size Split this nested property into two separate top-level properties.
sort_type sort_mode Renamed, values are unchanged.
sorting sort_action Values changed: 'fe' is now 'native', 'be' is now 'custom', and false is now ‘none'
sorting_treat_empty_string_as_none sort_as_null Now accepts an array of string, number or booleans that can be ignored during sort. Can also be set per column with column.sort_as_null.
style_data_conditional Renamed nested prop if.filter to if.filter_query.
tooltips tooltip_data Structure changed to match data: an array of objects, keys are column IDs, values are {delay, duration, type, value} as before.

Additional notes

style_cell_conditional: In prior versions if.row_index was evaluated for this prop but should not have been.
Use style_data_conditional and style_header_conditional instead for if.row_index based styling.