Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reflex Roadmap #2727

Open
15 of 24 tasks
picklelo opened this issue Feb 27, 2024 · 20 comments
Open
15 of 24 tasks

Reflex Roadmap #2727

picklelo opened this issue Feb 27, 2024 · 20 comments
Assignees

Comments

@picklelo
Copy link
Contributor

picklelo commented Feb 27, 2024

This page is a living document outlining the major projects we're working on next for reflex 0.7.0. The projects are ordered more-or-less in the order we plan to complete them.

Feel free to comment to leave feedback or upvote any issues you'd like to see prioritized, and we welcome outside contributions for any issues.

Key Focus Areas

Stability: As we approach our 1.0 release, we're focused on making our core API stable and limiting breaking changes so Reflex can be a solid foundation for long-term projects.

Simplicity: We want to improve the out of the box experience so users can focus on their ideas rather than implementation. This includes building a 3rd party component ecosystem, as well as simplifying the APIs for many of our core components.

Speed: Reflex apps should be fast, both for the end user and for the developer. We have projects to make sure apps stay fast as they grow in size, and to improve the compile / hot-reload times so devs can iterate quickly when building.

Roadmap 0.7.0

  • Client Side Rendering (CSR) Component as Var type #3732
  • AG Grid Support
  • Builtin Auth
  • Reduce Dependencies
  • Modular Compiler
  • Improvements to ComponentState
  • Improvements to @rx.memo
  • Reduce hot reload times
  • Improve reflex init and run workflow
  • Improve Breakpoint Props

Roadmap 0.6.0 (Target Release: September 19 2024)

  • Graphing Improvements
  • Consistent Theming
  • DataTable / DataEditor Improvements
  • Responsive Support For All Props
  • Decentralized Var Operations
  • DiskStateManager to maintain state between reloads
  • Move Chakra to Third Party

Roadmap 0.5.0 (Target Release: May 6, 2024)

REF-2092

Please leave comments on what you think about this tentative plan.

@picklelo picklelo changed the title Reflex 0.5.0 Roadmap [REF-2092] Reflex 0.5.0 Roadmap Feb 27, 2024
@Alek99 Alek99 pinned this issue Feb 27, 2024
@Alek99 Alek99 changed the title [REF-2092] Reflex 0.5.0 Roadmap [REF-2092] Reflex 0.5.0 Roadmap [WIP] Feb 27, 2024
@Alek99 Alek99 changed the title [REF-2092] Reflex 0.5.0 Roadmap [WIP] Reflex 0.5.0 Roadmap [WIP] Feb 27, 2024
@abulvenz
Copy link
Contributor

Firstly, I ❤️ like the plans and think the three main goals are a good focusing point for 0.5.0.
One minor drop of bitterness (at least for my current code):
Remove the middleware 🙀 ? I would need new ideas for authorization then. I do not want to rely entirely on the routing and if-statements. What are the ideas how authorization (I don't mean solely authentication here) might be added to an app?
Other things that middleware is good for: Checking when the last action of a user had been carried out. Conditionally having fine-grained influence on states. Debugging event orders by mere printing.
Maybe there are plans to have a similar mechanism that replaces this nice (not tremendously over-documented ;) feature?

@benedikt-bartscher
Copy link
Contributor

Awesome, love to see how reflex evolves! 🚀
Is Pydantic v2 fixed on this roadmap? If so, I would offer my help regarding SQLAlchemy support and adjust my affected PRs to pydantic v2.

@picklelo
Copy link
Contributor Author

@abulvenz Thanks for the feedback - I will modify that project, we don't want to break any existing functionality.

We want to move certain internal events like the initial state hydration away from using middleware, but we will still have easy ways to support other use cases.

@picklelo
Copy link
Contributor Author

@benedikt-bartscher Yes we either want to upgrade to Pydantic v2.0 for the performance and compatibility benefits

In the long-term we can potentially remove the Pydantic dependency altogether and use Python dataclasses, since we don't use many of its features anymore internally. Though that would require moving away from FastAPI and SQLModel, so not planned anytime soon.

@cllatser
Copy link
Contributor

cllatser commented Mar 2, 2024

Hi everyone, as I have said before. I have been programming for a short time, I did a Python Bootcamp and for the final project I used Reflex when it was called Pynecone. I could have used Django or Flask, but I chose Reflex because I think it will have a future.

What would I like from Reflex 1.0?

Let's see if I can explain. I would like Reflex to be from a base agnostic of any external framework, using as it can be done now 100% html and css. So as not to depend on third party libraries, such as Astro (Javascript).

From there, when starting the project the user will be asked whether or not to use a framework or not, for example Radix-Ui, Taildwind.

Then the ability to share components with (3rd Party Component Ecosystem) seems to me great.

Good job to all the team, long life to Reflex.

Best regards.

@dentro-innovation
Copy link

Perhaps these thoughts help you in finding the right direction for your product.

Started to use reflex because:

  • wanted same coding language as most ML frameworks -> python
  • wanted a low code tool that's flexible. Using little code to achieve common use cases with the possibility to customize easily
  • wanted frontend and backend in one, allowing for a single code base that can handle auth and user management
  • used streamlit before, but can't build any serious project with it because customizing look of components is a pain, page randomly refreshes deleting existing state, weird logic where the code is rendered top to bottom making common use cases difficult to implement (or at least much different)
  • need to be able to self-host it for GDPR critical use cases

Like it even more since I started:

  • wrappers of 3rd party libraries like motion
  • askInkeep on discord
  • team on discord is very responsive
  • hosted version for non GDPR criticial use cases
  • lots of inbuilt components that actually do work out of the box such as file upload or scrollable area

@include
Copy link

include commented Mar 21, 2024

Really like to see the "Simplicity" point here. box system is really a pita :) - thank you for Reflex!

