The Angular team is previewing major new features including the Signals API and a new Output API, as Google reveals plans to merge this popular front-end TypeScript framework with Wiz, an internal framework used for many first-party projects.
At the NG Conf 2024, which took place in Salt Lake City last week, product and developer relations lead Minko Gechev, along with engineering tech lead Jeremy Elbourn, took the stage to describe how work on Angular Signals had attracted the attention of the internal Wiz team, to the extent that Signals primitives are now in production on YouTube mobile.
“This project established a model for ongoing collaboration between our teams. Going forward, Angular and Wiz are going to be working together more closely,” said Gechev in the keynote.
Although Gechev stopped short of declaring a full merger plan, he added in a Hacker News discussion: “Merging is the ultimate goal! Both teams are already working closely together on shared designs and implementations.”
Asked if this meant that Wiz, currently closed source, would become open source, Gechev confirmed “Yes, via Angular.”
In the keynote, Gechev and Elbourn said that Wiz is “very tightly coupled to the internal Google tech stack,” with the implication that it is not well suited for general use. The likely outcome is not that Angular will become a new merged framework but that there will be more input from the Wiz team and greater internal adoption.
With or without Wiz, Angular is changing. Signals, first described in a an RFC in April 2023, is a major new piece of plumbing for Angular which aims to replace “the overhead, pitfalls, and quirks of zone.js” as the “reactive foundation of the framework.”
An Angular signal is described in the docs as “a wrapper around a value that can notify interested consumers when that value changes. Signals can contain any value, from simple primitives to complex data structures.”
That is just the starting point though. New signal-based APIs include signal queries, which find child elements and read values from them; signal inputs, which allow values to be bound from parent components, and model inputs, which allow two-way binding with writeable signals. These are in developer preview in version 17.3, released last month.
Another new preview API, output, allows components to emit values to their parents. Although not signal-based, the new output API is similar in that unlike the API it replaces as it is not decorator based, making it “conceptually aligned,” according to the introductory post.
Angular is popular, though overshadowed by React and React-based frameworks. Could this activity and investment by Google put it back on track for growth in usage? It might, but there are still factors that count against it. One perhaps is that the team promises to maintain backward compatibility, which means several ways to do the same kind of thing, which further implies bloat and complexity as developers try to figure out which approach is best.
Developers value stability as well as improvements. “Angular has always been the chosen framework in the enterprise because of its stable, iterative and well predicted future releases and longtime support. If Google wants now to fragment Angular just because they want to have yet another React clone and attract the cool kids… then that will be terrible experience yet again,” said one in a GitHub comment.
Angular has suffered from fragmentation before, when the original framework was rewritten in TypeScript for a 2016 release, causing the old version to be renamed AngularJS.
The opposing argument is that signals and other advances do improve both the performance and the developer experience, more than compensating for the need to learn new ways of coding. “I’ve been working with large Angular projects for years and I really enjoy the development experience. Especially now with the new template syntax, signals, and other recent changes,” said another developer.