For AI agents: the complete documentation index is at [llms.txt](/content/docs/llms.txt). Markdown versions are available by appending .md or sending Accept: text/markdown.

## Reflex Changelog

### v0.9.10 (2026-09-01)

#### Bug Fixes
- Shared state updates now reach linked clients connected to other backend instances — the fan-out previously skipped any client whose websocket was not connected to the instance processing the event, so with redis and multiple workers only same-instance clients received live updates. ( [#6934](https://github.com/reflex-dev/reflex/issues/6934))
- Allow static IDs on document-root head components without generating React hooks. ( [#7005](https://github.com/reflex-dev/reflex/issues/7005))

### v0.9.9 (2026-08-28)

#### Breaking Changes
- `pip install reflex` no longer installs `pydantic`; pydantic model support activates when it is installed. Use the new `reflex[pydantic]` extra (or `reflex[db]`) to keep it. ( [#6786](https://github.com/reflex-dev/reflex/issues/6786))
- The compiled frontend now targets React Router 8.3.0 (from 7.18.2), and Reflex requires Node 22.22.0 or newer as a result. Apps on the default generated setup need no `rxconfig.py` or app code changes. One change is required if you wrote a custom component against `react-router-dom`: that package no longer exists upstream and is no longer installed, so `library = "react-router-dom"` must become `react-router` (or `react-router/dom` for `RouterProvider`/`HydratedRouter`). ( [#6854](https://github.com/reflex-dev/reflex/issues/6854))
- A `RegistrationContext` can only be associated with a single `App` instance, so creating a second bare `rx.App()` in one process now raises `ReflexRuntimeError` (0.9.8 allowed it); use a fresh `RegistrationContext` (e.g. `RegistrationContext.fork()`) to create multiple apps. ( [#6382](https://github.com/reflex-dev/reflex/issues/6382))

### Changelog Summary
- [reflex](/content/docs/changelog/index.html)  
- [reflex-base](/content/docs/changelog/reflex-base/index.html)  
- [reflex-components-code](/content/docs/changelog/reflex-components-code/index.html)  
- [reflex-components-core](/content/docs/changelog/reflex-components-core/index.html)  
- [reflex-components-dataeditor](/content/docs/changelog/reflex-components-dataeditor/index.html)  
- [reflex-components-lucide](/content/docs/changelog/reflex-components-lucide/index.html)  
- [reflex-components-markdown](/content/docs/changelog/reflex-components-markdown/index.html)  
- [reflex-components-moment](/content/docs/changelog/reflex-components-moment/index.html)  
- [reflex-components-plotly](/content/docs/changelog/reflex-components-plotly/index.html)  
- [reflex-components-radix](/content/docs/changelog/reflex-components-radix/index.html)  
- [reflex-components-react-player](/content/docs/changelog/reflex-components-react-player/index.html)  
- [reflex-components-recharts](/content/docs/changelog/reflex-components-recharts/index.html)  
- [reflex-components-sonner](/content/docs/changelog/reflex-components-sonner/index.html)  
- [reflex-docgen](/content/docs/changelog/reflex-docgen/index.html)  
- [reflex-enterprise](/content/docs/changelog/reflex-enterprise/index.html)  
- [reflex-hosting-cli](/content/docs/changelog/reflex-hosting-cli/index.html)  
- [reflex-release](/content/docs/changelog/reflex-release/index.html)

### v0.9.8 (2026-08-04)  
#### Features
- Added content-hash cache busting to `rx.asset` URLs. ( [#6550](https://github.com/reflex-dev/reflex/issues/6550))  
- Add a `preview` run mode (`reflex run --env preview`) that hot reloads like `dev` but serves a freshly built, un-minified frontend bundle mounted into the backend instead of running the Vite dev server. Minification, CSS minification, autoprefixer, and sourcemaps are disabled by default for faster rebuilds and readable output (each overridable via `VITE_MINIFY`, `REFLEX_NO_AUTOPREFIXER`, and `VITE_SOURCEMAP`). ( [#6663](https://github.com/reflex-dev/reflex/issues/6663))  
- Support using mutable state proxies as async context managers. ( [#6689](https://github.com/reflex-dev/reflex/issues/6689))

### Performance Improvements
- Remove the per-update `asyncio.create_task` wrapper in `EventNamespace.emit_update`, cutting scheduling overhead roughly in half for every outgoing state update. ( [#6734](https://github.com/reflex-dev/reflex/issues/6734))  
- Speed up reading mutable state vars (lists, dicts, dataclasses) through `MutableProxy`. The per-element check that detects `dataclasses.asdict`/`astuple` recursion now reads `frame.f_code.co_filename` directly instead of calling `inspect.getfile()`, cutting proxy read overhead by roughly 3-4x on large containers without changing behavior. ( [#6600](https://github.com/reflex-dev/reflex/issues/6600))

### Miscellaneous
- Introduced towncrier-based changelog management. Each PR that changes package source now adds a fragment under the affected package's `news/` directory; fragments are assembled into `CHANGELOG.md` at release time. See CONTRIBUTING.md for the full workflow. ( [#6350](https://github.com/reflex-dev/reflex/issues/6350))

Built with Reflex.
