github reflex-dev/reflex v0.9.4

latest release: reflex-components-core-v0.9.4
5 hours ago

reflex (core)

Deprecations

  • rx._x.memo is deprecated in favor of rx.memo. The old name remains a working alias for now; update imports to use rx.memo directly. (#6517)
  • @rx.memo now expects each parameter to be annotated as rx.Var[...] (or rx.RestProp/rx.EventHandler) and the function to declare an rx.Component or rx.Var[...] return type. Memos that still use bare Python types (e.g. name: str) or omit the return annotation keep working — the values are coerced and a deprecation warning points at the parameters/return type that need explicit annotations — but this fallback will be removed in 1.0. (#6598)

Features

  • Added rx._x.hybrid_property, a property decorator usable on State classes that works like a normal Python property for backend access while also rendering on the frontend at class level. Use the same method for both, or register a separate frontend implementation with @<name>.var. (#3806)
  • Promoted the component memo system to a first-class rx.memo API. Memo-decorated components now accept rx.EventHandler parameters and carry annotated return types so they type-check correctly at call sites. (#6517)
  • Added rx.EMPTY_VAR_COMPONENT, an empty-component rx.Var[rx.Component] sentinel for use as a default on @rx.memo children slots (and any rx.Var[rx.Component] prop) — the component counterpart to rx.EMPTY_VAR_STR and rx.EMPTY_VAR_INT. (#6598)

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)
  • Removed the "choose templates" option from reflex init. The interactive prompt now offers only a blank app or the AI builder, and no longer opens the open-source templates page. (#6592)

📄 Full reflex changelog

reflex-base (v0.9.4)

Deprecations

  • Component-returning @rx.memo again accepts key without an rx.RestProp (with a deprecation warning), so rx.foreach call sites that set the React key keep working — this fallback is removed in 1.0. Other base props (id, class_name, style, custom_attrs, ref) and identity fields like tag/library still raise; declare an rx.RestProp to forward them.

Features

  • Dependency tracking now follows through hybrid properties, so computed vars that read a hybrid_property correctly recompute when the underlying state vars change. (#3806)
  • The component memo implementation now lives in reflex_base.components.memo and is exported as rx.memo. Added EMPTY_VAR_STR and EMPTY_VAR_INT sentinel vars as memo-friendly defaults. (#6517)

Bug Fixes

  • Worked around upstream breakage in recharts and es-toolkit: es-toolkit@1.46.1 was pinned (#6570) then unpinned, with vite bumped to 8.0.14 (#6571).

Miscellaneous

  • Removed the Templates.CHOOSE_TEMPLATES and Templates.REFLEX_TEMPLATES_URL constants, which supported the now-removed open-source templates reflex init option. (#6592)

📄 Full reflex-base changelog

reflex-components-markdown (v0.9.3)

Miscellaneous

  • Updated markdown custom-code collection to use the new rx.memo component API instead of the removed CustomComponent handling. (#6517)

📄 Full reflex-components-markdown changelog

No significant changes

Don't miss a new reflex release

NewReleases is sending notifications on new releases.