SolidStart : Breaking NextJS’s Mold
What is SolidStart? Is it set to challenge Next JS’s way of doing things? Is SolidStart “the shape of things to come”?
First: What is SolidStart?
In short: SolidStart is Solid JS’s foundational metaframework.
Let’s break that into manageable bits.
Solid is a frontend framework with a syntax similar to React’s. It uses JSX. Unlike React, Solid uses signals to manage reactivity.
I’ve covered Solid in more depth elsewhere if you would like to explore it more.
Now, what is a meta-framework?
In short, a meta framework adds backend capabilities to a front-end JavaScript framework.
There are many reasons to do so: reducing loading speed, improving SEO, better user experience...
Meta Framework include Sveltekit, Remix, Nuxt and more. And (of course) the solution that started the concept: Next JS, which builds on top of React.
NextJS provides an all-in-one solution for routing, server-side generation, static generation, request caching.
And the company behind Next JS, Vercel, also provides hosting. This means Vercel can ensure that NextJS works perfectly with its hosting services. Because NextJS is a cohesive whole. A monolith, if you will.
And so far, all the alternative meta frameworks have followed Next JS’s direction.
SolidStart, however, is taking a different path. Ryan Carniato (SolidJS’s creator) announced SolidStart’s first stable release. He entitled the talk: “The shape of frameworks to come”.
That title shows SolidStart hopes to usher in a new paradigm. They want to change how developpers build frameworks. So what is this new path SolidStart is taking?
As the website states, SolidStart is a "Composable Meta-framework". What does that even mean?
As I mentionned, NextJS is opinionated. For example you can't change how routing works without writing a lod of code. SolidStart, on the other hand, is a set of building blocks that you can swap in or out. There is :
- Seroval, to serialise data between the server and the client
- Vite which manages code bundling
- Nitro the "Next Generation Server Toolkit"
- and Vinxi which combines Vite and Nitro and provides routing [https://vinxi.vercel.app/]
Each of these is worth a video on its own. Nitro in particular provides a lot of useful features. For example: filesystem routing, caching, or an SQL database layer. It provides a Key Value layer abstraction to interact with a tool like Redis. It provides adapters for major hosting providers like AWS, Vercel, CloudFlare and Netlify.
And this means, SolidStart can run in the server environment of your choice.
To quote the release blog post: "SolidStart is designed to deploy [SolidJS apps] to a variety of providers."
That's thanks to the different libraries that make up SolidStart. And to me, that is a very "Open Source" type of approach. A collaborative effort, where different libraries and blocks contribute features to SolidStart.
They are what allow Solid JS's launch post to boast that SolidState supports :
- Client Render Mode,
- Server Side Rendering,
- Static Site Generation,
- Out-of-Order-Streaming,
- Optimistic UI,
- Key Based Cache/Invalidation,
- Progressively Enhanced Forms,
- API Routes,
- Parallelized Nested-Route Data Fetching,
- Single Flight Mutation,
- Suspense,
- and Transitions.
The technologies and libraries chosen to make up SolidStart look very exciting.
And if you need something different, or something more, you can swap out these building blocks for other blocks. If you're so inclined.
And that is why SolidStart is "composable". Unlike NextJS, it doesn't lock you in to any technological choices.
But I'm not sure I want to swap out building blocks. I like NextJS's convenience, even if it does have its drawbacjs.
But that's ok, because I'm not really SolidStart's target audience, at least not right now. And that brings us to SolidStart's name.
And more specifically, to the "Start" part of the name. As the blog post states : "SolidStart is designed first and foremost to be a starter."
What does that mean?
Well, the blog post also says : "This is a framework designed for builders and people who have their own opinions. [...] That's what we mean by "The Shape of Frameworks to Come". SolidStart won't be the last Solid Framework. [...] We've already seen people build Meta-Frameworks on top of it."
So it seems to me that SolidStart also sees itself as a building block. A part of something greater.
But let's circle back to one of the first questions. Is SolidStart "the shape of frameworks to come" ?
I have no doubt that there will be a slew of opinionated frameworks building on top of SolidStart.
But will other frameworks follow this direction? Don't get me wrong, it's an exciting one.
But SolidJS is not the powerhouse that React is. It has a lot of exciting concepts. The most important one is its' use of signals for fine grained reactivity.
But I don't see non SolidJS meta frameworks going through major rewrites in order to follow in SolidState's footsteps.
Even though Next JS would do well to increase its support for solutions other than Vercel. And if they choose to do so SlidState's composable model might well be the way forwards.
Has SolidState piqued your interest? If so the next step along the way is to understand how SolidJS works and what it brings to the table.
And that is what I've explained here