Two years later I still find myself explaining how Solid has carved out its unique niche in an overcrowded space. After reading Swyx’s Svelte for Sites, React for Apps which again poses the dichotomy for Sites and Apps, I have another take.
Building for Economy
Intel Core Processor
The Intel Core Micro-Architecture was not originally designed to be the powerhouse it is today in server and desktop machines. It was for mobile chips.
In the early 2000s Intel’s Netburst architecture used in the later Pentium models had taken clock speeds to unprecedented levels. For years Moore’s Law had run uninterrupted. Unfortunately, they used a lot of power and dissipated a lot of heat. Not exactly something that you could have sitting on your lap.
Intel had commissioned a team to solve. The team realized pretty early on there was no way they would be able to cool the existing generation processors with a fan thin enough to support the designs they wanted. So they came up with a new architecture that worked at lower clockspeeds.
Fast forward a few years and the desktop market hit the same ceiling. They realized the same technology could be applied there. It wasn’t long before Intel’s old architecture was completely replaced across its whole lineup from the lowest power mobile device to the most powerful multi-CPU servers. It was a big part of Apple’s move to Intel chips in their computers and more or less steered Intel off a trajectory to destruction.
Electric car technology has existed in some form for over a hundred years. But we haven’t seen wide commercial mass production until the last decade or so.
There are many factors at play here. I’m not going to say financial viability isn’t the biggest shift in this space. However, the catalyst from consumer perspective was economy.
Automakers took the efficiency of electric motor technology and used it to produce the smallest least wasteful vehicles they could. We quickly saw cars like the Nissan Leaf, Chevy Volt, and electric versions of all our favorite subcompact cars. We saw hybrid technology storing energy from braking to charge the motor all in the name of less.
The thing is electric motors are incredibly efficient and produce an astounding amount of torque. So it was only a matter of time before they would be harnessed for performance vehicles in the consumer space. At first as a way of augmenting existing gasoline engines. Later to bring a whole new type of performance vehicle like the Tesla Roadster.
That’s not to say the electric economic car is not already more performant than the cars that came before it. Just when you shift the focus you can also achieve new heights on the opposite end of the spectrum.
From a framework perspective, the earliest compilers might have been in templating engines as a way to convert declarative syntax back into executable code. This was motivated to provide an easier abstraction to reason about to ease developer experience.
Svelte took similar techniques and brought it right down to the bundler. Using static analysis and the knowledge of tree-shaking(dead code elimination) Svelte leverages a minimal runtime to produce some of the smallest JS bundles. Most notably automatically detecting features being used to only importing the necessary code.
Building for Performance
What if instead of the most minimal reactive implementation which ties into components we could opt into granularly optimized updates? What if our reconciliation algorithms were larger but smarter? What if instead of implicit language features we allowed for explicit to better capture end-user intent? And what if we still could leverage all the same static analysis and aggressive feature detection?
We can still have all the compiled characteristics of being small and having less runtime overhead but use that instead to give us room to drastically improve performance. Svelte is small but doesn’t outperform the fastest VDOM libraries like Inferno. Solid on the other hand is in a different league.
I’m sure you’ve been there at one point. You had a great idea. Something novel. Something new. Yet something impactful…
This time we conquered the Server.
Leo Horie, author of Mithril, to someone on Reddit wanting to get the TL;DR described Solid as:
Svelte is to Vue as Solid is to React
That’s a pretty interesting perspective, and one that I find helps a lot of people first encountering Solid. Both Svelte and Solid are compiler driven variants of their counterparts. But what does that actually mean?
I’ve seen it positioned to the difference between being simple and being easy. Solid while being reactive is clearly on the React side of things where Svelte has inherited Vue’s easiness.
And while this may not mean there is a one size fit all solution for sites and apps, like with automobiles, improvements in technology mean the libraries of today are already better positioned across a wider range of usage than those that preceded them.