{"id":2375,"date":"2025-11-21T06:28:23","date_gmt":"2025-11-21T14:28:23","guid":{"rendered":"https:\/\/www.angulartraining.com\/daily-newsletter\/?p=2375"},"modified":"2025-11-21T06:28:25","modified_gmt":"2025-11-21T14:28:25","slug":"angular-21-is-available","status":"publish","type":"post","link":"https:\/\/www.angulartraining.com\/daily-newsletter\/angular-21-is-available\/","title":{"rendered":"Angular 21 is available!"},"content":{"rendered":"\n<p>Angular 21 <span style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">has been released, and I&#8217;m going to divide the new features into different categories, since a lot of the new features are\u00a0<strong>exper<\/strong><\/span><strong>imental\u00a0and not recommended for production use<\/strong> yet.<\/p>\n\n\n\n<p><strong>What&#8217;s stable and production-ready:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Angular\u2019s MCP Server, now with more tools \u2014 allowing LLMs to use new Angular features from day one. The most interesting feature is the <code>onpush_zoneless_migration<\/code> tool. It can analyze your code and provide a plan to migrate your application to OnPush and <a href=\"https:\/\/blog.angulartraining.com\/what-does-zoneless-angular-mean-0a3a9d2a047d\" target=\"_blank\" rel=\"noopener\" title=\"\">zoneless change detection<\/a>.<\/li>\n\n\n\n<li>The Angular CLI now uses Vitest as the default test runner. And there&#8217;s an experimental migration if you want to migrate your old Jasmine tests: <code>ng g @schematics\/angular:refactor-jasmine-vitest<\/code><\/li>\n\n\n\n<li>Creating a brand new Angular application with the CLI no longer includes zone.js. <\/li>\n<\/ul>\n\n\n\n<p><strong>What&#8217;s experimental or in developer preview, not recommended for production:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Signal Forms, providing a new composable and reactive forms experience built on Signals. Here is my <a href=\"https:\/\/blog.angulartraining.com\/angular-signal-forms-set-up-and-validation-rules-5057b5d22f2c\" target=\"_blank\" rel=\"noopener\" title=\"\">short tutorial about the basics of Signal Forms<\/a>.<\/li>\n\n\n\n<li>Angular Aria is launching in Developer Preview, providing headless components built with accessibility as a priority. To install: <code>npm install @angular\/aria<\/code>. It is starting with 8 components:\n<ul class=\"wp-block-list\">\n<li>Accordion<\/li>\n\n\n\n<li>Combobox<\/li>\n\n\n\n<li>Grid<\/li>\n\n\n\n<li>Listbox<\/li>\n\n\n\n<li>Menu<\/li>\n\n\n\n<li>Tabs<\/li>\n\n\n\n<li>Toolbar<\/li>\n\n\n\n<li>Tree<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p>You can read more with the <a href=\"https:\/\/blog.angular.dev\/announcing-angular-v21-57946c34f14b\" target=\"_blank\" rel=\"noopener\" title=\"\">official v21 blog post here<\/a>. I will unpack all these new features over the next few weeks in separate posts (Vitest, Aria, etc.).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Angular 21 has been released, and I&#8217;m going to divide the new features into different categories, since a lot of the new features are\u00a0experimental\u00a0and not recommended for production use yet. What&#8217;s stable and production-ready: What&#8217;s experimental or in developer preview, not recommended for production: You can read more with the official v21 blog post here. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-2375","post","type-post","status-publish","format-standard","hentry","category-angular"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/2375","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/comments?post=2375"}],"version-history":[{"count":1,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/2375\/revisions"}],"predecessor-version":[{"id":2376,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/2375\/revisions\/2376"}],"wp:attachment":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/media?parent=2375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/categories?post=2375"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/tags?post=2375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}