Remix.run and web performance
February 16, 2022 (a year ago)
Recently, I rebuilt my main website, in Remix.run. The site was originally made in Gatsby, then remade in Next.js (see legacy site), then remade again in Remix. It has given me a great perspective about creating websites, and the changes over the years in building them.
You may be surprised to know that my opinion of web technologies in 2022 is a very positive one.
At first glance the number of web frameworks is daunting. There's Sapper, Hugo, this thing called Gridsome that I've never heard of, Nuxt, Next.js (great framework), Eleventy, and CRA (don't use this).
But the performance of some of these frameworks are astounding. Combine that with caching services like Cloudflare and Fastly, and build services like Vercel, Netlify, and CloudCannon, and you have some impressive power at your disposal for making insanely quick websites.
The bad times
The good times cometh
With Remix, most of the common speed improvements are done for you. You don't need to use a special component for images, you don't need any config to keep perf running smoothly, and integrations with Netlify and Vercel are excellent. Your actual web performance is great, without much change to your CSS libraries or design system, or the way you write `img` tags (don't forget `preload="lazy"`, people). Also, packages like GSAP or THREE.js on the top won't impact your site terribly. (On that note -- a good convention to have on supa-quick sites is no initial animation on above-the-fold content. Slows users' perceived LCP, and often actual LCP). (Edit: whoops! Looks like I'm guilty of this on this page right here).
Next.js also is a fabulous framework. I believe Next.js excels for making applications, which is not what it is really known for. Remix is far too fresh at the moment to do much more than a slick marketing page, but I believe that these frameworks will dominate the future as we enter into a world with so many people knowing React. But who knows, right?
Frontend is dead, long live frontend!