DEV Community

Cover image for ⭐Angular 18 Features ⭐
Sandeep Balachandran
Sandeep Balachandran

Posted on

8

⭐Angular 18 Features ⭐

Hey there,

Version 18.0.0 is here and it has some great updates for Angular developers everywhere. 🎉🎉

TL;DR 🙌

✅ Experimental support for zoneless change detection

✅ Angular.dev is now the new home for Angular developers

✅ Material 3, deferrable views, built-in control flow are now stable

✅ Server-side rendering improvements such as i18n hydration support

✅ More Additional features

How to update to version 18

Visit update.angular.io for detailed information and guidance. To have the best update experience,

Update to 18

ng update @angular/cli @angular/core
Enter fullscreen mode Exit fullscreen mode

In order to update your global angular,

npm i -g @angular/cli
Enter fullscreen mode Exit fullscreen mode

What’s in this release?

✅ Evolving change detection

  • You can try the experimental zoneless support in Angular starting today! Add provideExperimentalZonelessChangeDetection to your application bootstrap
bootstrapApplication(App, {
  providers: [
    provideExperimentalZonelessChangeDetection()
  ]
}); 

Enter fullscreen mode Exit fullscreen mode
  • After adding the provider, remove zone.js from your polyfills in angular.json
  • Moving forward, zoneless opens many doors for developers:

    • Improving composability for micro-frontends and interoperability with other frameworks
    • Faster initial render and runtime
    • Smaller bundle size and faster page loads
    • More readable stack traces
  • The best way to use zoneless in your components is with signals:


@Component({
  ...
  template: `
    <h1>Hello from {{ name() }}!</h1>
    <button (click)="handleClick()">Go Zoneless</button>
  `,
})
export class App {
  protected name = signal('Angular');

  handleClick() {
    this.name.set('Zoneless Angular');
  }
}

Enter fullscreen mode Exit fullscreen mode
  • In the example above, clicking the button invokes the handleClick method, which updates the signal value and updates the UI.
  • This works similarly to an application using zone.js, with few differences.
  • With zone.js, Angular ran change detection any time application state might have changed.
  • Without zones, Angular limits this checking to fewer triggers, such as signal updates.
  • This change also includes a new scheduler with coalescing to avoid checking for changes multiple times consecutively.

✅ New home for Angular developers

  • Today, angular.dev has became the official documentation website for Angular!
  • On top of the new, modern look and feel you can find
    • an interactive hands-on tutorial based on WebContainers,
    • interactive playground with examples,
    • improved search powered by Algolia,
    • refreshed guides,
    • simplified navigation
  • All requests to angular.io now automatically redirect to angular.dev

✅ Stablilty Updates

Material 3 is now stable!

Signal APIs in developer preview

  • Find how to use the APIs in signals guide Guide

Deferrable views are now stable

Built-in control flow is now stable

✅ Improvements in server-side rendering

  • one of the main blockers to get even more people to take advantage of hydration was lack of i18n support
  • i18n blocks is available in developer preview mode in Angular v18!

✅ Improved debugging experience

  • Angular’s hydration process can be visulize in Angular DevTools.
  • Next to each component you can find an icon representing the component’s hydration status.
  • To preview which components Angular hydrated on the page you can also enable an overlay mode.
  • If your app has any hydration errors, Angular DevTools will visualize them in the component explorer.

✅ More Additional features

👉 Specifying a fallback content for ng-content

  • In v18 specifying default content for ng-content is available
@Component({
  selector: 'app-profile',
  template: `
    <ng-content select=".greeting">Hello </ng-content>

    <ng-content>Unknown user</ng-content>
  `,
})
export class Profile {}
Enter fullscreen mode Exit fullscreen mode
  • Now we can use the component:
<app-profile>
  <span class="greeting">Good morning </span>
</app-profile>
Enter fullscreen mode Exit fullscreen mode

Which will result in:

<span class="greeting">Good morning </span>
Unknown user
Enter fullscreen mode Exit fullscreen mode

👉 Unified control state change events

  • FormControl, FormGroup and FormArray classes from Angular forms now expose a property called events, which allows you to subscribe to a stream of events for this form control.
  • Using it you can track changes in value, touch state, pristine status, and the control status.

Now you can use:

const nameControl = new FormControl<string|null>('name', Validators.required);
nameControl.events.subscribe(event => {
  // process the individual events
});
Enter fullscreen mode Exit fullscreen mode

👉 Automating the migration to the application builder

  • In Angular v17 we announced “application builder” as stable and enabled it by default for new projects.
  • Under the hood it uses Vite with esbuild to replace the previous webpack experience.

👉 Route redirects as functions

  • To enable higher flexibility when dealing with redirects, in Angular v18 redirectTo now accepts a function which returns a string.
  • For example, if you’d like to redirect to a route that depends on some runtime state you can implement a more complicated logic in a function:
const routes: Routes = [
  { path: "first-component", component: FirstComponent },
  {
    path: "old-user-page",
    redirectTo: ({ queryParams }) => {
      const errorHandler = inject(ErrorHandler);
      const userIdParam = queryParams['userId'];
      if (userIdParam !== undefined) {
        return `/user/${userIdParam}`;
      } else {
        errorHandler.handleError(new Error('Attempted navigation to user page without user ID.'));
        return `/not-found`;
      }
    },
  },
  { path: "user/:userId", component: OtherComponent },
];
Enter fullscreen mode Exit fullscreen mode

👉 TypeScript 5.4

  • Angular updated the dependency on TypeScript letting you take advantage of all the latest TypeScript 5.4 features!

For more let us hear it from the creators

Credits : Official Announcement 😄

Changelog : Repository

Image of Datadog

How to Diagram Your Cloud Architecture

Cloud architecture diagrams provide critical visibility into the resources in your environment and how they’re connected. In our latest eBook, AWS Solution Architects Jason Mimick and James Wenzel walk through best practices on how to build effective and professional diagrams.

Download the Free eBook

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay