This is a spreadsheet that I have built in React and then migrated to Vanilla JS, and I claim that Vanilla JS is better suited for building such complex interfaces.

React story

Almost nobody uses Vanilla JS nowadays to build web apps. React has taken over the world. And that’s fair. If it was not bringing value, it wouldn’t be as successful. So this declarative model of React is indeed valuable.

The thing is that React helps solving problem of syncing state into the DOM by declarative code. We don’t write ‘addClass’ anymore, we just declare what the end state of the DOM should be, and React figures out the diff that should be applied to the web page.

The best benefit to all of this, in my opinion, is that it allows more junior-level people build interfaces that they wouldn’t otherwise be able to build at all. I say, React has commoditized the web app development.

The cost

The problem is, that React has a cost. And the cost is, when you have an app built, how do you make it really fast? What I mean by fast? I mean year 2000 fast. It’s so rare nowadays, that if you find such a fast website, you immediately feel it.

So the hard problem, I claim, is to make the web fast again. I claim that this benefit alone can be a competitive advantage on its own. There are multiple javascript runtimes (Bun and Deno) that have raised millions of dollars just on that premise (mostly).

And there are already new frameworks, that recognize the importance and speed and solve it in different ways (Solid, Svelte).

I claim for a different approach. Instead of building new frameworks on top, just to solve the performance problem, I say – let’s use Vanilla JS (or rather, Vanilla TS). (Nobody is marketing Vanilla, because you can’t trademark that thing.)

Browser API’s got good

Let’s acknowledge that Browser’s API got significantly better. Yes, making simple things may look more tedius, but that’s not a big problem. The most important thing is – that solving hard problems, such as performance and predictable code flow – becomes a lot easier with Vanilla Browser API, than with React and friends.

In my experience, I have rebuilt a complicated spreadsheet React app with Vanilla TS. It has a similar amount of code, but it’s 10x times faster on big spreasheets, and is actually easier to make the production-level quality.

Conclusion

With React (and friends) – building easy-to-medium apps is easy. But building complex apps is very hard or impossible.

With Vanilla TS – building easy apps is tedius. But building complex apps is easier, compared to React.

So the important thing is being able to build complex stuff. Easy things can be built with any tool.

Read More