DEV Community

Cover image for What's New in Angular 16? Top features to discover.
Harshal Suthar
Harshal Suthar

Posted on • Originally published at ifourtechnolab.com

What's New in Angular 16? Top features to discover.

Technologies make a big deal in the business world asserting only one thing; to keep up or get left behind. Angular is one such technology that caught drastic attention in a short time and became a trusty tool for several clients due to its spectacular features.

Technology never stands still, and Angular is no exception releasing new versions on a regular basis. Staying current and migrating to newer versions is essential to keep things fresh, efficient, and secure.

On May 3, 2023, Google released Angular 16, a well-known front-end framework with several noteworthy changes and new features that could simplify Angular development. Therefore, finding an esteemed Angular development company and making the most out of this version would make a lot of sense.

Now let’s check the core features of Angular 16 and learn how it can be a game changer for existing businesses.

What’s New in Angular 16

1. Angular Signals

One of the key features that developers were anticipating in this version is “Angular Signals”. This feature idea was inspired by Solid.js and included in Angular as a whole new idea. With this, developers may describe and define the dependencies between reactive values during bespoke software development.

A signal is an accessible regular variable that users may access synchronously. It allows you to manage state changes effectively within Angular applications.

Image description

Some other attributes include declarative creation of the derived state, triggering alert signals on alteration of component templates, functions, etc.

Take a look at the example:

    import { Component, signal, effect, computed } from '@angular/core';
    import { CommonModule } from '@angular/common';
    import { bootstrapApplication } from '@angular/platform-browser';

    @Component({
      selector: 'my-app',
      standalone: true,
      imports: [CommonModule],
      <!-- template: `
        <h1>Calculate Area</h1>
        <p>Answer : {{ area() }}</p>
        <button (click)="calculateArea(15,15)">Click</button>
      `, -->
    })

    export class App {
        height = signal(10);
        width = signal(10);
        area = computed(() => this.height() * this.width());
        constructor() {
          effect(() => console.log('Value changed:', this.area()));
        }
        calculateArea(height: number, width: number) {
          this.height.set(height);
          this.width.set(width);
        }
    }

Enter fullscreen mode Exit fullscreen mode

In this example, I've produced two signals called height and width along with a computed value area. The computed value will be updated and presented in the template when the values of the signals are altered by using the calculateArea() function.

Although it appears amazing, Angular has not given up on RxJS and zone.js. Signals are a feature that is optional; Angular can function without them. In subsequent updates, Angular will steadily enhance Signals to make it a full package.

Hire Angular developers now and leverage the full potential of Angular 16.

2. Server-Side Rendering

When you look at Angular compared to React, there used to be a significant limitation - it couldn't handle server-side rendering (SSR). But things have changed with some major upgrades in Angular 16.

In the past, Angular used something called "destructive hydration" for SSR. This meant the server would load and render the application before sending it to the browser. The catch? The initial DOM rendering was thrown away, and the client app had to start from scratch when it was downloaded and booted up. This not only impacted Core Web Vitals like LCP and CLS but also led to annoying screen flickering.

Empower your business security with a top-rated Java development company

Now, with Angular 16, there's a new, smarter approach called "non-destructive hydration." When your client app is downloaded and fired up, the DOM doesn't get trashed. It's a game-changer for a smoother user experience.

3. esbuild-Based Build System

Jest is considered to be the most preferable testing framework by JavaScript programmers. Angular has included trial Jest support in version 16 in response to developer requests. It is currently in the developer preview phase, and you may activate it in your framework using the following code in the angular.json file.

