Skip to Content

Your Framework Is Not Your Religion

Human identity doesn't (yet) run on JavaScript.

Published on

Slot machine illustration, with the slots being logos of popular front-end frameworks.
"Framework Roulette" by Dessy Duleva(opens in new tab)

There's a tendency among JavaScript developers to evangelize tools too much. If you want proof, just check the recent drama(opens in new tab) sparked by David Heinemeier Hansson(opens in new tab)'s decision to not use TypeScript. There are many other fires like that and I'm not about to add fuel into any of them.

I just want to make the point that using all tools is better for all tools. It's the conclusion I ended up with when evaluating different frameworks for usage in a long-term company project.

Common goal

All frameworks essentially try to do the same thing and they're not perfect at it. If they were, there wouldn't be so many of them. Or at least new ones wouldn't be popping up constantly. Yet people compare them as if they're apples and oranges, when most of them really are just different shades of apples.

Since they have the same goal, they tend to take ideas from each other. React(opens in new tab) inspired hooks, Vue(opens in new tab) inspired single-file components, Solid(opens in new tab) popularized signals, and so on. All of these features slowly make or have already made their way elsewhere.

Rich Harris(opens in new tab) has said that Virtual DOM is pure overhead(opens in new tab) and built Svelte(opens in new tab) as a compiler. Well, what do you know… React is now experimenting with its own compiler(opens in new tab).

On the other hand, obfuscating and dumbing things down can bring problems and that's exactly where Svelte has met limitations. Due to its over-abstraction, it had to introduce runes(opens in new tab), and got a little closer to React in the process.

My point is that the developers behind these tools are open-minded. If one framework brings something useful to the table, others will experiment with it and try to benefit from it.

What to pick

I don't really have personal preferences. I only do my best to avoid stuff that works mysteriously, because I believe that magical software sucks(opens in new tab). But I give things a shot, though. For example, I actively use Vue in a project, this very website has some Svelte in it, I want to get started with Solid… and I chose React for that company project I mentioned in the beginning.

Why I chose React? Because my project will have to be maintained for years and eventually even entirely by other people. It's just common sense to pick React:

  • It has more third-party solutions, reducing the need to waste resources building everything in-house

  • It's backed by one of the largest corporations on the planet, so it's guaranteed to stay and be actively supported

  • It pretty much has the biggest and most mature community, with tons of learning materials

  • Everyone under the sun is looking for React developers and there's no shortage of them

I picked React for reasons other than its features because I don't think they matter that much. If I pick Solid because it has a compiler and is faster, then what happens if React rolls out its own compiler? Or if something like Million.js(opens in new tab) comes around and alleviates major pain points? Rewrite everything to React?

With that said, all of the above is probably of little to no importance for your personal blog, for example. If you work alone on a project, it can run on whatever. Nobody cares. You'll probably have no performance issues either. That's where it makes sense to experiment with something new and shiny. To see a different point of view and keep your tribalism in check.

If very long-term maintenance is a concern, pick something well established. Otherwise it doesn't matter. Just choose something your team likes and stick with it. The same can be said for meta-frameworks as well — Next(opens in new tab), Nuxt(opens in new tab), SvelteKit(opens in new tab), SolidStart(opens in new tab)

Everyone wins

More avant-garde projects like Svelte and Solid can move more freely and put new ideas on the table. This allows enthusiastic developers to try them out in low-stakes projects. In other words, novel solutions can meet reality and get put to the test.

Once these new ideas prove themselves useful, projects with more "mass" that move slowly and steadily, like React, can start considering them. Eventually, this opens the possibility for a wider range of the community to benefit from those ideas as well.

In other words, I think that having some frameworks be "less popular" is beneficial for all developers and the industry in general. That's why we should experiment and give feedback, rather than repeat the same and mindlessly preach it.

Conclusion

It doesn't matter if you useState() or createSignal(). Everyone has the same goal and searches for the ideal way to get there.

Pick tools because they work well for your team and your project, not because you have their stickers on your laptop.

Hope not that your framework "wins", but that the best ideas win. That's how everybody wins.