Top 10 Features in Angular 13 Every Developer Should Know
Tags: webdev, angular, javascript
Published: 2022-02-07 12:48:00

---
title: Top 10 Features in Angular 13 Every Developer Should Know
published: true
date: 2022-02-07 11:30:25 UTC
tags: webdev, angular, javascript
canonical_url: https://www.syncfusion.com/blogs/post/top-10-features-in-angular-13-every-developer-should-know.aspx
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0sqrbhif3uo1aphalack.png
---

[Angular 13](https://blog.angular.io/angular-v13-is-now-available-cce66f7bc296 "Blog announcing the availability of Angular v13"), the latest version of the TypeScript-based web framework, is here. It brings some exciting new features for Angular developers. If you’re curious about what’s new in Angular 13, here’s a quick rundown of the significant features.

## 1. View Engine is no longer available

The legacy View Engine is no longer supported by the latest version, Angular 13. Relying on View Engine has its maintenance costs, and also increases the complexity of Angular 13 codebases. To avoid that hassle, Ivy is now the only view engine supported by Angular.

Some existing libraries will be automatically migrated to **partial** compilation mode due to this change, and some metadata previously required for the legacy View Engine will also be removed. Furthermore, all internal tools are converted to Ivy ahead of time to ensure a smooth transition.

Ivy can now compile individual components independently of one another, which significantly improves performance. By removing View Engine, Angular can reduce its reliance on ngcc too.

## 2. Changes to the Angular Package Format (APF)

The Angular Package Format (APF) defines the format and structure of Angular Framework packages and View Engine metadata. It’s an excellent strategy for packaging every third-party library in the web development environment.

We can see some significant changes in the new version of the APF. Older output formats, including some View Engine-specific metadata, are removed with Angular 13.

The updated version of APF will no longer necessitate the use of ngcc. As a result of these library changes, developers can expect faster execution.

## 3. IE 11 support removed

Angular will no longer support Internet Explorer 11 as of version 13. Dropping IE 11 is a positive factor because it results in smaller bundle size and faster app loading. In addition, Angular can now use modern browser features like CSS variables and web animations via native web APIs due to these enhancements.

Apps will load faster because of the improved API and the lack of IE-specific polyfills. It also eliminates the need for differential loading. Improved APIs and infrastructure will be an advantage for developers, while application users will benefit from faster loading and a better user experience.

During project migration, running **ng update** will automatically remove these IE-specific polyfills and reduce the bundle size.

## 4. TypeScript 4.4 support

TypeScript 4.4 support is now available in Angular 13 version. As a result, versions prior to TypeScript 4.4.2 are no longer supported in the core.

### The significant highlights of TypeScript 4.4 are:

- Improved detection of type guards.
- Default catch variables.
- Faster incremental builds.
- The control flow of conditions can be analyzed.
- Symbol and template string pattern index signatures.

## 5. Node.js versions prior to 12.20 are no longer supported

Node.js versions prior to 12.20.0 are no longer available in Angular 13. This is because the Angular packages now use the Node.js package export feature with subpath patterns.

## 6. Version 7.4 of RxJS

The Angular 13 update adds RxJS, a reactive extension for JavaScript, and includes all versions of RxJS up to and including version 7.

For apps created with **ng new** , **RxJS 7.4** has become the default.

Existing **RxJS v6.x** apps will need to be manually updated with the **npm install rxjs@7.4** command. You can always rely on RxJS 7 for new project creation. As for migrations, existing projects should keep on **RxJS 6**.

## 7. Router changes

Routing help us to handle navigation from one view to the another. It enables easy navigation by interpreting a browser URL as an instruction to change the view.

With the latest update, the router no longer replaces the browser URL when new navigation cancels the current navigation.

There were several compatibility issues with earlier versions of Angular, mainly with query parameters. For example, after a question mark in query parameters, the default URL serializer tends to drop everything. The latest update, on the other hand, improves query parameter compatibility with question marks.

The null and undefined inputs of **routerLink** directives were previously equivalent to an empty string, and there was no mechanism to block the navigation of the link. Setting the router link directive value to null or undefined will now completely disable the navigation.

## 8. Angular CLI enhancements

The Angular CLI is a key component of the Angular puzzle. Angular CLI helps standardize the process of handling the complexities of the modern web development ecosystem by minimizing these complexities on a large scale.

With the release of Angular 13, this framework now includes a persistent build-cache as a default feature, which saves built-in results to disk. As a result, the development process will be accelerated. Furthermore, you have complete control over enabling or disabling this feature in existing Angular apps.

## 9. Improvements to Angular testing

The Angular team has made some notable changes to TestBed, which now correctly tears down test environments and modules after each test.

Since the DOM is now cleaned after tests, developers can expect more optimized, less interdependent, less memory-intensive, and faster tests.

## 10. Creating dynamic components

One Ivy-enabled API update in Angular 13 is a more streamlined method for dynamically constructing a component.  **ViewContainerRef.createComponent** no longer requires an instantiated factory to construct a component (you no longer need to use **ComponentFactoryResolver** ).

Due to the improved **ViewContainerRef.createComponent** API, it is now possible to create dynamic components with less boilerplate code. Here’s an example of creating dynamic components using previous versions of Angular.

```js
@Directive({ … })
export class Test {
    constructor(private viewContainerRef: ViewContainerRef,
                private componentFactoryResolver: 
                        ComponentFactoryResolver) {}
    createMyComponent() {
        const componentFactory = this.componentFactoryResolver.
                             resolveComponentFactory(MyComponent);
    
        this.viewContainerRef.createComponent(componentFactory);
    }
}
```

In Angular 13, this code can become the following using the new API.

```js
@Directive({ … })
export class Test {
    constructor(private viewContainerRef: ViewContainerRef) {}
    createMyComponent() {
        this.viewContainerRef.createComponent(MyComponent);
    }
}
```

## Final thoughts

Now you’re aware of Angular 13’s latest updates. If you’re still using Angular 12, it’s time to upgrade and explore these new features in your next project. If you’re already using the latest update, let us know your experience in the comment section below.

Thank you for reading!

Syncfusion’s [Angular UI components](https://www.syncfusion.com/angular-ui-components "Angular UI components") library is the only suite that you will ever need to build an application, containing over 65 high-performance, lightweight, modular, and responsive UI components in a single package.

For existing customers, the newest Essential Studio version is available for download from the [License and Downloads](https://www.syncfusion.com/account/downloads "License and download page of Essential Studio") page. If you are not yet a Syncfusion customer, you can try our 30-day [free trial](https://www.syncfusion.com/downloads "Free evaluation of the Syncfusion Essential Studio") to check out the available features. Also, check out our demos on [GitHub](https://github.com/syncfusion "Syncfusion examples on GitHub").

You can contact us through our [support forums](https://www.syncfusion.com/forums "Syncfusion support forum"), [support portal](https://support.syncfusion.com/ "Syncfusion support portal"), or [feedback portal](https://www.syncfusion.com/feedback/angular "Syncfusion Feedback Portal"). We are always happy to assist you!

## Related blogs

- [Introducing Syncfusion Angular Code Snippets for Visual Studio Code](https://www.syncfusion.com/blogs/post/syncfusion-angular-code-snippets-for-visual-studio-code.aspx "Introducing Syncfusion Angular Code Snippets for Visual Studio Code blog")
- [How to Load a Million+ Records in Less Than a Second in Syncfusion Angular Data Grid](https://www.syncfusion.com/blogs/post/how-to-load-a-million-records-in-less-than-a-second-in-syncfusion-angular-data-grid.aspx "How to Load a Million+ Records in Less Than a Second in Syncfusion Angular Data Grid blog")
- [View and Edit Word Documents in Angular Apps: Beginners’ Guide](https://www.syncfusion.com/blogs/post/view-and-edit-word-documents-in-angular.aspx "View and Edit Word Documents in Angular Apps: Beginners’ Guide blog")
- [Entering Invalid Dates Just Got Better in Angular Apps](https://www.syncfusion.com/blogs/post/entering-invalid-dates-is-not-possible-anymore-in-angular-apps.aspx "Entering Invalid Dates Just Got Better in Angular Apps blog")