Skip to content

chore(git): sync with main#31233

Merged
ShaneK merged 10 commits into
major-9.0from
sync-major-9.0-with-main
Jun 18, 2026
Merged

chore(git): sync with main#31233
ShaneK merged 10 commits into
major-9.0from
sync-major-9.0-with-main

Conversation

@ShaneK

@ShaneK ShaneK commented Jun 18, 2026

Copy link
Copy Markdown
Member

Sync major-9.0 with main.

renovate Bot and others added 10 commits June 12, 2026 15:57
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.0` → `v4.0.1` |

---

### Release Notes

<details>
<summary>pozil/auto-assign-issue (pozil/auto-assign-issue)</summary>

###
[`v4.0.1`](https://redirect.github.com/pozil/auto-assign-issue/releases/tag/v4.0.1):
- Fix support for PR team reviewers

[Compare
Source](https://redirect.github.com/pozil/auto-assign-issue/compare/v4.0.0...v4.0.1)

- fix: support for PR team reviewers
[#&#8203;205](https://redirect.github.com/pozil/auto-assign-issue/issues/205)

</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:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…31212)

Issue number: resolves #30434

---------
## What is the current behavior?
The search icon in an ion-searchbar is sometimes positioned incorrectly.

## What is the new behavior?
If the `positionPlaceholder` function in `searchbar.tsx` detects that
`iconEl.clientWidth` is 0, it will use a `ResizeObserver` to wait until
the element has a width > 0, then run `positionPlaceholder` again.

## Does this introduce a breaking change?
- [ ] Yes
- [x] No
This just updates a bad import to use the correct path.

Co-authored-by: Brandy Smith <6577830+brandyscarney@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/) | Type |
Update |
|---|---|---|---|---|---|
| [@playwright/test](https://playwright.dev)
([source](https://redirect.github.com/microsoft/playwright)) |
[`^1.60.0` →
`^1.61.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.60.0/1.61.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.61.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.60.0/1.61.0?slim=true)
| devDependencies | minor |
| mcr.microsoft.com/playwright | `v1.60.0` → `v1.61.0` |
![age](https://developer.mend.io/api/mc/badges/age/docker/mcr.microsoft.com%2fplaywright/v1.61.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/mcr.microsoft.com%2fplaywright/v1.60.0/v1.61.0?slim=true)
| final | minor |
| [playwright-core](https://playwright.dev)
([source](https://redirect.github.com/microsoft/playwright)) |
[`^1.60.0` →
`^1.61.0`](https://renovatebot.com/diffs/npm/playwright-core/1.60.0/1.61.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.61.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.60.0/1.61.0?slim=true)
| devDependencies | minor |

---

### Release Notes

<details>
<summary>microsoft/playwright (@&#8203;playwright/test)</summary>

###
[`v1.61.0`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.61.0)

[Compare
Source](https://redirect.github.com/microsoft/playwright/compare/v1.60.0...v1.61.0)

#### 🔑 WebAuthn passkeys

New [Credentials](https://playwright.dev/docs/api/class-credentials)
virtual authenticator, available via
[browserContext.credentials](https://playwright.dev/docs/api/class-browsercontext#browser-context-credentials),
lets tests register passkeys and answer `navigator.credentials.create()`
/ `navigator.credentials.get()` ceremonies in the page — no real
hardware key required, works in all browsers:

```js
const context = await browser.newContext();

// Seed a passkey your backend provisioned for a test user.
await context.credentials.create('example.com', {
  id: credentialId,
  userHandle,
  privateKey,
  publicKey,
});
await context.credentials.install();

const page = await context.newPage();
await page.goto('https://example.com/login');
// The page's navigator.credentials.get() is answered with the seeded passkey.
```

You can also let the app register a passkey once in a setup test, read
it back with
[credentials.get()](https://playwright.dev/docs/api/class-credentials#credentials-get),
and seed it into later tests — see
[Credentials](https://playwright.dev/docs/api/class-credentials) for
details.

#### 🗃️ Web Storage

New [WebStorage](https://playwright.dev/docs/api/class-webstorage) API,
available via
[page.localStorage](https://playwright.dev/docs/api/class-page#page-local-storage)
and
[page.sessionStorage](https://playwright.dev/docs/api/class-page#page-session-storage),
reads and writes the page's storage for the current origin:

```js
await page.localStorage.setItem('token', 'abc');
const token = await page.localStorage.getItem('token');
const items = await page.sessionStorage.items();
```

#### New APIs

##### Network

-
[apiResponse.securityDetails()](https://playwright.dev/docs/api/class-apiresponse#api-response-security-details)
and
[apiResponse.serverAddr()](https://playwright.dev/docs/api/class-apiresponse#api-response-server-addr)
mirror the browser-side
[response.securityDetails()](https://playwright.dev/docs/api/class-response#response-security-details)
and
[response.serverAddr()](https://playwright.dev/docs/api/class-response#response-server-addr).

##### Browser and Screencast

- New option `artifactsDir` in
[browserType.connectOverCDP()](https://playwright.dev/docs/api/class-browsertype#browser-type-connect-over-cdp)
controls where artifacts such as traces and downloads are stored when
attached to an existing browser.
- New option `cursor` in
[screencast.showActions()](https://playwright.dev/docs/api/class-screencast#screencast-show-actions)
controls the cursor decoration rendered for pointer actions.
- The `onFrame` callback in
[screencast.start()](https://playwright.dev/docs/api/class-screencast#screencast-start)
now receives a `timestamp` of when the frame was presented by the
browser.

##### Test runner

- The
[testOptions.video](https://playwright.dev/docs/api/class-testoptions#test-options-video)
option now supports the same set of modes as `trace`: new
`'on-all-retries'`, `'retain-on-first-failure'` and
`'retain-on-failure-and-retries'` values. See the [video modes
table](https://playwright.dev/docs/test-use-options#video-modes) for
which runs are recorded and kept in each mode.
- Supported `expect.soft.poll(...)`.
- New
[fullConfig.argv](https://playwright.dev/docs/api/class-fullconfig#full-config-argv)
— a snapshot of `process.argv` from the runner process, handy for
reading custom arguments passed after the `--` separator.
- New
[fullConfig.failOnFlakyTests](https://playwright.dev/docs/api/class-fullconfig#full-config-fail-on-flaky-tests)
mirrors the config option, so reporters can explain why a flaky run
failed.
-
[testInfo.errors](https://playwright.dev/docs/api/class-testinfo#test-info-errors)
now lists each sub-error of an `AggregateError` as a separate entry.
- New `-G` command line shorthand for `--grep-invert`.

#### 🛠️ Other improvements

- Playwright now supports Ubuntu 26.04.
- HAR and trace recordings now include WebSocket requests.

#### Browser Versions

- Chromium 149.0.7827.55
- Mozilla Firefox 151.0
- WebKit 26.5

This version was also tested against the following stable channels:

- Google Chrome 149
- Microsoft Edge 149

</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.

👻 **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:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: ionitron <hi@ionicframework.com>
)

Issue number: internal

---------

## What is the current behavior?

Currently, when an inline overlay (`ion-modal`, `ion-popover`) is
rendered through React and `CoreDelegate` teleports its host out of the
React-rendered location, unmounting the component can leave the host
orphaned in the DOM. `componentWillUnmount` only recovered a relocated
host when `this.state.isOpen` was `true`, so a host that was moved while
still closed was never reattached for React to remove. That happens
during the React 18 StrictMode mount/unmount cycle, or any re-render
before the present events flip `isOpen`. The result is duplicate
`<ion-modal>` elements stacking up in `document.body`. This came from
the portal change in #31159

## What is the new behavior?

This splits the unmount cleanup into two independent steps. The DOM
recovery now runs whenever the host is still connected and has been
relocated, regardless of open state: portaled overlays get reattached to
`portalTarget` so React's `removeChild` can find them, and nested
overlays moved out of their `<template>` are removed directly. The
dismiss-lifecycle teardown, detaching the `didDismiss` listener and
props, stays gated on `isOpen` as before. So a relocated-but-closed host
is now cleaned up instead of orphaned.

## Does this introduce a breaking change?

- [ ] Yes
- [X] No

## Other information
v8.8.11

---------

Co-authored-by: ionitron <hi@ionicframework.com>
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.3` →
`8.0.5`](https://renovatebot.com/diffs/npm/@capacitor%2fkeyboard/8.0.3/8.0.5)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fkeyboard/8.0.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fkeyboard/8.0.3/8.0.5?slim=true)
|

---

### Release Notes

<details>
<summary>ionic-team/capacitor-keyboard
(@&#8203;capacitor/keyboard)</summary>

###
[`v8.0.5`](https://redirect.github.com/ionic-team/capacitor-keyboard/blob/HEAD/CHANGELOG.md#805-2026-06-16)

[Compare
Source](https://redirect.github.com/ionic-team/capacitor-keyboard/compare/v8.0.4...v8.0.5)

##### Bug Fixes

- **docs:** `autoBackdropColor` reference
([cb4af94](https://redirect.github.com/ionic-team/capacitor-keyboard/commit/cb4af9441fbfeadc2d210c0137c257faac0376f8))

###
[`v8.0.4`](https://redirect.github.com/ionic-team/capacitor-keyboard/blob/HEAD/CHANGELOG.md#804-2026-06-16)

[Compare
Source](https://redirect.github.com/ionic-team/capacitor-keyboard/compare/v8.0.3...v8.0.4)

##### Bug Fixes

- **android:** reset WebView height when keyboard hides without
animation
([#&#8203;60](https://redirect.github.com/ionic-team/capacitor-keyboard/issues/60))
([f2e9cd2](https://redirect.github.com/ionic-team/capacitor-keyboard/commit/f2e9cd2803e87982c07381ee1987772c2d4a7a60))
- **ios:** prevent black QuickType bar when using Magic Keyboard on iPad
+ Fix Keyboard on iOS 26
([#&#8203;52](https://redirect.github.com/ionic-team/capacitor-keyboard/issues/52))
([068f643](https://redirect.github.com/ionic-team/capacitor-keyboard/commit/068f64396600f54fe31775776668634a38afc937))

</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:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
# Conflicts:
#	packages/react-router/package-lock.json
#	packages/react/package-lock.json
#	packages/react/package.json
#	packages/vue-router/package-lock.json
#	packages/vue/package-lock.json
#	packages/vue/package.json
@ShaneK ShaneK requested a review from a team as a code owner June 18, 2026 15:40
@ShaneK ShaneK requested a review from BenOsodrac June 18, 2026 15:40
@vercel

vercel Bot commented Jun 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ionic-framework Ready Ready Preview, Comment Jun 18, 2026 3:44pm

Request Review

@github-actions github-actions Bot added package: core @ionic/core package package: angular @ionic/angular package package: vue @ionic/vue package package: react @ionic/react package labels Jun 18, 2026
@ShaneK ShaneK merged commit 8cfdced into major-9.0 Jun 18, 2026
60 of 71 checks passed
@ShaneK ShaneK deleted the sync-major-9.0-with-main branch June 18, 2026 15:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

package: angular @ionic/angular package package: core @ionic/core package package: react @ionic/react package package: vue @ionic/vue package

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants