If I were to start a new web app in 2023, I’d use whatever full-stack server-side framework I prefer and host it on the service that will get it standing up on a public IP address quickly. That’s my sole criteria.
Use bare metal JS for as long as you can stand. Dip into htmx or the hotwire stack when you need to get a little more fancy.
Write your own reusable components. You can even call them partials and they can even work outside of a single file. Datepickers are native now so how complex is that widget you need really?
Add icons and other assets directly to your app, like a gentleman of yore.
Just go as long as possible without having to npm install
.
It’s been interesting to see how much folks have come out against the JS Framework-Driven-Development practices of the last 5-7 years, and they have some good reasons. Some of them are just telling on themselves or blaming trends for their bad decision making; I’ve made some mistakes in the name of hype myself. I don’t think React or Angular or any framework is inherently A Bad Way to Do Websites, but it’s been very frustrating for the thought leaders to only recently be waking up to the benefits of server-side generated pages — as if this is a newly discovered performance breakthrough and not the way the web worked forfucking ever.
For the most part, most web developers aren’t out there trying to move fast and break things all the time. In that environment, new dependencies that immediately solve an issue in a brittle environment are appealing, and a package manager to manage that stack of dependencies even more so. You’ve got lots of new hires to onboard and don’t have time to walk each one of them through homespun code, so why not use as many open source packages as you can.
No… most web developers are out there trying to make websites that just work, and the more senior ones remember when websites really did just work, and they know the reason was because they weren’t layered with so much shit.
When you build websites that work and are easy to reason about, and where a little more time and consideration was spent working on code instead of just splat importing functions to make the CI pipeline go brrrr, you’re building durable software. You want to be able to throw a baseball at the reinforced glass window of your code and watch it bounce back, surface unmarred.
Build something that works, make it sustainable. If you want to grow it, being able to honestly pitch durability in your code is a value-add you can tout to the right investors. Know how everything in your code works. Know where every line of code comes from (mostly your repo). Know that the modern browser environment is no longer a hellscape. Sleep soundly knowing that there are no vulnerabilities down your dependency graph that will break half your packages when you try to move hosting providers.
It’s 2023. Code like it’s 2013.