Repository navigation
chore(git): sync with main - #31640
Merged
Merged
Conversation
…nsitions (#31497) Issue number: resolves #31479 --------- <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? Currently, switching tabs or following a link with `routerDirection="none"` fires none of the four view lifecycle events, so a page that loads its data in `useIonViewWillEnter` renders empty. The non-animated branch of `StackManager.transitionPage()` skips `routerOutlet.commit()` and swaps the page classes itself to avoid intermediate paints, and core dispatches all four events from inside `commit()`, so they never fire. A capturing listener on the `ion-router-outlet` gets nothing either, so it isn't a problem with the hooks. ## What is the new behavior? That branch now dispatches the four events itself, in the same order core's `transition()` uses. The class swap moved to after all four, so the leaving page is still on screen for its leave events and the entering page is revealed only once they've fired. That's what core does on the animated path, where `beforeTransition` un-hides the leaving page and `ion-page-hidden` only goes back on after `commit()` resolves, and it matters because `ion-page-hidden` is `display: none`, so a `useIonViewDidLeave` handler reading `scrollTop` off the outgoing page was getting 0. The two dispatch sites that already existed in this file for out-of-scope and root navigation now share the same helper. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information The events used to come from core here. This path called `commit(enteringEl, undefined, { duration: 0 })` until [12f0d5e](12f0d5e) dropped it to fix a white flash during tab switches, and with no leaving element core took its `noAnimation` branch and fired the enter pair, so the enter half of this is a regression from that commit. Putting the call back would get the events plus focus and z-index handling from core for free, but it risks the flash it was removed for, so this dispatches them directly instead. The patch on the issue fires the enter events unconditionally. This gates them on the generation check so a superseded transition doesn't announce an entry, and it skips the leave events when the leaving page already has `ion-page-hidden`, because two transitions sharing a leaving element would otherwise run its `useIonViewDidLeave` teardown twice. The check is the class rather than `isViewVisible` since a nested outlet marks its leaving page `visibility: hidden` before we get here and still needs `ionViewDidLeave` to unmount. Preview: - [Tab lifecycle](https://ionic-framework-git-fix-rr6-lifecycle-non-animated-ionic1.vercel.app/react-router/tab-lifecycle/home) - [routerDirection="none"](https://ionic-framework-git-fix-rr6-lifecycle-non-animated-ionic1.vercel.app/react-router/direction-none-back/a) ## Current Dev Build ``` 9.0.6-dev.11790615145.1d8c56a2 ```
…31510) Issue number: internal --------- ## What is the current behavior? Currently, when a guard returns a location instead of `false` during a back navigation, the URL updates to the redirect target but Ionic renders a different page. A redirect doesn't fail, so the original navigation never reaches `afterEach` or `onError`. Its staged delta and params are never cleared and get applied to the redirect target instead. ## What is the new behavior? The ownership `beforeEach` now discards the state a navigation claimed when a guard redirects it. We match it through `redirectedFrom`, which vue-router points at the first location in the redirect chain. That covers leave guards, which run before our hook, and a guard redirect to the current page, which fails as a duplicate before reaching `beforeEach`. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information This was [raised while reviewing #31364](#31364 (comment)) and left out of scope there.
Issue number: resolves #29785 --------- ## What is the current behavior? Currently, with `createMemoryHistory`, tapping the active tab from a child page leaves the child on screen. Memory history doesn't store a position in `history.state`, so the offset `resetTab()` computes is `NaN` and `router.go(NaN)` goes nowhere. On 9.x it also throws `Cannot read properties of undefined (reading '0')`. ## What is the new behavior? When there's no position to traverse, `resetTab()` now replaces the current entry with the tab's `href`, the same fallback it already uses after a deep load. It uses the tab's `href` rather than the first route recorded for the tab, because after a deep load onto a child that first route is the child itself. Web and hash history always have a numeric position, so they're unaffected. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information The new tests are in `memory.spec.ts`, since the Vue test app uses web history and can't reproduce this. They cover resetting from a child page, resetting after a deep load onto a child, and replacing the child entry rather than pushing over it.
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [vitest](https://vitest.dev) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`5.0.2` → `5.0.3`](https://renovatebot.com/diffs/npm/vitest/5.0.2/5.0.3) |  |  | --- ### Release Notes <details> <summary>vitest-dev/vitest (vitest)</summary> ### [`v5.0.3`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v5.0.3) [Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v5.0.2...v5.0.3) ##### 🐞 Bug Fixes - Isolate `result.status` between `repeats` runs - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **Codex (GPT-6)** in [#​11218](https://redirect.github.com/vitest-dev/vitest/issues/11218) [<samp>(5dbeb)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5dbebe9e3) - Don't print an interceptor warning in browser mode - by [@​sheremet-va](https://redirect.github.com/sheremet-va) in [#​11377](https://redirect.github.com/vitest-dev/vitest/issues/11377) [<samp>(15cc0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/15cc006aa) - Don't retry when `test.fails` expectedly failed - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **Codex (GPT-6)** in [#​11219](https://redirect.github.com/vitest-dev/vitest/issues/11219) [<samp>(b2458)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b24585f08) - Scope cache key generators to projects - by [@​ecoyoung](https://redirect.github.com/ecoyoung) in [#​11281](https://redirect.github.com/vitest-dev/vitest/issues/11281) and [#​11301](https://redirect.github.com/vitest-dev/vitest/issues/11301) [<samp>(92ba7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/92ba7fc1d) - **browser**: - Delay server `listen` until tests start running - by [@​sheremet-va](https://redirect.github.com/sheremet-va) in [#​11366](https://redirect.github.com/vitest-dev/vitest/issues/11366) [<samp>(7d8ed)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7d8ed3e9b) - Check mock path boundaries - by [@​saryn17](https://redirect.github.com/saryn17), **Ryosei Sato** and [@​sheremet-va](https://redirect.github.com/sheremet-va) in [#​11361](https://redirect.github.com/vitest-dev/vitest/issues/11361) and [#​11362](https://redirect.github.com/vitest-dev/vitest/issues/11362) [<samp>(1c388)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1c3888bce) - Keep config of browser-consumed environments - by [@​kasperpeulen](https://redirect.github.com/kasperpeulen) and **Claude** in [#​11378](https://redirect.github.com/vitest-dev/vitest/issues/11378) [<samp>(aafc0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/aafc0996f) - Ignore page crash while cancelling - by [@​sheremet-va](https://redirect.github.com/sheremet-va) in [#​11386](https://redirect.github.com/vitest-dev/vitest/issues/11386) [<samp>(7c367)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7c36748fa) - `toMatchScreenshot` uses wrong reference on retried tests - by [@​macarie](https://redirect.github.com/macarie) in [#​11393](https://redirect.github.com/vitest-dev/vitest/issues/11393) [<samp>(c22ab)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c22aba992) - **cache**: - Revalidate imports of cached modules - by [@​sheremet-va](https://redirect.github.com/sheremet-va) in [#​11381](https://redirect.github.com/vitest-dev/vitest/issues/11381) [<samp>(38f98)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/38f98855f) - **deps**: - Pin `why-is-node-running` to `3.2.1` to avoid users running into `ERR_PNPM_TRUST_DOWNGRADE` - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio) in [#​11403](https://redirect.github.com/vitest-dev/vitest/issues/11403) [<samp>(f6c9a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f6c9a4977) - **expect**: - Pass current equality testers to `expect.extend` asymmetric matchers - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **Claude** in [#​11401](https://redirect.github.com/vitest-dev/vitest/issues/11401) [<samp>(3e794)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3e794a96b) - **jsdom**: - Support Blob on jsdom 30.1 - by [@​sheremet-va](https://redirect.github.com/sheremet-va) in [#​11379](https://redirect.github.com/vitest-dev/vitest/issues/11379) [<samp>(6c49b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6c49b7197) - **pool**: - Preserve unique pool ids when `groupOrder` is set - by [@​mtorp](https://redirect.github.com/mtorp) in [#​11392](https://redirect.github.com/vitest-dev/vitest/issues/11392) [<samp>(50312)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/50312ebb4) - **ui**: - Split-pane handle overlapping iframe - by [@​macarie](https://redirect.github.com/macarie) in [#​11221](https://redirect.github.com/vitest-dev/vitest/issues/11221) [<samp>(f91db)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f91db0dfd) - **vitest**: - Remove root temp dir on close - by [@​abhinav-phi](https://redirect.github.com/abhinav-phi) in [#​11248](https://redirect.github.com/vitest-dev/vitest/issues/11248) [<samp>(7c711)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7c7119cf7) - **vm**: - Do not optimize deps from index.html - by [@​ezefernandezyf](https://redirect.github.com/ezefernandezyf), **Hiroshi Ogawa** and **Codex (GPT-6)** in [#​11329](https://redirect.github.com/vitest-dev/vitest/issues/11329) and [#​11360](https://redirect.github.com/vitest-dev/vitest/issues/11360) [<samp>(caf28)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/caf2887de) - Don't reuse scripts across vite environments - by [@​MO2k4](https://redirect.github.com/MO2k4), **Martin Oehlert** and **Claude** in [#​11395](https://redirect.github.com/vitest-dev/vitest/issues/11395) [<samp>(346d3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/346d3896b) ##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v5.0.2...v5.0.3) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - 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. --- - [ ] <!-- rebase-check -->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). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMjUuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEyNS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#31516) Issue number: resolves #30024 --------- ## What is the current behavior? Currently, `float-elements.css` (and `ionic.bundle.css` / `utils.bundle.css`, which include it) contains `:host-context([dir=rtl]) .ion-float-*` selectors from the `rtl()` mixin. Lightning CSS, the default CSS minifier in Vite 8, warns about every one of them. They can never match anyway, because these stylesheets apply to the document, not a shadow root. ## What is the new behavior? The `rtl()` mixin now skips its `:host-context` rule when `$rtl-use-host-context` is false, and `float-elements.scss` sets it. The float utilities still flip in RTL through the existing `[dir=rtl]` and `:dir(rtl)` rules. Component styles are unchanged, since they still need `:host-context`. A new spec compiles every global stylesheet and asserts none of them contain `:host-context`. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information The only output change is 10 removed `:host-context` rules in `float-elements.css`, which also come out of the two bundles that include it. ## Dev build ``` 9.0.7-dev.11790870774.174de601 ```
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`24.19.0` → `24.19.1`](https://renovatebot.com/diffs/npm/@types%2fnode/24.19.0/24.19.1) |  |  | --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - 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. --- - [ ] <!-- rebase-check -->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). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMjUuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEyNS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Issue number: resolves #31484 --------- ## What is the current behavior? Changing the length prop at runtime updates the rendered input boxes but can leave the public value longer than the rendered inputs. ## What is the new behavior? The component now reinitializes its values and tab indexes when length changes, keeping the public value synchronized with the rendered inputs. - Added a runtime length-change end-to-end regression test. - ESLint passes for the changed files. - Targeted Playwright execution is pending because the local browser executable is unavailable. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Fixes #31484. No dependency updates or breaking API changes. --------- Co-authored-by: ShaneK <shane@shanessite.net>
…31517) Issue number: resolves #31513 --------- ## What is the current behavior? Currently, an `IonRouterOutlet` with `ionPage` that unmounts before its `componentOnReady` callback fires throws `Cannot read properties of null (reading 'classList')`, because React has already cleared the ref the callback reads in `OutletPageManager`. ## What is the new behavior? We now capture the outlet element when the callback is scheduled and skip the callback if the ref no longer points to it, so an unmounted outlet doesn't touch its classes or register with the parent stack. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information The new test page mounts an outlet and removes it in a layout effect, which reproduces the error on every tap on `main`. ## Current dev build ``` 9.0.7-dev.11790871695.14a4111c ```
Issue number: resolves #29648 --------- ## What is the current behavior? Currently, with `experimentalCloseWatcher` enabled, a `CloseWatcher` is always active, so back does nothing when no overlay or menu is open. In Capacitor and Cordova apps on Android the flag also breaks the hardware back button entirely, because Android WebView never sends it to a `CloseWatcher` and we stopped listening for the native `backbutton` event. ## What is the new behavior? The `CloseWatcher` now only exists while a menu or an overlay other than a toast is open, so back navigates normally otherwise. We also always listen for `backbutton` again, which browsers never fire, so the hardware back button works in hybrid apps. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information ## Current dev build ``` 9.0.7-dev.11790887756.13f9320e ```
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@capacitor/keyboard](https://redirect.github.com/ionic-team/capacitor-keyboard) | [`8.0.5` → `8.0.6`](https://renovatebot.com/diffs/npm/@capacitor%2fkeyboard/8.0.5/8.0.6) |  |  | | [@capacitor/status-bar](https://redirect.github.com/ionic-team/capacitor-plugins) | [`8.0.3` → `8.0.4`](https://renovatebot.com/diffs/npm/@capacitor%2fstatus-bar/8.0.3/8.0.4) |  |  | --- ### Release Notes <details> <summary>ionic-team/capacitor-keyboard (@​capacitor/keyboard)</summary> ### [`v8.0.6`](https://redirect.github.com/ionic-team/capacitor-keyboard/blob/HEAD/CHANGELOG.md#806-2026-10-02) [Compare Source](https://redirect.github.com/ionic-team/capacitor-keyboard/compare/v8.0.5...v8.0.6) ##### Bug Fixes - **ios:** silence the protocol property synthesis warnings in Keyboard.m ([#​83](https://redirect.github.com/ionic-team/capacitor-keyboard/issues/83)) ([f28aef4](https://redirect.github.com/ionic-team/capacitor-keyboard/commit/f28aef4ed8736865232ed0595412e07d2372e024)) </details> <details> <summary>ionic-team/capacitor-plugins (@​capacitor/status-bar)</summary> ### [`v8.0.4`](https://redirect.github.com/ionic-team/capacitor-plugins/releases/tag/%40capacitor/status-bar%408.0.4) [Compare Source](https://redirect.github.com/ionic-team/capacitor-plugins/compare/@capacitor/status-bar@8.0.3...@capacitor/status-bar@8.0.4) ##### Bug Fixes - **status-bar:** avoid retain cycle between StatusBar and the bridge ([#​2569](https://redirect.github.com/ionic-team/capacitor-plugins/issues/2569)) ([bf42d23](https://redirect.github.com/ionic-team/capacitor-plugins/commit/bf42d237c1dca1b608dcbedf9c62559feccfb532)) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - 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 these updates again. --- - [ ] <!-- rebase-check -->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). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMjUuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEyNS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@stencil/core](https://stenciljs.com/) ([source](https://redirect.github.com/stenciljs/core)) | [`4.45.1` → `4.45.2`](https://renovatebot.com/diffs/npm/@stencil%2fcore/4.45.1/4.45.2) |  |  | --- ### Release Notes <details> <summary>stenciljs/core (@​stencil/core)</summary> ### [`v4.45.2`](https://redirect.github.com/stenciljs/core/blob/HEAD/CHANGELOG.md#-4452-2026-10-05) [Compare Source](https://redirect.github.com/stenciljs/core/compare/v4.45.1...v4.45.2) ##### Bug Fixes - **mock-doc:** support force in classList.toggle ([#​6913](https://redirect.github.com/stenciljs/core/issues/6913)) ([992ab54](https://redirect.github.com/stenciljs/core/commit/992ab5466c0b7a0d6ff420f25eb095a42791f0f6)) - **runtime:** `document.hidden` page freezes ([#​6918](https://redirect.github.com/stenciljs/core/issues/6918)) ([5a92cc7](https://redirect.github.com/stenciljs/core/commit/5a92cc7e99de7395c8f8956203bfcb248af9d479)) - **runtime:** form-associated boolean attribute `"false"` parses as true ([#​6908](https://redirect.github.com/stenciljs/core/issues/6908)) ([f971133](https://redirect.github.com/stenciljs/core/commit/f971133d7d47dce9598c6417e12902942c2053d3)) - **runtime:** keep child host classes on first render after hydration ([#​6912](https://redirect.github.com/stenciljs/core/issues/6912)) ([b6842e9](https://redirect.github.com/stenciljs/core/commit/b6842e9817c16258d7b8b8f2cb6c8420aad76c0e)) - **runtime:** lazy getter/setter `@Prop` writes before first render ([#​6909](https://redirect.github.com/stenciljs/core/issues/6909)) ([e2e5dfc](https://redirect.github.com/stenciljs/core/commit/e2e5dfc059c4c8fedf5258f9ee83d4a091ef20ac)) - **scope-css:** scope rules inside [@​container](https://redirect.github.com/container) ([#​6914](https://redirect.github.com/stenciljs/core/issues/6914)) ([bc393d0](https://redirect.github.com/stenciljs/core/commit/bc393d028b86731cccce51d7af417e2186dcf7ac)) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - 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. --- - [ ] <!-- rebase-check -->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). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzQuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEzNC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…1533) Issue number: internal --------- ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> Every Renovate PR needs a manual approval and merge, including frequent low-risk bumps like `vitest`, `@types/node` and `github/codeql-action` that we always merge as-is. ## What is the new behavior? Minor and patch updates for `vitest`, the Playwright group, `@types/node`, `github/codeql-action` and `actions/*` now automerge once CI passes. Majors still open as normal PRs that need a review. A Playwright bump that changes rendering fails `verify-screenshots`, so it'll wait for a person the same as before. `platformAutomerge` is off, so Renovate merges the PR itself and waits for every check on the branch rather than relying on GitHub's native auto-merge. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information
v9.0.7
## What is the current behavior? Stencil Nightly Build installs the latest `@stencil/react-output-target`, which changes `packages/react/package-lock.json`. When it checks for a clean git diff, the altered package-lock file fails CI. ## What is the new behavior? - Clean up `packages/react/package-lock.json` along with `package.json`. ## Does this introduce a breaking change? - [ ] Yes - [X] No
Issue number: internal --------- ## What is the current behavior? Currently, leaving a page that hosts a nested `ion-router-outlet` (like an `ion-tabs` page) only fires leave events on that page, since core dispatches them with `bubbles: false`. The active tab page never gets `ionViewWillLeave` or `ionViewDidLeave`, and in Angular it also misses enter events on the way back. React was fixed as part of the RR6 upgrade in #30831. ## What is the new behavior? The nested outlet now fires the parent page's lifecycle events on its active page in step with the parent. Angular forwards all four events. Vue forwards leave only, because its tabs outlet already fires enter on return. Returning to a different tab no longer fires leave a second time on the page that already left. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information Angular skips its forward when the app already re-dispatched the event itself (the workaround from #16834), so those apps don't get it twice. Apps that call custom methods like `tabsWillLeave()` instead will now run both. A cancelled swipe back gives the tab page an unpaired `ionViewWillLeave`, same as core already does for the tabs page. ## Current dev build ``` 9.0.7-dev.11791305593.188c8151 ```
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/setup-node](https://redirect.github.com/actions/setup-node) | action | minor | `v7.0.0` → `v7.1.0` | --- ### Release Notes <details> <summary>actions/setup-node (actions/setup-node)</summary> ### [`v7.1.0`](https://redirect.github.com/actions/setup-node/releases/tag/v7.1.0) [Compare Source](https://redirect.github.com/actions/setup-node/compare/v7.0.0...v7.1.0) #### What's Changed ##### Enhancements: - Add support for mise.toml file by [@​gperdomor](https://redirect.github.com/gperdomor) in [#​1421](https://redirect.github.com/actions/setup-node/pull/1421) - Support absolute paths in node-version-file by [@​v-mahabaleshwars](https://redirect.github.com/v-mahabaleshwars) in [#​1633](https://redirect.github.com/actions/setup-node/pull/1633) ##### Bug fixes: - Add Node version validation and manifest fetch retry by [@​v-jitenderpalsingh](https://redirect.github.com/v-jitenderpalsingh) in [#​1580](https://redirect.github.com/actions/setup-node/pull/1580) ##### Documentation updates: - README.md: bump actions/checkout to latest version 7 by [@​deining](https://redirect.github.com/deining) in [#​1578](https://redirect.github.com/actions/setup-node/pull/1578) - docs: add V7 ESM migration and NODE_AUTH_TOKEN behavior change by [@​v-gowridurgad](https://redirect.github.com/v-gowridurgad) in [#​1593](https://redirect.github.com/actions/setup-node/pull/1593) - Fixed cache recommendation syntax by [@​SubJunk](https://redirect.github.com/SubJunk) in [#​1603](https://redirect.github.com/actions/setup-node/pull/1603) ##### Dependency updates: - Update workflow pins and migrate Node matrices to modern versions by [@​v-HarithaVattikuti](https://redirect.github.com/v-HarithaVattikuti) in [#​1583](https://redirect.github.com/actions/setup-node/pull/1583) - Upgrade [@​actions/cache](https://redirect.github.com/actions/cache) to 6.2.0 by [@​philip-gai](https://redirect.github.com/philip-gai) in [#​1584](https://redirect.github.com/actions/setup-node/pull/1584) - Pin [@​types/node](https://redirect.github.com/types/node) to v24 by [@​v-priyagupta108](https://redirect.github.com/v-priyagupta108) in [#​1585](https://redirect.github.com/actions/setup-node/pull/1585) - Override brace-expansion to 5.0.8 by [@​v-priyagupta108](https://redirect.github.com/v-priyagupta108) with [@​Copilot](https://redirect.github.com/Copilot) in [#​1599](https://redirect.github.com/actions/setup-node/pull/1599) - Upgrade actions/checkout from 7.0.0 to 7.0.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1598](https://redirect.github.com/actions/setup-node/pull/1598) - Upgrade prettier from 3.8.4 to 3.9.6 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1590](https://redirect.github.com/actions/setup-node/pull/1590) - Upgrade [@​vercel/ncc](https://redirect.github.com/vercel/ncc) from 0.44.0 to 0.45.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1610](https://redirect.github.com/actions/setup-node/pull/1610) - Upgrade pnpm/action-setup from 6.0.9 to 6.0.10 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1602](https://redirect.github.com/actions/setup-node/pull/1602) - Upgrade baseline-browser-mapping from 2.10.38 to 2.11.22 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1629](https://redirect.github.com/actions/setup-node/pull/1629) - Upgrade [@​types/semver](https://redirect.github.com/types/semver) from 7.7.1 to 7.8.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1616](https://redirect.github.com/actions/setup-node/pull/1616) - Upgrade [@​typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser) from 8.62.0 to 8.70.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1615](https://redirect.github.com/actions/setup-node/pull/1615) - Upgrade pnpm/action-setup from 6.0.10 to 6.1.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1631](https://redirect.github.com/actions/setup-node/pull/1631) - Upgrade jest-each from 30.4.1 to 30.5.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1636](https://redirect.github.com/actions/setup-node/pull/1636) - Upgrade eslint-plugin-n from 18.1.0 to 18.3.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1638](https://redirect.github.com/actions/setup-node/pull/1638) - Update dependencies and add license files by [@​v-HarithaVattikuti](https://redirect.github.com/v-HarithaVattikuti) in [#​1642](https://redirect.github.com/actions/setup-node/pull/1642) - Upgrade eslint from 10.5.0 to 10.11.0 and package.json from 7.0.0 to 7.1.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1635](https://redirect.github.com/actions/setup-node/pull/1635) #### New Contributors - [@​v-jitenderpalsingh](https://redirect.github.com/v-jitenderpalsingh) made their first contribution in [#​1580](https://redirect.github.com/actions/setup-node/pull/1580) - [@​philip-gai](https://redirect.github.com/philip-gai) made their first contribution in [#​1584](https://redirect.github.com/actions/setup-node/pull/1584) - [@​gperdomor](https://redirect.github.com/gperdomor) made their first contribution in [#​1421](https://redirect.github.com/actions/setup-node/pull/1421) - [@​SubJunk](https://redirect.github.com/SubJunk) made their first contribution in [#​1603](https://redirect.github.com/actions/setup-node/pull/1603) **Full Changelog**: <actions/setup-node@v7.0.0...v7.1.0> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->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). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzQuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEzNC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…lar/test/apps/ng19 (#31551) Bumps [form-data](https://github.com/form-data/form-data) from 4.0.1 to 4.0.6. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/form-data/form-data/blob/master/CHANGELOG.md">form-data's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/form-data/form-data/compare/v4.0.5...v4.0.6">v4.0.6</a> - 2026-06-12</h2> <h3>Commits</h3> <ul> <li>[Fix] escape CR, LF, and <code>"</code> in field names and filenames <a href="https://github.com/form-data/form-data/commit/8dff42c6da654ed4e7ad4acb7f8ccd3831217c99"><code>8dff42c</code></a></li> <li>[Dev Deps] update <code>@ljharb/eslint-config</code>, <code>auto-changelog</code>, <code>tape</code> <a href="https://github.com/form-data/form-data/commit/f31d21ef10bf46e46344c3ee4f99acbef6be43e1"><code>f31d21e</code></a></li> <li>[Deps] update <code>hasown</code>, <code>mime-types</code> <a href="https://github.com/form-data/form-data/commit/92ae0eb5da94d6f01925d5f4fcffb2a1e50ed7cd"><code>92ae0eb</code></a></li> <li>[Dev Deps] update <code>js-randomness-predictor</code> <a href="https://github.com/form-data/form-data/commit/67b0f65c2e0b065a511d42227d35e4d367644e97"><code>67b0f65</code></a></li> </ul> <h2><a href="https://github.com/form-data/form-data/compare/v4.0.4...v4.0.5">v4.0.5</a> - 2025-11-17</h2> <h3>Commits</h3> <ul> <li>[Tests] Switch to newer v8 prediction library; enable node 24 testing <a href="https://github.com/form-data/form-data/commit/16e00765342106876f98a1c9703314006c9e937a"><code>16e0076</code></a></li> <li>[Dev Deps] update <code>@ljharb/eslint-config</code>, <code>eslint</code> <a href="https://github.com/form-data/form-data/commit/5822467f0ec21f6ad613c1c90856375e498793c7"><code>5822467</code></a></li> <li>[Fix] set Symbol.toStringTag in the proper place <a href="https://github.com/form-data/form-data/commit/76d0dee43933b5e167f7f09e5d9cbbd1cf911aa7"><code>76d0dee</code></a></li> </ul> <h2><a href="https://github.com/form-data/form-data/compare/v4.0.3...v4.0.4">v4.0.4</a> - 2025-07-16</h2> <h3>Commits</h3> <ul> <li>[meta] add <code>auto-changelog</code> <a href="https://github.com/form-data/form-data/commit/811f68282fab0315209d0e2d1c44b6c32ea0d479"><code>811f682</code></a></li> <li>[Tests] handle predict-v8-randomness failures in node < 17 and node > 23 <a href="https://github.com/form-data/form-data/commit/1d11a76434d101f22fdb26b8aef8615f28b98402"><code>1d11a76</code></a></li> <li>[Fix] Switch to using <code>crypto</code> random for boundary values <a href="https://github.com/form-data/form-data/commit/3d1723080e6577a66f17f163ecd345a21d8d0fd0"><code>3d17230</code></a></li> <li>[Tests] fix linting errors <a href="https://github.com/form-data/form-data/commit/5e340800b5f8914213e4e0378c084aae71cfd73a"><code>5e34080</code></a></li> <li>[meta] actually ensure the readme backup isn’t published <a href="https://github.com/form-data/form-data/commit/316c82ba93fd4985af757b771b9a1f26d3b709ef"><code>316c82b</code></a></li> <li>[Dev Deps] update <code>@ljharb/eslint-config</code> <a href="https://github.com/form-data/form-data/commit/58c25d76406a5b0dfdf54045cf252563f2bbda8d"><code>58c25d7</code></a></li> <li>[meta] fix readme capitalization <a href="https://github.com/form-data/form-data/commit/2300ca19595b0ee96431e868fe2a40db79e41c61"><code>2300ca1</code></a></li> </ul> <h2><a href="https://github.com/form-data/form-data/compare/v4.0.2...v4.0.3">v4.0.3</a> - 2025-06-05</h2> <h3>Fixed</h3> <ul> <li>[Fix] <code>append</code>: avoid a crash on nullish values <a href="https://redirect.github.com/form-data/form-data/issues/577"><code>[#577](https://github.com/form-data/form-data/issues/577)</code></a></li> </ul> <h3>Commits</h3> <ul> <li>[eslint] use a shared config <a href="https://github.com/form-data/form-data/commit/426ba9ac440f95d1998dac9a5cd8d738043b048f"><code>426ba9a</code></a></li> <li>[eslint] fix some spacing issues <a href="https://github.com/form-data/form-data/commit/20941917f0e9487e68c564ebc3157e23609e2939"><code>2094191</code></a></li> <li>[Refactor] use <code>hasown</code> <a href="https://github.com/form-data/form-data/commit/81ab41b46fdf34f5d89d7ff30b513b0925febfaa"><code>81ab41b</code></a></li> <li>[Fix] validate boundary type in <code>setBoundary()</code> method <a href="https://github.com/form-data/form-data/commit/8d8e4693093519f7f18e3c597d1e8df8c493de9e"><code>8d8e469</code></a></li> <li>[Tests] add tests to check the behavior of <code>getBoundary</code> with non-strings <a href="https://github.com/form-data/form-data/commit/837b8a1f7562bfb8bda74f3fc538adb7a5858995"><code>837b8a1</code></a></li> <li>[Dev Deps] remove unused deps <a href="https://github.com/form-data/form-data/commit/870e4e665935e701bf983a051244ab928e62d58e"><code>870e4e6</code></a></li> <li>[meta] remove local commit hooks <a href="https://github.com/form-data/form-data/commit/e6e83ccb545a5619ed6cd04f31d5c2f655eb633e"><code>e6e83cc</code></a></li> <li>[Dev Deps] update <code>eslint</code> <a href="https://github.com/form-data/form-data/commit/4066fd6f65992b62fa324a6474a9292a4f88c916"><code>4066fd6</code></a></li> <li>[meta] fix scripts to use prepublishOnly <a href="https://github.com/form-data/form-data/commit/c4bbb13c0ef669916657bc129341301b1d331d75"><code>c4bbb13</code></a></li> </ul> <h2><a href="https://github.com/form-data/form-data/compare/v4.0.1...v4.0.2">v4.0.2</a> - 2025-02-14</h2> <h3>Merged</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/form-data/form-data/commit/64190db548c0179e37206858e39f27cf513e9435"><code>64190db</code></a> v4.0.6</li> <li><a href="https://github.com/form-data/form-data/commit/92ae0eb5da94d6f01925d5f4fcffb2a1e50ed7cd"><code>92ae0eb</code></a> [Deps] update <code>hasown</code>, <code>mime-types</code></li> <li><a href="https://github.com/form-data/form-data/commit/f31d21ef10bf46e46344c3ee4f99acbef6be43e1"><code>f31d21e</code></a> [Dev Deps] update <code>@ljharb/eslint-config</code>, <code>auto-changelog</code>, <code>tape</code></li> <li><a href="https://github.com/form-data/form-data/commit/8dff42c6da654ed4e7ad4acb7f8ccd3831217c99"><code>8dff42c</code></a> [Fix] escape CR, LF, and <code>"</code> in field names and filenames</li> <li><a href="https://github.com/form-data/form-data/commit/67b0f65c2e0b065a511d42227d35e4d367644e97"><code>67b0f65</code></a> [Dev Deps] update <code>js-randomness-predictor</code></li> <li><a href="https://github.com/form-data/form-data/commit/68ff7dda8834d6de095a7008cef0e03bc252ca98"><code>68ff7dd</code></a> v4.0.5</li> <li><a href="https://github.com/form-data/form-data/commit/5822467f0ec21f6ad613c1c90856375e498793c7"><code>5822467</code></a> [Dev Deps] update <code>@ljharb/eslint-config</code>, <code>eslint</code></li> <li><a href="https://github.com/form-data/form-data/commit/76d0dee43933b5e167f7f09e5d9cbbd1cf911aa7"><code>76d0dee</code></a> [Fix] set Symbol.toStringTag in the proper place</li> <li><a href="https://github.com/form-data/form-data/commit/16e00765342106876f98a1c9703314006c9e937a"><code>16e0076</code></a> [Tests] Switch to newer v8 prediction library; enable node 24 testing</li> <li><a href="https://github.com/form-data/form-data/commit/41996f5ac73a867046d48512cab62e64fc846dad"><code>41996f5</code></a> v4.0.4</li> <li>Additional commits viewable in <a href="https://github.com/form-data/form-data/compare/v4.0.1...v4.0.6">compare view</a></li> </ul> </details> <details> <summary>Install script changes</summary> <p>This version modifies <code>prepublish</code> script that runs during installation. Review the package contents before updating.</p> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/ionic-team/ionic-framework/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [handlebars](https://github.com/handlebars-lang/handlebars.js) from 4.7.7 to 4.7.10. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/handlebars-lang/handlebars.js/releases">handlebars's releases</a>.</em></p> <blockquote> <h2>v4.7.10</h2> <ul> <li>security: Sanitize the source map URL when minifying - f37c599</li> <li>security: Iterate lazily in #each and strip whitespace in linear time - 812c226</li> <li>security: Escape <code><!--</code> and <code><script</code> in precompiled output - 609d1b1 GHSA-xw65-4hp5-5hc7</li> <li>security: Don't trust special properties on context data - ceec388 GHSA-p8wg-vrv2-v86f</li> <li>security: Only compile partials that are template strings - c28ee7a</li> <li>security: Only dispatch known node types in the Compiler and Visitor - 7d501a5</li> <li>security: Validate AST values in the compiler instead of the parser - 703fdcc GHSA-8r5x-fm3f-whwj</li> <li>Clarify that --root does not restrict filesystem access - 0fcf25c</li> <li>Bump minimist to ^1.2.8 - ea8ed82</li> <li>Fix Ruby component publishing documentation - d069c1c</li> <li>Fix Composer component definition - 6714e07</li> </ul> <p>Compatibility notes:</p> <ul> <li><code>{{#each}}</code> iterates iterables such as <code>Map</code>, <code>Set</code> and generators lazily, like <code>for...of</code>, instead of copying them into an array first. Values added to the iterable while the block renders are now visited too.</li> </ul> <p><a href="https://github.com/handlebars-lang/handlebars.js/compare/v4.7.9...v4.7.10">Commits</a></p> <h2>v4.7.9</h2> <ul> <li>fix: enable shell mode for spawn to resolve Windows EINVAL issue - e0137c2</li> <li>fix type "RuntimeOptions" also accepting string partials - eab1d14</li> <li>feat(types): set <code>hash</code> to be a <code>Record<string, any></code> - de4414d</li> <li>fix non-contiguous program indices - 4512766</li> <li>refactor: rename i to startPartIndex - e497a35</li> <li>security: fix security issues - 68d8df5 <ul> <li><a href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-2w6w-674q-4c4q">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-2w6w-674q-4c4q</a></li> <li><a href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-3mfm-83xf-c92r">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-3mfm-83xf-c92r</a></li> <li><a href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-xhpv-hc6g-r9c6">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-xhpv-hc6g-r9c6</a></li> <li><a href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-xjpj-3mr7-gcpf">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-xjpj-3mr7-gcpf</a></li> <li><a href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-9cx6-37pm-9jff">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-9cx6-37pm-9jff</a></li> <li><a href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-2qvq-rjwj-gvw9">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-2qvq-rjwj-gvw9</a></li> <li><a href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-7rx3-28cr-v5wh">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-7rx3-28cr-v5wh</a></li> <li><a href="https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-442j-39wm-28r2">https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-442j-39wm-28r2</a></li> </ul> </li> </ul> <p><a href="https://github.com/handlebars-lang/handlebars.js/compare/v4.7.8...v4.7.9">Commits</a></p> <h2>v4.7.8</h2> <ul> <li>Make library compatible with workers (<a href="https://redirect.github.com/handlebars-lang/handlebars.js/issues/1894">#1894</a>) - 3d3796c</li> <li>Don't rely on Node.js global object (<a href="https://redirect.github.com/handlebars-lang/handlebars.js/issues/1776">#1776</a>) - 2954e7e</li> <li>Fix compiling of each block params in strict mode (<a href="https://redirect.github.com/handlebars-lang/handlebars.js/issues/1855">#1855</a>) - 30dbf04</li> <li>Fix rollup warning when importing Handlebars as ESM - 03d387b</li> <li>Fix bundler issue with webpack 5 (<a href="https://redirect.github.com/handlebars-lang/handlebars.js/issues/1862">#1862</a>) - c6c6bbb</li> <li>Use https instead of git for mustache submodule - 88ac068</li> </ul> <p><a href="https://github.com/handlebars-lang/handlebars.js/compare/v4.7.7...v4.7.8">Commits</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/handlebars-lang/handlebars.js/blob/v4.7.10/release-notes.md">handlebars's changelog</a>.</em></p> <blockquote> <h2>v4.7.10 - October 5th, 2026</h2> <ul> <li>security: Sanitize the source map URL when minifying - f37c599</li> <li>security: Iterate lazily in #each and strip whitespace in linear time - 812c226</li> <li>security: Escape <code><!--</code> and <code><script</code> in precompiled output - 609d1b1 GHSA-xw65-4hp5-5hc7</li> <li>security: Don't trust special properties on context data - ceec388 GHSA-p8wg-vrv2-v86f</li> <li>security: Only compile partials that are template strings - c28ee7a</li> <li>security: Only dispatch known node types in the Compiler and Visitor - 7d501a5</li> <li>security: Validate AST values in the compiler instead of the parser - 703fdcc GHSA-8r5x-fm3f-whwj</li> <li>Clarify that --root does not restrict filesystem access - 0fcf25c</li> <li>Bump minimist to ^1.2.8 - ea8ed82</li> <li>Fix Ruby component publishing documentation - d069c1c</li> <li>Fix Composer component definition - 6714e07</li> </ul> <p>Compatibility notes:</p> <ul> <li><code>{{#each}}</code> iterates iterables such as <code>Map</code>, <code>Set</code> and generators lazily, like <code>for...of</code>, instead of copying them into an array first. Values added to the iterable while the block renders are now visited too.</li> </ul> <p><a href="https://github.com/handlebars-lang/handlebars.js/compare/v4.7.9...v4.7.10">Commits</a></p> <h2>v4.7.9 - March 26th, 2026</h2> <ul> <li>fix: enable shell mode for spawn to resolve Windows EINVAL issue - e0137c2</li> <li>fix type "RuntimeOptions" also accepting string partials - eab1d14</li> <li>feat(types): set <code>hash</code> to be a <code>Record<string, any></code> - de4414d</li> <li>fix non-contiguous program indices - 4512766</li> <li>refactor: rename i to startPartIndex - e497a35</li> <li>security: fix security issues - 68d8df5</li> </ul> <p><a href="https://github.com/handlebars-lang/handlebars.js/compare/v4.7.8...v4.7.9">Commits</a></p> <h2>v4.7.8 - July 27th, 2023</h2> <ul> <li>Make library compatible with workers (<a href="https://redirect.github.com/handlebars-lang/handlebars.js/issues/1894">#1894</a>) - 3d3796c</li> <li>Don't rely on Node.js global object (<a href="https://redirect.github.com/handlebars-lang/handlebars.js/issues/1776">#1776</a>) - 2954e7e</li> <li>Fix compiling of each block params in strict mode (<a href="https://redirect.github.com/handlebars-lang/handlebars.js/issues/1855">#1855</a>) - 30dbf04</li> <li>Fix rollup warning when importing Handlebars as ESM - 03d387b</li> <li>Fix bundler issue with webpack 5 (<a href="https://redirect.github.com/handlebars-lang/handlebars.js/issues/1862">#1862</a>) - c6c6bbb</li> <li>Use https instead of git for mustache submodule - 88ac068</li> </ul> <p><a href="https://github.com/handlebars-lang/handlebars.js/compare/v4.7.7...v4.7.8">Commits</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/45ce15255e0f430ac6d19742b18e316b7539264e"><code>45ce152</code></a> v4.7.10</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/e47b2365d5656ab5689ae226aef90a485a90c5d8"><code>e47b236</code></a> Update release notes</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/f37c599de9187715eb1e9afedcb2d80c175487a0"><code>f37c599</code></a> Sanitize the source map URL when minifying</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/812c2260cb8794ef4ab63a7f1d946431112560ca"><code>812c226</code></a> Iterate lazily in #each and strip whitespace in linear time</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/609d1b11c833c9a3e00f56f2f34d22f425446725"><code>609d1b1</code></a> Escape <code><!--</code> and <code><script</code> in precompiled output</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/ceec388abe1d1aac8f6369860d5f390fa71ef4fa"><code>ceec388</code></a> Don't trust special properties on context data</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/c28ee7adb312308e0fe26f4d435a481be5e1ff98"><code>c28ee7a</code></a> Only compile partials that are template strings</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/7d501a5af2ac3aa9ac788a8889dbe419849e46f1"><code>7d501a5</code></a> Only dispatch known node types in the Compiler and Visitor</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/703fdcc5fd6cc8d1cc0c33cc19de40c467c4b8d2"><code>703fdcc</code></a> Validate AST values in the compiler instead of the parser</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/0fcf25c63038b43e78e17adbf029cf073e80554d"><code>0fcf25c</code></a> Clarify that --root does not restrict filesystem access</li> <li>Additional commits viewable in <a href="https://github.com/handlebars-lang/handlebars.js/compare/v4.7.7...v4.7.10">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~jaylinski">jaylinski</a>, a new releaser for handlebars since your current version.</p> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/ionic-team/ionic-framework/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ular/test/apps/ng19 (#31548) Bumps [webpack](https://github.com/webpack/webpack) from 5.61.0 to 5.111.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/webpack/webpack/releases">webpack's releases</a>.</em></p> <blockquote> <h2>v5.111.1</h2> <h3>Patch Changes</h3> <ul> <li> <p>Throw on a write to an imported binding without losing concatenation. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22141">#22141</a>)</p> </li> <li> <p>Keep the <code></html></code> a page was written with, whatever opened the element. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22103">#22103</a>)</p> </li> <li> <p>Look an attribute up by what its value decodes to, not how it was spelled. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22107">#22107</a>)</p> </li> <li> <p>Minify HTML by what a value says rather than how it was spelled. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22154">#22154</a>)</p> </li> <li> <p>Follow HTML template form and frameset rules during tree construction. (by <a href="https://github.com/apps/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22129">#22129</a>)</p> </li> <li> <p>Keep the whitespace <code>calc()</code> needs around <code>+</code> and <code>-</code> in a custom property. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22150">#22150</a>)</p> </li> <li> <p>Keep an attribute's delimiter and spell its value back where quoting is frozen. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22119">#22119</a>)</p> </li> <li> <p>Rewrite an attribute value the source spelled with character references. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22110">#22110</a>)</p> </li> <li> <p>Unquote an HTML attribute value carrying a vertical tab. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22162">#22162</a>)</p> </li> <li> <p>Keep a shadow's spread and canonicalize a merged selector list. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22101">#22101</a>)</p> </li> <li> <p>Leave out an implied tag and merge adjacent runs on the first pass. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22121">#22121</a>)</p> </li> <li> <p>Minify in one pass what a second pass of the CSS minifier used to find. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22106">#22106</a>)</p> </li> <li> <p>Cover the CSS lookup tables no stylesheet in the corpus reaches. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22126">#22126</a>)</p> </li> <li> <p>Keep <code>initial</code> where an engine reads the property's initial keyword apart. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22128">#22128</a>)</p> </li> <li> <p>Join the CSS rules a cut leaves adjacent, and keep a value an escape ate. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22108">#22108</a>)</p> </li> <li> <p>Drop the dead CSS a cut leaves, and join more of the blocks that print alike. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22111">#22111</a>)</p> </li> <li> <p>Run the printer equivalence suite against Firefox as well as Chrome. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22151">#22151</a>)</p> </li> <li> <p>Finish in one CSS pass the joins, drops and collapses left to a second. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22117">#22117</a>)</p> </li> <li> <p>Move the context module sources into <code>lib/context/</code>. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22115">#22115</a>)</p> </li> <li> <p>Declare loader context types in JSDoc instead of hand-written <code>.d.ts</code> files. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22116">#22116</a>)</p> </li> <li> <p>Emit a failing module's stack relative, and name what a tap failed with. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22122">#22122</a>)</p> </li> <li> <p>Finish in one CSS pass the drops, layer gathers and joins left to a second. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22120">#22120</a>)</p> </li> <li> <p>Speed up CSS parsing by stepping over dropped selector preludes in bytes. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22142">#22142</a>)</p> </li> <li> <p>Record hoisted, module and block declarations while parsing, not by re-walking. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22147">#22147</a>)</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/webpack/webpack/blob/main/CHANGELOG.md">webpack's changelog</a>.</em></p> <blockquote> <h2>5.111.1</h2> <h3>Patch Changes</h3> <ul> <li> <p>Throw on a write to an imported binding without losing concatenation. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22141">#22141</a>)</p> </li> <li> <p>Keep the <code></html></code> a page was written with, whatever opened the element. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22103">#22103</a>)</p> </li> <li> <p>Look an attribute up by what its value decodes to, not how it was spelled. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22107">#22107</a>)</p> </li> <li> <p>Minify HTML by what a value says rather than how it was spelled. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22154">#22154</a>)</p> </li> <li> <p>Follow HTML template form and frameset rules during tree construction. (by <a href="https://github.com/apps/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22129">#22129</a>)</p> </li> <li> <p>Keep the whitespace <code>calc()</code> needs around <code>+</code> and <code>-</code> in a custom property. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22150">#22150</a>)</p> </li> <li> <p>Keep an attribute's delimiter and spell its value back where quoting is frozen. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22119">#22119</a>)</p> </li> <li> <p>Rewrite an attribute value the source spelled with character references. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22110">#22110</a>)</p> </li> <li> <p>Unquote an HTML attribute value carrying a vertical tab. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22162">#22162</a>)</p> </li> <li> <p>Keep a shadow's spread and canonicalize a merged selector list. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22101">#22101</a>)</p> </li> <li> <p>Leave out an implied tag and merge adjacent runs on the first pass. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22121">#22121</a>)</p> </li> <li> <p>Minify in one pass what a second pass of the CSS minifier used to find. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22106">#22106</a>)</p> </li> <li> <p>Cover the CSS lookup tables no stylesheet in the corpus reaches. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22126">#22126</a>)</p> </li> <li> <p>Keep <code>initial</code> where an engine reads the property's initial keyword apart. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22128">#22128</a>)</p> </li> <li> <p>Join the CSS rules a cut leaves adjacent, and keep a value an escape ate. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22108">#22108</a>)</p> </li> <li> <p>Drop the dead CSS a cut leaves, and join more of the blocks that print alike. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22111">#22111</a>)</p> </li> <li> <p>Run the printer equivalence suite against Firefox as well as Chrome. (by <a href="https://github.com/aryanraj45"><code>@aryanraj45</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22151">#22151</a>)</p> </li> <li> <p>Finish in one CSS pass the joins, drops and collapses left to a second. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22117">#22117</a>)</p> </li> <li> <p>Move the context module sources into <code>lib/context/</code>. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22115">#22115</a>)</p> </li> <li> <p>Declare loader context types in JSDoc instead of hand-written <code>.d.ts</code> files. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22116">#22116</a>)</p> </li> <li> <p>Emit a failing module's stack relative, and name what a tap failed with. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22122">#22122</a>)</p> </li> <li> <p>Finish in one CSS pass the drops, layer gathers and joins left to a second. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22120">#22120</a>)</p> </li> <li> <p>Speed up CSS parsing by stepping over dropped selector preludes in bytes. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/22142">#22142</a>)</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/webpack/webpack/commit/5a106753839fd7e1b86138c3a5f6b348341147a7"><code>5a10675</code></a> chore(release): new release (<a href="https://redirect.github.com/webpack/webpack/issues/22105">#22105</a>)</li> <li><a href="https://github.com/webpack/webpack/commit/9c448c4ca3b5296849453384f49f4032b01345d6"><code>9c448c4</code></a> test: consolidate loose harness files under test/harness (<a href="https://redirect.github.com/webpack/webpack/issues/22163">#22163</a>)</li> <li><a href="https://github.com/webpack/webpack/commit/a947604b3aa89eac798ff15bdf9424eb081a81bc"><code>a947604</code></a> fix(html): unquote an attribute value carrying a vertical tab (<a href="https://redirect.github.com/webpack/webpack/issues/22162">#22162</a>)</li> <li><a href="https://github.com/webpack/webpack/commit/db556f33259354a428e03410382ac6dcfe6b3f5d"><code>db556f3</code></a> test: run the printer equivalence suite against Gecko in CI (<a href="https://redirect.github.com/webpack/webpack/issues/22155">#22155</a>)</li> <li><a href="https://github.com/webpack/webpack/commit/d174cdf97ab08afc12b480ca87baa34b380cb5d0"><code>d174cdf</code></a> perf(css): drop a fallback every browserslist target reads past (<a href="https://redirect.github.com/webpack/webpack/issues/22158">#22158</a>)</li> <li><a href="https://github.com/webpack/webpack/commit/39f14f200e21a20adf27e2b41d03b15460185076"><code>39f14f2</code></a> refactor(javascript): declare block bindings from the parse (<a href="https://redirect.github.com/webpack/webpack/issues/22161">#22161</a>)</li> <li><a href="https://github.com/webpack/webpack/commit/08354116e89e655ec771603dbca2e9bba7627dd8"><code>0835411</code></a> test: move suite drivers into test/templates (<a href="https://redirect.github.com/webpack/webpack/issues/22159">#22159</a>)</li> <li><a href="https://github.com/webpack/webpack/commit/b48cd775eed23d1fbcc26fd59a101a0cf810de9c"><code>b48cd77</code></a> fix(html): minify by what a value says rather than how it was spelled (<a href="https://redirect.github.com/webpack/webpack/issues/22154">#22154</a>)</li> <li><a href="https://github.com/webpack/webpack/commit/a774f10fc08fbabf9ad5b462128ab8e5e97e499e"><code>a774f10</code></a> test: define the webpack major instead of bundling package.json (<a href="https://redirect.github.com/webpack/webpack/issues/22160">#22160</a>)</li> <li><a href="https://github.com/webpack/webpack/commit/4b2eed0bd9680c347876b239903679abc6482da1"><code>4b2eed0</code></a> docs: report only what needs a decision while watching a PR (<a href="https://redirect.github.com/webpack/webpack/issues/22156">#22156</a>)</li> <li>Additional commits viewable in <a href="https://github.com/webpack/webpack/compare/v5.61.0...v5.111.1">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new releaser for webpack since your current version.</p> </details> <details> <summary>Install script changes</summary> <p>This version modifies <code>prepare</code> script that runs during installation. Review the package contents before updating.</p> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/ionic-team/ionic-framework/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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.5.2` → `8.5.3`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/8.5.2/8.5.3) |  |  | --- ### Release Notes <details> <summary>ionic-team/capacitor (@​capacitor/core)</summary> ### [`v8.5.3`](https://redirect.github.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#853-2026-10-07) [Compare Source](https://redirect.github.com/ionic-team/capacitor/compare/8.5.2...8.5.3) ##### Bug Fixes - **cli:** change Cordova AppDelegate.h imports for SPM ([#​8618](https://redirect.github.com/ionic-team/capacitor/issues/8618)) ([145560e](https://redirect.github.com/ionic-team/capacitor/commit/145560ee590d86637dc9dd2e2c9f4c08b0f631c0)) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - 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. --- - [ ] <!-- rebase-check -->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). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzQuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEzNC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ation (#31541) Issue number: resolves #31528 --------- ## What is the current behavior? Currently, every mounted view in an `IonRouterOutlet` re-renders on each navigation, hidden ones included. The view stack builds a new `RouteContext` value every time the outlet renders, which happens about 3 times per navigation, and `NavManager` does the same with `NavContext` and `IonRouterContext`. ## What is the new behavior? We now keep each view's `RouteContext` value until its content changes, and a view whose route doesn't match the current location keeps the value it last rendered with. Hidden pages using `useParams` no longer re-render, and the page being shown renders once when its match changes. The `NavManager` also only rebuilds its context values when `routeInfo` changes, so `useIonRouter` consumers render once per navigation instead of twice. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information The held value lives in a component under each view instead of on the view item, because two outlets with the same `id` share a view item while sitting under different parent routes. Hidden pages using `useNavigate` or `useLocation` still render once per navigation, because React Router's `useNavigate` reads the location internally. Holding `LocationContext` would fix that, but `useLocation()` in a hidden page would then return a stale location, so I left that alone for now. # Current dev build ``` 9.0.7-dev.11791381676.118a7a15 ```
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/download-artifact](https://redirect.github.com/actions/download-artifact) | action | patch | `v8.0.1` → `v8.0.2` | | [actions/upload-artifact](https://redirect.github.com/actions/upload-artifact) | action | patch | `v7.0.1` → `v7.0.2` | --- ### Release Notes <details> <summary>actions/download-artifact (actions/download-artifact)</summary> ### [`v8.0.2`](https://redirect.github.com/actions/download-artifact/releases/tag/v8.0.2) [Compare Source](https://redirect.github.com/actions/download-artifact/compare/v8.0.1...v8.0.2) ##### What's Changed - Update the readme by [@​danwkennedy](https://redirect.github.com/danwkennedy) in [#​473](https://redirect.github.com/actions/download-artifact/pull/473) - Improves artifact download retries when the service returns HTTP 429 (rate limiting), including honoring valid Retry-After headers. - Update [@​actions/artifact](https://redirect.github.com/actions/artifact) to 6.3.1 by [@​tunc-d](https://redirect.github.com/tunc-d) in [#​492](https://redirect.github.com/actions/download-artifact/pull/492) - Prepare download-artifact v8.0.2 by [@​tunc-d](https://redirect.github.com/tunc-d) in [#​493](https://redirect.github.com/actions/download-artifact/pull/493) ##### New Contributors - [@​tunc-d](https://redirect.github.com/tunc-d) made their first contribution in [#​492](https://redirect.github.com/actions/download-artifact/pull/492) **Full Changelog**: <actions/download-artifact@v8.0.1...v8.0.2> </details> <details> <summary>actions/upload-artifact (actions/upload-artifact)</summary> ### [`v7.0.2`](https://redirect.github.com/actions/upload-artifact/releases/tag/v7.0.2) [Compare Source](https://redirect.github.com/actions/upload-artifact/compare/v7.0.1...v7.0.2) #### What's Changed - Improves artifact download retries when the service returns HTTP 429 (rate limiting), including honoring valid Retry-After headers. - Updates [@​actions/artifact](https://redirect.github.com/actions/artifact) to v6.3.1. #### New Contributors - [@​tunc-d](https://redirect.github.com/tunc-d) made their first contribution in [#​821](https://redirect.github.com/actions/upload-artifact/pull/821) **Full Changelog**: <actions/upload-artifact@v7.0.1...v7.0.2> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **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. --- - [ ] <!-- rebase-check -->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). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzQuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEzNC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github/codeql-action](https://redirect.github.com/github/codeql-action) | action | patch | `v4.38.2` → `v4.38.3` | --- ### Release Notes <details> <summary>github/codeql-action (github/codeql-action)</summary> ### [`v4.38.3`](https://redirect.github.com/github/codeql-action/releases/tag/v4.38.3) [Compare Source](https://redirect.github.com/github/codeql-action/compare/v4.38.2...v4.38.3) - *Upcoming breaking change*: CodeQL version 2.21.2 and earlier were discontinued on 24 September 2026 alongside GitHub Enterprise Server 3.17, and will be unsupported by the next minor release of the CodeQL Action. Added a deprecation warning for customers using these versions of CodeQL. [#​4188](https://redirect.github.com/github/codeql-action/pull/4188) - Update default CodeQL bundle version to [2.27.2](https://redirect.github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.2). [#​4203](https://redirect.github.com/github/codeql-action/pull/4203) - Fixed a bug where the decision of whether to use a per-language bundle did not account for custom configurations that reference queries outside of compiled CodeQL packs. This issue was caught during internal testing and did not affect any customer repositories. We will resume the roll out of per-language bundles in the coming weeks. [#​4184](https://redirect.github.com/github/codeql-action/pull/4184) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->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). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzQuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEzNC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Issue number: resolves internal --------- <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? Dragging a sheet modal upwards dismisses it, depending on where the user's pointer is relative to the viewport height rather than how far they dragged. It happens when the pointer is in the bottom half of the viewport, so it's most noticeable on smaller sheet modals where the whole sheet sits in that area. Swiping up should scroll the content, or expand the sheet if it isn't at its largest breakpoint yet. ## What is the new behavior? Dragging a sheet upwards no longer dismisses it. How open the sheet is now comes from the drag distance over the sheet's own height, so the breakpoint it snaps to and the position it's drawn at come from the same measurement. Sheets with breakpoints in between snap to the nearest one. A quick downward flick still dismisses, because the drag is projected forward by its velocity before snapping to the nearest breakpoint. A small, slow drag snaps the sheet back instead of closing it. Event progress (`ionDragMove`/`ionDragEnd`) is now normalized to 0 at the lowest breakpoint and 1 at the highest, matching the documented contract. ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change: 1. Describe the impact and migration path for existing applications below. 2. Update the BREAKING.md file with the breaking change. 3. Add "BREAKING CHANGE: [...]" to the commit description when merging. See https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer for more information. --> ## Other information - [Sheet Modal Test Page](https://ionic-framework-git-rou-13053-fix-sheet-dismissal-ionic1.vercel.app/src/components/modal/test/sheet/
Issue number: resolves #24587 --------- ## What is the current behavior? Currently, the `ActivatedRoute` that `ion-router-outlet` injects into a page copies `snapshot` once, when the page is activated. A navigation that only changes query params reuses the page without re-activating the outlet, so `route.snapshot` stays stale (e.g., `snapshot.queryParamMap.get('foo')` is `null` after navigating to `?foo=bar`). ## What is the new behavior? The proxy's `snapshot` now reads from the route it stands in for, so it always matches the current URL. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information The issue's broken relative links stopped reproducing once Angular started building URL trees from the snapshot itself (all supported versions do). The stale snapshot behind it was still there. The new spec also covers relative links so the original symptom stays fixed, but reverting this fix will not break that test because it's just to make sure this issue doesn't come up again even though it's technically not a problem right now.
…1583) Issue number: resolves #30617 --------- ## What is the current behavior? Currently, replacing a page inside a tab stack breaks going back in two different ways. Calling `useIonRouter().replace()` shows a back button that does nothing, because `replace()` sends the `root` direction, which clears the location history but leaves `pushedByRoute` set. Calling `navigate(path, 'forward', 'replace')` after switching tabs does the opposite, so the URL goes back but the replaced page stays on screen. That one happens because the back button calls `router.go(-3)` and the router assumes the page we left is only one entry ahead. ## What is the new behavior? Now `replace()` uses the `none` direction, so it keeps the pages beneath the one it replaced and still doesn't animate, the same as a plain `router.replace()`. The router also uses the real history delta to find the page we left, and an explicit `navigate(url, 'root', 'replace')` no longer shows a back button since there's nothing to go back to. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information This does change `replace()` for apps that relied on it clearing the history. That only started in 9.0, when #31142 made the router respect the caller's direction, and those apps can switch to `navigate(url, 'root', 'replace')`. I updated the `useIonRouter` docs in ionic-docs to match here: ionic-team/ionic-docs#4794
…ound (#31591) Issue number: N/A --------- ## What is the current behavior? The `visible` docs on `ion-backdrop` only say "If `true`, the backdrop will be visible." Developers read that as "hides the backdrop," but `visible="false"` only removes the default background: the backdrop still blocks interaction, and custom background styles on `ion-backdrop` still apply. This has been reported as a bug several times (#26953, #29177, #30742). ## What is the new behavior? - Documents that `visible` controls only the default background, not whether the backdrop blocks interaction or overrides a custom background. The wording matches `showBackdrop` on `ion-modal` and `ion-popover`. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information The Properties table on the docs site is generated from this JSDoc, so it updates on the next API sync.
v9.0.9
Issue number: resolves #30591 --------- ## What is the current behavior? Currently, a menu inside the split pane's main content, like an end menu on a page, is treated as a side pane, so it can't be opened while the split pane is visible. This broke in 8.0 when #28801 changed the menu to look for any ancestor split pane, so that wrapped menus would work. ## What is the new behavior? A menu in the main content is now a regular menu and opens normally. Wrapped side menus still work, since the menu doesn't need to be a direct child of the split pane. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [pozil/auto-assign-issue](https://redirect.github.com/pozil/auto-assign-issue) | action | patch | `v4.0.1` → `v4.0.2` | --- ### Release Notes <details> <summary>pozil/auto-assign-issue</summary> ### [`v4.0.2`](https://redirect.github.com/pozil/auto-assign-issue/releases/tag/v4.0.2): - Bump dependencies [Compare Source](https://redirect.github.com/pozil/auto-assign-issue/compare/v4.0.1...v4.0.2) - build: bump dependencies </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - 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. --- - [ ] <!-- rebase-check -->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). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNzEuMiIsInVwZGF0ZWRJblZlciI6IjQ0LjE3MS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github/codeql-action](https://redirect.github.com/github/codeql-action) | action | patch | `v4.39.0` → `v4.39.1` | --- ### Release Notes <details> <summary>github/codeql-action</summary> ### [`v4.39.1`](https://redirect.github.com/github/codeql-action/releases/tag/v4.39.1) [Compare Source](https://redirect.github.com/github/codeql-action/compare/v4.39.0...v4.39.1) - Update default CodeQL bundle version to [2.27.3](https://redirect.github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.3). [#​4256](https://redirect.github.com/github/codeql-action/pull/4256) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->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). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNzEuMiIsInVwZGF0ZWRJblZlciI6IjQ0LjE3MS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Issue number: internal --------- ## What is the current behavior? Currently, patch releases are done by hand from the Confluence checklist. That means creating the release branch, running the release workflow, opening two PRs, turning on merge commits, merging with the exact commit format, turning merge commits back off and then setting up the Jira release. It's easy to miss a step, and forgetting to turn merge commits back off has happened before. ## What is the new behavior? This adds `scripts/release-patch.sh`, which walks through the patch release one step at a time. It runs the mechanical steps through `gh` and stops for anything that needs a person, like confirming the changelog or posting the code freeze in Slack. It turns merge commits on for the merges and back off afterwards, even if the script errors out or gets interrupted. It also prints a single Jira search link that finds the tickets for every PR in the release. The Jira site and project key are read from `~/.config/ionic-release.env` instead of being kept in the repo (to prevent them from being committed by accident), and `scripts/release.env.example` is the template for that file. The script stops before doing anything if that file is missing, if a value is still a placeholder, or if the account running it isn't a repo admin. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information :warning: You must have [the `gh` CLI](https://cli.github.com/) installed and authenticated to run this script. The values for the config file are on the Releases page on Confluence. Running `./scripts/release-patch.sh --dry-run` goes through the whole release without changing anything, so it's the easiest way to try it out. Use `--step N` to resume a release that stopped partway through.
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [pozil/auto-assign-issue](https://redirect.github.com/pozil/auto-assign-issue) | action | minor | `v4.0.2` → `v4.1.0` | --- ### Release Notes <details> <summary>pozil/auto-assign-issue</summary> ### [`v4.1.0`](https://redirect.github.com/pozil/auto-assign-issue/releases/tag/v4.1.0): - Packaging update [Compare Source](https://redirect.github.com/pozil/auto-assign-issue/compare/v4.0.2...v4.1.0) - build: packaging refactoring - [#​209](https://redirect.github.com/pozil/auto-assign-issue/issues/209) thanks to [@​methbkts](https://redirect.github.com/methbkts) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - 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. --- - [ ] <!-- rebase-check -->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). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNzYuMyIsInVwZGF0ZWRJblZlciI6IjQ0LjE3Ni4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
# Conflicts: # core/package-lock.json # core/package.json # core/src/components.d.ts # core/src/components/alert/test/basic/alert.e2e.ts-snapshots/alert-prompt-md-ltr-Mobile-Firefox-linux.png # core/src/components/alert/test/basic/alert.e2e.ts-snapshots/alert-prompt-md-rtl-Mobile-Firefox-linux.png # core/src/components/input/input.common.scss # core/src/components/input/input.md.outline.scss # core/src/components/input/input.tsx # core/src/components/menu/menu.tsx # core/src/components/modal/gestures/sheet.ts # core/src/components/select/select.common.scss # core/src/components/select/select.md.outline.scss # core/src/components/select/select.tsx # core/src/components/textarea/textarea.common.scss # core/src/components/textarea/textarea.tsx # core/src/css/float-elements.scss # core/src/themes/native/native.globals.scss # core/src/utils/overlays.ts
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
ShaneK
force-pushed
the
sync-next-with-main
branch
from
October 23, 2026 18:53
240319c to
129afc0
Compare
ShaneK
force-pushed
the
sync-next-with-main
branch
from
October 23, 2026 19:21
0f27e74 to
94725fb
Compare
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sync next with main.