diff --git a/_templates/README.md b/_templates/README.md
index 60a3ebef83..7f5e1fe828 100644
--- a/_templates/README.md
+++ b/_templates/README.md
@@ -26,7 +26,7 @@ Once you've generated your playground, you need to add it to the main markdown f
```
## Feature
-import Feature from '@site/static/usage/v8/button/feature/index.md';
+import Feature from '@site/static/usage/v9/button/feature/index.md';
```
diff --git a/_templates/playground/new/index.js b/_templates/playground/new/index.js
index c6f9fb53b6..c69d04db73 100644
--- a/_templates/playground/new/index.js
+++ b/_templates/playground/new/index.js
@@ -54,8 +54,8 @@ module.exports = {
type: 'select',
name: 'version',
message: 'Select the Ionic Framework version for the playground',
- initial: '8',
- choices: ['6', '7', '8'],
+ initial: '9',
+ choices: ['6', '7', '8', '9'],
},
{
type: 'toggle',
diff --git a/docs/angular/overview.md b/docs/angular/overview.md
index 8bc9107a9d..7cf13ffcdb 100644
--- a/docs/angular/overview.md
+++ b/docs/angular/overview.md
@@ -18,7 +18,7 @@ import DocsCards from '@components/global/DocsCards';
## Angular Version Support
-Ionic Angular v9 supports Angular versions 18 through 21. For detailed information on supported versions and our support policy, refer to the [Ionic Angular Support Policy](/docs/reference/support#ionic-angular).
+Ionic Angular v9 supports Angular versions 18 through 22. For detailed information on supported versions and our support policy, refer to the [Ionic Angular Support Policy](/docs/reference/support#ionic-angular).
## Angular Tooling
diff --git a/docs/reference/support.md b/docs/reference/support.md
index b31fa83956..944bc112f6 100644
--- a/docs/reference/support.md
+++ b/docs/reference/support.md
@@ -22,8 +22,8 @@ The current status of each Ionic Framework version is:
| Version | Status | Released | Maintenance Ends | Ext. Support Ends |
| :-----: | :------------: | :----------: | :--------------: | :---------------: |
-| V9 | **Active** | TBD | TBD | TBD |
-| V8 | Maintenance | Apr 17, 2024 | TBD | TBD |
+| V9 | **Active** | Aug 17, 2026 | TBD | TBD |
+| V8 | Maintenance | Apr 17, 2024 | Feb 17, 2027 | Aug 17, 2027 |
| V7 | End of Support | Mar 29, 2023 | Oct 17, 2024 | Apr 17, 2025 |
| V6 | End of Support | Dec 8, 2021 | Sep 29, 2023 | Mar 29, 2024 |
| V5 | End of Support | Feb 11, 2020 | June 8, 2022 | Dec 8, 2022 |
diff --git a/docs/vue/overview.md b/docs/vue/overview.md
index 63bf3db74f..f867fe0579 100644
--- a/docs/vue/overview.md
+++ b/docs/vue/overview.md
@@ -18,7 +18,7 @@ import DocsCards from '@components/global/DocsCards';
## Vue Version Support
-Ionic Vue v8 supports Vue 3.x. For detailed information on supported versions and our support policy, refer to the [Ionic Vue Support Policy](/docs/reference/support#ionic-vue).
+Ionic Vue v9 supports Vue 3.5 and later. For detailed information on supported versions and our support policy, refer to the [Ionic Vue Support Policy](/docs/reference/support#ionic-vue).
## Vue Tooling
diff --git a/plugins/docusaurus-plugin-ionic-component-api/index.js b/plugins/docusaurus-plugin-ionic-component-api/index.js
index d4dc286f1c..0eedab7833 100644
--- a/plugins/docusaurus-plugin-ionic-component-api/index.js
+++ b/plugins/docusaurus-plugin-ionic-component-api/index.js
@@ -54,9 +54,7 @@ module.exports = function (context, options) {
await generateMarkdownForVersion(version, npmTag, context.i18n.currentLocale, false);
}
- // TODO(FW-7097): Replace this with `latest` when v9 is released.
- // Dev build from the `major-9.0` branch of `ionic-framework` (sha a334b43).
- let npmTag = '8.8.16-dev.11784913436.1a334b43';
+ let npmTag = 'latest';
if (currentVersion.banner === 'unreleased') {
npmTag = 'next';
} else if (currentVersion.path !== undefined) {
diff --git a/static/code/stackblitz/v9/angular/package-lock.json b/static/code/stackblitz/v9/angular/package-lock.json
index 97a585ab18..3c8e52fb9b 100644
--- a/static/code/stackblitz/v9/angular/package-lock.json
+++ b/static/code/stackblitz/v9/angular/package-lock.json
@@ -14,8 +14,8 @@
"@angular/platform-browser": "^22.0.0",
"@angular/platform-browser-dynamic": "^22.0.0",
"@angular/router": "^22.0.0",
- "@ionic/angular": "8.8.16-dev.11785274070.1b3387c9",
- "@ionic/core": "8.8.16-dev.11785274070.1b3387c9",
+ "@ionic/angular": "9.0.0",
+ "@ionic/core": "9.0.0",
"ionicons": "8.1.0",
"rxjs": "^7.8.1",
"tslib": "^2.5.0"
@@ -2578,10 +2578,10 @@
}
},
"node_modules/@ionic/angular": {
- "version": "8.8.16-dev.11785274070.1b3387c9",
+ "version": "9.0.0",
"license": "MIT",
"dependencies": {
- "@ionic/core": "8.8.16-dev.11785274070.1b3387c9",
+ "@ionic/core": "9.0.0",
"ionicons": "^8.0.13",
"jsonc-parser": "^3.0.0",
"tslib": "^2.3.0"
@@ -2600,7 +2600,7 @@
}
},
"node_modules/@ionic/core": {
- "version": "8.8.16-dev.11785274070.1b3387c9",
+ "version": "9.0.0",
"license": "MIT",
"dependencies": {
"@stencil/core": "^4.43.5",
diff --git a/static/code/stackblitz/v9/angular/package.json b/static/code/stackblitz/v9/angular/package.json
index 14ca327fd6..428883636a 100644
--- a/static/code/stackblitz/v9/angular/package.json
+++ b/static/code/stackblitz/v9/angular/package.json
@@ -15,8 +15,8 @@
"@angular/platform-browser": "^22.0.0",
"@angular/platform-browser-dynamic": "^22.0.0",
"@angular/router": "^22.0.0",
- "@ionic/angular": "8.8.16-dev.11785274070.1b3387c9",
- "@ionic/core": "8.8.16-dev.11785274070.1b3387c9",
+ "@ionic/angular": "9.0.0",
+ "@ionic/core": "9.0.0",
"ionicons": "8.1.0",
"rxjs": "^7.8.1",
"tslib": "^2.5.0"
diff --git a/static/code/stackblitz/v9/html/package-lock.json b/static/code/stackblitz/v9/html/package-lock.json
index 12e8252435..ea715a7461 100644
--- a/static/code/stackblitz/v9/html/package-lock.json
+++ b/static/code/stackblitz/v9/html/package-lock.json
@@ -6,7 +6,7 @@
"": {
"name": "html-starter",
"dependencies": {
- "@ionic/core": "8.8.16-dev.11785274070.1b3387c9",
+ "@ionic/core": "9.0.0",
"ionicons": "8.1.0"
},
"devDependencies": {
@@ -16,7 +16,7 @@
}
},
"node_modules/@ionic/core": {
- "version": "8.8.16-dev.11785274070.1b3387c9",
+ "version": "9.0.0",
"license": "MIT",
"dependencies": {
"@stencil/core": "^4.43.5",
diff --git a/static/code/stackblitz/v9/html/package.json b/static/code/stackblitz/v9/html/package.json
index bc907dec2c..24028b0a43 100644
--- a/static/code/stackblitz/v9/html/package.json
+++ b/static/code/stackblitz/v9/html/package.json
@@ -9,7 +9,7 @@
"start": "vite preview"
},
"dependencies": {
- "@ionic/core": "8.8.16-dev.11785274070.1b3387c9",
+ "@ionic/core": "9.0.0",
"ionicons": "8.1.0"
},
"devDependencies": {
diff --git a/static/code/stackblitz/v9/react/package-lock.json b/static/code/stackblitz/v9/react/package-lock.json
index cf7e7a5258..7e26ca203d 100644
--- a/static/code/stackblitz/v9/react/package-lock.json
+++ b/static/code/stackblitz/v9/react/package-lock.json
@@ -8,8 +8,8 @@
"name": "vite-react-typescript",
"version": "0.1.0",
"dependencies": {
- "@ionic/react": "8.8.16-dev.11785274070.1b3387c9",
- "@ionic/react-router": "8.8.16-dev.11785274070.1b3387c9",
+ "@ionic/react": "9.0.0",
+ "@ionic/react-router": "9.0.0",
"@types/node": "^24.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
@@ -254,7 +254,7 @@
"license": "MIT"
},
"node_modules/@ionic/core": {
- "version": "8.8.16-dev.11785274070.1b3387c9",
+ "version": "9.0.0",
"license": "MIT",
"dependencies": {
"@stencil/core": "^4.43.5",
@@ -266,10 +266,10 @@
}
},
"node_modules/@ionic/react": {
- "version": "8.8.16-dev.11785274070.1b3387c9",
+ "version": "9.0.0",
"license": "MIT",
"dependencies": {
- "@ionic/core": "8.8.16-dev.11785274070.1b3387c9",
+ "@ionic/core": "9.0.0",
"@stencil/react-output-target": "^1.5.2",
"ionicons": "^8.0.13",
"tslib": "*"
@@ -280,10 +280,10 @@
}
},
"node_modules/@ionic/react-router": {
- "version": "8.8.16-dev.11785274070.1b3387c9",
+ "version": "9.0.0",
"license": "MIT",
"dependencies": {
- "@ionic/react": "8.8.16-dev.11785274070.1b3387c9",
+ "@ionic/react": "9.0.0",
"tslib": "*"
},
"peerDependencies": {
diff --git a/static/code/stackblitz/v9/react/package.json b/static/code/stackblitz/v9/react/package.json
index e7b90047e4..24bce9ef9c 100644
--- a/static/code/stackblitz/v9/react/package.json
+++ b/static/code/stackblitz/v9/react/package.json
@@ -3,8 +3,8 @@
"version": "0.1.0",
"private": true,
"dependencies": {
- "@ionic/react": "8.8.16-dev.11785274070.1b3387c9",
- "@ionic/react-router": "8.8.16-dev.11785274070.1b3387c9",
+ "@ionic/react": "9.0.0",
+ "@ionic/react-router": "9.0.0",
"@types/node": "^24.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
diff --git a/static/code/stackblitz/v9/vue/package-lock.json b/static/code/stackblitz/v9/vue/package-lock.json
index a71edbce4a..43ec86a5a9 100644
--- a/static/code/stackblitz/v9/vue/package-lock.json
+++ b/static/code/stackblitz/v9/vue/package-lock.json
@@ -8,8 +8,8 @@
"name": "vite-vue-starter",
"version": "0.0.0",
"dependencies": {
- "@ionic/vue": "8.8.16-dev.11785274070.1b3387c9",
- "@ionic/vue-router": "8.8.16-dev.11785274070.1b3387c9",
+ "@ionic/vue": "9.0.0",
+ "@ionic/vue-router": "9.0.0",
"vue": "^3.2.25",
"vue-router": "5.1.0"
},
@@ -112,7 +112,7 @@
}
},
"node_modules/@ionic/core": {
- "version": "8.8.16-dev.11785274070.1b3387c9",
+ "version": "9.0.0",
"license": "MIT",
"dependencies": {
"@stencil/core": "^4.43.5",
@@ -124,19 +124,19 @@
}
},
"node_modules/@ionic/vue": {
- "version": "8.8.16-dev.11785274070.1b3387c9",
+ "version": "9.0.0",
"license": "MIT",
"dependencies": {
- "@ionic/core": "8.8.16-dev.11785274070.1b3387c9",
+ "@ionic/core": "9.0.0",
"@stencil/vue-output-target": "0.13.1",
"ionicons": "^8.0.13"
}
},
"node_modules/@ionic/vue-router": {
- "version": "8.8.16-dev.11785274070.1b3387c9",
+ "version": "9.0.0",
"license": "MIT",
"dependencies": {
- "@ionic/vue": "8.8.16-dev.11785274070.1b3387c9"
+ "@ionic/vue": "9.0.0"
}
},
"node_modules/@jridgewell/gen-mapping": {
diff --git a/static/code/stackblitz/v9/vue/package.json b/static/code/stackblitz/v9/vue/package.json
index c69fe58449..5adf29f0b8 100644
--- a/static/code/stackblitz/v9/vue/package.json
+++ b/static/code/stackblitz/v9/vue/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@ionic/vue": "8.8.16-dev.11785274070.1b3387c9",
- "@ionic/vue-router": "8.8.16-dev.11785274070.1b3387c9",
+ "@ionic/vue": "9.0.0",
+ "@ionic/vue-router": "9.0.0",
"vue": "^3.2.25",
"vue-router": "5.1.0"
},
diff --git a/static/usage/v9/accordion/accessibility/animations/demo.html b/static/usage/v9/accordion/accessibility/animations/demo.html
index 52195c8413..689da84fdf 100644
--- a/static/usage/v9/accordion/accessibility/animations/demo.html
+++ b/static/usage/v9/accordion/accessibility/animations/demo.html
@@ -6,8 +6,8 @@
Button
-
-
+
+