JavaScript and the illusion of choice

JavaScript's trademark flexibility is not what it seems
6/24/2025

When discussing the productivity of full-stack JavaScript vs. batteries-included frameworks like Laravel or Rails, a commonly cited strength of JavaScript is the breadth of choice in the ecosystem. You can choose the best possible tech for each part of the stack. Type in “frontend framework”, “ORM”, “authentication”, “caching”, “routing”, “email”, or “websockets” on npm and bask in the wealth of the JS ecosystem. No “framework lock-in”, just a buffet of options waiting to be slotted perfectly into your stack on your own terms.

A convincing point at first, but it’s not the whole story. It feels like freedom and choice abound but the unspoken reality is that you only have one real option: build your own framework.

There is no battle-tested, community-approved, batteries-included framework for JavaScript. There are no “benevolent dictators for life” offering a cohesive, opinionated vision. If you want to build with full-stack JS, you have to assemble the stack yourself and that doesn’t quite feel like freedom to me.