@@ -8,12 +8,12 @@ This document describes how we manage Angular version compatibility, branching,
88
99We support multiple Angular versions in parallel using ** versioned branches** and ** matching npm major versions** :
1010
11- | Git Branch | Angular Version Support | npm Version | npm Tag | Purpose |
12- | ------------ | -------------------------- | -------------- | -------------- | ---------------------------------- |
13- | ` main ` | Angular 20+ | ` 20.x ` | ` latest ` | Active development |
14- | ` v19 ` | Angular 15–19 | ` 19.x ` | ` angular19 ` | Maintenance only |
15- | ` v20 ` | Angular 20 | ` 20.x ` | (optional) | Frozen once ` main ` moves to v21 |
16- | ` v21 ` | Angular 21 (future) | ` 21.x ` | ` latest ` | Active once Angular 21 is current |
11+ | Git Branch | Angular Version Support | npm Version | npm Tag | Purpose |
12+ | ---------- | ----------------------- | ----------- | ----------- | --------------------------------- |
13+ | ` main ` | Angular 20+ | ` 20.x ` | ` latest ` | Active development |
14+ | ` v19 ` | Angular 15–19 | ` 19.x ` | ` angular19 ` | Maintenance only |
15+ | ` v20 ` | Angular 20 | ` 20.x ` | (optional) | Frozen once ` main ` moves to v21 |
16+ | ` v21 ` | Angular 21 (future) | ` 21.x ` | ` latest ` | Active once Angular 21 is current |
1717
1818---
1919
3737Control what is exported in each branch:
3838
3939### In ` main ` (Angular 20):
40+
4041``` ts
4142export * from ' ./src/core' ;
4243export * from ' ./src/angular/v20/http-resource-feature' ;
4344```
4445
4546### In ` v19 ` :
47+
4648``` ts
4749export * from ' ./src/core' ;
4850// Do not export v20 or v21 features
@@ -53,6 +55,7 @@ export * from './src/core';
5355## 🔁 npm Publishing Commands
5456
5557### From ` v19 ` :
58+
5659``` bash
5760git checkout v19
5861npm version 19.x.y
@@ -61,6 +64,7 @@ git push origin v19 --tags
6164```
6265
6366### From ` main ` (Angular 20):
67+
6468``` bash
6569git checkout main
6670npm version 20.x.y
@@ -69,6 +73,7 @@ git push origin main --tags
6973```
7074
7175### When Angular 21 is released:
76+
7277``` bash
7378git checkout main
7479git checkout -b v20 # Freeze Angular 20
@@ -84,11 +89,11 @@ npm publish # This becomes new `latest`
8489## ❌ Deprecated or Obsolete Features
8590
8691- If a feature becomes redundant (e.g. ` signalFromObservable ` now built into Angular):
87- - ** Keep** it in ` v19 `
88- - In ` main ` :
89- - ** Option 1:** Re-export from Angular
90- - ** Option 2:** Mark as ` @deprecated `
91- - ** Option 3:** Remove entirely
92+ - ** Keep** it in ` v19 `
93+ - In ` main ` :
94+ - ** Option 1:** Re-export from Angular
95+ - ** Option 2:** Mark as ` @deprecated `
96+ - ** Option 3:** Remove entirely
9297- No need to move old features to a ` legacy/ ` folder - just delete them per branch. Git history preserves them.
9398
9499---
@@ -102,6 +107,7 @@ Use a GitHub Actions matrix to test:
102107- (future) ` main ` with Angular 21
103108
104109Each job should:
110+
105111- Verify ` peerDependencies `
106112- Run build, lint, test
107113
@@ -111,8 +117,8 @@ Each job should:
111117
112118- All ** new development** goes into ` main `
113119- If a feature is ** backportable** to Angular 19:
114- - Cherry-pick into ` v19 `
115- - Avoid Angular 20+ APIs in ` v19 ` (like ` httpResource ` , ` linkedSignal ` )
120+ - Cherry-pick into ` v19 `
121+ - Avoid Angular 20+ APIs in ` v19 ` (like ` httpResource ` , ` linkedSignal ` )
116122- Clearly document breaking changes in changelog
117123- Update ` public-api.ts ` carefully in each branch
118124
0 commit comments