NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1501 most downloaded on PyPI
A Python framework for building reactive web-apps. Developed by Plotly.
Last release 13 days ago
21 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
219 releases · first in 2017
Added #3947 Make plotly-cloud a default install dependency of Dash instead of an optional extra, so the plotly CLI and Dash's cloud integration work o
plotly-cloud a default install dependency of Dash instead of an optional extra, so the plotly CLI and Dash's cloud integration work out of the box. The dash[cloud] extra is kept for backward compatibility.dash.ctx.shared_storage, started lazily and disabled with shared_storage=None. Ships LocalSharedStorage (default, in-memory with optional disk persistence), DiskcacheSharedStorage, and RedisSharedStorage for horizontally-scaled deployments; see .ai/ARCHITECTURE.md.async def generator callback streams its yields to the browser as they are produced (dash.Patch yields apply incrementally). A browser's streams share one SharedWorker-hosted connection so they do not count against the per-host connection limit; closing a tab cancels its streams.get_prop(..., path=...). Closes #3975.Input, Output, and State via partial_pattern=True, so dictionary ID patterns can match component IDs with extra keys and combine with ALL/MATCH wildcards. Fixes #3764.REACT_VERSION=19.2.4 or dash._dash_renderer._set_react_version("19.2.4"). Dash serves the umd-react package with a compatibility shim so component libraries built against React <=18 keep working; see .ai/ARCHITECTURE.md.compress_payload and compress_threshold callback parameters (default threshold 5,000 bytes), sending gzip payloads that Dash decompresses on Flask, FastAPI, and Quart. Fixes #3924.xPixel, yPixel) to dcc.Graph hoverData and clickData when hoveranywhere or clickanywhere is enabled in the figure.dcc.Markdown and dcc.Link as Typescript componentsdash.remount, a wrapper for a callback-returned component that forces the renderer to remount it (resetting its internal state) instead of reconciling in place: the explicit way to reset a stateful component from a callback without changing its id.16.14.0 is no longer an accepted value for REACT_VERSION / _set_react_version)._run_before_hooks in the fastapi backend to honor a response returned by a before_request function, matching the flask backend's behavior.dash.testing runner backend detection for wrapped FastAPI/Quart servers so threaded Flask-only options are not passed to ASGI runners.selenium in the testing requirements (was capped at <=4.2.0 from 2022) and require >=4.11.0, so it can drive current stable Chrome via Selenium Manager and stop the widespread CI flakiness.crawlLayout and its callers) by replacing curried-ramda path/pathOr lookups with direct property access on the hot path: ~16% faster Patch().append() into a large container, with no behavior change.MATCH/ALL/ALLSMALLER) callbacks getting quadratically slower as matching components grow; a new O(1) id->path index cuts an ALL update over 400 components from ~580ms to ~140ms (~4x), with no app changes.dcc.Upload would upload only the first file when multiple=Truedcc.Input(type="number") stepper behavior when only min is set.DASH_PROXY is honored by the external url and inline iframe in notebooks.dcc.Patch() re-running the initial callbacks of components already on the page (including every MATCH/ALL element) and wiping their user-edited persisted values. Fixes #3681 and #3937dcc.Markdown not rendering <dccLink /> by using newer dependenciesdash.remount to force a remount.dcc.Dropdown option labels, dcc.Tab labels) crashing or failing to update when the host subtree was replaced by a callback; out-of-tree ExternalWrapper components now re-insert themselves and update in place.dash-bootstrap-components Tabs) not applying it on first render, because descendant layout hashes were reset on the first fresh render (regression introduced in 4.2.0 by #3570).One column per quarter.
3883 Fix callbacks being registered twice when running the app file as a script with a server that loads it by import string, e.g. uvicorn.run("app:se
job/oldJob/cancelJob and cacheKey query parameters verbatim, which let an unauthenticated client terminate an arbitrary process (with DiskcacheManager, by sending its PID) or read and delete arbitrary result-cache entries. The cacheKey/job handles are now HMAC-signed by the server and bound to a per-page-load token, so forged or replayed values are rejected. Handles stay opaque to the renderer, so no app or callback code changes are required.uvicorn.run("app:server", reload=True) with backend="fastapi". The spawned worker re-executes the main module as __mp_main__ and the import string then executed the same file a second time, duplicating every callback in _dash-dependencies and triggering Duplicate callback outputs errors in the renderer. Dash() now pre-registers the running main module in sys.modules under its canonical import name so the second import reuses it instead of re-executing the file. Fixes #3818.CSRFProtect (and Quart-WTF) exemptions breaking after the backend refactor. The callback dispatch view is now exposed with the fully-qualified name dash.dash.dispatch again, so csrf._exempt_views.add("dash.dash.dispatch") works as it did in Dash 4.1.0. Fixes #3827.dcc.Graph user interactions (pan, zoom, edited shapes & annotations, ...) being reverted by a subsequent Patch update, by syncing all relayout changes back to the figure prop instead of only shapes. Fixes #3810.Drop support for Python 3.8 (end-of-life since October 2024). The minimum supported version is now Python 3.9.
ThreadPoolExecutor whose size is configurable via the new websocket_max_workers argument to Dash (default 4). A synchronous persistent (no-output) callback now warns at registration since it would tie up a worker thread.ContextVar values bound by ASGI middleware. copy_context() is now captured on the event-loop thread before the callback is submitted to the thread pool, instead of inside the worker thread where only default values were visible.dash.testing Browser.get_logs() returning None on non-Chrome webdrivers, which broke assertions like assert dash_duo.get_logs() == []. It now returns [], matching the Chrome code path.UnboundLocalError for user_callback_output in async background callbacks (Celery and Diskcache managers) when the callback raises PreventUpdate or another exception before the variable is assigned.RuntimeError: No active request in context when a non-Dash path falls through to the FastAPI catch-all route. Fixes #3812.mcp dependency with inline types.dash.testing ThreadedRunner.stop() hanging at teardown for Quart apps. Fixes #3823.updatemode="bothdates" not always respectedThreadPoolExecutor whose size is configurable via the new websocket_max_workers argument to Dash (default 4). A synchronous persistent (no-output) callback now warns at registration since it would tie up a worker thread.dcc.Graph by adding xvals and yvals to hoverData and clickData.Added #3796 MCP: Add configure_mcp_server() to toggle which content the MCP server exposes ( include_layout , include_callbacks , include_clientside_c
configure_mcp_server() to toggle which content the MCP server exposes (include_layout, include_callbacks, include_clientside_callbacks, include_pages, expose_callback_docstrings). Only the parameters explicitly passed are updated; omitted parameters retain their current value.CallbackAdapter for representing callback-related data in MCP-friendly formatResources for exposing app layout, components, and pagesToolsget_dash_component Tool and callback executionmcp_enabled function decorator, and Streamable HTTP transportmcp_expose_docstrings Dash() constructor argument; callback docstring exposure is now controlled via configure_mcp_server(expose_callback_docstrings=...).GET (SSE) request with an empty event stream instead of 405 Method Not AllowedAdded #3710 MCP: Framework utilities, types for interacting with layout #3711 MCP: CallbackAdapter for representing callback-related data in MCP-frien
CallbackAdapter for representing callback-related data in MCP-friendly formatResources for exposing app layout, components, and pagesToolsget_dash_component Tool and callback executionmcp_enabled function decorator, and Streamable HTTP transport[4.2.0] - 2026-06-01 - The Freedom Update
This release marks a major milestone for Dash, bringing unprecedented flexibility to how you build and deploy your applications.
Dash is no longer tied to Flask. You can now run your Dash apps on FastAPI or Quart, or even bring your own backend implementation:
# FastAPI backend
app = Dash(__name__, backend="fastapi")
# Quart backend (async-native)
app = Dash(__name__, backend="quart")
# Or use an existing server
from fastapi import FastAPI
server = FastAPI()
app = Dash(__name__, server=server)Install with pip install dash[fastapi] or pip install dash[quart].
Real-time, bidirectional communication is here. Websocket callbacks enable persistent connections for live updates without polling:
@callback(
Output("live-output", "children"),
Input("trigger", "n_clicks"),
websocket=True,
persistent=True
)
def live_updates(n_clicks):
ws = ctx.websocket
while True:
data = fetch_live_data()
ws.send(Output("live-output", "children", data))
time.sleep(1)MATCH wildcards are now allowed in Input and State even when your Output has no wildcards, making dynamic UIs simpler to build:
@callback(
Output("summary", "children"), # Fixed ID output
Input({"type": "item", "index": MATCH}, "value") # MATCH input - now allowed!
)
def update_summary(value):
return f"Selected: {value}"set_props messages to reduce lag when updating multiple components in a loop. Configurable via websocket_batch_delay (default 5ms, set to 0 to disable).search_order prop to Dropdown to allow users to preserve original option order during search.csrf_token_name and csrf_header_name config options to allow configuring the CSRF cookie and header names. Fixes #729.displayNotifier to dcc.Graph config props.dash.callback by preserving wrapped callback signatures, and add callback typing coverage in compliance plus new callback decorator unit and integration tests. Fixes #3691.ctx.get_websocket to ctx.websocket.dcc.Input when min or max is set to None.dcc.Slider marks when some labels are empty strings.stacklevel=2 to warnings.warn() calls so warnings report the caller's location instead of internal Dash source lines.MATCH in Input/State when the callback's Output has no wildcards (fixed-id Output, no Output, or ALL-only wildcard Output). ALLSMALLER still requires a corresponding MATCH in an Output. Fixes #2462.Dropdown search performance for large options lists.Patch objects cannot be updated via set_props() in websocket callback. Fix #3742.DatePickerRange and DatePickerSingle causing styling and layout issues.dcc.Graph figure. Fix dcc.Graph not sending duplicate clicks because it had the same payload by adding a timestamp in the click event object.flask run command. Fixes #3787.dcc.Loading spinner not triggering when callback Output uses the ALL wildcard. Fixes #3619.Rename ctx.get_websocket to ctx.websocket
Add threadpool for running websocket callbacks.
set_props() to update component-type properties in the websocket callback.Added #3742 Add websocket callbacks to fastapi and quart backends.
Fix websocket used in the same FastAPI server. Fix #3636
Added #3637 Added debounce prop to Dropdown . Fixed #3629 Fix date pickers not showing date when initially rendered in a hidden container. #3660 Allow
debounce prop to Dropdown.Y year tokenAdd support for multiple backend implementation beside flask such as fastapi and quart (both included).
app = Dash(backend="flask" | "fastapi" | "quart" | CustomBackendImpl) parameter to automatically setupFastapi, Quart or Flask instance can also be given as app = Dash(server=Fastapi()) to automatically setup a dash app on the server.pip install dash[fastapi] or quart with pip install dash[quart], flask is still included by default.dash.backends.base_server.BaseDashServer and response/request adapters.Redesigned dash core components
allow_direct_input, that can be used to disable the inputs rendered with sliders.show_outside_days=True)Restored missing implementation for with_portal and with_full_screen_portal in datepickers
with_portal and with_full_screen_portal in datepickersrc5: notably, popovers are position: fixed once again.New prop in dcc.Upload allows users to recursively upload entire folders at once
dcc.Upload allows users to recursively upload entire folders at oncerc4New dcc.Button component that mirrors html.Button but with default styles applied
dcc.Button component that mirrors html.Button but with default styles appliedrc3Modernized dcc.DatePickerSingle and dcc.DatePickerRange
dcc.Tabsdcc.DatePickerSingle and dcc.DatePickerRangeexternal_scripts or from the assets folder. See documentation for the underlying library that supports this.dcc.Tab now accepts a width prop which can be a pixel or percentage width for an individual tab.dcc.Tab can accept other Dash Components for its label, in addition to a simple string.3468 Modernize dcc.TextArea & dcc.Tooltip
Various tweaks and bugfixes to issues reported in 4.0.0rc1
Dropdown API changes
labels prop to customize strings used within the componentTrue for single-select dropdowns and False for multi-selectSlider API changes
step is now only set to 1 if the min and max props are both integers. Otherwise, it will be dynamically computed according to the available space for the slider## Added - #3440 Modernize dcc.Dropdown
- #3398 Modernize dcc.Input - #3414 Modernize dcc.Slider
## Added - #3568 Added children and copied_children props to dcc.Clipboard to customize the button contents before and after copying. - #3534 Adds pla
children and copied_children props to dcc.Clipboard to customize the button contents before and after copying.playsInline prop to html.Video. Based on [#2338]((https://github.com/plotly/dash/pull/2338)attributes dictionary to be be formatted on script/link (_js_dist/_css_dist) tags of the index, allows for type="module" or type="importmap". #3538hide_all_callbacks to run(). Closes #3493pkg_resources.## Added - #3395 Add position argument to hooks.devtool - #3403 Add app_context to get_app, allowing to get the current app in routes. - #3407 Add hid
hidden to callback arguments, hiding the callback from appearing in the devtool callback graph.Patch on clientside callbacks class dash_clientside.Patch, as well as supporting side updates, eg: (Running, SetProps).callback to expose api endpoints at the provided path for use to be executed directly without dash./health endpoint for server monitoring and health checks.dash[cloud] extra dependencies.dash[ag-grid] extra requirement.Remove placeholde publish button when on workspace
Add dash[cloud] optional dependency.
## Added - #3395 Add position argument to hooks.devtool - #3403 Add app_context to get_app, allowing to get the current app in routes. - #3407 Add hid
hidden to callback arguments, hiding the callback from appearing in the devtool callback graph.Patch on clientside callbacks class dash_clientside.Patch, as well as supporting side updates, eg: (Running, SetProps).callback to expose api endpoints at the provided path for use to be executed directly without dash.## Added - #3369 Expose dash.NoUpdate type - #3371 Add devtool hook to add components to the devtool bar ui. ## Fixed - #3353 Support pattern-matching
dcc.Loading target_components## Fixed #3351 Fix multi-page app with suppress_callback_exceptions=True
#3351 Fix multi-page app with suppress_callback_exceptions=True
## Fixed - #3341 Fixed query string parsing regression introduced in 2.18.2 where values containing unencoded & characters were being truncated. #3106
& characters were being truncated. #3106ExternalWrapper would remove props from the parent component, now there is a temp that is passed to check if it should be removed on unmount.allow_optional to Input and State to allow callbacks to work even if these components are not in the dash layout.assets_path_ignore to dash.Dash(). Closes #3076pip install dash[async].## [3.0.4] - 2025-04-24 ## Fixed - #3278 Fix loading selector with children starting at the same digit. Fix #3276 - #3280 Remove flask typing import n
## Fixed - #3264 Fixed an issue where moving components inside of children would not update the setProps path, leading to hashes being incorrect - #32
setProps path, leading to hashes being incorrectdash-hooks to underscored dash_hooks. Fix #3272dashChildrenUpdate = true on the component, eg: Tabs.dashChildrenUpdate = trueif it is first time rendering, render from the parent props
className_* props in dcc.Upload component.dashRenderType to determine why the component layout was changed (internal, callback, parent, clientsideApi):
dashRenderType defined as a prop, and the dashRenderType = true must be set on the component, eg (Div.dashRenderType = true)## Fixed - #3239 Remove stringcase dependency, fix #3238 - #3232 Add error handling for when localStorage is disabled
defaultProps on functional components now emits a deprecation warning.
-t, --custom-typing-module argument to dash-generate-components CLI, default to dash_prop_typing and can contains definitions in variables:
custom_imports: dict[ComponentName, list[str]] import statement to be copied at the top of the component class definition.custom_props: dict[ComponentName, dict[PropName, function]] for custom props. The function signature is: def generate_type(type_info, component_name, prop_name) -> strPropType generation for Typescript components allowing runtime prop validation when in debug mode.entry_points with key dash-hooks to their setup.py for a module to be run when a Dash app is started.dash.hooks methods to hook into Dash apps.
hooks.layout takes the layout as argument and must return a layout, can be used to wrap or add to the layout of Dash apps.hooks.callback defines a callback to be added to Dash apps.hooks.clientside_callback defines a clientside callback to be added to Dash apps.hooks.setup is called before a Dash app is started to get an instance of the app as first argument.hooks.error to receive all callback errors.hooks.index to change the Dash.index_string.hooks.route to add a Flask route to the Dash app.hooks.custom_data to add custom data called from the callback route to the user callback.window.dash_component_api for components developer as alternative to removed _dashprivate props.
dash_component_api.useDashContext, dash_component_api.DashContext to access the redux store and loading mechanisms.
DashContext.componentPath hold the path to the current component.DashContext.useLoading(options?) selector to get a boolean if the component is loading.DashContext.isLoading in case you need to use outside of a functional component.DashContext.useSelector to create custom selectors for the connected redux store.DashContext.useStore get the Dash app redux store.DashContext.useDispatch to dispatch new actions on the Dash redux store.dash_component_api.getLayout(path) to replace _dashprivate_layout.stringifyId in window.dash_component_api. #3175window.dash_component_api.ExternalWrapper to render Dash components that are not part of the layout tree. #3170 #3183loading_state removed from components props.dash.development.component_loader, components libraries now required to generate the components with dash-generate-components.Dash.run_server has been removed in favor of Dash.run.dcc.LogoutButton component.long references to background.defaultProps on functional components now emits a deprecation warning.## Fixed - #3197 Fix initial props not updated in setProps causing the initial value of props to not be able to be set again. - #3183 Fix external wra
## [3.0.0-rc3] - 2025-02-21 ## Added - #3121 Restyle and add version checker to dev tools. - #3175 Add custom_data hook. - #3175 Improved error for re
custom_data hook.stringifyId in window.dash_component_api.ExternalWrapper rendering children and support pattern matching ids.Added -t, --custom-typing-module argument to dash-generate-components CLI, default to dash_prop_typing and can contains definitions in variables:
-t, --custom-typing-module argument to dash-generate-components CLI, default to dash_prop_typing and can contains definitions in variables:
custom_imports: dict[ComponentName, list[str]] import statement to be copied at the top of the component class definition.custom_props: dict[ComponentName, dict[PropName, function]] for custom props. The function signature is: def generate_type(type_info, component_name, prop_name) -> strwindow.dash_component_api.ExternalWrapper to render Dash components that are not part of the layout tree.defaultProps on functional components now emits a deprecation warning.
__init__.PropType generation for Typescript components allowing runtime prop validation when in debug mode.window.dash_component_api for components developer as alternative to removed _dashprivate props.
dash_component_api.useDashContext, dash_component_api.DashContext to access the redux store and loading mechanisms.
DashContext.componentPath hold the path to the current component.DashContext.useLoading(options?) selector to get a boolean if the component is loading.DashContext.isLoading in case you need to use outside of a functional component.DashContext.useSelector to create custom selectors for the connected redux store.DashContext.useStore get the Dash app redux store.DashContext.useDispatch to dispatch new actions on the Dash redux store.dash_component_api.getLayout(path) to replace _dashprivate_layout.entry_points with key dash-hooks to their setup.py for a module to be run when a Dash app is started.dash.hooks methods to hook into Dash apps.
hooks.layout takes the layout as argument and must return a layout, can be used to wrap or add to the layout of Dash apps.hooks.callback defines a callback to be added to Dash apps.hooks.clientside_callback defines a clientside callback to be added to Dash apps.hooks.setup is called before a Dash app is started to get an instance of the app as first argument.hooks.error to receive all callback errors.hooks.index to change the Dash.index_string.hooks.route to add a Flask route to the Dash app.loading_state removed from components props.dash.development.component_loader, components libraries now required to generate the components with dash-generate-components.Dash.run_server has been removed in favor of Dash.run.dcc.LogoutButton component.long references to background.defaultProps on functional components now emits a deprecation warning.## Fixed - #2939 Fixes bug with whitespace on DataTable when merge_duplicate_header=True. Fixes #2870 - #2994 Keep generated doc-string order for shap
merge_duplicate_header=True. Fixes #2870None to array properties with exact or shape element types. Fixes #3010metadata.json files to reduce package size.2988 Fix error handler and grouped outputs. Fixes #2983
run_server, use run instead.dcc.LogoutButton, can be replaced with a html.Button or html.A. eg: html.A(href=os.getenv('DASH_LOGOUT_URL')) on a Dash Enterprise instance.Dash.__init__ keywords:
plugins keyword will be removed.long_callback_manager keyword will be removed, can use background_callback_manager instead.## Added - #2881 Add outputs_list to window.dash_clientside.callback_context. Fixes #2877. - #2903 Add callback on_error handler, either globally on D
no_update. Access to original callback context is preserved and set_props works inside the error handler._allow_dynamic_callbacks## Fixed - #2860 Fix dcc.Loading to apply overlay_style only to the children and not the spinner. Fixes #2858 - #2854 Fix dcc.Dropdown resetting empty
delay_show and delay_hide props to prevent flickering during brief loading periods (similar to Dash Bootstrap Components dbc.Spinner)
app.title and (new) app.description to be used as defaults for the page title and description. Fixes #2811.delay_show and delay_hide props to prevent flickering during brief loading periods (similar to Dash Bootstrap Components dbc.Spinner)overlay_style for styling the loading overlay, such as setting visibility and opacity for childrentarget_components specifies components/props triggering the loading spinnercustom_spinner enables using a custom component for loading messages instead of built-in spinnersdisplay overrides the loading status with options for "show," "hide," or "auto"## Fixed - #2783 Remove dynamic loading.
Add dynamic_loading=True to dash init.
npm run first-builddynamic_loading=True to dash init.preloaded_libraries=[] to dash init, included libraries names will be loaded on the index like before.setProps to dash_clientside.clientSide_setProps to allow for JS code to interact directly with the dash eco-system.mjs ending as js modulesAdd tooltip.template a string for the format template, {value} will be formatted with the actual value.
triggered_id to dash_clientside.callback_context. Fixes #2692tooltip.template a string for the format template, {value} will be formatted with the actual value.tooltip.style a style object to give to the div of the tooltip.tooltip.transform a reference to a function in the window.dccFunctions namespace._dash_error to setProps, allowing component developers to send error without throwing in render. Usage props.setProps({_dash_error: new Error("custom error")})## Fixed - #2700 Fix _allow_dynamic_callbacks for newly-added components.
_allow_dynamic_callbacks for newly-added components.## Fixed - #2672 Fix get_caller_name in case the source is not available. ## Changed - #2674 Raise flask & werkzeug limits to <3.1
## Fixed - #2634 Fix deprecation warning on pkg_resources, fix #2631 ## Changed - #2635 Get proper app module name, remove need to give __name__ to Da
__name__ to Dash constructor.routing_callback_inputs allowing to pass more Input and/or State arguments to the pages routing callback_allow_dynamic_callbacks, register new callbacks inside other callbacks.
WARNING: dynamic callback creation can be dangerous, use at you own risk. It is not intended for use in a production app, multi-user or multiprocess use as it only works for a single user.## Changed - #2610 Load plotly.js bundle/version from plotly.py ## Added - #2630 New layout hooks in the renderer
## Fixed - #2625 Fix background callbacks without cancel arguments failing setup, fix #2624
Feature release 2.25.0, Add "Equal Earth" project, options to include legends for shapes, Plotly.deleteActivateShape.
moduleResolution, fixes #2618## Fixed - #2573 Disable jupyter dash in Databricks, as the implementation here does not work in a Databricks notebook. Dash Enterprise customers can
Add jupyter_mode argument to app.run, defaults to inline and configurable via jupyter_dash.default_mode.
jupyter_mode argument to app.run, defaults to inline and configurable via jupyter_dash.default_mode.JupyterDash to app.run: jupyter_width, jupyter_height, jupyter_server_url.Set Flask and Werkzeug version upper bound to <2.3.
<2.3.## Fixed - #2545 Fix typescript objectOf generation. - #2548 Fix component as props callback triggering other callbacks not in response, fix #2487.
Feature release 2.23.0 adds legend/colorbar xref/yref.
<2.2.3 because we expect the Dash ecosystem to be incompatible with the next minor release of Flask (this excludes the current latest Flask release 2.3.x). We will raise the upper bound to <2.4 after we fix incompatibilities elsewhere in the Dash ecosystem.include_pages_meta=True to Dash constructor, and fix a security issue in pages meta tags #2536.#2533 and #2538 Update Plotly.js to v2.23.2 from v2.20.0.
legend references to traces.label.texttemplate to parametric shapes.#2538 Update JS dependencies in dcc, html, dash-table, dash-renderer, and dash
## Fixed - #2489 Fix location change event handling when Location objects are removed from the layout. Event handlers would not be removed and eventua
Location objects are removed from the layout. Event handlers would not be removed and eventually change props of a random DOM element, fix #1346Patch objects by making Patch objects picklable## Fixed - #2479 Fix KeyError "Callback function not found for output [...], , perhaps you forgot to prepend the '@'?" issue when using duplicate call
KeyError "Callback function not found for output [...], , perhaps you forgot to prepend the '@'?" issue when using duplicate callbacks targeting the same output. This issue would occur when the app is restarted or when running with multiple gunicorn workers.allow_duplicate output with clientside callback, fix #2467## Fixed - #2461 Fix pytest plugin make report when testing not installed, fix #2420
Accept an absolute path or a pathlib.path for pages_folder, to match assets_folder
display: block if inline is false in RadioItems & Checklist components. To keep previous behavior, set inline=True. This is already how it was described and worked in our documentation and other places with CSS stylesheets that set the default orientation of RadioItems and Checklist options to vertical (including Dash Design Kit), but for unstyled pages it is a breaking change.pathlib.path for pages_folder, to match assets_folderuse_pages=True when you supply a custom pages_folderpages_folder that includes special charactersclear_pages_staterefresh="callback-nav" in dcc.Location. This allows for navigation without refreshing the page when url is updated in a callback.add_log_handler=True to Dash init, if you don't want a log stream handler at all.REACT_VERSION=18.2.0 before running your app, or inside the app call dash._dash_renderer._set_react_version("18.2.0"). THIS FEATURE IS EXPERIMENTAL. It has not been tested with component suites outside the Dash core, and we may add or remove available React versions in any future release.dash.Patchfor partial update Output props without transferring the previous value in a State.allow_duplicate to Output arguments allowing duplicate callbacks to target the same prop.dash[testing] not installed, fix #946.backround=True callbacks.dash.dash, as library logger it should be on that namespace instead of the user app.Your coding agent can read these notes before it upgrades. Set up the MCP server →