Open picklelo opened 6 months ago
Firstly, I :heart: 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 :scream_cat: ? 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?
Awesome, love to see how reflex evolves! :rocket: 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.
@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.
@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.
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.
Perhaps these thoughts help you in finding the right direction for your product.
Started to use reflex because:
Like it even more since I started:
Really like to see the "Simplicity" point here. box system is really a pita :) - thank you for Reflex!
@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.
@picklelo In terms of improving performance - I'm not sure how much Javascript next.js (which seems to be under the hood) uses, but have you seen Astro? Seems to be super fast because it renders static JS components as HTML. Might be a reach, but maybe there's some way to include something similar at build-time?
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!
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.
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..
@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 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..
NOTE: We recently released Reflex 0.4.0 with new core components and a theming system - see the blog post for more info and for a guide on upgrading existing projects.
This page is a living document outlining the major projects we're working on next for reflex 0.5.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.
Focus for 0.5.0 and Beyond
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.5.0 (Target Release: May 6, 2024)
Roadmap 0.6.0
Performance
Usability
REF-2092
Please leave comments on what you think about this tentative plan.