Saul Howard

Where’s the web 2023

I tried out a few web frameworks and libraries recently. My thoughts:

Vite

I needed to upgrade some old React apps. It turned out they killed create-react-app, and it seems like Vite is the go-to “just a React app” framework.

Vite made the refactor painless. I think the only incompatible thing was a new format for env vars. Other than that, it kept out of the way. Recommended.

Remix

I wanted a new app that would deploy to Cloudflare Pages/Workers. The worker runs an edge endpoint proxying to a GCP Python service for the heavy lifting.

Remix was impressive. It has a nice balance of web fundamentals and React. I’m not so sure about the push away from React with tech like htmx. I like React! I see their point — React apps are in some ways ephemeral, it’s diverging from the web and the ecosystem is chaotic. But for quick development in the real world, it works. I’d choose Remix over NextJS. Remix feels lighter, with less custom magic.

Astro

This one was cool. Astro has a great set of features for a static site generator that you can integrate into the rest of your stack with MDX and React, while keeping all the posts in Markdown.

I could share React components from the main webapp for the layout and added endpoints to the Astro app to serve the Markdown content to the other services.

Bun

I want to love Bun. JavaScript/TypeScript/NodeJS is a mess, and one of these attempts to replace the toolchain in one blow has to work.

I found myself writing a NodeJS service, so I set it up with Bun, and it was great — until I tried to pull in the SDK libs I needed to use. It turns out the NodeJS compatibility isn’t there yet.

Usually the only time I’m writing NodeJS is because of a specific library I want to use. Bun is great for writing dependency-free services, but if the service is dependency-free why would I use TypeScript? I understand they are aiming for 100% compatibility, and I hope they get there.