Angular's Year in Review: 2024 Highlights
As we look back on 2024, several significant developments stand out in the Angular ecosystem:
- The lasting impact of the collaboration with Wiz
- Incremental Hydration, an immediate outcome of that partnership
- The steady evolution of Signals
- The arrival of zoneless change detection
The Wiz Partnership
At ng-conf in March, the Angular team unveiled their collaboration with Wiz, Google's internal framework used in products like Google Search. Wiz prioritizes raw performance—essential for apps that must appear instantly—yet it lacks the developer-centric design that Angular is known for. Angular, on the other hand, has historically faced challenges with initial load times but offers a superior development experience.
The core idea is to channel Wiz's performance-oriented capabilities into Angular, not the reverse. This arrangement represents a deep, long-term strategic commitment. It also opens the door for Angular to become increasingly vital within Google's own projects and product lines.
In my view, the significance of this partnership often goes underappreciated. It overshadows all the technical features we saw in 2024. Even for teams that don't need Wiz-level efficiency, this move makes Angular a more dependable and long-lasting choice.
Incremental Hydration Explained
One of the earliest concrete outcomes from the Wiz collaboration can be seen in hydration. Hydration is the mechanism that connects server-rendered HTML with a fully operational Angular application.
Earlier in the year, Angular launched Event Replay, a key feature for server-side rendered (SSR) apps. It tackles the "uncanny valley" effect of SSR—a scenario where users click or type before the framework has finished bootstrapping. Event Replay captures these interactions and replays them once Angular is ready.
With Angular 19, a true milestone arrived: Incremental Hydration. This gives developers the ability to flag specific template sections and set hydration triggers, such as user gestures, a timer, or simply never hydrating static content.
Angular previously wasn't ideal for public-facing sites with strict first-load performance goals. Now it has pushed itself forward, taking an innovative lead. As more people recognize this, it will likely attract developers and projects that previously wouldn't have considered Angular.
The Evolution of Signals
It might be tempting to say that Signals had a quiet 2024. Angular 18 brought no new features, and the effect function remains in developer preview. Still, version 19 introduced linkedSignal and the rxResource/resource pair.
The linkedSignal utility offers a tidy way to create working copies of Signals that are both derived from and synchronized with an original signal, replacing the need for effect in some cases.
The resource function, however, goes beyond a simple utility. It's a critical piece for linking Signals with asynchronous work—a missing component for completing the "holistic Signal experience." Instead of just exposing a Signal, resource provides a larger API: status, error details, a reload method, and abort controls. This lays the groundwork for any future feature that handles async operations.
With resource, we also see the scaffolding for a Signal-based way to handle HTTP calls, soon to be called httpResource. Concerns about handling asynchronous tasks and race conditions outside of RxJS have been met as well. resource contains a built-in switchMap pattern; and for more complex needs, rxResource integrates directly with RxJS.
Going Zoneless
Seeing an experimental zoneless mode in Angular 18 was an unexpected surprise. When Signals appeared in mid-2023, they were marketed primarily as a stepping stone toward zoneless operation. That vision also required "Signal Components," which would handle change detection signals rather than relying on zone.js.
Gradually, the Angular team realized that zoneless and Signals aren't inherently tied together. By refining markForCheck—a critical function for any OnPush component—they discovered a simpler path. Instead of merely flagging the component as dirty, markForCheck now also triggers change detection. This subtle adjustment makes zoneless implementation remarkably straightforward.
The pivotal shift was to use markForCheck as the trigger—likely a much easier route than introducing Signal Components. But the benefits extend further. Existing code and libraries don't need to be rewritten; you can be zoneless without ever using Signals. In fact, apps that already use OnPush across the board might already be zoneless, whether they know it or not.
Given the far-reaching effect of this minor markForCheck change, this was an exceptionally clever solution. It demonstrates that letting an idea develop over time can produce faster progress with considerably less effort than originally envisioned.
What Lies Ahead
There's a pressing question: when does the Angular Renaissance actually end? Since introducing standalone components, each major release has piled on more and more features. What's the tipping point where the router, forms, and HTTP package all fully embrace Signals?
For HTTP, resource represents the initial move. We've also caught a glimpse of early prototypes for a Signal-based forms module. These are likely to develop through 2025, with two major releases planned. It's quite probable that Angular 21 will unveil them—probably as developer preview.
My prediction is Angular 21, although I'd lean more toward Angular 22 in 2026. But even that won't mark a finish line. Changes to authoring formats are also on the horizon. Minko Gechev, Angular's product lead, mentions that selectorless components will play a significant role in 2025. This means one import instead of two, but that's only a sliver of what's to come. Early ideas point to alternative syntaxes—perhaps functions instead of classes or Vue-like template directives.
No matter the final details, the Angular Renaissance isn't wrapping up in 2025.
So, what does this entail? Many features highlighted for 2024 are in developer preview or experimental states. If you're limited to stable APIs, you can't even use Signals yet—effect is still in developer preview.
My personal advice is to begin with at least the developer preview features. Based on your application, consider them for new modules or less critical areas. Holding off until the whole Signal stack—including forms and resource—becomes stable could put you behind. Yes, you'll need to keep up with each major version, but certain parts of your codebase will remain fresh and give you a competitive edge.
Alex Rickabaugh, Angular's framework lead, mentioned on Reddit not long ago that for a new project, he'd use the rxResource function even in its experimental form.
The good news is, you don't have to jump in. Angular 19, 20, and 21 will keep working perfectly with NgModules, without Signals, and with zone.js intact. You're free to adopt these innovations as you see fit.
Wishing you all the best for 2025!
