[Overview of Changes from 0.5.0 to 0.6.0](https://reflex.dev/blog/2024-09-21-reflex-v060/)
Breaking Changes
Drop support for python 3.8
* bump python>=3.10 for 0.6.0 (3956)
* Bring back py3.9 support with a deprecation warning. (3976)
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 for `defs`, `lineargradient`, `stop`, `path` (use `rx.el.svg` namespace)
* Lucide icons that were [removed upstream](https://github.com/reflex-dev/reflex/pull/3852/files#diff-feee374945ce3205e4c5ebec34c2243ee28b36955f15bf4c6cc4c4830a180993L79) (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 https://github.com/reflex-dev/reflex/pull/3852
* [REF-3570] Remove deprecated REDIS_URL syntax by masenf in https://github.com/reflex-dev/reflex/pull/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 a `LiteralVar` subclass wrapping the provided value.
* `_var_is_string` is deprecated, passing a string will always create a `StringVar`
* `rx.Var(...)` returns an `ImmutableVar` representing a raw javascript expression.
* Replaces the deprecated `_var_is_local` param
* 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 https://github.com/reflex-dev/reflex/pull/3824
* [REF-3566]Remove demo template by ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/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 https://github.com/reflex-dev/reflex/pull/3805
* cleanup dead test code by benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/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 https://github.com/reflex-dev/reflex/pull/3843
* remove reference to computed var by adhami3310 in https://github.com/reflex-dev/reflex/pull/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 https://github.com/reflex-dev/reflex/pull/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 https://github.com/reflex-dev/reflex/pull/3826
* Disk state manager don't use byref by picklelo in https://github.com/reflex-dev/reflex/pull/3874
* delete states if it exists on run by adhami3310 in https://github.com/reflex-dev/reflex/pull/3901
`/_health` endpoint
http://localhost:8000/_health
json
{"status":true,"db":true,"redis":false}
* /health endpoint for K8 Liveness and Readiness probes by samarth9201 in https://github.com/reflex-dev/reflex/pull/3855
Improvements
* improve state hierarchy validation, drop old testing special case by benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3894
* fix var dependency dicts by benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3842
* Update docker-example by masenf in https://github.com/reflex-dev/reflex/pull/3324
* use current version as default for new custom components (3957)
Var System
* fully migrate vars into new system by adhami3310 in https://github.com/reflex-dev/reflex/pull/3743
* guess_type: if the type is optional, treat it like it's "not None" by masenf in https://github.com/reflex-dev/reflex/pull/3839
* Fix double-quoting of defaultColorMode by masenf in https://github.com/reflex-dev/reflex/pull/3840
* ImmutableVar perf optimizations by masenf in https://github.com/reflex-dev/reflex/pull/3814
* Get attribute access type fix by benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3803
* fix var in bare by adhami3310 in https://github.com/reflex-dev/reflex/pull/3873
* add var_operation and move some operations to the new style by adhami3310 in https://github.com/reflex-dev/reflex/pull/3841
* Adding array to array pluck operation. by abulvenz in https://github.com/reflex-dev/reflex/pull/3868
* simplify ImmutableComputedVar.__get__ by benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3902
* Use old serializer system in LiteralVar by adhami3310 in https://github.com/reflex-dev/reflex/pull/3875
* Fix type propagation in ToStringOperation by abulvenz in https://github.com/reflex-dev/reflex/pull/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 https://github.com/reflex-dev/reflex/pull/3827
* [REF-3589] raise EventHandlerArgMismatch when event handler args don't match spec by masenf in https://github.com/reflex-dev/reflex/pull/3853
* better errors in state.py (3929)
Other Changes
* Fix benchmark tests by ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3822
* [REF-3416] [REF-3632] Update fastapi, gunicorn, watchdog deps by masenf in https://github.com/reflex-dev/reflex/pull/3859
* Remove watchfiles and watchdog [REF-2133] [REF-3694] by picklelo in https://github.com/reflex-dev/reflex/pull/3862
Bug Fixes
* [REF-3597]Type check Radio items by ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3856
* Bug fix rx.toast. Allow passing `title` kwarg by TimChild in https://github.com/reflex-dev/reflex/pull/3857
* Update find_replace by samarth9201 in https://github.com/reflex-dev/reflex/pull/3886
* Use correct flexgen backend URL by masenf in https://github.com/reflex-dev/reflex/pull/3891
* gitignore .web by benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3885
* [bugfix] Allow scroll in text_area when limited by max_height by VishDev12 in https://github.com/reflex-dev/reflex/pull/3882
* Retain mutability inside `async with self` block by masenf in https://github.com/reflex-dev/reflex/pull/3884
* Include child imports in markdown component_map by masenf in https://github.com/reflex-dev/reflex/pull/3883
* mixin computed vars should only be applied to highest level state in … by benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3833
* fix initial state without cv fallback by benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3670
* add fragment to foreach by adhami3310 in https://github.com/reflex-dev/reflex/pull/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 https://github.com/reflex-dev/reflex/pull/3827
* TimChild made their first contribution in https://github.com/reflex-dev/reflex/pull/3857
* samarth9201 made their first contribution in https://github.com/reflex-dev/reflex/pull/3855
* VishDev12 made their first contribution in https://github.com/reflex-dev/reflex/pull/3882
**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.5.10...v0.6.0