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
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
## v0.9.7 (2026-07-15)

### Features

- Added `default_color_mode` to `rx.Config` (`"system"`, `"light"`, or `"dark"`, also settable via `REFLEX_DEFAULT_COLOR_MODE`), so apps can set the initial color mode — and use the built-in color mode switcher and `rx.color_mode_cond` — without pulling in the large Radix themes CSS. The value drives both the compiled `ThemeProvider` default and the pre-hydration preload script, so there is no flash of the wrong theme on first paint. An explicit `rx.theme(appearance=...)` still takes precedence. ([#6716](https://github.com/reflex-dev/reflex/issues/6716))
- `@rx.memo` components now compile with a configurable JS wrapper: React's `memo` remains the default, `wrapper=` swaps in a custom function `Var` whose imports ride along into the generated module, and `wrapper=None` emits the bare function component. ([#6730](https://github.com/reflex-dev/reflex/issues/6730))
- The new `frozen_lockfile` config option is now honored during frontend package installation: when enabled (the default), bun's initial install runs with `--frozen-lockfile` so a lockfile out of sync with `package.json` fails fast. Set `frozen_lockfile=False` to let the lockfile update in place instead. npm has no equivalent install flag today, so the option is a no-op there. ([#6763](https://github.com/reflex-dev/reflex/issues/6763))

### Bug Fixes

- Fix stateful pages being evaluated twice in one process (forked prod workers and same-process export+serve), which created duplicate `ComponentState` classes and broke frontend hydration (`TypeError: d is not a function`). ([#6710](https://github.com/reflex-dev/reflex/issues/6710))
- Reset the disk state manager write queue task after close. ([#6715](https://github.com/reflex-dev/reflex/issues/6715))
- Close the `RedisTokenManager` redis client and cancel its pub/sub background tasks on app shutdown, fixing leaked redis connections (`ResourceWarning: unclosed Connection`) when the server stops. ([#6724](https://github.com/reflex-dev/reflex/issues/6724))
- Event handlers and computed vars inherited from a state mixin now preserve the source function's custom attributes and keyword-only defaults. ([#6725](https://github.com/reflex-dev/reflex/issues/6725))

### Performance

- Run anonymous telemetry collection and delivery on a dedicated single-worker background thread instead of inline on the asyncio event loop. The blocking syscalls, subprocess calls and synchronous HTTP request used to gather and post an event no longer stall the event loop — notably when reporting backend errors at a high rate. Delivery is best-effort and any failure is suppressed, so telemetry can never affect the running app. ([#6626](https://github.com/reflex-dev/reflex/issues/6626))
- Event chaining (`yield OtherState.handler(rows)`) no longer deep-copies payload values that are not attached to any state: only state-bound `MutableProxy` subtrees are copied, making proxy-free payloads ~5x faster to chain. ([#6739](https://github.com/reflex-dev/reflex/issues/6739))
- `Var.to()` and `Var.guess_type()` resolve their target Var subclass through cached registry lookups instead of scanning the full registry with `safe_issubclass` on every call. ([#6742](https://github.com/reflex-dev/reflex/issues/6742))


## v0.9.6 (2026-06-25)

### Features
Expand Down
1 change: 0 additions & 1 deletion news/6626.performance.md

This file was deleted.

1 change: 0 additions & 1 deletion news/6710.bugfix.md

This file was deleted.

1 change: 0 additions & 1 deletion news/6715.bugfix.md

This file was deleted.

1 change: 0 additions & 1 deletion news/6716.feature.md

This file was deleted.

1 change: 0 additions & 1 deletion news/6724.bugfix.md

This file was deleted.

1 change: 0 additions & 1 deletion news/6725.bugfix.md

This file was deleted.

1 change: 0 additions & 1 deletion news/6730.feature.md

This file was deleted.

1 change: 0 additions & 1 deletion news/6739.performance.md

This file was deleted.

1 change: 0 additions & 1 deletion news/6742.performance.md

This file was deleted.

1 change: 0 additions & 1 deletion news/6763.feature.md

This file was deleted.

25 changes: 25 additions & 0 deletions packages/reflex-base/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,28 @@
## v0.9.7 (2026-07-15)

### Deprecations

- `ArrayVar.foreach` is deprecated; use `ArrayVar.map` instead. ([#6701](https://github.com/reflex-dev/reflex/issues/6701))

### Features

- `ArrayVar` gained `map`, `filter`, `reduce`, and `flat_map` operations, and `StringVar.strip` now accepts a `chars` argument alongside new `lstrip`/`rstrip` methods. ([#6701](https://github.com/reflex-dev/reflex/issues/6701))
- Added `default_color_mode` to `rx.Config` (`"system"`, `"light"`, or `"dark"`, also settable via `REFLEX_DEFAULT_COLOR_MODE`) and moved the shared `LiteralColorMode` type and color-mode string constants into `reflex_base.constants`. This lets apps set the initial color mode without depending on the Radix themes appearance prop. ([#6716](https://github.com/reflex-dev/reflex/issues/6716))
- `@rx.memo` now accepts a `wrapper=` argument controlling the JS function that wraps the compiled component definition: keep the default React `memo`, pass a custom function `Var` (e.g. an `rx.vars.FunctionStringVar` carrying its own imports), or pass `wrapper=None` to export the bare function component. ([#6730](https://github.com/reflex-dev/reflex/issues/6730))
- Added `frozen_lockfile` to `rx.Config` (default `True`, also settable via `REFLEX_FROZEN_LOCKFILE`), controlling whether the frontend package manager runs in lockfile-enforcing mode. Reflex still creates, manages, and syncs the lockfile regardless; the option only controls whether a lockfile/`package.json` mismatch is treated as an error. ([#6763](https://github.com/reflex-dev/reflex/issues/6763))

### Bug Fixes

- Custom attributes set on a `Field` are now preserved (deep-copied) when the state metaclass rebuilds fields, instead of being silently discarded. The reserved `annotation` attribute is never carried over so rebuilt fields are not misidentified as pydantic fields. ([#6726](https://github.com/reflex-dev/reflex/issues/6726))
- Fix `_get_all_hooks_internal` mutating each component's cached internal hooks with its descendants' hooks, which made memo tag hashes order-dependent and duplicated hooks into memo bodies. ([#6741](https://github.com/reflex-dev/reflex/issues/6741))

### Performance

- Cache framework-path checks in `console.deprecate`'s call-stack walk, making repeat calls ~150x faster (deprecated attributes on hot paths, like `RouterData.page`, no longer cost multiple milliseconds per access). ([#6736](https://github.com/reflex-dev/reflex/issues/6736))
- Event chaining (`yield OtherState.handler(rows)`) no longer deep-copies payload values that are not attached to any state: only state-bound `MutableProxy` subtrees are copied, making proxy-free payloads ~5x faster to chain. ([#6739](https://github.com/reflex-dev/reflex/issues/6739))
- `Var.to()` and `Var.guess_type()` resolve their target Var subclass through cached registry lookups instead of scanning the full registry with `safe_issubclass` on every call (~70% of the cost of constructing a var operation). ([#6742](https://github.com/reflex-dev/reflex/issues/6742))


## v0.9.6.post1 (2026-06-26)

### Features
Expand Down
1 change: 0 additions & 1 deletion packages/reflex-base/news/6701.deprecation.md

This file was deleted.

1 change: 0 additions & 1 deletion packages/reflex-base/news/6701.feature.md

This file was deleted.

1 change: 0 additions & 1 deletion packages/reflex-base/news/6716.feature.md

This file was deleted.

1 change: 0 additions & 1 deletion packages/reflex-base/news/6726.bugfix.md

This file was deleted.

1 change: 0 additions & 1 deletion packages/reflex-base/news/6730.feature.md

This file was deleted.

1 change: 0 additions & 1 deletion packages/reflex-base/news/6736.performance.md

This file was deleted.

1 change: 0 additions & 1 deletion packages/reflex-base/news/6739.performance.md

This file was deleted.

1 change: 0 additions & 1 deletion packages/reflex-base/news/6741.bugfix.md

This file was deleted.

1 change: 0 additions & 1 deletion packages/reflex-base/news/6742.performance.md

This file was deleted.

1 change: 0 additions & 1 deletion packages/reflex-base/news/6763.feature.md

This file was deleted.

7 changes: 7 additions & 0 deletions packages/reflex-components-core/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## v0.9.7 (2026-07-15)

### Miscellaneous

- `rx.upload` internals use `ArrayVar.map` instead of the deprecated `foreach`. ([#6701](https://github.com/reflex-dev/reflex/issues/6701))
Comment thread
masenf marked this conversation as resolved.


## v0.9.6 (2026-06-25)

### Bug Fixes
Expand Down
1 change: 0 additions & 1 deletion packages/reflex-components-core/news/6701.misc.md

This file was deleted.

7 changes: 7 additions & 0 deletions packages/reflex-components-radix/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## v0.9.6 (2026-07-15)

### Miscellaneous
Comment thread
masenf marked this conversation as resolved.

- `rx.segmented_control` internals use `ArrayVar.map` instead of the deprecated `foreach`. ([#6701](https://github.com/reflex-dev/reflex/issues/6701))
Comment thread
masenf marked this conversation as resolved.


## v0.9.5 (2026-06-10)

### Miscellaneous
Expand Down
1 change: 0 additions & 1 deletion packages/reflex-components-radix/news/6701.misc.md

This file was deleted.

7 changes: 7 additions & 0 deletions packages/reflex-docgen/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## v0.9.3 (2026-07-15)

### Bug Fixes

- Fixed `meta_description` and `description` frontmatter keys being misinterpreted as component preview lambdas. ([#6704](https://github.com/reflex-dev/reflex/issues/6704))


## v0.9.2 (2026-06-03)

No significant changes.
1 change: 0 additions & 1 deletion packages/reflex-docgen/news/6704.bugfix.md

This file was deleted.

Loading