Switching from React to Vue3

Man, this feels good
Roman Lamsal - 9/22/2022

Hi there! I have not finished any blog posts in about a year because I could not bring myself to the pain it is to actually “implement” such a blog post.

As described in my very first post I started with Gatsby and react to build a SEO-friendly for myself. Then I added some blog capabilities because “why not?” and there we were.

The internet praises Gatsby as good alternative to Next.js when it comes to SSG (static site generation) which is mandatory for SEO-friendliness. There are tons of tutorials on how to set up a complete CMS experience with Gatsby and NetflifyCMS (which I was originally aiming for)… but I am a developer. I don’t need a puny non-dev CMS to build beautiful, coherent HTML blog posts!

Programming blog posts… great idea.

Of course, I am capable of actually building some React components with which a blog can be built. But after only my third blog post I realized: I am programming blog posts rather than writing them, which sucked all the fun I could’ve had with blogging by being so enormously tedious.

So I experimented with markdown to HTML transformation, putting in some custom components for each tag and voilà… Writing was easier. But I could not figure out how my own plugin implementation worked which I created to have some file-based navigation with dynamic inputs based off some metadata. Because I am an idiot who rather implemented some shitty plugin himself than use some viable OpenSource alternative. Great.

So my desire to actually use my codebase to write some blog posts was around zero.

New job, new stack

I switched employers in April '22 (check us out: https://notch.so). Unsurprisingly, the techstack of a ~5k employee retailer who’s in business for 70 years and the techstack of a startup, which I joined as one of the first two employees, are not exactly the same. Partly the same, but tiny twist of frontend technology.

The codebase I was joining was already written in Vue2. I did some programming of smaller websites with Vue2 just to familiarize myself with the new syntax and stuff, but all in all, I was pretty sure I liked React better.

The Epiphany

Because we aim to migrate from Vue2 to Vue3, I whipped up a demo project to get some hands-on-experience with Vue3 and… OMG.

<script setup> is just such a nice way to write those Vue Single-File-Components. Vite is so damn fast, it blew my mind. TypeScript support is great.

Sure, React already has great TypeScript support and can also be bootstrapped with Vite (which you always should, folks).

But what I really, really love about Vue3 with Vite:

The Ecosystem is just amazing

I’ve never seen such a great ecosystem and variety of plugins available. Many of the standard tools are written by Vue or Nuxt.js core team members (they overlap a lot). Amazing people like Anthony Fu pump plugin after build tool after plugin after […] into the Vite and/or Vue ecosystem.

So, because I was so hyped of Vue3+Vite already, I rebuilt my website with

Now I have everything I previously had with Gatsby and React. The build time dropped significantly from around 3 minutes to 7 seconds (go Vite, go!) and the development experience for future features I have planned for my site will be inevitably better. It’s also very lean - Gatsby is still a hefty framework with its own potent-yet-complex API.