Download Latest Version v0.8.0 source code.tar.gz (2.8 MB)
Email in envelope

Get an email when there's a new version of Reflex Dev

Home / v0.8.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2025-07-01 13.2 kB
v0.8.0 source code.tar.gz 2025-07-01 2.8 MB
v0.8.0 source code.zip 2025-07-01 3.0 MB
Totals: 3 Items   5.9 MB 0

https://github.com/user-attachments/assets/42b95d7f-8d5a-4e21-a12e-9f1f082cf4ec

Release Notes

Breaking Changes

Local JS files

If your app included local .js files (from assets or elsewhere), and those files contain JSX syntax, they must be renamed with a .jsx suffix now.

REMOVED DEPRECATIONS

The following has been removed and was previously deprecated:

  • UploadFile.filename, deprecated in 0.7.1. Use UploadFile.name instead (which strictly returns the file name with no slashes or such). To get the full path, use UploadFile.path.

  • App.error_boundary, deprecated in 0.7.1. Use App.app_wraps (which has other app wraps as well, most likely you would like to provide those, as well as your different error wrap).

  • App.api, deprecated in 0.7.9. Use api_transformer=your_fastapi_app instead. Read: https://reflex.dev/docs/api-routes/overview#api-transformer

  • App.add_custom_404_page, deprecated in 0.6.7. Use add_page with /404 route instead.

  • Component.__init__, deprecated in 0.7.2. Now it only inits the component and doesn't call post init to add events and such.

  • Non prefixed config env vars, deprecated in 0.7.13. Things like ENV_FILE now have to be passed explicitly as `REFLEX_ENV_FILE.

  • Gunicorn configuration env variables, deprecated in 0.7.9. Removed: timeout, gunicorn_worker_class, gunicorn_workers, gunicorn_max_requests, gunicorn_max_requests_jitter. If you would like to customize those, I encourage you to either call gunicorn directly (reflex.App is a factory for ASGI apps), or do so using gunicorn environment variable flags.

  • Inferring TailwindV3, deprecated in 0.7.13. We assume no Tailwind unless explicitly enabled through the plugins config.

  • get_decorated_pages, deprecated in 0.7.9. If you need to use a similar function you most likely need to implement your own page registry.

  • validate_parameter_literals, deprecated in 0.7.11. I don't think anyone but us used this function but it's nonetheless removed now.

  • Var._var_name, Var._var_name_unwrapped, Var.create_safe, and Var._type. All deprecated in various releases. All have better named equivalents.

This was done in this PR:

[MAJOR REWRITE] Replace Next with React Router

NextJS has served us well, but the needs of the framework has grown and we hit certain limits that made NextJS a suboptimal choice. To not go too long, compilation times and other factors have encouraged us to cut down on a big dependency that we barely use most of its features.

Breaking Changes

THIS MOST DEFINITELY HAS BREAKING CHANGES. Especially if you used something deeply attached to how JS works. During this prerelease we are going to triage regressions and fix them til they are at an acceptable state.

  • Static exports are now stored in .web/build/client (instead of .web/_static)

[REMOVED] reflex.suneditor

We have moved suneditor to its own package: https://github.com/reflex-dev/reflex-suneditor

[REMOVED] Experimental layout

We will be leaning more heavily into less in the core package (where less, is less opinionated UI).

[Major Rewrite] rx.State no longer inherits from Pydantic

rx.State is now a simple python Class. Nothing that fancy. The changes were made to be backwards compatible but you can optionally use rx.field(...) (or rx.field(default_factory=...)) to define fields more explicitly.

[BREAKING] rx.Component.get_event_triggers is now a classmethod

We still invoke it mostly from a self context, but you should port it to be a classmethod.

[Major Rewrite] Remove Pydantic as a dependency of PropsBase

You can use it as before, it's just not a Pydantic class. (TODO: add code here about using component field)

Enable TailwindV4 by default

Newly generated apps with reflex init will have the tailwindV4 plugin enabled by default instead of the v3 one.

Add earlier checks for wrong app names

If you had your name named wrong, now we check that a tad bit earlier in the compile process and with a more helpful message.

Additional Event Info

Now you can use information about the pointer (the mouse thingy) in pointer events. (TODO: remind me to write an example here).

Also you could use on_scroll_end when.. the scroll ends! Unless you are in Safari, in which case you have to wait until they implement that :/

Improved Error Messaging that contains Vars

If you noticed some weird "rx__state__..." names, those are backend vars JS output. Now we strip those form compilation errors and replace them with what you might expect as more normal names. (TODO, add concrete examples)

Add suffix to user defined vars to avoid clash with JS keywords

Javascript has a decent amount of keywords, and sometimes you might accidentally call your variable package and get a syntax error. This should solve this.

Built-in style reset

rx.App now has a parameter named reset_style that is True by default. It's there if you are not using Tailwind and you want to reset differences between the browsers.

Hot reload with REFLEX_ENV_FILES

If you are using Granian, now we pass the REFLEX_ENV_FILES environment flag for it to watch its changes.

Bugfixes

Misc

Chores

Full Changelog: https://github.com/reflex-dev/reflex/compare/v0.7.14...v0.8.0

Source: README.md, updated 2025-07-01