<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vipin Kumar R Jaiswar</title>
    <description>The latest articles on DEV Community by Vipin Kumar R Jaiswar (@jaiswarvipin).</description>
    <link>https://dev.to/jaiswarvipin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4044308%2Fec66fbd0-becf-4dd0-a8cf-a0f5e87f83b4.jpg</url>
      <title>DEV Community: Vipin Kumar R Jaiswar</title>
      <link>https://dev.to/jaiswarvipin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jaiswarvipin"/>
    <language>en</language>
    <item>
      <title>Module Federation Workspace - Anguler</title>
      <dc:creator>Vipin Kumar R Jaiswar</dc:creator>
      <pubDate>Thu, 23 Jul 2026 18:05:39 +0000</pubDate>
      <link>https://dev.to/jaiswarvipin/angular-xxx-18-module-federation-workspace-2bkl</link>
      <guid>https://dev.to/jaiswarvipin/angular-xxx-18-module-federation-workspace-2bkl</guid>
      <description>&lt;h1&gt;
  
  
  Angular 21 Module Federation: Build a Micro Frontend Workspace with One Host and Three Remotes
&lt;/h1&gt;

&lt;p&gt;If you're exploring Micro Frontends with Angular 21, one of the first questions you'll encounter is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How do I set up a complete Module Federation workspace that actually works with Angular 21?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After a few iterations (and a couple of version mismatches), I successfully created a housekeeping/admin platform using Angular 21 Native Federation with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 Host Application&lt;/li&gt;
&lt;li&gt;3 Remote Applications&lt;/li&gt;
&lt;li&gt;Shared routing&lt;/li&gt;
&lt;li&gt;Native Federation (esbuild)&lt;/li&gt;
&lt;li&gt;Single command startup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of this tutorial, you'll have the following architecture running locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    +----------------+
                    |    host-app    |
                    |   Port: 4200   |
                    +--------+-------+
                             |
           ---------------------------------------
           |                    |                |
           v                    v                v
    +-------------+      +-------------+   +-------------+
    |  auth-app   |      |  user-app   |   |  role-app   |
    | Port: 4201  |      | Port: 4202  |   | Port: 4203  |
    +-------------+      +-------------+   +-------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;p&gt;This sample project represents a basic housekeeping/admin platform.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Application&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Port&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;host-app&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Shell, navigation, remote loading&lt;/td&gt;
&lt;td&gt;4200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;auth-app&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Login, logout, access denied&lt;/td&gt;
&lt;td&gt;4201&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;user-app&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;User management&lt;/td&gt;
&lt;td&gt;4202&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;role-app&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Role management&lt;/td&gt;
&lt;td&gt;4203&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Host Routes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/auth   -&amp;gt; auth-app
/users  -&amp;gt; user-app
/roles  -&amp;gt; role-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;My development environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Angular CLI : 21.2.19
Node.js     : 22.23.1
npm         : 10.9.8
OS          : macOS (arm64)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Angular 21 works well with Native Federation. If you're starting fresh, I recommend pinning Angular CLI to version 21 to avoid compatibility issues.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Step 1: Install Angular CLI 21
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; @angular/cli@21
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Angular CLI: 21.x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 2: Create an Empty Workspace
&lt;/h2&gt;

&lt;p&gt;Instead of generating an application immediately, create an empty Angular workspace.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng new housekeeping-mf &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--create-application&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--routing&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--style&lt;/span&gt; css &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--skip-git&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Move into the project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;housekeeping-mf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 3: Generate Applications
&lt;/h2&gt;

&lt;p&gt;Generate one host and three remotes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng generate application host-app &lt;span class="nt"&gt;--routing&lt;/span&gt; &lt;span class="nt"&gt;--style&lt;/span&gt; css

ng generate application auth-app &lt;span class="nt"&gt;--routing&lt;/span&gt; &lt;span class="nt"&gt;--style&lt;/span&gt; css

ng generate application user-app &lt;span class="nt"&gt;--routing&lt;/span&gt; &lt;span class="nt"&gt;--style&lt;/span&gt; css

ng generate application role-app &lt;span class="nt"&gt;--routing&lt;/span&gt; &lt;span class="nt"&gt;--style&lt;/span&gt; css
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your project structure will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;housekeeping-mf
│
├── projects
│   ├── host-app
│   ├── auth-app
│   ├── user-app
│   └── role-app
│
├── angular.json
└── package.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 4: Install Module Federation Packages
&lt;/h2&gt;

&lt;p&gt;Install Angular Architects packages compatible with Angular 21.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; @angular-architects/module-federation@21

npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; @angular-architects/native-federation@21
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 5: Configure Native Federation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Host
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng add @angular-architects/native-federation &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--project&lt;/span&gt; host-app &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--port&lt;/span&gt; 4200 &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--type&lt;/span&gt; host &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--skip-confirmation&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Auth Remote
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng add @angular-architects/native-federation &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--project&lt;/span&gt; auth-app &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--port&lt;/span&gt; 4201 &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--type&lt;/span&gt; remote &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--skip-confirmation&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  User Remote
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng add @angular-architects/native-federation &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--project&lt;/span&gt; user-app &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--port&lt;/span&gt; 4202 &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--type&lt;/span&gt; remote &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--skip-confirmation&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Role Remote
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng add @angular-architects/native-federation &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--project&lt;/span&gt; role-app &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--port&lt;/span&gt; 4203 &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--type&lt;/span&gt; remote &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--skip-confirmation&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At this point, each project will contain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;federation.config.js
src/bootstrap.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 6: Configure Routing
&lt;/h2&gt;

