X
X
X
X

What you need to know about Angular 18

HomeArticlesProgrammingWhat you need to know about Angular...

Angular v18 is a major release of the Angular framework. It brings a series of improvements and new features that aim to make web development more efficient and effective.

This release marks a major milestone by introducing advanced tools for state management, performance optimization, and improved user experience.

This article aims to explore in detail what's new in Angular v18, highlighting developer benefits and real-world use cases.

What's new in Angular v18

Angular v18 introduces several significant improvements for developers. It further strengthens its position as one of the most popular front-end frameworks.

Zoneless Change Detection

Area-less change detection is one of the most anticipated features of Angular v18.

Traditionally, Angular used zone.js to handle change detection. However, this approach could lead to performance and complexity issues.

Angular v18 now allows developers to do away with zone.js.

This method reduces the number of change detection cycles, improves application performance, and simplifies code. Ultimately, applications are more responsive and easier to maintain.

zoneless change detection

Transition to zone-free detection

Although adapting existing applications to the new detection method may seem daunting, the transition steps can be summarized in 3:

  1. Identify critical areas. Start with the parts of the application where performance is most critical;
  2. Modify the components. Next, we replace the calls to zone.js with manual calls to ChangeDetectionRef ;
  3. Testing performance. Finally, we ensure that the changes made actually improve performance without introducing bugs.

Additionally, using 'ChangeDetectionStrategy.OnPush' can also improve performance in combination with zoneless detection.

Visually, this gives:

Transition to zone-free detection

Default Event Coalescing

Event coalescing is another key enhancement in Angular v18 that helps optimize application performance.

Event coalescing groups multiple events into one, thereby reducing the number of change detection cycles required.

This allows more efficient event handling especially in high interaction frequency applications.

To activate it, here are the lines of code that you need to enter:

Default Event Coalescing

Additionally, tests show that event coalescing can significantly reduce the load on the browser, improving application responsiveness.

Native asynchronous wait support for zoneless applications

Native support for 'async/await' in zoneless applications is a highly anticipated feature.

Using 'async/await' natively simplifies handling asynchronous operations and improves code readability.

Here is an example of its use:

Native asynchronous wait support for zoneless applications

This feature allows you to take full advantage of the asynchronous capabilities of JavaScript without the constraints of zone.js.

By using 'async/await', developers can write cleaner and more understandable code. This makes debugging and maintaining the code easier.

These new features of Angular v18 represent a leap forward for web development. Because they offer more powerful and easier-to-use tools for developers.

Component compatibility with zone-free detection

With the introduction of area-less change detection in Angular v18, it is essential to understand how this new feature integrates with Angular CDK and Material components.

What is AngularJS?

AngularJS was designed at Google in 2009.

AngularJS is considered as the most popular JavaScript framework. – It is free, open source and client-side oriented.

Current compatibility

Angular CDK (Component Dev Kit) and Angular Material are designed to work seamlessly with the new boxless change detection.

The development teams have updated these libraries to ensure they remain compatible and optimized for performance.

Key points of compatibility

Most CDK components now support zoneless change detection. This includes things like overlays, portals, and scroll handling components.

Material components such as buttons, menus, and dialogs also support area-less detection.

To illustrate the compatibility and use of components with zone-free detection, here are some concrete examples.

Example 1: Using an Angular Material button without an area

Example 1: Using an Angular Material button without an area

In this example, the Angular Material button works perfectly with the OnPush change detection strategy.

Exemple 2 : Overlay CDK sans zone

Exemple 2 : Overlay CDK sans zone

This example shows how to create and use a CDK overlay without using zone.js. All this, relying on the 'OnPush' change detection strategy.

Additionally, thanks to zoneless use, one can:

  • Reduce the number of change detection cycles;
  • Simplify code without the complexities associated with 'zone.js';
  • Process events more efficiently and reduce the risk of performance issues in highly interactive applications.

So, this new feature can enable developers to create more performant and responsive applications.

A new site for Angular developers

With the release of Angular v18, Google also launched a new website dedicated to Angular developers: angular.dev.

This site represents a major step forward for the developer community, providing a richer and more interactive platform for learning and developing with Angular.

Introduction of angular.dev

The angular.dev site was designed to centralize all the resources needed by Angular developers, whether beginners or experienced.

By bringing together documentation, guides, code samples, and tools, angular.dev aims to make learning and using the Angular framework easier.

