Well, this post is irrelevant as I have rewritten my blog with Next.js
I have created various iterations of this blog. It started as a simple server-rendered website, using Python’s Flask. Then Jekyll was the thing, so I rewrote it. Eventually, I moved to JavaScript and used the first version of Gatsby.
My intention was always to have a playground hosted somewhere, and try technologies that I couldn’t use in my day-to-day jobs.
So I picked Gatsby when I was writing Angular to experiment with React. Wrote my first CSS-in-JS with styled-components and then emotion.
Tried SVG animations, learned the basics of CSS-grid, went overboard with PostCSS plugins (wrote two plugins myself!), and more. Whatever felt interesting at the time.
Lately I've stopped experimenting that much, apart from trying different layouts. I've redesigned the blog two or three times but I didn’t change the framework.
Living with Gatsby
Working with markdown is fantastic. There’s a plugin for everything, simplifying any configuration. I didn’t have to overthink about adding an RSS feed or embedding a tweet. I can write my content and call it a day.
Its image handling process is also top-notch. Lot’s of options with great documentation too. I'm unsure if I'm shipping a ton of JS but the dev experience is great.
Other than that, it just spits out some HTML + JS and you can host it anywhere. It excels in simplicity if what you’re building aligns with its happy path.
The problems
Unfortunately, what I loved more about Gatsby came back to bite me. Too much reliance on its plugin system.
As it stands, I’m blocked from upgrading to v4, because some community plugins haven’t been updated.
Actually, I put on my big boy pants and fixed it. That said, my point still stands. I'm too reliant on the plugin system, and I don't really like it. I have no real control over the process, and as Gatsby keeps getting more and more irrelevant (see alternatives below), it will happen again.
Naturally, I’m thinking about what every bored developer thinks on vacations. Rewriting it all.
Migration thoughts
I’ve been battling against these thoughts for a bit now. There are two contenders. Remix and Next.js.
Next.js
Next gives me almost everything I want. It’s a very mature product, improving all the time, and has a buzzing community. I’ve used Next.js professionally, as well as for some side projects of mine.
Here are some people writing about their experiences migrating from Gatsby
- https://blog.eyas.sh/2021/08/gatsby-to-next-js/
- https://lowmess.com/blog/migrate-gatsby-next
- https://jeffjadulco.com/blog/migration-next
- https://maxrozen.com/walkthrough-migrating-maxrozen-com-gatsby-to-nextjs
Oof.
There’s also a lot of work on the Markdown processing and syntax highlighting, as Gatsby does some clever optimizations that I can’t properly replicate.
I’m also using Netlify for hosting, so some features like next/image won't work. This opens the can of worms. I either change the platform for a single site (I maintain 12 sites on Netlify) or bring another dependency in the name of Cloudinary.
Other than that the skeleton can stay the same with some small adjustments in SEO and RSS handling.
Still, not convinced that it’s an upgrade. I love Next.js when building a pseudo-full-stack application, but it is a sideways move, without great benefits. If anything it creates more issues.
Remix
The hottest technology in the React ecosystem is undoubtedly Remix. I even created an issue in my repo to migrate to when I first read the documentation.
My concerns are similar to the ones of Next.js, with the addition that it’s very very new and I prefer if someone else slays the dragons for me. If some clever person, builds a tempting skeleton that does 95% of the job, I might consider it, but I don’t want to buy into the hype.
I think my priorities have changed over the years. I used to want to get my hands dirty and try random stuff, but I’m starting to feel some JavaScript fatigue. A lot of tools, various foot guns, and one developer going into circles just to write some ramblings.
After some thought, I’ve decided to stay with my current Gatsby setup. The change is not worth it. The framework works, there are no glaring performance issues so far, and I’m honestly burned out and disinterested to pursue a migration.
So yeah, this will be my setup for a while. Will keep tabs on both technologies for reference, but for now I assume that this blog's stack is complete.