Angular v16 introduces a brand new reactivity model that significantly improves performance and developer experience. The new model reduces the number of computations during change detection, resulting in better runtime performance. It also simplifies the mental model for reactivity, making the dependencies of the view and data flow through the app clearer. Fine-grained reactivity enables checking changes only in affected components, improving efficiency. Additionally, the update makes Zone.js optional in future releases by using signals to notify the framework when the model has changed. Computed properties are delivered without the penalty of recomputation in each change detection cycle, further optimizing performance. Better interoperability with RxJS is also enabled, outlining a plan to introduce reactive inputs.
Angular v16 introduces a new signals library as part of @angular/core. This library allows developers to define reactive values and express dependencies between them. Signals provide a simplified way to handle reactivity in Angular applications. They can be used to create computed values that depend on other signals, and effects can be defined to execute callbacks whenever a signal’s value changes. This new feature adds more flexibility and power to Angular’s reactive capabilities.
To facilitate integration with observables, Angular v16 includes an RxJS interop package (@angular/core/rxjs-interop). This package makes it easy to lift signals to observables using the to Observable function and convert observables to signals using the to Signal function. This interoperability between signals and observables expands the possibilities for reactive programming in Angular applications.
Server-Side Rendering and Hydration
Angular v16 introduces a developer preview of full app non-destructive hydration for server-side rendering. This approach improves performance and user experience by reusing existing DOM nodes instead of re-rendering the application from scratch. It reduces content flickering and improves Web Core Vitals in certain scenarios. The architecture also enables fine-grained code loading in the future and supports progressive lazy route hydration. Integration with existing apps is made easy with just a few lines of code. The developer preview also includes updated Angular Universal schematics and support for stricter Content Security Policy (CSP) for inline styles.
Improved Tooling for Standalone Components, Directives, and Pipes
Angular v16 encourages wider adoption of standalone APIs by providing migration schematics and a standalone migration guide. Developers can now create new projects as standalone from the start using the — standalone flag with the ng new command. The new bootstrap Application API allows configuration of Zone.js with “provideZone” change detection. The Angular CLI now uses an esbuild-based build system in developer preview, resulting in faster build times. Experimental Jest support is introduced, offering reduced complexity for testing and enabling browser-based unit testing with Web Test Runner. Additionally, the Angular language service now supports autocomplete imports in templates, enhancing developer productivity.
Improved Developer Experience
Angular v16 introduces several improvements to enhance the developer experience. Inputs can now be marked as required, resulting in compile-time errors if a value is not specified for them. Router data can be passed as component inputs, enabling easy binding of route parameters, path parameters, and query parameters. Inline styles in components now support Content Security Policy (CSP), allowing developers to specify a nonce attribute for inlined styles. These enhancements contribute to a more robust and error-free development process.
TypeScript 5.0 Support
Angular v16 includes support for ECMA Script decorators and improved unit testing with Jest and Web Test Runner. It also expands Content Security Policy (CSP) support in the CLI, ensuring a secure development environment.
Angular v16 brings a wealth of exciting new features and improvements that have the potential to revolutionize Angular application development. From the reactivity model and signals to server-side rendering, improved tooling, and developer experience enhancements, this update aims to streamline development processes, boost performance, and provide developers with more flexibility and power. By embracing these new features, Angular developers can stay ahead of the curve and leverage emerging technologies like Vite and Playwright for seamless integration and improved capabilities. The team at Techtic is thrilled about the release of Angular v16, and we encourage fellow developers to explore these new possibilities and share their experiences with the Angular community.