Everything You Need to Know About Angular v16
Author: Nisarg Mehta
Date Published: 07/07/2023
The last update before the Angular v16 happened in October 2022. The update (v15) included stable standalone APIs, directive composition APIs, improved stack traces, and more.
Since then, the v15 has been frequently getting updated until recently when Angular launched a major update and called it the Angular Version 16.
Let’s go through the highlights.
How does Angular 16 differ from its predecessors?
- A brand new reactivity model for Angular is introduced in v16, bringing significant improvements to performance and developer experience.
- It provides better runtime performance by reducing the number of computations during change detection.
- It brings a simpler mental model for reactivity, making dependencies of the view and the flow of data through the app clear.
- Fine-grained reactivity is enabled, allowing for checking changes only in affected components.
- Zone.js becomes 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.
- Better interoperability with RxJS is enabled by outlining a plan to introduce reactive inputs.
- A new signals library is introduced as part of @angular/core in v16.
- The signals library allows defining reactive values and expressing dependencies between them.
- It provides a simplified way to handle reactivity in Angular applications.
- Signals can be used to create computed values that depend on other signals.
- Effects can be defined to execute callbacks whenever a signal’s value changes.
- The v16 release includes an RxJS interop package, @angular/core/rxjs-interop, for easy integration of signals with observables.
- Signals can be lifted to observables using the to Observable function from the interop package.
- Observables can be converted to signals using the to Signal function from the interop package.
Server-Side Rendering and Hydration
- Angular v16 introduces a developer preview of full app non-destructive hydration for server-side rendering.
- The new hydration 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 allows for future fine-grained code loading and supports progressive lazy route hydration.
- Integration with existing apps is made easy with a few lines of code.
- The developer preview also includes updated Angular Universal schematics and support for stricter Content Security Policy 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.
- New projects can be created as standalone from the start using the –standalone flag with the ng new command.
- Zone.js can be configured with the new bootstrap Application API using provide Zone 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.
- The Angular language service now supports autocomplete imports in templates.
Improved Developer Experience
- Inputs can now be marked as required, allowing for compile-time errors if a value is not specified for them.
- Router data can be passed as component inputs, allowing the binding of route parameters, path parameters, and query parameters to corresponding component inputs.
- Inline-styles in components now support Content Security Policy (CSP) with the ability to specify a nonce attribute for the inlined styles.
TypeScript 5.0 Support
- Support for ECMA Script decorators
- Improved unit testing with Jest and Web Test Runner
- Expanded CSP support in the CLI is also included in Angular v16.
Angular version 16 introduces a plethora of exciting new features that have the potential to revolutionize the way we develop Angular applications. Among these features are experimental additions such as signals and a dev server inspired by Vite.
These innovative additions to Angular are poised to significantly reduce boilerplate code and optimize the development process. By embracing these new features, developers can expect a more streamlined and efficient coding experience.
Additionally, developers pave the way for seamless integration with emerging technologies like Vitest and Playwright, offering simplified pathways to leverage their capabilities.
Angular developers at Techtic are excited about the v16. Are you?
Share this post with your fellow developers.