Its features

A new site means new and revised functions. For this purpose, Angular.dev comes with its share of new features. 

1. Complete and interactive documentation

The documentation on angular.dev is more detailed and interactive than ever before. It includes step-by-step guides, tutorials, and detailed APIs. Each section is designed to be easily navigable, with built-in code examples to illustrate concepts.

2. Live Code Examples

One of the most notable features of angular.dev is the ability to test live code examples. Developers can edit and run the code directly on the site. This feature makes it easier to understand the concepts and put them into practice right away.

3. Video tutorials and online courses

The site also offers a collection of video tutorials and online courses to help developers deepen their knowledge. These resources cover topics ranging from Angular basics to advanced techniques, with domain experts as instructors.

4. Community Forum

Angular.dev includes a community forum where developers can ask questions, share solutions, and discuss best practices. This forum is moderated by experts and provides a valuable source of support and collaboration.

5. Integrated development tools

The site offers built-in development tools, such as online coding environments and project generators. These tools help developers get started quickly and prototype applications without having to set up a local environment.

Improvements over the old site

The launch of angular.dev marks a significant improvement over the old documentation site. Here are some of the key improvements:

  • The interface is cleaner, faster, and easier to navigate, with a responsive layout that adapts to all types of devices;
  • The search functionality has been improved to provide more relevant and faster results, helping developers quickly find the information they need;
  • The new Community section allows developers to connect and collaborate more effectively, sharing knowledge and experiences.

Material 3 Stabilization

One of the notable updates in Angular v18 is the stabilization of Material 3. This release brings a series of stable and optimized components, giving developers powerful tools to create modern and responsive user interfaces.

Material 3 is an evolution of the popular Material Design, introducing significant improvements in design, performance, and usability. 

MDC Button

It is a responsive and accessible button, designed to adapt to all types of devices. It improves performance, brings better accessibility and compatibility with zone-free detection.

MDC Button

This simple code creates a styled button with the new Material 3 classes.

MDC Card

The MDC Card is a flexible and stylish container for displaying a variety of content, from images to text to buttons. Its design is responsive, easy to customize, and integrates seamlessly with other components.

MDC Card

This card component integrates images, text, and actions, while being responsive and accessible.

MDC Dialog

This modal dialog component is perfect for displaying important messages or forms. It comes with improved responsiveness, smooth transitions, and keyboard navigation support.

MDC Dialog

This example shows how to open a dialog with a button.

MDC List

It is a multipurpose list component suitable for displaying collections of items. It has a clean design and advanced customization options. Also, it comes with multiple selection support.

The benefits of Material 3

Material 3 components are designed to align with the latest design trends with their modern and clean aesthetic.

Thanks to component optimization, apps using Material 3 benefit from increased performance, with reduced load times and smoother interactions.

Material 3 focuses on accessibility, ensuring that apps can be used by as many people as possible, including people with disabilities.

Finally, all Material 3 components support zoneless change detection, so they can deliver optimal performance without the constraints of 'zone.js'.

Signals APIs in Developer Preview

With Angular v18, one of the most exciting new features is the introduction of Signals APIs in developer preview. These APIs represent a major step forward in the way Angular handles data and interactions.

Signals APIs enable finer grained and more responsive state and event management in Angular applications.

Inspired by reactive programming concepts, these APIs make it easy to manage state changes and update components in response to those changes.

Reactive state management

Signals APIs introduce a new way to manage state in Angular. Unlike traditional methods that rely on observables or services to propagate state changes, signals offer a more intuitive and straightforward approach.

Reactive state management

Here, 'signal' is used to create a reactive value 'count', which automatically updates when its state changes.

Simplifying the propagation of changes

Signals simplify the propagation of state changes across components, eliminating the need for complex chains of observables or emitters.

Simplifying the propagation of changes

In this example, updating the 'userName' signal is automatically reflected in the template, simplifying state management.

Stabilization of Deferred Views

With the release of Angular v18, deferred view stabilization represents a significant step forward for load and performance management in Angular applications.

Deferred views allow you to defer rendering of certain parts of the application until they are actually needed.

By deferring rendering of non-critical parts of the application, deferred views reduce initial load time and improve application responsiveness.

Fewer components are initially rendered, reducing the load on CPU and memory, especially on resource-constrained devices.

