Remix.run entered the mix of frameworks we’re using at Bocoup for a little over a year, and it’s been a huge lift in our velocity, enabling us to do things like offer free prototypes.
We’re going to be posting a series of blog posts about parts of our workflow, and wanted to start with an overview of things we like and don’t like about Remix.
What we like
Web standards
Remix puts a heavy emphasis on web standards. Remix uses regular HTML forms and HTTP with web standards. It’s all Fetch API. This lets you ride on the web’s accessibility model. This also means your apps work with JavaScript turned off.
Server Side Rendering
Remix renders JavaScript UI on the server for first load and then client JavaScript picks up from there. This makes for very fast page loads and transitions.
File-based Routing
Remix comes with a file based routing system that is a dream to use. No router code. Just file names/paths.
Co-location of APIs and UI code
API POSTs/GETs and UI code live together in each route file, which saves on routing decisions and makes finding code easy. We were surprised by how nice this code organization approach is to use. People like it so much that Next.js recently added the same feature with the app router.
Modular
Since Remix is built on the web fetch, Remix apps can run anywhere JavaScript can (not just Node). This makes remix very flexible for integration into an existing front end stack, backend for front end, or full stack context. This also makes it suitable for serverless deploys, and edge computing with the growing list of JS runtime services at the edge.
Other goodies
Remix comes with great integration guidance for typescript, tailwind, the prisma orm, Vite/esbuild, cypress end to end testing, deployment to aws, fly.io, vercel, cloudflare, and more. There great utilities for session management with cookies, and file uploading. There are also really nice hooks for data loading and state that enable really dynamic and responsive UI patterns.
What we don’t like
React dependency
We write a lot of React code at Bocoup, but we’re ready to stop. When we started using Remix, the documentation described a potential post-React future for the framework, though a more recent RFC on the project shared that this is no longer a goal.
We like the Remix focus on web standards, but we want to be writing web components instead of react components one day. We hope that future might still be possible, though it doesn’t seem likely from the RFC.
In the meantime, we are following projects like shoe lace, enhance.dev and HTMX.
Further reading
If you’re interested in learning more about remix, check out the tech explanation and philosophy.