v0.6.0
Overview of Changes from 0.5.0 to 0.6.0
Breaking Changes
Drop support for python 3.8
Remove Deprecated Features
rx.input.root
(0.5.0)rx.Component._apply_theme
(0.5.0)_type
,_min
,_max
prop rewriting (0.4.0)- Passing props to rx.foreach (0.5.0)
rx.el
aliases fordefs
,lineargradient
,stop
,path
(userx.el.svg
namespace)- Lucide icons that were removed upstream (0.4.6)
- passing children to
rx.color_mode.button
(0.5.0) rx.cached_var
(0.5.6)- Specifying
REDIS_URL
without a url scheme (0.3.6)
PRs
- [REF-3568][REF-3569]Remove deprecations by @ElijahAhianyo in #3852
- [REF-3570] Remove deprecated REDIS_URL syntax by @masenf in #3892
New Var System
A Var
is a placeholder for a value which is sent to the frontend or rendered as Javascript code in the app. Most users of Reflex do not interact with the var system directly, but it becomes relevant for advanced users that are wrapping components or handling custom types.
rx.Var.create(...)
now returns aLiteralVar
subclass wrapping the provided value._var_is_string
is deprecated, passing a string will always create aStringVar
rx.Var(...)
returns anImmutableVar
representing a raw javascript expression.- Replaces the deprecated
_var_is_local
param
- Replaces the deprecated
- Vars are not automatically cast as
bool
, when passing a non-bool var to a prop that expects a boolean, add.bool()
after the var -- error message will include this hint.
The new Var
system brings a much more accurate translation of literal python values into javascript, especially of object and array types.
rx.chakra
removed from main repo
First, pip install reflex-chakra
. Then import reflex_chakra as rc
. rx.chakra
will still work until 0.7.0, but it is recommended to move now to avoid deprecation warning.
- Upper bound for reflex-chakra dependency by @masenf in #3824
- [REF-3566]Remove demo template by @ElijahAhianyo in #3888
- [REF-3562][REF-3563] Replace chakra usage (#3872)
Var Shadowing Detection
When a dynamic route arg name conflicts with the name of an existing state Var, the framework will raise DynamicRouteArgShadowsStateVar
. This is intended to avoid unexpected behavior wherein the dynamic var takes precedence over the state var, even in a substate. A fix for the underlying cause is forthcoming.
In the meantime, define any pages that use dynamic route arguments early, so the dynamic var is available for use in the page functions.
- Dynamic route vars silently shadow all other vars by @benedikt-bartscher in #3805
- cleanup dead test code by @benedikt-bartscher in #3909
When a computed var name conflicts with the name of an existing state Var, the framework will raise ComputedVarShadowsStateVar
.
- Forbid Computed var shadowing by @benedikt-bartscher in #3843
- remove reference to computed var by @adhami3310 in #3906
rx.progress
is now Radix Themes Progress
The previous Radis Primitives progress is available as rx.radix.primitives.progress
- [REF-3592]Promote
rx.progress
from radix themes by @ElijahAhianyo in #3878
Watchfiles dependency removed
If you are upgrading reflex in an existing environment run pip uninstall watchfiles
first to ensure the hot reload mechanism is properly ignoring the .web
directory.
New Features
DiskStateManager
- preserve state across hot reloads in dev mode
- implement disk state manager by @adhami3310 in #3826
- Disk state manager don't use byref by @picklelo in #3874
- delete states if it exists on run by @adhami3310 in #3901
/_health
endpoint
http://localhost:8000/_health
{"status":true,"db":true,"redis":false}
- /health endpoint for K8 Liveness and Readiness probes by @samarth9201 in #3855
Improvements
- improve state hierarchy validation, drop old testing special case by @benedikt-bartscher in #3894
- fix var dependency dicts by @benedikt-bartscher in #3842
- Update docker-example by @masenf in #3324
- use current version as default for new custom components (#3957)
Var System
- fully migrate vars into new system by @adhami3310 in #3743
- guess_type: if the type is optional, treat it like it's "not None" by @masenf in #3839
- Fix double-quoting of defaultColorMode by @masenf in #3840
- ImmutableVar perf optimizations by @masenf in #3814
- Get attribute access type fix by @benedikt-bartscher in #3803
- fix var in bare by @adhami3310 in #3873
- add var_operation and move some operations to the new style by @adhami3310 in #3841
- Adding array to array pluck operation. by @abulvenz in #3868
- simplify ImmutableComputedVar.get by @benedikt-bartscher in #3902
- Use old serializer system in LiteralVar by @adhami3310 in #3875
- Fix type propagation in ToStringOperation by @abulvenz in #3895
- [ENG-3833] handle object in is bool (#3974)
- suggest bool() for wrong values (#3975)
- use is true for bool var (#3973)
- Add shim for
format_event_chain
(#3958) - use serializer before serializing base yourself (#3960)
- [ENG-3817] deprecate _var_name_unwrapped (instead of removing it) (#3951)
- move the filterwarning to appropriate file (#3952)
- fix unionize recursion (#3948)
- add special handling for infinity and nan (#3943)
- use is true (#3946)
- use serializer for state update and rework serializers (#3934)
- replace old var system with immutable one (#3916)
- Remove Pydantic from some classes (#3907)
Documentation / Error Messages
- Add comments to DataList components by @elviskahoro in #3827
- [REF-3589] raise EventHandlerArgMismatch when event handler args don't match spec by @masenf in #3853
- better errors in state.py (#3929)
Other Changes
- Fix benchmark tests by @ElijahAhianyo in #3822
- [REF-3416] [REF-3632] Update fastapi, gunicorn, watchdog deps by @masenf in #3859
- Remove watchfiles and watchdog [REF-2133] [REF-3694] by @picklelo in #3862
Bug Fixes
- [REF-3597]Type check Radio items by @ElijahAhianyo in #3856
- Bug fix rx.toast. Allow passing
title
kwarg by @TimChild in #3857 - Update find_replace by @samarth9201 in #3886
- Use correct flexgen backend URL by @masenf in #3891
- gitignore .web by @benedikt-bartscher in #3885
- [bugfix] Allow scroll in text_area when limited by max_height by @VishDev12 in #3882
- Retain mutability inside
async with self
block by @masenf in #3884 - Include child imports in markdown component_map by @masenf in #3883
- mixin computed vars should only be applied to highest level state in β¦ by @benedikt-bartscher in #3833
- fix initial state without cv fallback by @benedikt-bartscher in #3670
- add fragment to foreach by @adhami3310 in #3877
- fix set value logix for client state (#3966)
- [0.6.0 blocker] state: update inherited_vars and tracking dicts when adding vars (#2822)
- fix template fetch during init (#3932)
- Fix string color (#3922)
New Contributors
- @elviskahoro made their first contribution in #3827
- @TimChild made their first contribution in #3857
- @samarth9201 made their first contribution in #3855
- @VishDev12 made their first contribution in #3882
Full Changelog: v0.5.10...v0.6.0