&lt;p&gt;Update the host routes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;roles&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each remote exposes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./Routes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;exposes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./Routes&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./src/app/app.routes.ts&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows the host to lazy load the remotes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 7: Build Everything
&lt;/h2&gt;

&lt;p&gt;Build all applications.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng build host-app

ng build auth-app

ng build user-app

ng build role-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Successful output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dist/host-app
dist/auth-app
dist/user-app
dist/role-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 8: Fix Angular 21 Gotcha
&lt;/h2&gt;

&lt;p&gt;One issue I encountered was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The generated Native Federation dependency was initially installed with version 19.x.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; @angular-architects/native-federation@21
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without this upgrade, the build failed due to version incompatibilities.&lt;/p&gt;

&lt;p&gt;This is currently the biggest "gotcha" when setting up Angular 21 Native Federation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 9: Fix TypeScript Diagnostics
&lt;/h2&gt;

&lt;p&gt;VS Code reported &lt;code&gt;rootDir&lt;/code&gt; diagnostics.&lt;/p&gt;

&lt;p&gt;Add the following to every application's &lt;code&gt;tsconfig.app.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"compilerOptions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"rootDir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"src"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Affected projects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;host-app
auth-app
user-app
role-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After this change:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Builds succeed.&lt;/li&gt;
&lt;li&gt;VS Code errors disappear.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 10: Run Everything
&lt;/h2&gt;

&lt;p&gt;I created an npm script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run start:all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Running applications:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;host-app
http://localhost:4200

auth-app
http://localhost:4201

user-app
http://localhost:4202

role-app
http://localhost:4203
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Host application dynamically loads all three remotes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Host Application (4200)
│
├── /auth
│      └── auth-app
│
├── /users
│      └── user-app
│
└── /roles
       └── role-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Complete Setup Commands
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; @angular/cli@21

ng new housekeeping-mf &lt;span class="nt"&gt;--create-application&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt; &lt;span class="nt"&gt;--routing&lt;/span&gt; &lt;span class="nt"&gt;--style&lt;/span&gt; css &lt;span class="nt"&gt;--skip-git&lt;/span&gt;

&lt;span class="nb"&gt;cd &lt;/span&gt;housekeeping-mf

ng generate application host-app &lt;span class="nt"&gt;--routing&lt;/span&gt; &lt;span class="nt"&gt;--style&lt;/span&gt; css
ng generate application auth-app &lt;span class="nt"&gt;--routing&lt;/span&gt; &lt;span class="nt"&gt;--style&lt;/span&gt; css
ng generate application user-app &lt;span class="nt"&gt;--routing&lt;/span&gt; &lt;span class="nt"&gt;--style&lt;/span&gt; css
ng generate application role-app &lt;span class="nt"&gt;--routing&lt;/span&gt; &lt;span class="nt"&gt;--style&lt;/span&gt; css

npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; @angular-architects/module-federation@21
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; @angular-architects/native-federation@21

ng add @angular-architects/native-federation &lt;span class="nt"&gt;--project&lt;/span&gt; host-app &lt;span class="nt"&gt;--port&lt;/span&gt; 4200 &lt;span class="nt"&gt;--type&lt;/span&gt; host &lt;span class="nt"&gt;--skip-confirmation&lt;/span&gt;
ng add @angular-architects/native-federation &lt;span class="nt"&gt;--project&lt;/span&gt; auth-app &lt;span class="nt"&gt;--port&lt;/span&gt; 4201 &lt;span class="nt"&gt;--type&lt;/span&gt; remote &lt;span class="nt"&gt;--skip-confirmation&lt;/span&gt;
ng add @angular-architects/native-federation &lt;span class="nt"&gt;--project&lt;/span&gt; user-app &lt;span class="nt"&gt;--port&lt;/span&gt; 4202 &lt;span class="nt"&gt;--type&lt;/span&gt; remote &lt;span class="nt"&gt;--skip-confirmation&lt;/span&gt;
ng add @angular-architects/native-federation &lt;span class="nt"&gt;--project&lt;/span&gt; role-app &lt;span class="nt"&gt;--port&lt;/span&gt; 4203 &lt;span class="nt"&gt;--type&lt;/span&gt; remote &lt;span class="nt"&gt;--skip-confirmation&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Angular 21 works well with Native Federation.&lt;/li&gt;
&lt;li&gt;Use the same federation stack across all applications.&lt;/li&gt;
&lt;li&gt;Expose &lt;code&gt;./Routes&lt;/code&gt; instead of components for cleaner integration.&lt;/li&gt;
&lt;li&gt;Pin &lt;code&gt;@angular-architects/native-federation&lt;/code&gt; to version &lt;code&gt;21&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;rootDir: "src"&lt;/code&gt; to avoid TypeScript diagnostics.&lt;/li&gt;
&lt;li&gt;Create a &lt;code&gt;start:all&lt;/code&gt; script to improve the developer experience.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Micro Frontends are no longer an enterprise-only pattern. With Angular 21 and Native Federation, setting up a scalable frontend architecture has become significantly easier.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

</description>
      <category>angular</category>
      <category>architecture</category>
      <category>frontend</category>
      <category>modulefederation</category>
    </item>
  </channel>
</rss>