"architect": {
  "build": { 
    "builder": "@angular-devkit/build-angular:browser-esbuild",
...

Enter fullscreen mode Exit fullscreen mode

4. Experimental Jest Support

Jest - the most preferred QA framework has been added to the demand of JavaScript professionals. Angular has reacted to developer requests by adding trial Jest support in version 16 of the framework.

Read More: Angular Performance Optimization in 12 Easy Steps

All you have to do is change angular.json and install Jest using npm.

// Install jest
npm install jest --save-dev

// angular.json
{
  "projects": {
    "my-app": {
      "architect": {
        "test": {
          "builder": "@angular-devkit/build-angular:jest",
          "options": {
            "tsConfig": "tsconfig.spec.json",
            "polyfills": ["zone.js", "zone.js/testing"]
          }
        }
      }
   }
}

Enter fullscreen mode Exit fullscreen mode

In upcoming upgrades, they intend to switch over all of the current Karma projects to Web Test Runner.

Wave goodbye to tedious tasks with Office 365 Add-ins development

5. Required Inputs

You can now declare input values as necessary in Angular 16. One can be defined using either the @Input decorator or the @Component decorator inputs array.

export class App {
  @Input({ required: true }) name: string = '';
}

// or
@Component({
  ...
  inputs: [
    {name: 'name', required: true}
  ]
})

Enter fullscreen mode Exit fullscreen mode

6. Standalone Project Support

In version 14, standalone components—which are separate from modules—began to be supported. This is advanced by Angular 16 by allowing the creation of standalone projects.

The Angular CLI may be used to create a standalone Angular 16 project. When using the ng new command, the -standalone parameter must be used. After then, NgModules will not be used to generate the project.

ng new --standalone

Enter fullscreen mode Exit fullscreen mode

Image description

7. Improvements to Ivy Renderer

In Angular 16, the Ivy Renderer, which made its debut back in Angular 9, keeps getting better and better. Thanks to some impressive tweaks in the compilation process, both the build and runtime overhead have been significantly slashed. What does this mean for you? Well, it translates into a faster application launch and a noticeably more responsive user experience.

Turn your ideas into reality with the best .NET development company

8. RxJS interoperability

The functions from @angular/core/rxjs-interop, which are in developer preview as part of the v16 release, will make it simple for you to "lift" signals to observables.

TakeUntilDestroyed, a new RxJS operator that we are announcing, condenses this example into the following form:

data$ = http.get('…').pipe(takeUntilDestroyed());

This operator will automatically inject the current cleanup context. For instance, if used in a component, it will utilize the lifetime of the component.

When you want to link an Observable's lifecycle to the lifecycle of a specific component, takeUntilDestroyed comes in very handy.

9. Configure Zone.js

After the first release of the standalone APIs, we learnt from developers that you'd want to be able to setup Zone.js with the new bootstrapApplication API.

For this, we added a choice via provideZoneChangeDetection:

bootstrapApplication(App, {
  providers: [provideZoneChangeDetection({ eventCoalescing: true })]
});

Enter fullscreen mode Exit fullscreen mode

10. esbuild-Based Build System

Many advancements have been made in reactive forms. Complex situations will be easier to create and manage.

Developers may now add and delete form controls dynamically during runtime. Improved validators will also simplify and facilitate form verification.

11. CSP support for inline-styles

The default style-src Content Security Policy (CSP) runs into a little hiccup when Angular brings in inline style elements to the DOM for component styles. To make it play nice, these elements should have a nonce attribute, or the server needs to toss in a hash of the style contents into the CSP header. While Google couldn't really pinpoint a practical attack path for this vulnerability, it's worth noting that many businesses are pretty strict about their CSP policies.

This situation led to a growing interest in a feature request over at the Angular repository.

The good news? Angular v16 introduces a nifty new feature that spans across the framework, Universal, CDK, Material, and the CLI. It lets you add a nonce attribute for styling the components that Angular inlines. You've got two ways to do it: either via the ngCspNonce attribute or through some other cool features. It's all about giving you more control.

Other features:

Other updates in Angular 16 that enhance the developer experience include:

  • Importing components and pipes automatically using the language service.
  • TypeScript 5.0, ECMAScript decorators, service workers, and SCP are all supported via the CLI.
  • CSP support for online styles.
  • Self-closing tags.
  • TypeScript 4.8 and ngcc support has been discontinued.

That’s all from the updated release of Angular 16. Keeping up with all these features helps businesses stay in rhythm with the modern world. Check out our blog section for more informative articles.

Conclusion

In conclusion, Angular 16 is an exciting upgrade for developers because it adds a lot of new features and improvements.

Angular 16 has some exciting upgrades that make it a fantastic choice for building powerful web apps. With enhanced component interactions, advanced routing, simplified state management, better testing and debugging tools, and increased performance, you've got everything you need for top-notch web development. Staying current with the latest Angular version ensures you're on the cutting edge of web development possibilities.

So, what are you waiting for? Discover the best Angular development company and hire Angular developers to make the most out of this version.

Top comments (1)

Collapse
 
dsaga profile image
Dusan Petkovic

Thanks for the article, would be good if you could provide more examples on how these signals and how they are used in Angular!

Interested in this zone.js thing, haven't heard of it before.