From 623bf0e2f24afcad3a85d438c7fd081abd16bca0 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 9 Mar 2026 11:58:55 -0400
Subject: [PATCH 01/10] chore(deps): update dependency @capacitor/core to
v8.2.0 (#30997)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@capacitor/core](https://capacitorjs.com)
([source](https://redirect.github.com/ionic-team/capacitor)) | [`8.1.0`
→
`8.2.0`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/8.1.0/8.2.0)
|

|

|
---
### Release Notes
ionic-team/capacitor (@capacitor/core)
###
[`v8.2.0`](https://redirect.github.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#820-2026-03-06)
[Compare
Source](https://redirect.github.com/ionic-team/capacitor/compare/8.1.0...09770f7d2dc8d566bb377f9968355090f20918b6)
##### Bug Fixes
- **android:** Add missing null checks in BridgeActivity
([#8185](https://redirect.github.com/ionic-team/capacitor/issues/8185))
([bd29b99](https://redirect.github.com/ionic-team/capacitor/commit/bd29b9913a9279de26fc21c6cb0b93b8f5e5433a))
- **android:** Concurrent Range Requests for assets
([#8357](https://redirect.github.com/ionic-team/capacitor/issues/8357))
([5e82c89](https://redirect.github.com/ionic-team/capacitor/commit/5e82c89f1bff6d0e9ccea2554007aacb920d4c58))
- **android:** handle lowercase range header
([#8368](https://redirect.github.com/ionic-team/capacitor/issues/8368))
([ae0e2dd](https://redirect.github.com/ionic-team/capacitor/commit/ae0e2ddccb2904ee4b3d47d4be1f7556ac7000a1))
- **android:** invalid http range seeking
([#8369](https://redirect.github.com/ionic-team/capacitor/issues/8369))
([3109d22](https://redirect.github.com/ionic-team/capacitor/commit/3109d22547253ed44293777c60652f14cf83e416))
- **cli:** Allow to run update on non macOS
([#8344](https://redirect.github.com/ionic-team/capacitor/issues/8344))
([a441280](https://redirect.github.com/ionic-team/capacitor/commit/a441280d7c6b310ca516d6fb2736c09525987774))
- **cli:** Don't overwrite config.server section with `--live-reload`
([#7528](https://redirect.github.com/ionic-team/capacitor/issues/7528))
([782b9d9](https://redirect.github.com/ionic-team/capacitor/commit/782b9d9c26dcf1282b918996becb0224c0baca1d))
- **cli:** use 8.0.0 as default Capacitor SPM dependency version
([#8341](https://redirect.github.com/ionic-team/capacitor/issues/8341))
([a55dc5e](https://redirect.github.com/ionic-team/capacitor/commit/a55dc5ee4dfeab861cde1e11c9063aefea91006b))
- **docs:** fix typo in CapApp-SPM README
([#8348](https://redirect.github.com/ionic-team/capacitor/issues/8348))
([7d001ac](https://redirect.github.com/ionic-team/capacitor/commit/7d001ac4c58757fba922ea50f5bf5233ce217490))
- **ios:** remove tmpWindow usages on presentVC/dismissVC
([#8338](https://redirect.github.com/ionic-team/capacitor/issues/8338))
([fc9647f](https://redirect.github.com/ionic-team/capacitor/commit/fc9647f26f08ff64f53b32c79fb19f153e3b0a24))
##### Features
- **cli:** Add --https option for --live-reload
([#8194](https://redirect.github.com/ionic-team/capacitor/issues/8194))
([5db81e6](https://redirect.github.com/ionic-team/capacitor/commit/5db81e68c67652e9d2b29d7ad30629b423d2ad30))
---
### Configuration
📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/ionic-team/ionic-framework).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
core/package-lock.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/core/package-lock.json b/core/package-lock.json
index 47edcb2eb16..25c35158109 100644
--- a/core/package-lock.json
+++ b/core/package-lock.json
@@ -627,9 +627,9 @@
"license": "MIT"
},
"node_modules/@capacitor/core": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-8.1.0.tgz",
- "integrity": "sha512-UfMBMWc1v7J+14AhH03QmeNwV3HZx3qnOWhpwnHfzALEwAwlV/itQOQqcasMQYhOHWL0tiymc5ByaLTn7KKQxw==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-8.2.0.tgz",
+ "integrity": "sha512-oKaoNeNtH2iIZMDFVrb1atoyRECDGHcfLMunJ5KWN8DtvpVBeeA4c41e20NTuhMxw1cSYbpq2PV2hb+/9CJxlQ==",
"dev": true,
"license": "MIT",
"dependencies": {
From 7dcefa22030fdbdd115abc76633e13337d162008 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 9 Mar 2026 12:11:57 -0400
Subject: [PATCH 02/10] chore(deps): update actions/setup-node action to v6.3.0
(#30987)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [actions/setup-node](https://redirect.github.com/actions/setup-node) |
action | minor | `v6.2.0` → `v6.3.0` |
---
### Release Notes
actions/setup-node (actions/setup-node)
###
[`v6.3.0`](https://redirect.github.com/actions/setup-node/releases/tag/v6.3.0)
[Compare
Source](https://redirect.github.com/actions/setup-node/compare/v6.2.0...v6.3.0)
##### What's Changed
##### Enhancements:
- Support parsing `devEngines` field by
[@susnux](https://redirect.github.com/susnux) in
[#1283](https://redirect.github.com/actions/setup-node/pull/1283)
> When using node-version-file: package.json, setup-node now
prefers devEngines.runtime over engines.node.
##### Dependency updates:
- Fix npm audit issues by
[@gowridurgad](https://redirect.github.com/gowridurgad) in
[#1491](https://redirect.github.com/actions/setup-node/pull/1491)
- Replace uuid with crypto.randomUUID() by
[@trivikr](https://redirect.github.com/trivikr) in
[#1378](https://redirect.github.com/actions/setup-node/pull/1378)
- Upgrade minimatch from 3.1.2 to 3.1.5 by
[@dependabot](https://redirect.github.com/dependabot) in
[#1498](https://redirect.github.com/actions/setup-node/pull/1498)
##### Bug fixes:
- Remove hardcoded bearer for mirror-url
[@marco-ippolito](https://redirect.github.com/marco-ippolito) in
[#1467](https://redirect.github.com/actions/setup-node/pull/1467)
- Scope test lockfiles by package manager and update cache tests by
[@gowridurgad](https://redirect.github.com/gowridurgad) in
[#1495](https://redirect.github.com/actions/setup-node/pull/1495)
##### New Contributors
- [@susnux](https://redirect.github.com/susnux) made their first
contribution in
[#1283](https://redirect.github.com/actions/setup-node/pull/1283)
**Full Changelog**:
---
### Configuration
📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/ionic-team/ionic-framework).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
.github/actions/publish-npm/action.yml | 2 +-
.github/workflows/actions/build-angular-server/action.yml | 2 +-
.../workflows/actions/build-core-stencil-prerelease/action.yml | 2 +-
.github/workflows/actions/build-core/action.yml | 2 +-
.github/workflows/actions/build-react-router/action.yml | 2 +-
.github/workflows/actions/build-react/action.yml | 2 +-
.github/workflows/actions/build-vue-router/action.yml | 2 +-
.github/workflows/actions/build-vue/action.yml | 2 +-
.github/workflows/actions/test-angular-e2e/action.yml | 2 +-
.github/workflows/actions/test-core-clean-build/action.yml | 2 +-
.github/workflows/actions/test-core-lint/action.yml | 2 +-
.github/workflows/actions/test-core-screenshot/action.yml | 2 +-
.github/workflows/actions/test-core-spec/action.yml | 2 +-
.github/workflows/actions/test-react-e2e/action.yml | 2 +-
.github/workflows/actions/test-react-router-e2e/action.yml | 2 +-
.github/workflows/actions/test-vue-e2e/action.yml | 2 +-
.../workflows/actions/update-reference-screenshots/action.yml | 2 +-
17 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/.github/actions/publish-npm/action.yml b/.github/actions/publish-npm/action.yml
index dc77edb66ae..132b57f75b3 100644
--- a/.github/actions/publish-npm/action.yml
+++ b/.github/actions/publish-npm/action.yml
@@ -22,7 +22,7 @@ runs:
using: 'composite'
steps:
- name: 🟢 Configure Node for Publish
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: ${{ inputs.node-version }}
registry-url: 'https://registry.npmjs.org'
diff --git a/.github/workflows/actions/build-angular-server/action.yml b/.github/workflows/actions/build-angular-server/action.yml
index cb2b667ffaf..3cab52b650a 100644
--- a/.github/workflows/actions/build-angular-server/action.yml
+++ b/.github/workflows/actions/build-angular-server/action.yml
@@ -3,7 +3,7 @@ description: 'Build Ionic Angular Server'
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive
diff --git a/.github/workflows/actions/build-core-stencil-prerelease/action.yml b/.github/workflows/actions/build-core-stencil-prerelease/action.yml
index d49deb58d6e..913e8f494ff 100644
--- a/.github/workflows/actions/build-core-stencil-prerelease/action.yml
+++ b/.github/workflows/actions/build-core-stencil-prerelease/action.yml
@@ -9,7 +9,7 @@ runs:
using: 'composite'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
diff --git a/.github/workflows/actions/build-core/action.yml b/.github/workflows/actions/build-core/action.yml
index 3bf6659db09..2b5117cf7af 100644
--- a/.github/workflows/actions/build-core/action.yml
+++ b/.github/workflows/actions/build-core/action.yml
@@ -9,7 +9,7 @@ runs:
using: 'composite'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- name: 🕸️ Install Dependencies
diff --git a/.github/workflows/actions/build-react-router/action.yml b/.github/workflows/actions/build-react-router/action.yml
index 0c46ad895e1..568c835c42f 100644
--- a/.github/workflows/actions/build-react-router/action.yml
+++ b/.github/workflows/actions/build-react-router/action.yml
@@ -3,7 +3,7 @@ description: 'Build Ionic React Router'
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive
diff --git a/.github/workflows/actions/build-react/action.yml b/.github/workflows/actions/build-react/action.yml
index f2adcb0788f..9b4a5995e9e 100644
--- a/.github/workflows/actions/build-react/action.yml
+++ b/.github/workflows/actions/build-react/action.yml
@@ -3,7 +3,7 @@ description: 'Build Ionic React'
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive
diff --git a/.github/workflows/actions/build-vue-router/action.yml b/.github/workflows/actions/build-vue-router/action.yml
index 897153c9fa4..efd4579f565 100644
--- a/.github/workflows/actions/build-vue-router/action.yml
+++ b/.github/workflows/actions/build-vue-router/action.yml
@@ -3,7 +3,7 @@ description: 'Builds Ionic Vue Router'
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive
diff --git a/.github/workflows/actions/build-vue/action.yml b/.github/workflows/actions/build-vue/action.yml
index 72a49093fca..170e889f968 100644
--- a/.github/workflows/actions/build-vue/action.yml
+++ b/.github/workflows/actions/build-vue/action.yml
@@ -3,7 +3,7 @@ description: 'Build Ionic Vue'
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive
diff --git a/.github/workflows/actions/test-angular-e2e/action.yml b/.github/workflows/actions/test-angular-e2e/action.yml
index c6225382658..11aa8eb789c 100644
--- a/.github/workflows/actions/test-angular-e2e/action.yml
+++ b/.github/workflows/actions/test-angular-e2e/action.yml
@@ -6,7 +6,7 @@ inputs:
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive
diff --git a/.github/workflows/actions/test-core-clean-build/action.yml b/.github/workflows/actions/test-core-clean-build/action.yml
index 7e5942a036e..92e3fed394b 100644
--- a/.github/workflows/actions/test-core-clean-build/action.yml
+++ b/.github/workflows/actions/test-core-clean-build/action.yml
@@ -3,7 +3,7 @@ description: 'Test Core Clean Build'
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
diff --git a/.github/workflows/actions/test-core-lint/action.yml b/.github/workflows/actions/test-core-lint/action.yml
index ef9d37d0c7d..321a2d26304 100644
--- a/.github/workflows/actions/test-core-lint/action.yml
+++ b/.github/workflows/actions/test-core-lint/action.yml
@@ -3,7 +3,7 @@ description: 'Test Core Lint'
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- name: 🕸️ Install Dependencies
diff --git a/.github/workflows/actions/test-core-screenshot/action.yml b/.github/workflows/actions/test-core-screenshot/action.yml
index 629c68d79f2..362af8f211f 100644
--- a/.github/workflows/actions/test-core-screenshot/action.yml
+++ b/.github/workflows/actions/test-core-screenshot/action.yml
@@ -13,7 +13,7 @@ inputs:
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive
diff --git a/.github/workflows/actions/test-core-spec/action.yml b/.github/workflows/actions/test-core-spec/action.yml
index 3cbfa7aefd1..f25207f6a49 100644
--- a/.github/workflows/actions/test-core-spec/action.yml
+++ b/.github/workflows/actions/test-core-spec/action.yml
@@ -6,7 +6,7 @@ inputs:
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- name: 🕸️ Install Dependencies
diff --git a/.github/workflows/actions/test-react-e2e/action.yml b/.github/workflows/actions/test-react-e2e/action.yml
index 18fb14c705e..a6f1d42ba72 100644
--- a/.github/workflows/actions/test-react-e2e/action.yml
+++ b/.github/workflows/actions/test-react-e2e/action.yml
@@ -6,7 +6,7 @@ inputs:
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive
diff --git a/.github/workflows/actions/test-react-router-e2e/action.yml b/.github/workflows/actions/test-react-router-e2e/action.yml
index 3af841bf83c..70dff8db874 100644
--- a/.github/workflows/actions/test-react-router-e2e/action.yml
+++ b/.github/workflows/actions/test-react-router-e2e/action.yml
@@ -6,7 +6,7 @@ inputs:
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive
diff --git a/.github/workflows/actions/test-vue-e2e/action.yml b/.github/workflows/actions/test-vue-e2e/action.yml
index 0c15dac0822..060e923bdf4 100644
--- a/.github/workflows/actions/test-vue-e2e/action.yml
+++ b/.github/workflows/actions/test-vue-e2e/action.yml
@@ -6,7 +6,7 @@ inputs:
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive
diff --git a/.github/workflows/actions/update-reference-screenshots/action.yml b/.github/workflows/actions/update-reference-screenshots/action.yml
index 9c082f1a17d..ec4362b4f7a 100644
--- a/.github/workflows/actions/update-reference-screenshots/action.yml
+++ b/.github/workflows/actions/update-reference-screenshots/action.yml
@@ -7,7 +7,7 @@ on:
runs:
using: 'composite'
steps:
- - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
+ - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- uses: actions/download-artifact@v7
From 784fdc6543f3f3912f52703ab957b00db026862f Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 9 Mar 2026 16:20:18 +0000
Subject: [PATCH 03/10] chore(deps): update download + upload artifacts (major)
(#30974)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
|
[actions/download-artifact](https://redirect.github.com/actions/download-artifact)
| action | major | `v7` → `v8` |
|
[actions/upload-artifact](https://redirect.github.com/actions/upload-artifact)
| action | major | `v6` → `v7` |
---
### Release Notes
actions/download-artifact (actions/download-artifact)
###
[`v8`](https://redirect.github.com/actions/download-artifact/compare/v7...v8)
[Compare
Source](https://redirect.github.com/actions/download-artifact/compare/v7...v8)
actions/upload-artifact (actions/upload-artifact)
###
[`v7`](https://redirect.github.com/actions/upload-artifact/compare/v6...v7)
[Compare
Source](https://redirect.github.com/actions/upload-artifact/compare/v6...v7)
---
### Configuration
📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/ionic-team/ionic-framework).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
.github/workflows/actions/download-archive/action.yml | 2 +-
.github/workflows/actions/test-core-screenshot/action.yml | 2 +-
.../workflows/actions/update-reference-screenshots/action.yml | 2 +-
.github/workflows/actions/upload-archive/action.yml | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/actions/download-archive/action.yml b/.github/workflows/actions/download-archive/action.yml
index e61c44a0910..2acddf9713f 100644
--- a/.github/workflows/actions/download-archive/action.yml
+++ b/.github/workflows/actions/download-archive/action.yml
@@ -10,7 +10,7 @@ inputs:
runs:
using: 'composite'
steps:
- - uses: actions/download-artifact@v7
+ - uses: actions/download-artifact@v8
with:
name: ${{ inputs.name }}
path: ${{ inputs.path }}
diff --git a/.github/workflows/actions/test-core-screenshot/action.yml b/.github/workflows/actions/test-core-screenshot/action.yml
index 362af8f211f..7ffa40faf5c 100644
--- a/.github/workflows/actions/test-core-screenshot/action.yml
+++ b/.github/workflows/actions/test-core-screenshot/action.yml
@@ -66,7 +66,7 @@ runs:
working-directory: ./core
- name: 📦 Archive Updated Screenshots
if: inputs.update == 'true' && steps.test-and-update.outputs.hasUpdatedScreenshots == 'true'
- uses: actions/upload-artifact@v6
+ uses: actions/upload-artifact@v7
with:
name: updated-screenshots-${{ inputs.shard }}-${{ inputs.totalShards }}
path: UpdatedScreenshots-${{ inputs.shard }}-${{ inputs.totalShards }}.zip
diff --git a/.github/workflows/actions/update-reference-screenshots/action.yml b/.github/workflows/actions/update-reference-screenshots/action.yml
index ec4362b4f7a..51d7bdce508 100644
--- a/.github/workflows/actions/update-reference-screenshots/action.yml
+++ b/.github/workflows/actions/update-reference-screenshots/action.yml
@@ -10,7 +10,7 @@ runs:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
- - uses: actions/download-artifact@v7
+ - uses: actions/download-artifact@v8
with:
path: ./artifacts
- name: 🔎 Extract Archives
diff --git a/.github/workflows/actions/upload-archive/action.yml b/.github/workflows/actions/upload-archive/action.yml
index 67465651c88..c09397345f9 100644
--- a/.github/workflows/actions/upload-archive/action.yml
+++ b/.github/workflows/actions/upload-archive/action.yml
@@ -13,7 +13,7 @@ runs:
- name: 🗄️ Create Archive
run: zip -q -r ${{ inputs.output }} ${{ inputs.paths }}
shell: bash
- - uses: actions/upload-artifact@v6
+ - uses: actions/upload-artifact@v7
with:
name: ${{ inputs.name }}
path: ${{ inputs.output }}
From ce83407e1debbe74f20d2d6dc2535a0ef3f974a0 Mon Sep 17 00:00:00 2001
From: OS-jacobbell <228905018+OS-jacobbell@users.noreply.github.com>
Date: Thu, 12 Mar 2026 12:51:20 -0600
Subject: [PATCH 04/10] fix(checkbox): re-evaluate label visibility when label
is updated (#30980)
## What is the current behavior?
Checkbox's render function applies the `label-text-wrapper-hidden` css
class when there is no label text to prevent extra margin from being
added. The render function is not re-evaluated if the label is updated.
This causes a problem in Angular where dynamic variables get applied
after the page is loaded, and a checkbox using a variable as a label
gets stuck with its label hidden until something else triggers a
re-render, e.g. ticking the box.
## What is the new behavior?
- The checkbox will be re-rendered, and css classes will be updated,
when the label text is changed.
- Updated tests to check that the label is visible after changing from
blank to having content.
## Does this introduce a breaking change?
- [ ] Yes
- [X] No
---
core/src/components/checkbox/checkbox.tsx | 13 +++++++++----
.../e2e/src/standalone/value-accessors.spec.ts | 14 ++++++++++----
.../checkbox/checkbox.component.html | 3 ++-
.../value-accessors/checkbox/checkbox.component.ts | 5 +++++
4 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/core/src/components/checkbox/checkbox.tsx b/core/src/components/checkbox/checkbox.tsx
index abd289c2635..8a25b9200d5 100644
--- a/core/src/components/checkbox/checkbox.tsx
+++ b/core/src/components/checkbox/checkbox.tsx
@@ -127,6 +127,8 @@ export class Checkbox implements ComponentInterface {
*/
@State() isInvalid = false;
+ @State() private hasLabelContent = false;
+
@State() private hintTextId?: string;
/**
@@ -265,6 +267,10 @@ export class Checkbox implements ComponentInterface {
ev.stopPropagation();
};
+ private onSlotChange = () => {
+ this.hasLabelContent = this.el.textContent !== '';
+ };
+
private getHintTextId(): string | undefined {
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
@@ -326,7 +332,6 @@ export class Checkbox implements ComponentInterface {
} = this;
const mode = getIonMode(this);
const path = getSVGPath(mode, indeterminate);
- const hasLabelContent = el.textContent !== '';
renderHiddenInput(true, el, name, checked ? value : '', disabled);
@@ -338,7 +343,7 @@ export class Checkbox implements ComponentInterface {
aria-checked={indeterminate ? 'mixed' : `${checked}`}
aria-describedby={this.hintTextId}
aria-invalid={this.isInvalid ? 'true' : undefined}
- aria-labelledby={hasLabelContent ? this.inputLabelId : null}
+ aria-labelledby={this.hasLabelContent ? this.inputLabelId : null}
aria-label={inheritedAttributes['aria-label'] || null}
aria-disabled={disabled ? 'true' : null}
aria-required={required ? 'true' : undefined}
@@ -376,13 +381,13 @@ export class Checkbox implements ComponentInterface {
-
+
{this.renderHintText()}
diff --git a/packages/angular/test/base/e2e/src/standalone/value-accessors.spec.ts b/packages/angular/test/base/e2e/src/standalone/value-accessors.spec.ts
index 44a85cadf14..dc4c7b92d4d 100644
--- a/packages/angular/test/base/e2e/src/standalone/value-accessors.spec.ts
+++ b/packages/angular/test/base/e2e/src/standalone/value-accessors.spec.ts
@@ -8,13 +8,19 @@ test.describe('Value Accessors', () => {
test('should update the form value', async ({ page }) => {
await expect(page.locator('#formValue')).toHaveText(JSON.stringify({ checkbox: false }, null, 2));
- await expect(page.locator('ion-checkbox')).toHaveClass(/ion-pristine/);
+ await expect(page.getByRole('checkbox', { name: 'Static Checkbox Label' })).toHaveClass(/ion-pristine/);
- await page.locator('ion-checkbox').click();
+ await page.getByRole('checkbox', { name: 'Static Checkbox Label' }).click();
await expect(page.locator('#formValue')).toHaveText(JSON.stringify({ checkbox: true }, null, 2));
- await expect(page.locator('ion-checkbox')).toHaveClass(/ion-dirty/);
- await expect(page.locator('ion-checkbox')).toHaveClass(/ion-valid/);
+ await expect(page.getByRole('checkbox', { name: 'Static Checkbox Label' })).toHaveClass(/ion-dirty/);
+ await expect(page.getByRole('checkbox', { name: 'Static Checkbox Label' })).toHaveClass(/ion-valid/);
+
+ await expect(page.getByRole('checkbox', { name: 'Static Checkbox Label' })).toBeVisible();
+ });
+
+ test('should display dynamically set label', async ({ page }) => {
+ await expect(page.getByRole('checkbox', { name: 'Dynamic Checkbox Label' })).toBeVisible();
});
});
diff --git a/packages/angular/test/base/src/app/standalone/value-accessors/checkbox/checkbox.component.html b/packages/angular/test/base/src/app/standalone/value-accessors/checkbox/checkbox.component.html
index c121dab37a7..0f264add5b8 100644
--- a/packages/angular/test/base/src/app/standalone/value-accessors/checkbox/checkbox.component.html
+++ b/packages/angular/test/base/src/app/standalone/value-accessors/checkbox/checkbox.component.html
@@ -6,6 +6,7 @@
IonCheckbox Value Accessors
- Checkbox
+ Static Checkbox Label
+
{{dynamicLabel}}
diff --git a/packages/angular/test/base/src/app/standalone/value-accessors/checkbox/checkbox.component.ts b/packages/angular/test/base/src/app/standalone/value-accessors/checkbox/checkbox.component.ts
index d58672d9549..edf8d16e375 100644
--- a/packages/angular/test/base/src/app/standalone/value-accessors/checkbox/checkbox.component.ts
+++ b/packages/angular/test/base/src/app/standalone/value-accessors/checkbox/checkbox.component.ts
@@ -15,6 +15,11 @@ import { ValueAccessorTestComponent } from "../value-accessor-test/value-accesso
]
})
export class CheckboxComponent {
+ dynamicLabel = '';
+
+ ngAfterViewInit(): void {
+ this.dynamicLabel = 'Dynamic Checkbox Label';
+ }
form = this.fb.group({
checkbox: [false, Validators.required],
From f04fa23e0d4285484b0ccbb8ce76fc44f555f737 Mon Sep 17 00:00:00 2001
From: OS-jacobbell <228905018+OS-jacobbell@users.noreply.github.com>
Date: Thu, 12 Mar 2026 13:29:07 -0600
Subject: [PATCH 05/10] test(angular): validate checkbox and toggle in lazy
template-form (#31005)
## What is the current behavior?
Checkbox and toggle components are not validated to be ticked/on in
`packages/angular/test/base/src/app/lazy/template-form`. This prevents
the error text from being displayed. While they have the `required`
attribute, this only applies to accessibility for
[checkbox](https://ionicframework.com/docs/api/checkbox#required) and
[toggle](https://ionicframework.com/docs/api/toggle#required).
## What is the new behavior?
- Use an Angular validator directive for checkbox and toggle.
- Make template-form an Angular module so the validator directive can be
imported.
## Does this introduce a breaking change?
- [ ] Yes
- [X] No
---
.../base/src/app/lazy/app-lazy/app.module.ts | 4 +---
.../base/src/app/lazy/app-lazy/app.routes.ts | 3 +--
.../template-form-routing.module.ts | 16 +++++++++++++
.../template-form.component.html | 2 ++
.../template-form/template-form.module.ts | 23 +++++++++++++++++++
.../lazy/validators/require-true.directive.ts | 19 +++++++++++++++
.../app/lazy/validators/validators.module.ts | 20 ++++++++++++++++
7 files changed, 82 insertions(+), 5 deletions(-)
create mode 100644 packages/angular/test/base/src/app/lazy/template-form/template-form-routing.module.ts
create mode 100644 packages/angular/test/base/src/app/lazy/template-form/template-form.module.ts
create mode 100644 packages/angular/test/base/src/app/lazy/validators/require-true.directive.ts
create mode 100644 packages/angular/test/base/src/app/lazy/validators/validators.module.ts
diff --git a/packages/angular/test/base/src/app/lazy/app-lazy/app.module.ts b/packages/angular/test/base/src/app/lazy/app-lazy/app.module.ts
index ac0ebd501fb..caf27670d2d 100644
--- a/packages/angular/test/base/src/app/lazy/app-lazy/app.module.ts
+++ b/packages/angular/test/base/src/app/lazy/app-lazy/app.module.ts
@@ -28,7 +28,6 @@ import { AlertComponent } from '../alert/alert.component';
import { AccordionComponent } from '../accordion/accordion.component';
import { AccordionModalComponent } from '../accordion/accordion-modal/accordion-modal.component';
import { TabsBasicComponent } from '../tabs-basic/tabs-basic.component';
-import { TemplateFormComponent } from '../template-form/template-form.component';
@NgModule({
declarations: [
@@ -54,8 +53,7 @@ import { TemplateFormComponent } from '../template-form/template-form.component'
AlertComponent,
AccordionComponent,
AccordionModalComponent,
- TabsBasicComponent,
- TemplateFormComponent
+ TabsBasicComponent
],
imports: [
CommonModule,
diff --git a/packages/angular/test/base/src/app/lazy/app-lazy/app.routes.ts b/packages/angular/test/base/src/app/lazy/app-lazy/app.routes.ts
index 35a77b19cf1..84e06cef8b1 100644
--- a/packages/angular/test/base/src/app/lazy/app-lazy/app.routes.ts
+++ b/packages/angular/test/base/src/app/lazy/app-lazy/app.routes.ts
@@ -19,7 +19,6 @@ import { NavigationPage3Component } from '../navigation-page3/navigation-page3.c
import { AlertComponent } from '../alert/alert.component';
import { AccordionComponent } from '../accordion/accordion.component';
import { TabsBasicComponent } from '../tabs-basic/tabs-basic.component';
-import { TemplateFormComponent } from '../template-form/template-form.component';
export const routes: Routes = [
{
@@ -34,7 +33,7 @@ export const routes: Routes = [
{ path: 'textarea', loadChildren: () => import('../textarea/textarea.module').then(m => m.TextareaModule) },
{ path: 'searchbar', loadChildren: () => import('../searchbar/searchbar.module').then(m => m.SearchbarModule) },
{ path: 'form', component: FormComponent },
- { path: 'template-form', component: TemplateFormComponent },
+ { path: 'template-form', loadChildren: () => import('../template-form/template-form.module').then(m => m.TemplateFormModule) },
{ path: 'modals', component: ModalComponent },
{ path: 'modal-inline', loadChildren: () => import('../modal-inline').then(m => m.ModalInlineModule) },
{ path: 'modal-sheet-inline', loadChildren: () => import('../modal-sheet-inline').then(m => m.ModalSheetInlineModule) },
diff --git a/packages/angular/test/base/src/app/lazy/template-form/template-form-routing.module.ts b/packages/angular/test/base/src/app/lazy/template-form/template-form-routing.module.ts
new file mode 100644
index 00000000000..c9d57690c6d
--- /dev/null
+++ b/packages/angular/test/base/src/app/lazy/template-form/template-form-routing.module.ts
@@ -0,0 +1,16 @@
+import { NgModule } from "@angular/core";
+import { RouterModule } from "@angular/router";
+import { TemplateFormComponent } from "./template-form.component";
+
+@NgModule({
+ imports: [
+ RouterModule.forChild([
+ {
+ path: '',
+ component: TemplateFormComponent
+ }
+ ])
+ ],
+ exports: [RouterModule]
+})
+export class TemplateFormRoutingModule { }
diff --git a/packages/angular/test/base/src/app/lazy/template-form/template-form.component.html b/packages/angular/test/base/src/app/lazy/template-form/template-form.component.html
index 870f53872f2..e6203e183a0 100644
--- a/packages/angular/test/base/src/app/lazy/template-form/template-form.component.html
+++ b/packages/angular/test/base/src/app/lazy/template-form/template-form.component.html
@@ -109,6 +109,7 @@
[(ngModel)]="checkboxValue"
name="checkboxField"
required
+ requireTrue
#checkboxField="ngModel"
id="template-checkbox-test"
helper-text="You must agree to continue"
@@ -133,6 +134,7 @@
[(ngModel)]="toggleValue"
name="toggleField"
required
+ requireTrue
#toggleField="ngModel"
id="template-toggle-test"
helper-text="You must turn on to continue"
diff --git a/packages/angular/test/base/src/app/lazy/template-form/template-form.module.ts b/packages/angular/test/base/src/app/lazy/template-form/template-form.module.ts
new file mode 100644
index 00000000000..d25e9d41a17
--- /dev/null
+++ b/packages/angular/test/base/src/app/lazy/template-form/template-form.module.ts
@@ -0,0 +1,23 @@
+import { CommonModule } from "@angular/common";
+import { NgModule } from "@angular/core";
+import { FormsModule, ReactiveFormsModule } from "@angular/forms";
+import { IonicModule } from "@ionic/angular";
+
+import { TemplateFormRoutingModule } from "./template-form-routing.module";
+import { TemplateFormComponent } from "./template-form.component";
+import { ValidatorsModule } from "../validators/validators.module";
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ ReactiveFormsModule,
+ IonicModule,
+ TemplateFormRoutingModule,
+ ValidatorsModule
+ ],
+ declarations: [
+ TemplateFormComponent
+ ]
+})
+export class TemplateFormModule { }
diff --git a/packages/angular/test/base/src/app/lazy/validators/require-true.directive.ts b/packages/angular/test/base/src/app/lazy/validators/require-true.directive.ts
new file mode 100644
index 00000000000..73baf28ff6c
--- /dev/null
+++ b/packages/angular/test/base/src/app/lazy/validators/require-true.directive.ts
@@ -0,0 +1,19 @@
+import { Directive, forwardRef } from '@angular/core';
+import { NG_VALIDATORS, Validator, AbstractControl, ValidationErrors, Validators } from '@angular/forms';
+
+@Directive({
+ selector: '[requireTrue]',
+ providers: [
+ {
+ provide: NG_VALIDATORS,
+ useExisting: forwardRef(() => RequireTrueValidatorDirective),
+ multi: true,
+ },
+ ],
+ standalone: false,
+})
+export class RequireTrueValidatorDirective implements Validator {
+ validate(control: AbstractControl): ValidationErrors | null {
+ return Validators.requiredTrue(control);
+ }
+}
diff --git a/packages/angular/test/base/src/app/lazy/validators/validators.module.ts b/packages/angular/test/base/src/app/lazy/validators/validators.module.ts
new file mode 100644
index 00000000000..c135d3164b9
--- /dev/null
+++ b/packages/angular/test/base/src/app/lazy/validators/validators.module.ts
@@ -0,0 +1,20 @@
+import { CommonModule } from "@angular/common";
+import { NgModule } from "@angular/core";
+import { FormsModule, ReactiveFormsModule } from "@angular/forms";
+
+import { RequireTrueValidatorDirective } from "./require-true.directive";
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ ReactiveFormsModule
+ ],
+ declarations: [
+ RequireTrueValidatorDirective
+ ],
+ exports: [
+ RequireTrueValidatorDirective
+ ]
+})
+export class ValidatorsModule { }
From 5fdaba2b021fe8b2b43a49eae7c687544c97d502 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Louren=C3=A7o?=
Date: Thu, 19 Mar 2026 14:59:58 +0000
Subject: [PATCH 06/10] fix(datetime): days keep in focus after changing the
month (#31021)
Issue number: internal
---------
## What is the current behavior?
In Android native, when a user places a day in focus and then changes
the month by dragging the month, the div previous on focus remains in
focus in the new month.
## What is the new behavior?
After changing the month, the focus is removed from the active element
and placed on the calendar
## Does this introduce a breaking change?
- [ ] Yes
- [ ] No
## Other information
---------
Co-authored-by: Shane
---
core/src/components/datetime/datetime.tsx | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx
index a7a3c2d1d2c..a81e84ec8b9 100644
--- a/core/src/components/datetime/datetime.tsx
+++ b/core/src/components/datetime/datetime.tsx
@@ -1033,6 +1033,11 @@ export class Datetime implements ComponentInterface {
if (this.resolveForceDateScrolling) {
this.resolveForceDateScrolling();
}
+
+ const activeEl = this.el.shadowRoot!.activeElement as HTMLElement | null;
+ if (activeEl && activeEl.classList.contains('calendar-day')) {
+ (activeEl.closest('.calendar-body') as HTMLElement | null)?.focus();
+ }
});
};
From cbfe7cce3be345eacbf9fe29e74438a927c16679 Mon Sep 17 00:00:00 2001
From: Shane
Date: Thu, 19 Mar 2026 10:09:14 -0700
Subject: [PATCH 07/10] fix(angular): forward generic type parameter on
ModalOptions and PopoverOptions (#31022)
Issue number: resolves #31012
---------
## What is the current behavior?
`ModalOptions` and `PopoverOptions` in `@ionic/angular` are non-generic
type aliases. Using `ModalOptions` causes a
typescript error, even though the core `@ionic/core` types accept a
generic parameter.
## What is the new behavior?
`ModalOptions` and `PopoverOptions` now forward the generic type
parameter from their core counterparts, allowing usage like`
ModalOptions`. The default parameter preserves
backward compatibility and existing code using ModalOptions without a
generic should continue to work.
## Does this introduce a breaking change?
- [ ] Yes
- [X] No
## Other information
This was the initial and intended behavior, but got broken in
https://github.com/ionic-team/ionic-framework/pull/30899
unintentionally. This PR fixes the issue and creates a test to ensure it
doesn't happen again.
Current dev build:
```
8.8.2-dev.11773931429.15b2a51c
```
---
.../common/src/types/overlay-options.ts | 10 +++--
.../standalone/modal-options-generic.spec.ts | 24 ++++++++++++
.../standalone/app-standalone/app.routes.ts | 1 +
.../home-page/home-page.component.html | 5 +++
.../modal-options-generic.component.ts | 38 +++++++++++++++++++
.../modal/modal.component.ts | 29 ++++++++++++++
6 files changed, 104 insertions(+), 3 deletions(-)
create mode 100644 packages/angular/test/base/e2e/src/standalone/modal-options-generic.spec.ts
create mode 100644 packages/angular/test/base/src/app/standalone/modal-options-generic/modal-options-generic.component.ts
create mode 100644 packages/angular/test/base/src/app/standalone/modal-options-generic/modal/modal.component.ts
diff --git a/packages/angular/common/src/types/overlay-options.ts b/packages/angular/common/src/types/overlay-options.ts
index 93ec10cb5f1..786db567d16 100644
--- a/packages/angular/common/src/types/overlay-options.ts
+++ b/packages/angular/common/src/types/overlay-options.ts
@@ -1,11 +1,15 @@
import type { Injector } from '@angular/core';
-import type { ModalOptions as CoreModalOptions, PopoverOptions as CorePopoverOptions } from '@ionic/core/components';
+import type {
+ ComponentRef,
+ ModalOptions as CoreModalOptions,
+ PopoverOptions as CorePopoverOptions,
+} from '@ionic/core/components';
/**
* Modal options with Angular-specific injector support.
* Extends @ionic/core ModalOptions with an optional injector property.
*/
-export type ModalOptions = CoreModalOptions & {
+export type ModalOptions = CoreModalOptions & {
injector?: Injector;
};
@@ -13,6 +17,6 @@ export type ModalOptions = CoreModalOptions & {
* Popover options with Angular-specific injector support.
* Extends @ionic/core PopoverOptions with an optional injector property.
*/
-export type PopoverOptions = CorePopoverOptions & {
+export type PopoverOptions = CorePopoverOptions & {
injector?: Injector;
};
diff --git a/packages/angular/test/base/e2e/src/standalone/modal-options-generic.spec.ts b/packages/angular/test/base/e2e/src/standalone/modal-options-generic.spec.ts
new file mode 100644
index 00000000000..dfe5d84713f
--- /dev/null
+++ b/packages/angular/test/base/e2e/src/standalone/modal-options-generic.spec.ts
@@ -0,0 +1,24 @@
+import { test, expect } from '@playwright/test';
+
+test.describe('Modal Options: Generic Type Parameter', () => {
+ test.beforeEach(async ({ page }) => {
+ await page.goto('/standalone/modal-options-generic');
+ });
+
+ test('should open modal created with ModalOptions', async ({ page }, testInfo) => {
+ testInfo.annotations.push({
+ type: 'issue',
+ description: 'https://github.com/ionic-team/ionic-framework/issues/31012',
+ });
+
+ await page.locator('ion-button#open-modal').click();
+
+ await expect(page.locator('ion-modal')).toBeVisible();
+
+ const greeting = page.locator('#greeting');
+ await expect(greeting).toHaveText('hello world');
+
+ await page.locator('#close-modal').click();
+ await expect(page.locator('ion-modal')).not.toBeVisible();
+ });
+});
diff --git a/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts b/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts
index 3f9f82933f6..dd0ccbb4ac5 100644
--- a/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts
+++ b/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts
@@ -24,6 +24,7 @@ export const routes: Routes = [
},
{ path: 'programmatic-modal', loadComponent: () => import('../programmatic-modal/programmatic-modal.component').then(c => c.ProgrammaticModalComponent) },
{ path: 'modal-custom-injector', loadComponent: () => import('../modal-custom-injector/modal-custom-injector.component').then(c => c.ModalCustomInjectorComponent) },
+ { path: 'modal-options-generic', loadComponent: () => import('../modal-options-generic/modal-options-generic.component').then(c => c.ModalOptionsGenericComponent) },
{ path: 'popover-custom-injector', loadComponent: () => import('../popover-custom-injector/popover-custom-injector.component').then(c => c.PopoverCustomInjectorComponent) },
{ path: 'router-outlet', loadComponent: () => import('../router-outlet/router-outlet.component').then(c => c.RouterOutletComponent) },
{ path: 'back-button', loadComponent: () => import('../back-button/back-button.component').then(c => c.BackButtonComponent) },
diff --git a/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html b/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html
index 641018e757c..00c3bf97452 100644
--- a/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html
+++ b/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html
@@ -125,6 +125,11 @@
Modal Custom Injector Test
+
+
+ Modal Options Generic Test
+
+
Overlay Controllers Test
diff --git a/packages/angular/test/base/src/app/standalone/modal-options-generic/modal-options-generic.component.ts b/packages/angular/test/base/src/app/standalone/modal-options-generic/modal-options-generic.component.ts
new file mode 100644
index 00000000000..04d630bf992
--- /dev/null
+++ b/packages/angular/test/base/src/app/standalone/modal-options-generic/modal-options-generic.component.ts
@@ -0,0 +1,38 @@
+import { Component, inject } from '@angular/core';
+import { IonContent, IonHeader, IonTitle, IonToolbar, IonButton, ModalController } from '@ionic/angular/standalone';
+import type { ModalOptions } from '@ionic/angular/standalone';
+import { GenericModalComponent } from './modal/modal.component';
+
+@Component({
+ selector: 'app-modal-options-generic',
+ template: `
+
+
+ Modal Options Generic Test
+
+
+
+
+ Open Modal
+
+
+ `,
+ standalone: true,
+ imports: [IonContent, IonHeader, IonTitle, IonToolbar, IonButton],
+})
+export class ModalOptionsGenericComponent {
+ private modalController = inject(ModalController);
+
+ async openModal() {
+ // Regression: ModalOptions must accept a generic type parameter (#31012)
+ const opts: ModalOptions = {
+ component: GenericModalComponent,
+ componentProps: {
+ greeting: 'hello world',
+ },
+ };
+
+ const modal = await this.modalController.create(opts);
+ await modal.present();
+ }
+}
diff --git a/packages/angular/test/base/src/app/standalone/modal-options-generic/modal/modal.component.ts b/packages/angular/test/base/src/app/standalone/modal-options-generic/modal/modal.component.ts
new file mode 100644
index 00000000000..619adc64331
--- /dev/null
+++ b/packages/angular/test/base/src/app/standalone/modal-options-generic/modal/modal.component.ts
@@ -0,0 +1,29 @@
+import { Component, Input } from '@angular/core';
+import { IonContent, IonHeader, IonTitle, IonToolbar, IonButton, IonButtons } from '@ionic/angular/standalone';
+
+@Component({
+ selector: 'app-generic-modal',
+ template: `
+
+
+ Generic Modal
+
+ Close
+
+
+
+
+ {{ greeting }}
+
+ `,
+ standalone: true,
+ imports: [IonContent, IonHeader, IonTitle, IonToolbar, IonButton, IonButtons],
+})
+export class GenericModalComponent {
+ @Input() greeting = '';
+ modal: HTMLIonModalElement | undefined;
+
+ dismiss() {
+ this.modal?.dismiss();
+ }
+}
From 5657e7d064b31dd54cb4a50162564cff92b144d3 Mon Sep 17 00:00:00 2001
From: Maria Hutt
Date: Fri, 20 Mar 2026 09:57:48 -0700
Subject: [PATCH 08/10] test(spinner): add transform test back (#31017)
Issue number: N/A
---------
## What is the current behavior?
While working on the migration for the spinner to Ionic Modular, I
noticed that we had a [Transform test
page](https://github.com/ionic-team/ionic-framework/blob/2b5b9137fc164c2f3305e493510a884c0afbfcf0/core/src/components/spinner/test/transform/index.html#L5)
without any context of why it was there. I found out that it's meant for
a [bug](https://github.com/ionic-team/ionic-framework/issues/19247) that
was reported in v4 and we did have a
[test](https://github.com/ionic-team/ionic-framework/pull/24643/changes#diff-7b7ff84d3845fbde015775aa2da960310e80f79ec01b1f4a5957d751eddce7c9R1)
for it at some point but it was removed at a later date because it was
[discovered](https://github.com/ionic-team/ionic-framework/pull/25259)
that it wasn't doing anything.
So we don't have any coverage of it if there's a regression.
## What is the new behavior?
- Added a test to prevent a regression
## Does this introduce a breaking change?
- [ ] Yes
- [x] No
## Other information
How to test:
1. Be on your local
2. Navigate to `spinner.scss`
3. Update the following code snippet:
```diff
- :host(.spinner-circular) svg {
+ :host(.spinner-circular) {
animation: spinner-circular linear infinite;
}
```
4. By making this code change, we are introducing the [original
issue](https://github.com/ionic-team/ionic-framework/pull/24643/changes#diff-fa8f6fb72eceb39e2482c0dbc083f69ecdabd411be541c21947f8e8e9bf9ee48L118).
5. Run the test
6. Notice that it fails
7. Undo the code change
8. Run the test
9. Verify that it passes
---
.../spinner/test/transform/spinner.e2e.ts | 47 +++++++++++++++++++
1 file changed, 47 insertions(+)
create mode 100644 core/src/components/spinner/test/transform/spinner.e2e.ts
diff --git a/core/src/components/spinner/test/transform/spinner.e2e.ts b/core/src/components/spinner/test/transform/spinner.e2e.ts
new file mode 100644
index 00000000000..ccc84bfb80a
--- /dev/null
+++ b/core/src/components/spinner/test/transform/spinner.e2e.ts
@@ -0,0 +1,47 @@
+import { expect } from '@playwright/test';
+import { configs, test } from '@utils/test/playwright';
+
+/**
+ * This behavior does not vary across directions/modes.
+ */
+configs({ directions: ['ltr'], modes: ['md'] }).forEach(({ title, config }) => {
+ test.describe(title('spinner: transform'), () => {
+ test('should not overwrite circular animation when transform style is applied', async ({ page }, testInfo) => {
+ testInfo.annotations.push({
+ type: 'issue',
+ description: 'https://github.com/ionic-team/ionic-framework/issues/19247',
+ });
+
+ await page.setContent(
+ `
+
+
+
+ `,
+ config
+ );
+
+ const spinner = page.locator('ion-spinner');
+
+ // Get initial position
+ const initialBox = await spinner.boundingBox();
+
+ // Wait for a few animation cycles
+ await page.waitForTimeout(500);
+
+ // Get position after the cycles
+ const finalBox = await spinner.boundingBox();
+
+ // The x and y coordinates should remain identical
+ expect(initialBox!.x).toBe(finalBox!.x);
+ expect(initialBox!.y).toBe(finalBox!.y);
+ });
+ });
+});
From 9086434723ae6e3211470e20f4fd5876c6d7ea75 Mon Sep 17 00:00:00 2001
From: ionitron
Date: Wed, 25 Mar 2026 16:58:45 +0000
Subject: [PATCH 09/10] v8.8.2
---
CHANGELOG.md | 13 +++++++++++++
core/CHANGELOG.md | 12 ++++++++++++
core/package-lock.json | 6 +++---
core/package.json | 2 +-
lerna.json | 2 +-
packages/angular-server/CHANGELOG.md | 8 ++++++++
packages/angular-server/package-lock.json | 8 ++++----
packages/angular-server/package.json | 4 ++--
packages/angular/CHANGELOG.md | 12 ++++++++++++
packages/angular/package-lock.json | 8 ++++----
packages/angular/package.json | 4 ++--
packages/docs/CHANGELOG.md | 8 ++++++++
packages/docs/package-lock.json | 6 +++---
packages/docs/package.json | 2 +-
packages/react-router/CHANGELOG.md | 8 ++++++++
packages/react-router/package-lock.json | 8 ++++----
packages/react-router/package.json | 4 ++--
packages/react/CHANGELOG.md | 8 ++++++++
packages/react/package-lock.json | 8 ++++----
packages/react/package.json | 4 ++--
packages/vue-router/CHANGELOG.md | 8 ++++++++
packages/vue-router/package-lock.json | 8 ++++----
packages/vue-router/package.json | 4 ++--
packages/vue/CHANGELOG.md | 8 ++++++++
packages/vue/package-lock.json | 8 ++++----
packages/vue/package.json | 4 ++--
26 files changed, 130 insertions(+), 45 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c14a89fea20..6105c23b287 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,19 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+## [8.8.2](https://github.com/ionic-team/ionic-framework/compare/v8.8.1...v8.8.2) (2026-03-25)
+
+
+### Bug Fixes
+
+* **angular:** forward generic type parameter on ModalOptions and PopoverOptions ([#31022](https://github.com/ionic-team/ionic-framework/issues/31022)) ([cbfe7cc](https://github.com/ionic-team/ionic-framework/commit/cbfe7cce3be345eacbf9fe29e74438a927c16679)), closes [#31012](https://github.com/ionic-team/ionic-framework/issues/31012)
+* **checkbox:** re-evaluate label visibility when label is updated ([#30980](https://github.com/ionic-team/ionic-framework/issues/30980)) ([ce83407](https://github.com/ionic-team/ionic-framework/commit/ce83407e1debbe74f20d2d6dc2535a0ef3f974a0))
+* **datetime:** days keep in focus after changing the month ([#31021](https://github.com/ionic-team/ionic-framework/issues/31021)) ([5fdaba2](https://github.com/ionic-team/ionic-framework/commit/5fdaba2b021fe8b2b43a49eae7c687544c97d502))
+
+
+
+
+
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md
index 63f04e42c9f..111a781a490 100644
--- a/core/CHANGELOG.md
+++ b/core/CHANGELOG.md
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+## [8.8.2](https://github.com/ionic-team/ionic-framework/compare/v8.8.1...v8.8.2) (2026-03-25)
+
+
+### Bug Fixes
+
+* **checkbox:** re-evaluate label visibility when label is updated ([#30980](https://github.com/ionic-team/ionic-framework/issues/30980)) ([ce83407](https://github.com/ionic-team/ionic-framework/commit/ce83407e1debbe74f20d2d6dc2535a0ef3f974a0))
+* **datetime:** days keep in focus after changing the month ([#31021](https://github.com/ionic-team/ionic-framework/issues/31021)) ([5fdaba2](https://github.com/ionic-team/ionic-framework/commit/5fdaba2b021fe8b2b43a49eae7c687544c97d502))
+
+
+
+
+
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
diff --git a/core/package-lock.json b/core/package-lock.json
index 25c35158109..360bb41e59d 100644
--- a/core/package-lock.json
+++ b/core/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@ionic/core",
- "version": "8.8.1",
+ "version": "8.8.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@ionic/core",
- "version": "8.8.1",
+ "version": "8.8.2",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",
@@ -9821,4 +9821,4 @@
}
}
}
-}
+}
\ No newline at end of file
diff --git a/core/package.json b/core/package.json
index 7db02d6f15f..d0a7ac0ef12 100644
--- a/core/package.json
+++ b/core/package.json
@@ -1,6 +1,6 @@
{
"name": "@ionic/core",
- "version": "8.8.1",
+ "version": "8.8.2",
"description": "Base components for Ionic",
"engines": {
"node": ">= 16"
diff --git a/lerna.json b/lerna.json
index d0b7ae7dfaa..6083b8d84a2 100644
--- a/lerna.json
+++ b/lerna.json
@@ -3,5 +3,5 @@
"core",
"packages/*"
],
- "version": "8.8.1"
+ "version": "8.8.2"
}
\ No newline at end of file
diff --git a/packages/angular-server/CHANGELOG.md b/packages/angular-server/CHANGELOG.md
index 0319949bee2..dddc027b285 100644
--- a/packages/angular-server/CHANGELOG.md
+++ b/packages/angular-server/CHANGELOG.md
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+## [8.8.2](https://github.com/ionic-team/ionic-framework/compare/v8.8.1...v8.8.2) (2026-03-25)
+
+**Note:** Version bump only for package @ionic/angular-server
+
+
+
+
+
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
**Note:** Version bump only for package @ionic/angular-server
diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json
index a0d98c213e8..eb24146fd1c 100644
--- a/packages/angular-server/package-lock.json
+++ b/packages/angular-server/package-lock.json
@@ -1,15 +1,15 @@
{
"name": "@ionic/angular-server",
- "version": "8.8.1",
+ "version": "8.8.2",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@ionic/angular-server",
- "version": "8.8.1",
+ "version": "8.8.2",
"license": "MIT",
"dependencies": {
- "@ionic/core": "^8.8.1"
+ "@ionic/core": "^8.8.2"
},
"devDependencies": {
"@angular-eslint/eslint-plugin": "^16.0.0",
@@ -11289,4 +11289,4 @@
}
}
}
-}
+}
\ No newline at end of file
diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json
index 60dbfed3c0e..b5e8617418a 100644
--- a/packages/angular-server/package.json
+++ b/packages/angular-server/package.json
@@ -1,6 +1,6 @@
{
"name": "@ionic/angular-server",
- "version": "8.8.1",
+ "version": "8.8.2",
"description": "Angular SSR Module for Ionic",
"keywords": [
"ionic",
@@ -62,6 +62,6 @@
},
"prettier": "@ionic/prettier-config",
"dependencies": {
- "@ionic/core": "^8.8.1"
+ "@ionic/core": "^8.8.2"
}
}
diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md
index 02753155a4c..bc2ff4925ce 100644
--- a/packages/angular/CHANGELOG.md
+++ b/packages/angular/CHANGELOG.md
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+## [8.8.2](https://github.com/ionic-team/ionic-framework/compare/v8.8.1...v8.8.2) (2026-03-25)
+
+
+### Bug Fixes
+
+* **angular:** forward generic type parameter on ModalOptions and PopoverOptions ([#31022](https://github.com/ionic-team/ionic-framework/issues/31022)) ([cbfe7cc](https://github.com/ionic-team/ionic-framework/commit/cbfe7cce3be345eacbf9fe29e74438a927c16679)), closes [#31012](https://github.com/ionic-team/ionic-framework/issues/31012)
+* **checkbox:** re-evaluate label visibility when label is updated ([#30980](https://github.com/ionic-team/ionic-framework/issues/30980)) ([ce83407](https://github.com/ionic-team/ionic-framework/commit/ce83407e1debbe74f20d2d6dc2535a0ef3f974a0))
+
+
+
+
+
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json
index a1410e67e30..f8b28136dac 100644
--- a/packages/angular/package-lock.json
+++ b/packages/angular/package-lock.json
@@ -1,15 +1,15 @@
{
"name": "@ionic/angular",
- "version": "8.8.1",
+ "version": "8.8.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@ionic/angular",
- "version": "8.8.1",
+ "version": "8.8.2",
"license": "MIT",
"dependencies": {
- "@ionic/core": "^8.8.1",
+ "@ionic/core": "^8.8.2",
"ionicons": "^8.0.13",
"jsonc-parser": "^3.0.0",
"tslib": "^2.3.0"
@@ -9095,4 +9095,4 @@
}
}
}
-}
+}
\ No newline at end of file
diff --git a/packages/angular/package.json b/packages/angular/package.json
index 2d4fe941d77..961439c7311 100644
--- a/packages/angular/package.json
+++ b/packages/angular/package.json
@@ -1,6 +1,6 @@
{
"name": "@ionic/angular",
- "version": "8.8.1",
+ "version": "8.8.2",
"description": "Angular specific wrappers for @ionic/core",
"keywords": [
"ionic",
@@ -48,7 +48,7 @@
}
},
"dependencies": {
- "@ionic/core": "^8.8.1",
+ "@ionic/core": "^8.8.2",
"ionicons": "^8.0.13",
"jsonc-parser": "^3.0.0",
"tslib": "^2.3.0"
diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md
index 35714b39929..315eb465d5b 100644
--- a/packages/docs/CHANGELOG.md
+++ b/packages/docs/CHANGELOG.md
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+## [8.8.2](https://github.com/ionic-team/ionic-framework/compare/v8.8.1...v8.8.2) (2026-03-25)
+
+**Note:** Version bump only for package @ionic/docs
+
+
+
+
+
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
**Note:** Version bump only for package @ionic/docs
diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json
index c07ba774b3e..90a52729d2d 100644
--- a/packages/docs/package-lock.json
+++ b/packages/docs/package-lock.json
@@ -1,13 +1,13 @@
{
"name": "@ionic/docs",
- "version": "8.8.1",
+ "version": "8.8.2",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@ionic/docs",
- "version": "8.8.1",
+ "version": "8.8.2",
"license": "MIT"
}
}
-}
+}
\ No newline at end of file
diff --git a/packages/docs/package.json b/packages/docs/package.json
index fdda438b6df..dbe18b7e194 100644
--- a/packages/docs/package.json
+++ b/packages/docs/package.json
@@ -1,6 +1,6 @@
{
"name": "@ionic/docs",
- "version": "8.8.1",
+ "version": "8.8.2",
"description": "Pre-packaged API documentation for the Ionic docs.",
"main": "core.json",
"types": "core.d.ts",
diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md
index a65882d9093..8e8656feffe 100644
--- a/packages/react-router/CHANGELOG.md
+++ b/packages/react-router/CHANGELOG.md
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+## [8.8.2](https://github.com/ionic-team/ionic-framework/compare/v8.8.1...v8.8.2) (2026-03-25)
+
+**Note:** Version bump only for package @ionic/react-router
+
+
+
+
+
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
**Note:** Version bump only for package @ionic/react-router
diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json
index c2ddb561ace..52bf05dc857 100644
--- a/packages/react-router/package-lock.json
+++ b/packages/react-router/package-lock.json
@@ -1,15 +1,15 @@
{
"name": "@ionic/react-router",
- "version": "8.8.1",
+ "version": "8.8.2",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@ionic/react-router",
- "version": "8.8.1",
+ "version": "8.8.2",
"license": "MIT",
"dependencies": {
- "@ionic/react": "^8.8.1",
+ "@ionic/react": "^8.8.2",
"tslib": "*"
},
"devDependencies": {
@@ -6847,4 +6847,4 @@
"dev": true
}
}
-}
+}
\ No newline at end of file
diff --git a/packages/react-router/package.json b/packages/react-router/package.json
index 44b1d1b6c27..3029b19359b 100644
--- a/packages/react-router/package.json
+++ b/packages/react-router/package.json
@@ -1,6 +1,6 @@
{
"name": "@ionic/react-router",
- "version": "8.8.1",
+ "version": "8.8.2",
"description": "React Router wrapper for @ionic/react",
"keywords": [
"ionic",
@@ -36,7 +36,7 @@
"dist/"
],
"dependencies": {
- "@ionic/react": "^8.8.1",
+ "@ionic/react": "^8.8.2",
"tslib": "*"
},
"peerDependencies": {
diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md
index 4c07a6c59c4..612517174bb 100644
--- a/packages/react/CHANGELOG.md
+++ b/packages/react/CHANGELOG.md
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+## [8.8.2](https://github.com/ionic-team/ionic-framework/compare/v8.8.1...v8.8.2) (2026-03-25)
+
+**Note:** Version bump only for package @ionic/react
+
+
+
+
+
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
**Note:** Version bump only for package @ionic/react
diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json
index d9f5a8f7ddf..8a5a60698c8 100644
--- a/packages/react/package-lock.json
+++ b/packages/react/package-lock.json
@@ -1,15 +1,15 @@
{
"name": "@ionic/react",
- "version": "8.8.1",
+ "version": "8.8.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@ionic/react",
- "version": "8.8.1",
+ "version": "8.8.2",
"license": "MIT",
"dependencies": {
- "@ionic/core": "^8.8.1",
+ "@ionic/core": "^8.8.2",
"ionicons": "^8.0.13",
"tslib": "*"
},
@@ -11916,4 +11916,4 @@
}
}
}
-}
+}
\ No newline at end of file
diff --git a/packages/react/package.json b/packages/react/package.json
index 7df224a72c6..39b093e1296 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -1,6 +1,6 @@
{
"name": "@ionic/react",
- "version": "8.8.1",
+ "version": "8.8.2",
"description": "React specific wrapper for @ionic/core",
"keywords": [
"ionic",
@@ -40,7 +40,7 @@
"css/"
],
"dependencies": {
- "@ionic/core": "^8.8.1",
+ "@ionic/core": "^8.8.2",
"ionicons": "^8.0.13",
"tslib": "*"
},
diff --git a/packages/vue-router/CHANGELOG.md b/packages/vue-router/CHANGELOG.md
index 1880c2d642a..458b19a5feb 100644
--- a/packages/vue-router/CHANGELOG.md
+++ b/packages/vue-router/CHANGELOG.md
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+## [8.8.2](https://github.com/ionic-team/ionic-framework/compare/v8.8.1...v8.8.2) (2026-03-25)
+
+**Note:** Version bump only for package @ionic/vue-router
+
+
+
+
+
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
**Note:** Version bump only for package @ionic/vue-router
diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json
index 346ba57dbe7..43ab8fb3407 100644
--- a/packages/vue-router/package-lock.json
+++ b/packages/vue-router/package-lock.json
@@ -1,15 +1,15 @@
{
"name": "@ionic/vue-router",
- "version": "8.8.1",
+ "version": "8.8.2",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@ionic/vue-router",
- "version": "8.8.1",
+ "version": "8.8.2",
"license": "MIT",
"dependencies": {
- "@ionic/vue": "^8.8.1"
+ "@ionic/vue": "^8.8.2"
},
"devDependencies": {
"@ionic/eslint-config": "^0.3.0",
@@ -12994,4 +12994,4 @@
"dev": true
}
}
-}
+}
\ No newline at end of file
diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json
index f6622207d7a..7c803694b8a 100644
--- a/packages/vue-router/package.json
+++ b/packages/vue-router/package.json
@@ -1,6 +1,6 @@
{
"name": "@ionic/vue-router",
- "version": "8.8.1",
+ "version": "8.8.2",
"description": "Vue Router integration for @ionic/vue",
"scripts": {
"test.spec": "jest",
@@ -44,7 +44,7 @@
},
"homepage": "https://github.com/ionic-team/ionic-framework#readme",
"dependencies": {
- "@ionic/vue": "^8.8.1"
+ "@ionic/vue": "^8.8.2"
},
"devDependencies": {
"@ionic/eslint-config": "^0.3.0",
diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md
index 8e28d889753..ea57c1bbacc 100644
--- a/packages/vue/CHANGELOG.md
+++ b/packages/vue/CHANGELOG.md
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+## [8.8.2](https://github.com/ionic-team/ionic-framework/compare/v8.8.1...v8.8.2) (2026-03-25)
+
+**Note:** Version bump only for package @ionic/vue
+
+
+
+
+
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
**Note:** Version bump only for package @ionic/vue
diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json
index 5a39b839293..5462f51d666 100644
--- a/packages/vue/package-lock.json
+++ b/packages/vue/package-lock.json
@@ -1,15 +1,15 @@
{
"name": "@ionic/vue",
- "version": "8.8.1",
+ "version": "8.8.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@ionic/vue",
- "version": "8.8.1",
+ "version": "8.8.2",
"license": "MIT",
"dependencies": {
- "@ionic/core": "^8.8.1",
+ "@ionic/core": "^8.8.2",
"@stencil/vue-output-target": "0.10.7",
"ionicons": "^8.0.13"
},
@@ -4022,4 +4022,4 @@
"dev": true
}
}
-}
+}
\ No newline at end of file
diff --git a/packages/vue/package.json b/packages/vue/package.json
index 832e45caf65..a89093e6cc2 100644
--- a/packages/vue/package.json
+++ b/packages/vue/package.json
@@ -1,6 +1,6 @@
{
"name": "@ionic/vue",
- "version": "8.8.1",
+ "version": "8.8.2",
"description": "Vue specific wrapper for @ionic/core",
"scripts": {
"eslint": "eslint src",
@@ -68,7 +68,7 @@
"vue-router": "^4.0.16"
},
"dependencies": {
- "@ionic/core": "^8.8.1",
+ "@ionic/core": "^8.8.2",
"@stencil/vue-output-target": "0.10.7",
"ionicons": "^8.0.13"
},
From 60d0eb577eef2d482124741f469bd69a266cf619 Mon Sep 17 00:00:00 2001
From: ionitron
Date: Wed, 25 Mar 2026 16:59:37 +0000
Subject: [PATCH 10/10] chore(): update package lock files
---
core/package-lock.json | 2 +-
packages/angular-server/package-lock.json | 14 +++++------
packages/angular/package-lock.json | 8 +++---
packages/docs/package-lock.json | 2 +-
packages/react-router/package-lock.json | 30 +++++++++++------------
packages/react/package-lock.json | 8 +++---
packages/vue-router/package-lock.json | 30 +++++++++++------------
packages/vue/package-lock.json | 8 +++---
8 files changed, 51 insertions(+), 51 deletions(-)
diff --git a/core/package-lock.json b/core/package-lock.json
index 360bb41e59d..c94b7920878 100644
--- a/core/package-lock.json
+++ b/core/package-lock.json
@@ -9821,4 +9821,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json
index eb24146fd1c..62fcb71de2b 100644
--- a/packages/angular-server/package-lock.json
+++ b/packages/angular-server/package-lock.json
@@ -1031,9 +1031,9 @@
"dev": true
},
"node_modules/@ionic/core": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
- "integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.2.tgz",
+ "integrity": "sha512-br0XaVX/mct0d+ArQk7Gg6R8iLsfcgGdSVs+554iv5U4TjmqVIbmkF+o4IZSe2WkulUHnLVF20/EJ1ZH00aTnw==",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",
@@ -7309,9 +7309,9 @@
"dev": true
},
"@ionic/core": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
- "integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.2.tgz",
+ "integrity": "sha512-br0XaVX/mct0d+ArQk7Gg6R8iLsfcgGdSVs+554iv5U4TjmqVIbmkF+o4IZSe2WkulUHnLVF20/EJ1ZH00aTnw==",
"requires": {
"@stencil/core": "4.43.0",
"ionicons": "^8.0.13",
@@ -11289,4 +11289,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json
index f8b28136dac..bb125a358b8 100644
--- a/packages/angular/package-lock.json
+++ b/packages/angular/package-lock.json
@@ -1398,9 +1398,9 @@
"dev": true
},
"node_modules/@ionic/core": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
- "integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.2.tgz",
+ "integrity": "sha512-br0XaVX/mct0d+ArQk7Gg6R8iLsfcgGdSVs+554iv5U4TjmqVIbmkF+o4IZSe2WkulUHnLVF20/EJ1ZH00aTnw==",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",
@@ -9095,4 +9095,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json
index 90a52729d2d..607f6df975e 100644
--- a/packages/docs/package-lock.json
+++ b/packages/docs/package-lock.json
@@ -10,4 +10,4 @@
"license": "MIT"
}
}
-}
\ No newline at end of file
+}
diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json
index 52bf05dc857..726849edefc 100644
--- a/packages/react-router/package-lock.json
+++ b/packages/react-router/package-lock.json
@@ -238,9 +238,9 @@
"dev": true
},
"node_modules/@ionic/core": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
- "integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.2.tgz",
+ "integrity": "sha512-br0XaVX/mct0d+ArQk7Gg6R8iLsfcgGdSVs+554iv5U4TjmqVIbmkF+o4IZSe2WkulUHnLVF20/EJ1ZH00aTnw==",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",
@@ -418,12 +418,12 @@
}
},
"node_modules/@ionic/react": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.8.1.tgz",
- "integrity": "sha512-KuDWk2E0HA8EA5ioDHxGF+OD/REG2PYb7SorMgVHWRWdPYMIL9PwNXrMBfWAd6PyYLLHd2fw7UoiuT2K8SbrzQ==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.8.2.tgz",
+ "integrity": "sha512-b2kMns556wocZ5JMoo5PZMRjNkgmQKOgxb5rIdrhgJMrLtkQ/smQi7dn3Sp9Hhy5tI3oY2ooyCMjABKe1PbKww==",
"license": "MIT",
"dependencies": {
- "@ionic/core": "8.8.1",
+ "@ionic/core": "8.8.2",
"ionicons": "^8.0.13",
"tslib": "*"
},
@@ -4178,9 +4178,9 @@
"dev": true
},
"@ionic/core": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
- "integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.2.tgz",
+ "integrity": "sha512-br0XaVX/mct0d+ArQk7Gg6R8iLsfcgGdSVs+554iv5U4TjmqVIbmkF+o4IZSe2WkulUHnLVF20/EJ1ZH00aTnw==",
"requires": {
"@stencil/core": "4.43.0",
"ionicons": "^8.0.13",
@@ -4284,11 +4284,11 @@
"requires": {}
},
"@ionic/react": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.8.1.tgz",
- "integrity": "sha512-KuDWk2E0HA8EA5ioDHxGF+OD/REG2PYb7SorMgVHWRWdPYMIL9PwNXrMBfWAd6PyYLLHd2fw7UoiuT2K8SbrzQ==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.8.2.tgz",
+ "integrity": "sha512-b2kMns556wocZ5JMoo5PZMRjNkgmQKOgxb5rIdrhgJMrLtkQ/smQi7dn3Sp9Hhy5tI3oY2ooyCMjABKe1PbKww==",
"requires": {
- "@ionic/core": "8.8.1",
+ "@ionic/core": "8.8.2",
"ionicons": "^8.0.13",
"tslib": "*"
}
@@ -6847,4 +6847,4 @@
"dev": true
}
}
-}
\ No newline at end of file
+}
diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json
index 8a5a60698c8..b13e5463be4 100644
--- a/packages/react/package-lock.json
+++ b/packages/react/package-lock.json
@@ -736,9 +736,9 @@
"dev": true
},
"node_modules/@ionic/core": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
- "integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.2.tgz",
+ "integrity": "sha512-br0XaVX/mct0d+ArQk7Gg6R8iLsfcgGdSVs+554iv5U4TjmqVIbmkF+o4IZSe2WkulUHnLVF20/EJ1ZH00aTnw==",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",
@@ -11916,4 +11916,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json
index 43ab8fb3407..b67a23c33f1 100644
--- a/packages/vue-router/package-lock.json
+++ b/packages/vue-router/package-lock.json
@@ -673,9 +673,9 @@
"dev": true
},
"node_modules/@ionic/core": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
- "integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.2.tgz",
+ "integrity": "sha512-br0XaVX/mct0d+ArQk7Gg6R8iLsfcgGdSVs+554iv5U4TjmqVIbmkF+o4IZSe2WkulUHnLVF20/EJ1ZH00aTnw==",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",
@@ -868,12 +868,12 @@
}
},
"node_modules/@ionic/vue": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.8.1.tgz",
- "integrity": "sha512-tdNErYs6WrNiDJps1nRRY4UeyLffr2hbdkpawrMYFZxzzMd5yuExWsRAofrk5Uy6rSFObSZrfg7AgqyudDcJpQ==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.8.2.tgz",
+ "integrity": "sha512-egNOq0UfDrI9nq0OZcKGVstrqpajvOuAbplNF5izx0eeDCwU/3o7z+ehU7zzqnEBgK1DWW4v/TEdAxRUREMAcA==",
"license": "MIT",
"dependencies": {
- "@ionic/core": "8.8.1",
+ "@ionic/core": "8.8.2",
"@stencil/vue-output-target": "0.10.7",
"ionicons": "^8.0.13"
}
@@ -8044,9 +8044,9 @@
"dev": true
},
"@ionic/core": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
- "integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.2.tgz",
+ "integrity": "sha512-br0XaVX/mct0d+ArQk7Gg6R8iLsfcgGdSVs+554iv5U4TjmqVIbmkF+o4IZSe2WkulUHnLVF20/EJ1ZH00aTnw==",
"requires": {
"@stencil/core": "4.43.0",
"ionicons": "^8.0.13",
@@ -8159,11 +8159,11 @@
"requires": {}
},
"@ionic/vue": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.8.1.tgz",
- "integrity": "sha512-tdNErYs6WrNiDJps1nRRY4UeyLffr2hbdkpawrMYFZxzzMd5yuExWsRAofrk5Uy6rSFObSZrfg7AgqyudDcJpQ==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.8.2.tgz",
+ "integrity": "sha512-egNOq0UfDrI9nq0OZcKGVstrqpajvOuAbplNF5izx0eeDCwU/3o7z+ehU7zzqnEBgK1DWW4v/TEdAxRUREMAcA==",
"requires": {
- "@ionic/core": "8.8.1",
+ "@ionic/core": "8.8.2",
"@stencil/vue-output-target": "0.10.7",
"ionicons": "^8.0.13"
}
@@ -12994,4 +12994,4 @@
"dev": true
}
}
-}
\ No newline at end of file
+}
diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json
index 5462f51d666..754467be275 100644
--- a/packages/vue/package-lock.json
+++ b/packages/vue/package-lock.json
@@ -222,9 +222,9 @@
"dev": true
},
"node_modules/@ionic/core": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
- "integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.2.tgz",
+ "integrity": "sha512-br0XaVX/mct0d+ArQk7Gg6R8iLsfcgGdSVs+554iv5U4TjmqVIbmkF+o4IZSe2WkulUHnLVF20/EJ1ZH00aTnw==",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",
@@ -4022,4 +4022,4 @@
"dev": true
}
}
-}
\ No newline at end of file
+}