Back to Blog

JavaScript Overhead

November 6, 20245 min read
#JavaScript#Web Development#Opinion

i love JavaScript. i've built my career on it. but man, can we talk about how absolutely chaotic this ecosystem is? because i'm tired just keeping up.

every time i look away for two months, there's a new framework, a new bundler, a new runtime, a new package manager, and somehow three new ways to do server-side rendering. it just never stops.

the framework thing

React. Vue. Angular. Svelte. Solid. Qwik. Fresh. Astro. and now people are circling back to "maybe just use HTML" with htmx. i can't tell if we're making progress or going in circles at this point.

Next.js alone updates so frequently that reading the changelog feels like a part-time job. App Router, Server Components, Server Actions, Partial Prerendering — each one is basically a paradigm shift disguised as a minor version bump. i just want to build a website man.

the tooling

before you write a single line of actual application code, you need to have opinions about: package manager (npm? yarn? pnpm? bun?), bundler (webpack? vite? turbopack?), runtime (Node? Deno? Bun?), types (TypeScript or vibes?), linter (ESLint but which config?), formatter, CSS approach, state management...

that's like eight categories of decisions before you've rendered a single div. and every one has passionate people who'll tell you the other choices are wrong. it's exhausting.

the real cost

JS fatigue isn't about being lazy. it's cognitive overhead. every new tool means new APIs, new mental models, new docs, new bugs, new breaking changes. and when you're working professionally you can't just "try everything." you pick a stack and commit. but then you open twitter and apparently your stack is "legacy" and you should be using the thing that launched last tuesday.

// my actual inner monologue picking a stack
const decision = {
  framework: "Next.js... probably? Unless Remix is better now?",
  styling: "Tailwind. Final answer. (checks Twitter) ...still Tailwind.",
  state: "Zustand. Wait, do I even need state management?",
  testing: "Vitest. Or Jest. They're the same. Kind of. Not really.",
};

what i actually hold onto

after years of watching all this spin, the thing that keeps me grounded is: the fundamentals don't change. HTML semantics still matter. CSS layout works the same everywhere. JavaScript the language evolves slowly and predictably. HTTP is still HTTP. browser APIs are stable.

the frameworks are just opinions about how to organize the boring stuff. some opinions are better than others. but none of them are as important as understanding the platform they're built on.

so that's what i do now. i stopped trying to keep up with everything. i pick a stack that works, stick with it until it genuinely doesn't, learn new tools only when i have an actual use case, and invest heavily in fundamentals because those transfer everywhere. i'm always gonna feel slightly behind and that's fine.


the chaos is also kind of javascript's strength though. the ecosystem moves fast because people genuinely care about making the web better. i just wish it would slow down enough for me to finish reading the docs before the next major version drops.