Deferred views help manage resources better by rendering components only when they are needed, optimizing memory and bandwidth usage.

Users enjoy a smoother, more responsive experience, with reduced load times and faster interactions.

For example, to defer rendering of non-active tabs:

Stabilization of Deferred Views

Here, tab content is rendered only when a tab becomes active, thanks to the use of 'ng-template' with 'matTabContent'.

For lazy loading of components in infinite scroll:

Stabilization of Deferred Views

Here this component displays only visible items in an infinite list.

Improving and stabilizing the integrated control flow

With Angular v18, built-in control flow stabilization brings significant improvements to how Angular applications handle control flow, enabling greater flexibility and better performance.

The control flow stabilization built into Angular v18 includes several improvements designed to make applications more robust and performant.

Better management of conditions

New control flow directives, such as 'ngIf', 'ngFor', and 'ngSwitch', have been optimized for more efficient handling of conditions and iterations.

Better management of conditions

This simple use of 'ngIf' demonstrates how the directive can be used to conditionally render content based on the state of the application.

Better management of conditions

This iteration over a collection with 'ngFor' shows how Angular efficiently handles lists of items.

Overall, these optimizations help reduce complexity and improve performance, especially in complex applications with nested condition structures.

Improving performance

Performance improvements include optimizations for conditional rendering and iteration over collections, reducing load on the browser. These improvements result in faster render times and a smoother user experience.

Improved asynchrony support

New features enable better handling of asynchronous data streams, integrating operations like waiting for data and handling promises more smoothly.

This allows developers to build more responsive applications and improve asynchronous state management.

Server-Side Rendering Improvements

With Angular v18, Server-Side Rendering (SSR) has received several significant improvements, particularly regarding hydration and internationalization (i18n).

These improvements aim to deliver better performance, a smoother user experience, and more powerful tools for developers.

Improving hydration 

Hydration is the process of taking a pre-rendered page on the server side and making it interactive on the client side by associating DOM elements with Angular components.

Angular v18 introduces faster and more efficient hydration. This reduces the time it takes to render a page interactive after its initial load.

This gives users a smoother experience, with less delay between the initial rendering and full interactivity of the page.

Performance accrue

Previous versions of Angular required more time to hydrate pages. And, this resulted in noticeable delays for users.

With Angular v18, hydration is faster and more efficient, reducing the time it takes to render interactive pages.

Improved i18n support

Internationalization (i18n) allows developers to create applications that are adapted to multiple languages ​​and cultures. Angular v18 simplifies the translation process and improves the loading performance of multilingual applications.

For this, Angular v18 provides developers with improved tools and libraries. It is therefore easier for them to manage languages ​​and cultures.

Before/After Comparisons

To better illustrate the improvements, here is a before/after comparison regarding hydration 

Before :

Comparisons Before

After

Comparisons After

Replay of events

Event replay is one of the key new features in Angular v18. This ability to capture, store, and replay user events offers exciting possibilities for improving testing, state synchronization, and the overall user experience.

This would allow developers to simulate test or diagnostic scenarios or when complex user interactions need to be reproduced. They will therefore have better control over the state of the application. Consequently, it will be easier to identify and correct problems.

Replay of events

Here, button clicks are captured and stored in an array. By clicking the “Replay Events” button, the events are replayed, allowing to simulate user interactions.

Improved debugging experience

Angular V18 comes to significantly improve the debugging experience by optimizing existing tools and introducing new features.

Les améliorations de Angular DevTools

Angular DevTools, the browser extension dedicated to debugging Angular applications, has been updated with improved features.

First, developers can now see how change detection cycles propagate through components in real-time. Additionally, component properties can be viewed and edited directly from the DevTools interface.

Finally, a new interactive graph shows dependencies between modules and components, helping to identify potential failure points

Enriching the debug console

The debug console has been enriched with new Angular-specific commands. This is the case for commands like 'ng.profiler.start()' and 'ng.profiler.stop()' for profiling performance. Additionally, log messages are more detailed and informative, making it easier to isolate issues.

Conclusion

Ultimately, there is no denying that Angular has constantly evolved to meet the needs of developers.

With Angular v18, the framework continues to push the boundaries by introducing innovations like event replay, partial hydration, and significant improvements to server-side rendering and debugging tools.

Additionally, these new features pave the way for a new way of developing web applications: more efficiently and faster.


Top