The Framework Treadmill: Why We Keep Relearning the Same Problems

Every 2-3 years, the JavaScript ecosystem reinvents state management, routing, and data fetching. Developers spend more time learning new tools than building products.

Illustration of a hamster wheel representing the endless cycle of JavaScript framework migrations
framework-treadmill The JavaScript framework ecosystem keeps solving the same problems with new syntax every 2-3 years. State management, routing, data fetching - we've reinvented these solutions dozens of times since 2010, and developers spend more time on the treadmill of relearning than actually building products. JavaScript frameworks, React, Vue, Angular, framework fatigue, state management, frontend development, developer productivity, technical churn, Redux, Svelte

According to the State of JavaScript 2024 survey, 81% of developers use React. The treadmill never stops. React replaced Angular. Vue emerged. Svelte promised to compile away the framework. Now there's Solid, Qwik, and Astro. Every 2-3 years, we're sold a new solution to the same problems we've been solving since 2010.

TL;DR

Freeze your framework versions annually. Evaluate upgrades as projects with ROI analysis. The 'latest version' treadmill wastes engineering time.

The JavaScript ecosystem has a unique relationship with reinvention. State management, routing, data fetching, component architecture - we've solved these problems dozens of times. Each solution becomes "the way" until the next solution arrives. Developers spend more time on the treadmill of relearning than they do building products.

Having watched technology cycles for over four decades, I've seen this pattern before. But the frontend world has accelerated it to an exhausting pace.

The Cycle Never Stops

Let's trace the state management journey in React alone:

2013-2015: Flux was the answer. Facebook invented it, so it must be right. Dozens of Flux implementations emerged. Then Redux arrived and made everything else obsolete.

2015-2018: Redux was everywhere. Boilerplate was "just how it's done." Thunks, sagas, epics - pick your side effect model. The ecosystem grew so complex that "learning Redux" became a career milestone.

2018-2020: Redux was suddenly "overkill." Context API would solve everything. Then MobX. Then Recoil. Then Zustand. Then Jotai. Each promised simplicity while adding another option to evaluate.

2020-Present: Server components changed everything. Now we need React Query (or TanStack Query). Or SWR. Or maybe the framework handles it - if you're using Next.js, Remix, or whatever emerged last month.

Every 2-3 years, the "right" answer changes completely. The patterns you mastered become antipatterns. The libraries you invested in become legacy. This isn't evolution - it's churn masquerading as progress. Like cargo cult Agile, we perform the rituals of "keeping up" without questioning whether we're actually improving.

The Real Cost of Churn

According to the State of JavaScript 2024 survey, only 8% of JavaScript developers work without frameworks or libraries. Everyone else is on the treadmill. And while 14% of developers cited issues with React - the most-used framework - the complaints center on complexity, performance issues, and breaking changes. The same problems we keep "solving."

Microsoft research on developer productivity found that developers frequently "have to stop working on their tasks and spend time learning or attending trainings about a topic." One developer in their study noted spending "a lot of time struggling with how to do basic things like building" when working in unfamiliar systems.

This isn't anecdotal. Research on developer productivity shows that code navigation and understanding consumes the vast majority of development time - far more than actually writing code. Every framework switch multiplies this cost. You're not just learning new syntax; you're learning new mental models, new conventions, new gotchas.

That's time not spent shipping features. Not spent understanding user needs. Not spent on the actual work of building products.

The Same Problems, Different Syntax

Here's what every frontend framework eventually needs to solve:

State management. How do you track and update application state? How do you share state between components? How do you handle side effects? React has tried props, context, Redux, hooks, and server components. Angular has services and RxJS. Vue has Vuex and Pinia. Svelte has stores. Different syntax, same fundamental problem.

Routing. How do you map URLs to views? How do you handle nested routes, parameters, guards? React Router has been rewritten several times. Each framework has its own routing solution. The concepts are identical; only the API differs.

Data fetching. How do you get data from a server? How do you handle loading states, errors, caching? We've gone from callbacks to promises to async/await to React Query to server components. The network request hasn't changed.

Component composition. How do you build reusable UI pieces? How do you handle props, slots, children? Every framework reinvents this with slightly different semantics.

These aren't new problems. We were solving them with jQuery and Backbone in 2010. We're solving them with the same fundamental approaches today - just wrapped in different abstractions. Every abstraction layer adds overhead, and the frontend ecosystem keeps adding layers.

Why the Churn Continues

Framework churn isn't accidental. Several forces keep the treadmill spinning:

Resume-driven development. "React" on a resume is worth more than "shipped products." Developers chase new frameworks because hiring managers reward it. Companies adopt new frameworks because developers want to work with them. It's a self-reinforcing cycle that prioritizes novelty over stability.

Content economics. Every new framework means new tutorials, courses, books, conferences. The people creating educational content have incentives to promote new tools - there's no market for "keep using what works." The influencer economy runs on novelty.

Genuine improvements (sometimes). New frameworks do occasionally solve real problems better. React hooks were genuinely more ergonomic than class components. Svelte's compile-time approach does produce smaller bundles. But incremental improvements don't justify wholesale rewrites - they justify adoption for new projects.

The "not invented here" syndrome. Every large company wants their own framework. Facebook made React. Google made Angular. The Vercel ecosystem pushes Next.js. When your business model depends on developer adoption, you need developers dependent on your tools.

The JetBrains Perspective

JetBrains' 2024 developer ecosystem survey noted that "library and framework fatigue has slowed down, with the main libraries and frameworks now maturing and taking inspiration from each other." The top three frontend frameworks - React, Angular, Vue - were all launched over a decade ago.

This is encouraging and damning simultaneously. Encouraging because maybe we're finally reaching stability. Damning because we've spent a decade reinventing the wheel, and the mature solutions look remarkably similar to where we started.

The survey also found that 32% of developers cite the lack of a built-in type system as their biggest JavaScript struggle. That's a language problem, not a framework problem. TypeScript mostly solved it. Yet we keep rewriting frameworks instead of stabilizing on solutions that work.

What I'd Actually Recommend

If you're building products (not portfolios), consider this approach:

Pick something mature and stick with it. React has been production-ready for a decade. Vue is stable. Even Angular, despite its reputation, is well-documented and consistent. The "old" framework you know will outperform the "new" framework you're learning. Like microservices, new frameworks should be adopted because you've proven you need them, not because they exist.

Evaluate the cost of switching. Before adopting a new tool, calculate the real cost: training time, migration time, bug introduction, documentation updates, hiring friction. Most switches don't pay back that investment.

Framework Switching Cost Calculator

Calculate the true cost of switching frameworks before you commit:

Distinguish hype from value. Server components are genuinely useful for specific problems. So is Svelte's compiler approach. But not every application needs them. Most applications would be fine with jQuery if we're being honest.

Invest in fundamentals. JavaScript itself, TypeScript, browser APIs, HTTP, CSS - these skills transfer across frameworks. The framework will change; the fundamentals won't.

Ship something. The best code is code that serves users. The framework matters far less than whether your product solves a problem. I've seen successful products built on "legacy" frameworks and failed products built on cutting-edge stacks.

The Uncomfortable Truth

The framework treadmill exists because we let it. Developers chase novelty because the industry rewards it. Companies adopt new frameworks because developers demand it. The cycle perpetuates because no one wants to be "left behind."

But being "left behind" with a working product is better than being "ahead" with a perpetually unfinished one. The developers I've seen ship successful products aren't the ones with the most frameworks on their resume. They're the ones who picked a tool, learned it deeply, and built things with it.

The framework you know will often be more productive than the framework you're learning. That's not an argument against learning - it's an argument against constant switching. Deep knowledge in one ecosystem beats shallow knowledge across many.

The Bottom Line

The JavaScript ecosystem has spent fifteen years solving the same problems with different syntax. State management, routing, data fetching - the fundamentals haven't changed, just the APIs we use to address them. Every framework switch costs months of productivity for marginal improvements.

The developers who ship products aren't the ones chasing every new framework. They're the ones who picked something that works, learned it deeply, and focused on what actually matters: building things that serve users. The treadmill is optional. You can step off.

"The framework you know will often be more productive than the framework you're learning."

Sources

Technical Strategy Review

Considering a framework migration? Get perspective on whether the switch will pay back the investment or just add churn.

Get Review

Found a Better Way?

If you've solved these problems differently—especially if your solution is simpler—share it.

Send a Reply →