github reflex-dev/reflex v0.9.12a2

pre-release3 hours ago

Breaking Changes

  • state.dict() and the state deltas no longer carry a single router entry: the root state now serializes rx_router_session, rx_router_headers, rx_router_page, rx_router_url and rx_router_route_id instead (each with the usual field-marker suffix). Code that read or rewrote the router entry of a state dict or delta — for example to redact request headers before returning state over an API — must read those five entries instead. State.router itself is unchanged for app code. (#7215)

Bug Fixes

  • type(rx.State) is reflex.vars.BaseStateMeta again, so a state declared with its own metaclass derived from BaseStateMeta (class MyState(rx.State, metaclass=MyMeta)) no longer raises TypeError: metaclass conflict. The reserved-state-name validation is unchanged: it now runs from BaseStateMeta itself for every subclass of rx.State. (#7215)
  • An @rx.var(cache=False) value that a downstream get_delta override keeps out of the delta is now delivered as soon as the override stops withholding it, instead of being deduplicated away until the value changes again. Uncached var values only count as sent to the client once the delta that carries them is actually delivered. (#7216)
  • Release the development backend port again when no worker can serve it, so requests fail fast while the app module raises on import and after the server shuts down, instead of waiting in the accept backlog until the client times out. (#7217)
  • Keep app wraps registered below the "Built with Reflex" badge in the rendered
    page. In production builds with the badge on, the badge swallowed every
    lower-priority app wrap, so rx.data_editor's <div id="portal" /> never
    reached the DOM and its overlay cell editors — including the new image preview —
    could not open. (#7218)
  • Fix nested router mutations bypassing background-task locks and read-only state proxies. Writes through self.router now enforce the same mutation guards as direct state-field access. (#7230)

Don't miss a new reflex release

NewReleases is sending notifications on new releases.