NextJS 13

Don't Adopt New Technologies If You're Not Ready

Ethan Glover

The release ofNextJS 13 changes how we build React apps. Server components as a default, first-class Promise support, and caching built directly into the router. And I couldn't be more excited. I've converted this blog to use the new app directory (with many headaches and apparently some sacrifices to responsiveness). This is expected, it is a beta feature after all.

But I wanted to take a step back and remind people that if they're angry about the direction Next is going in, or fail to see why it's better than [insert other thing here]. Then you not only don't have to use it, I would plead that you don't try.

I've switched technologies a lot. For the longest time I hated JavaScript. I was all about PHP and going out of my way to never write a single line of JS. I even used Google AMP HTML very heavily when it released. Before PHP, I wanted to do everything in Java. But when I was introduced to React, I loved it.

It's the time that I hated JS that I want to focus on. Everyone has their biases. I've seen hate of unfamiliar things in teams as well. I was once hired to help a team move from Apache Velocity to Vue. They wanted Vue because it looked familiar. But they failed to grasp the fundamentals of client-side routing, client-side rendering, component based design, state management, and so on. I saw the same thing with a PHP team later down the line.

The reason they failed to get it is because they wanted to keep using what they were familiar with. They wanted to force Vue to work inside of their current mental models. They romanticized the idea of being “modern”, but refused to learn what that means.

I recommended that they keep using Apache Velocity and do not attempt to switch stacks until they're ready to A) Learn outside of work, not just think they can hack it together within 8 hours a day on user stories, and B) take it seriously.

If you're not motivated by improvements or new things frustrate you, there's nothing wrong with that. You can rant all day about whatever you like, I like to rant too. But please, do not try to force your biases on those of us who are always looking to learn and improve.

Diversity in thinking is great, but by swimming against the tide, you become the chink in the armor in any team you work with.

If you prefer an “older” way of doing things, I hold no stigma against that. Just do it. Find a company that agrees with you. You can deliver good user experiences either way. Just don't try to jump in anyone's path and try to lead them off of it in reaction to your own personal fears. You can't stop the world from moving forward. The movements of technology are bigger than you, I, any dumb little project we work on, and even Vercel (as difficult to see as that is right now).

If you're going to hop on this NextJS train, you need to be on board at least to an extent that you're not scoffing and rolling your eyes like a child. Believe me, if there were something better I'd switch technologies again, just as I've always done.

The same goes for all technologies, if you're going to switch from Apache Velocity to Vue, you had better be ready to forget everything you know about building frontends. The alternative is to stick with Apache Velocity, there's nothing wrong with that.

If you're going to hop on the Node train, insisting on a DI framework like NestJS is just an unwillingness to learn Node and the JS ecosystem. The alternative is to stick with Spring Boot, there's nothing wrong with that.

By trying to force the wrong biases into a community that has rejected them, you're just creating tension, you are the elephant in the room that doesn't belong. Let's accept that differences in doing things is normal and OK, and that not everyone has to be just like us.