@picklelo picklelo changed the title Reflex 0.5.0 Roadmap [WIP] Reflex 0.5.0 Roadmap Apr 3, 2024
@Sprocketer

This comment was marked as outdated.

@picklelo picklelo changed the title Reflex 0.5.0 Roadmap Reflex Roadmap Apr 26, 2024
@Lendemor Lendemor unpinned this issue May 13, 2024
@masenf masenf pinned this issue Jun 5, 2024
@ibehnam
Copy link

ibehnam commented Jun 6, 2024

Thanks @picklelo, the roadmap looks awesome! I just wanted to chime in as someone who's used Streamlit in the past and has suffered from its limitations. I believe what makes Streamlit popular among the ML community is the new "AI" features they added, like the ability to build a chat UI which looks nice. I saw the chat UI demo using Reflex and I thought it would be much better if more time was spent on that. It surely would attract people who want to build fancy chat UIs. Currently, Streamlit does it in a way that's not performant but looks nice, so the higher-ups often like it. If there was some theming for chat UI, messages, etc., I think it would help Reflex a lot. Just a thought!

@pnsvk
Copy link

pnsvk commented Jul 16, 2024

Possibilities of building a desktop version of reflex would be a game changer.. something on the lines of stlite.
I am thinking of trying out Briefcase, but not getting time.. Sure things may not be as straight forward, as Briefcase is all native-desktop friendly. But a really portable version would possibly be around leveraging Pyodide (just as stlite)..

Atleast, perhaps an effective blog post detailing a success-story around this would definitely help the community.. Please kindly consider.

@pnsvk
Copy link

pnsvk commented Jul 16, 2024

The initial boot-up of the app and hot-reload are both very time-consuming.. Sorry to keep comparing with Streamlit, but the hot-reload is almost instantaneous with it. I am finding it painful to maintain a growing streamlit app, and seeing value with migrating to Reflex, hence the ask/request/plead..

@ibehnam
Copy link

ibehnam commented Jul 16, 2024

@pnsvk Okay, stick to Streamlit then. Changes in Streamlit are instantaneous because Streamlit doesn't compile (unlike Reflex which compiles to performant HTML+CSS+JS code). Streamlit was based on poor design decisions (e.g., every interaction with any widget reloads the entire page, wtf?). Recently, they've tried to fix some of them (e.g., local reloading) but the overall project is still a mess.

@pnsvk
Copy link

pnsvk commented Jul 17, 2024

@pnsvk Okay, stick to Streamlit then. Changes in Streamlit are instantaneous because Streamlit doesn't compile (unlike Reflex which compiles to performant HTML+CSS+JS code). Streamlit was based on poor design decisions (e.g., every interaction with any widget reloads the entire page, wtf?). Recently, they've tried to fix some of them (e.g., local reloading) but the overall project is still a mess.

"stick to Streamlit then"? Wow.. How polite.. :-)
But still, thank you for the explanation.. Thought I would provide an end-developer experience with the framework..

@Lendemor Lendemor unpinned this issue Aug 19, 2024
@Lendemor Lendemor pinned this issue Aug 19, 2024
@picklelo picklelo unpinned this issue Aug 26, 2024
@picklelo picklelo pinned this issue Sep 17, 2024
@Lendemor
Copy link
Collaborator

Small bump for anyone following this issue, 0.7.0 roadmap is available, let us know your thoughts.

@TimChild
Copy link
Contributor

TimChild commented Oct 3, 2024

Are there any plans to fully move to pydantic v2? I.e. having rx.Base subclass the v2 pydantic BaseModel instead of v1?

It seems like most packages at this point have made the transition fully to v2 and I'd really like to be able to stop thinking about v1 for good.

Before 0.6.0 I was somehow getting away with using v2 models as state attributes, but I've just tried upgrading from reflex==0.5.9 to 0.6.1 and it seems that whatever I had done no longer works. (I'm actually surprised I ever got away with it since v2 and v1 really don't play nice together...).

@ruben-vanwyk
Copy link

ruben-vanwyk commented Nov 15, 2024

How dependent is the framework internally on FastAPI and wouldn't using something like Litestar offer better performance and allow potentially better full-stack experience in the long-run? Certain things on the roadmap like built-in auth is also included in Litestar. Might be worth taking a look.

@picklelo
Copy link
Contributor Author

@ruben-vanwyk We're not very coupled on FastAPI (we currently mainly use them for their Upload API, as well as exposing backend API routes) - in the future we plan to make that part of Reflex modular so people can use their own backend frameworks if they want.

@benedikt-bartscher
Copy link
Contributor

Are there any plans to fully move to pydantic v2? I.e. having rx.Base subclass the v2 pydantic BaseModel instead of v1?

Is this still planned? Or do you want to migrate rx.Base to dataclasses instead?

@laike9m
Copy link

laike9m commented Dec 4, 2024

Maybe this is mentioned somewhere: is there a tentative timeline for when 0.7 will come out (and perhaps 1.0 too)?

I mostly care about the built-in auth feature.

@TimChild
Copy link
Contributor

TimChild commented Dec 4, 2024

Are there any plans to fully move to pydantic v2? I.e. having rx.Base subclass the v2 pydantic BaseModel instead of v1?

Is this still planned? Or do you want to migrate rx.Base to dataclasses instead?

On the thread of reflex and pydantic...

The recent v0.6.6 release adds support for v2 models to be used as state vars which is very nice.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests