Let’s start with a term that perfectly captures what’s happening here: Enshittification.
Coined by Cory Doctorow, it describes the slow degradation of a product or platform over time. First, it’s amazing. Then it starts optimizing for growth. Then for platform goals. Then for “strategy”. Eventually, the thing that made it great gets diluted, replaced, or buried under abstractions nobody asked for.
It doesn’t break overnight. It erodes.
And that’s exactly how Angular feels right now.
Angular Is Throwing Away Its Superpower
Angular had a superpower. And no, it wasn’t TypeScript. It wasn’t DI. It wasn’t the CLI.
It was Zone.js + RxJS + Default Change Detection.
That combination was insane.
You could write reactive code with RxJS, pipe your streams, bind them in templates, and Angular would just… update the view. No manual state sync. No explicit subscriptions everywhere. No setState. No signal triggers. No reducers. No “please re-render now.”
Zone.js patched the async boundary and said: “Don’t worry. I got this.”
And it worked. Surprisingly performant, too - if you knew what you were doing.
People love to hate on Zone.js because “magic.” But that “magic” eliminated boilerplate. It allowed reactive rendering without introducing a state management framework every five minutes.
Angular had something no one else had:
React needed setState (and later 50 state libraries). Vue leaned into its own reactivity system. Svelte compiles it away.
Angular? It just rendered your damn data.
RxJS handled data flow. Zone.js handled the async boundary. Change detection did the rest.
You didn’t need Redux. You didn’t need manual triggers. You didn’t need architectural gymnastics.
It was enterprise-grade and boring in the best possible way. And now? We’re slowly being told that this wasn’t good enough.
The Massive Architectural Pivot - But For What?
Signals. Server-side rendering. Hydration. Zone-less Angular. Why?
Angular was never the scrappy “micro-frontend for landing pages” framework. It was the enterprise beast. The SAP dashboard monster. The internal tooling machine. The multi-team, multi-year platform workhorse. It had an identity.
Now it feels like it’s chasing something else.
SSR? Sure. Nice to have. But Angular didn’t dominate because of SEO. It dominated because of structure, stability, and predictability. This architectural shift feels less like evolution and more like insecurity. Instead of doubling down on what made Angular powerful, predictable reactive UI without ceremony, it’s pivoting toward parity with frameworks that already own that space.
React has owned the fine-grained manual reactivity narrative for years. Svelte owns compiled reactivity. Angular trying to out-react React feels like Apple suddenly deciding to build budget Android clones.
The Forced Migration = The Real Shittification Here’s where it gets ugly.
Right now, you can still use Zone.js. You can still use default change detection. You can still write Angular the way it was designed. But read between the lines:
Zone-less is the future. Signals are the new primitive. Manual control is the direction.
Did you check Angular? I got wonky. The moment updates don’t behave the same way with zone + default detection, the moment you start having to manually push updates even though you’re using the “old” model, that’s it. That’s the enshittification moment.
Because now:
You add boilerplate.
You introduce manual triggers.
You lose the simplicity of “it just works.”
You risk performance regressions because humans are now responsible for what the runtime handled flawlessly.
And that’s the irony: Zone.js was criticized for being magic. But the alternative? You become the runtime. Congratulations. You now manage update boundaries yourself. How is that progress?
Angular Is Losing Its Identity
Frameworks win by owning a philosophy.
React : explicit, manual, flexible, chaotic. Svelte : compile-time intelligence. Vue : progressive reactivity. Angular : was structured, opinionated, enterprise-stable, reactive without ceremony.
Signals aren’t bad. SSR isn’t bad. Zone-less isn’t evil. But forcing a shift that invalidates the original design philosophy? That’s where the identity cracks.
When Apple builds phones, people buy them because they are Apple phones. If Apple suddenly released plastic budget clones trying to beat Xiaomi at its own game, what happens? People who want premium stay confused. People who want cheap buy Xiaomi anyway. You lose both sides. That’s what this feels like.
Angular is walking toward a space where React and Svelte already have cultural dominance. And when a framework loses its identity, it doesn’t immediately die.
It slowly becomes… less. Less special. Less distinct. Less obvious.
Final Thought
This isn’t about hating Signals. Just a little.
It’s about watching a framework abandon the exact design choices that made it powerful.
Angular didn’t need to be React. It didn’t need to be Svelte. It didn’t need to win the SSR hype cycle.
It just needed to remain the enterprise reactive beast that didn’t make you manually babysit your view updates.
Enshittification doesn’t happen because something becomes terrible. It happens because it stops being what made it great.
And right now? Angular feels like it’s forgetting who it is.
Top comments (0)