Replies: 3 comments 11 replies
-
What specific improvements are being planned for the handling of props, JSX attributes, and destructuring in SolidJS 2.0? Will this include simplifications for working with spread, binding, conditional logic, or destructuring directly within JSX? |
Beta Was this translation helpful? Give feedback.
-
@kachurun Thinking on what is possible and not being concerned initially with migration is exactly how I approach this. This isn't about fear of change. The problem with this stuff is it isn't a new problem, and in so many of the "solutions" aren't new. Many even predate Solid itself. So much so I find myself explaining why certain things don't work repeatedly. I'm happy to have the conversation over and over in hopes we gleam something new from it. We discuss this stuff on the discord all of the time. Solid's approach while novel from a popularity standpoint when I started was not that unique. Tools tried decorators + classes (very popular circa 2015). Tools tried purely Signals. Solid was actually created largely with the expectation everyone would use stores, and evolved from there. However we did something right to get this far. Obviously I'm biased as these are opinions I've formed using Signals the past 15 years. More than happy to look at specific concerns. Props as accessors have some issues worth talking about perhaps: https://www.reddit.com/r/solidjs/s/9hJ75MIpnh There is a non-compiled destructure helper in Solid Primitives that returns functions. If that is preferred way of setting defaults we can talk about. Something like: const { cond, class: className } = toAccessors(props, { cond: true }); But that doesn't help with rest params as having an object of accessors won't spread properly. So still 2 helpers needed. It isn't all that different than |
Beta Was this translation helpful? Give feedback.
-
Resumability didn't make it into the plan? 🥲 |
Beta Was this translation helpful? Give feedback.
-
Hello everyone. I'd like to officially announce the beginning of our journey to Solid 2.0. We've done a lot of prototyping over the last few months and feel like we've gotten to a place where we can official start the process of developing Solid 2.0!!
For Solid 2.0 we are looking at features in a few key areas:
If you don't know what all of these are that's ok. This will take several months to complete and include multiple phases, the first we just entered as of today. You will be able to track the progress on the #next branch of the repo and on npm.
Experimental (2.0.0-experimental.x)
This is where are today where we have an idea of what the client-side behavior is and are testing and finding holes with our assumptions. This phase is largely self-guided and will break even significantly between versions. It's even possible for previously published experimental versions to break due to dependency updates. Consider only the latest release of all related packages as truth.
The goal of this phase is to re-implement the equivalent of all client, ssr, and hydration for non-experimental 1.0 features, as well as implement any new features we feel are core to the experience. This requires a lot of experimentation and benchmarking. We are being aggressive during this phase so it may even include breaking changes that will never get into the final release. It is possible there will be performance regressions. This is about capability.
Alpha (2.0.0-alpha.x)
This is the next stage when we feel the core behavior is presentable. This is when we will be writing up the formal RFCs and asking for more community feedback in terms of designs. The project should work with its base features end to end at this point but there are still opportunities for APIs and behaviors to wildly change between releases. We will use the feedback from the RFCs to hopefully bridge any gaps.
The goal of this stage is to have important core projects (Router/Start), infrastructure, and examples working with the 2.0 stuff to vet that the approach handles all the cases.
Beta (2.0.0-beta.x)
When we are content with the design and proposed implementation we will run a wider beta so that ecosystem libraries can try the new stuff. This is also when focus will be put on migration efforts(code mods) and documentation. At this point the API should be mostly stable but it will be possible that some behavior changes need to be tweaked. The goal of this phase will be to have the popular libraries like UI Components such as Kobalte, etc... and agnostic projects like Tanstack working with the 2.0 updates.
RC (2.0.0-rc.x)
These will be release candidates ready for final release.
Timeline
Given that we are in the experimental stage timeline is not available currently. It is really going to depend on how much help and feedback we get and how well we are able to address it. I will continue to reach out and provide updates to the community as the process continues. If you want to get involved in the day to day. Come the #next channel in Solid's discord. That is where all the relevant conversations are happening.
And with that, I want say it is a really exciting time and I hope you all join us on this journey to push the boundaries of frontend at their foundations.
Best,
@ryansolid and the SolidJS Core Team
Beta Was this translation helpful? Give feedback.
All reactions