Skip to content

Release v0.9.7: ArrayVar operations, config options, and performance improvements#6772

Open
masenf wants to merge 1 commit into
mainfrom
claude/reflex-0.9.7-release-4wt80g
Open

Release v0.9.7: ArrayVar operations, config options, and performance improvements#6772
masenf wants to merge 1 commit into
mainfrom
claude/reflex-0.9.7-release-4wt80g

Conversation

@masenf

@masenf masenf commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

Type of change

  • New feature (non-breaking change which adds functionality)
  • Bug fix (non-breaking change which fixes an issue)
  • Deprecation (runtime warning for deprecated features)

Summary

This PR consolidates the v0.9.7 release by merging changelog entries from individual news fragments into the main CHANGELOG files across all packages. The changes include:

Features

  • ArrayVar operations: Added map, filter, reduce, and flat_map methods to ArrayVar; deprecated foreach in favor of map
  • StringVar enhancements: strip now accepts a chars argument; added lstrip and rstrip methods
  • Color mode configuration: Added default_color_mode to rx.Config ("system", "light", or "dark") with environment variable support, enabling apps to set initial color mode without Radix themes CSS
  • Memo wrapper customization: @rx.memo now accepts a wrapper= argument to control the JS function wrapping the compiled component
  • Frozen lockfile option: Added frozen_lockfile to rx.Config (default True) to control whether frontend package manager enforces lockfile consistency

Bug Fixes

  • Fixed custom attributes on Field being discarded during state metaclass rebuilds (now deep-copied, with annotation reserved)
  • Fixed _get_all_hooks_internal mutating cached component hooks, causing order-dependent memo hashes and duplicated hooks
  • Fixed stateful pages being evaluated twice in one process, creating duplicate ComponentState classes and breaking hydration
  • Fixed disk state manager write queue task not being reset after close
  • Fixed RedisTokenManager leaking redis connections on app shutdown
  • Fixed event handlers and computed vars inherited from state mixins losing custom attributes and keyword-only defaults
  • Fixed meta_description and description frontmatter keys in docgen being misinterpreted as component preview lambdas

Performance

  • Cached framework-path checks in console.deprecate call-stack walk (~150x faster for repeated calls on hot paths)
  • Event chaining no longer deep-copies payload values not attached to state (~5x faster for proxy-free payloads)
  • Var.to() and Var.guess_type() now use cached registry lookups instead of full registry scans (~70% cost reduction)
  • Moved telemetry collection and delivery to dedicated background thread, preventing event loop stalls

Miscellaneous

  • Updated rx.upload and rx.segmented_control internals to use ArrayVar.map instead of deprecated foreach

Changes

  • Updated CHANGELOG.md (main package)
  • Updated packages/reflex-base/CHANGELOG.md
  • Updated packages/reflex-components-core/CHANGELOG.md
  • Updated packages/reflex-components-radix/CHANGELOG.md
  • Updated packages/reflex-docgen/CHANGELOG.md
  • Removed individual news fragment files (consolidated into changelogs)

Test Plan

N/A — This is a changelog consolidation PR. All underlying features and fixes have been tested in their respective implementation PRs.

https://claude.ai/code/session_01KX93fjAHfXYH4UpbSmaSon

Build the pending news fragments into CHANGELOG.md for the framework and the
modified subpackages. Each version is the next dot bump from the package's
latest release tag:

- reflex                   0.9.6.post2 -> 0.9.7
- reflex-base              0.9.6.post2 -> 0.9.7
- reflex-components-core   0.9.6       -> 0.9.7
- reflex-components-radix  0.9.5       -> 0.9.6
- reflex-docgen            0.9.2       -> 0.9.3

Cross-package dependency re-pins are intentionally left for the post-publish
wave, matching the established two-wave release flow (see #6679 -> #6680).
reflex-components-core and reflex-components-radix now call ArrayVar.map (new in
reflex-base 0.9.7 via #6701) but still declare reflex-base >= 0.9.6 / >= 0.9.5;
those floors — and the root reflex-base floor — must be re-pinned to
reflex-base >= 0.9.7 only after reflex-base 0.9.7 is published, so the
min-deps check (which resolves from PyPI with --no-sources) stays green here.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_01KX93fjAHfXYH4UpbSmaSon
@masenf masenf requested a review from a team as a code owner July 15, 2026 05:50
@greptile-apps

greptile-apps Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR consolidates changelog entries from individual news fragment files into the main CHANGELOG.md files across all five packages (reflex, reflex-base, reflex-components-core, reflex-components-radix, reflex-docgen), then deletes the 28 fragment files. No source code is changed.

  • All entries match the content of the deleted fragment files; the consolidation is faithful and covers features, bug fixes, deprecations, and performance improvements for v0.9.7.
  • packages/reflex-components-radix/CHANGELOG.md uses v0.9.6 as the new section header (previous version was v0.9.5), while the rest of the release uses v0.9.7 — this is consistent with independent per-package versioning but may be a copy-paste slip worth double-checking.

Confidence Score: 4/5

Safe to merge — only changelog files and news fragment deletions, no source code touched.

Only changelog files and news fragment deletions are touched. The sole open question is whether the v0.9.6 header in reflex-components-radix/CHANGELOG.md is intentional (the package was previously at v0.9.5 and uses independent versioning) or a copy-paste slip, worth confirming before release tags are cut.

packages/reflex-components-radix/CHANGELOG.md — verify the v0.9.6 version header is intentional.

Important Files Changed

Filename Overview
CHANGELOG.md Adds v0.9.7 section with features, bug fixes, and performance entries; content matches the corresponding deleted news fragments accurately.
packages/reflex-base/CHANGELOG.md Adds v0.9.7 section covering deprecations, ArrayVar features, bug fixes, and performance improvements; all entries align with deleted news fragments.
packages/reflex-components-core/CHANGELOG.md Adds v0.9.7 section with a single misc entry for the ArrayVar.map migration; correct and consistent.
packages/reflex-components-radix/CHANGELOG.md New entry is labeled v0.9.6 while all other packages in this release use v0.9.7; the package has independent versioning (was previously at v0.9.5), so this may be intentional but warrants confirmation.
packages/reflex-docgen/CHANGELOG.md Adds v0.9.3 section with one bug fix for docgen frontmatter parsing; independent versioning from main package, progression from v0.9.2 is correct.

Reviews (1): Last reviewed commit: "Materialize changelogs for reflex v0.9.7..." | Re-trigger Greptile

Comment thread packages/reflex-components-radix/CHANGELOG.md
@codspeed-hq

codspeed-hq Bot commented Jul 15, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 26 untouched benchmarks
⏩ 8 skipped benchmarks1


Comparing claude/reflex-0.9.7-release-4wt80g (233d203) with main (65a2889)

Open in CodSpeed

Footnotes

  1. 8 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 233d203e7a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/reflex-components-core/CHANGELOG.md
Comment thread packages/reflex-components-radix/CHANGELOG.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants