Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ This project adheres to [Semantic Versioning](https://semver.org/).
- [#3929](https://github.com/plotly/dash/issues/3929) Fix components that set their own initial state on mount (eg. `dash-bootstrap-components` `Tabs`, which selects its default active tab) not applying that state on first render - a component's descendant layout hashes were reset on its very first fresh render, discarding the mount-time update before it took effect. The reset now only runs from the second fresh render onward, so a component's initial state survives (regression introduced in 4.2.0 by [#3570](https://github.com/plotly/dash/pull/3570)).
- [#3948](https://github.com/plotly/dash/issues/3948) Fix page getting progressively slower as callbacks append children

### Changed
- [#3986](https://github.com/plotly/dash/pull/3986) Adjusted the `_run_before_hooks` inf `fastapi` backend to allow for a return value in the event that a `before_request` function returns a response. This is more aligned with how the `before_request` hooks work in the `flask` backend.

## [4.4.1] - 2026-07-21

## Fixed
Expand Down
6 changes: 4 additions & 2 deletions dash/backends/_fastapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,9 +163,11 @@ async def _run_before_hooks(self) -> None:
"""Run all before-request hooks."""
for func in self.before_request_funcs:
if inspect.iscoroutinefunction(func):
await func()
result = await func()
else:
func()
result = func()
if result is not None:
return result

async def _run_after_hooks(self) -> None:
"""Run after-request hook if configured."""
Expand Down
Loading