Release Notes
Deprecations
rx.Base
is deprecated.
Now that pydantic
is an optional dependency, Reflex will no longer maintain a custom wrapper over BaseModel
. You have a few options for replacing your rx.Base
subclasses:
- Continue to use
pydantic
-- minimal code/behavior changes- Ensure
pydantic
is part of your app dependency list - Extend from
pydantic.BaseModel
instead ofrx.Base
- Ensure
- Move to
dataclasses.dataclass
-- use the python stdlib - Move to
typing.TypedDict
-- uses a plaindict
, but has extra type hints to make Var Operations work correctly
sqlmodel.SQLModel
is now recommended over rx.Model
.
- Change your db models to inherit from
sqlmodel.SQLModel
instead ofrx.Model
. - Ensure the model has an explicit primary_key column. The default previously used to be:
id: int | None = sqlmodel.Field(default=None, primary_key=True)
- Use
sqlmodel.select(MyModel)
instead ofMyModel.select()
.
Python 3.14 is now supported! Python 3.10 deprecated D:
Python 3.14 got release on 10/07 and now Reflex supports it! It gives us very considerable performance improvements just by bumping.
In theory, you can use reflex with python free threaded, although we don't officially support it just yet. If you do run into issues with it, do report it!
- python3.14 compat by @masenf in #5859
- deprecate python 3.10 by @adhami3310 in #5868
Make pydantic, sqlmodel, and alembic optional
We will still install them by default until 0.9. You can ease into the transition by setting your reflex dependency to reflex[db]
. You can uninstall them and reflex will continue to work assuming you don't use those in your app.
- move pydantic, sqlmodel, alembic to optional dependencies by @adhami3310 in #5438
- only deprecate base at subclass by @adhami3310 in #5863
- output what class is subclassing rx.Base by @adhami3310 in #5864
Upcast enum values to their enum type on event handlers
Performance Improvements
- optimize various var functions by @adhami3310 in #5865
Bugfixes
- make on load lambda work by @adhami3310 in #5856
- Apply attribute access rules for Model or SQLModel by @masenf in #5875
- Munge router_data["pathname"] consistently in event processing path by @masenf in #5873
- ENG-7948: Fix hanging frontend and other reconnection woes by @masenf in #5884
- check domain before redirecting in codespaces by @adhami3310 in #5886
Chores
- 0815dev by @adhami3310 in #5853
- make _no_chain_background_task take state instance by @adhami3310 in #5857
- split manager by @adhami3310 in #5852
- Bring back accidentally removed pool params by @masenf in #5861
- ENG-7927: make builder first option in reflex init cli by @adhami3310 in #5862
- Use pytest-rerunfailures to avoid tmp_path stashkey issues by @masenf in #5869
- rolldown vite 7.1.16 by @adhami3310 in #5858
Full Changelog: v0.8.14...v0.8.15