fix(ui): preserve identifier focus during sign-in submissions - #9744
fix(ui): preserve identifier focus during sign-in submissions#9744nikosdouvlis wants to merge 1 commit into
Conversation
Why: iOS code sign-in can reach verification with the software keyboard closed after the pending request disables the focused identifier. What changed: Keep focused identifiers natively enabled while blocking edits, preserve focus on submit, and reject duplicate pending submissions. Other fields and explicit disabling retain their existing behavior.
🦋 Changeset detectedLatest commit: 3339632 The changes in this PR will be included in the next version bump. This PR includes changesets to release 3 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueComment |
|
!snapshot otp-keyboard-handoff |
@clerk/astro
@clerk/backend
@clerk/chrome-extension
@clerk/clerk-js
@clerk/electron
@clerk/electron-passkeys
@clerk/eslint-plugin
@clerk/expo
@clerk/expo-google-signin
@clerk/expo-passkeys
@clerk/express
@clerk/fastify
@clerk/hono
@clerk/localizations
@clerk/nextjs
@clerk/nuxt
@clerk/react
@clerk/react-router
@clerk/shared
@clerk/tanstack-react-start
@clerk/testing
@clerk/ui
@clerk/upgrade
@clerk/vue
commit: |
|
!snapshot otp-keyboard-handoff |
|
Hey @nikosdouvlis - the snapshot version command generated the following package versions:
Tip: Use the snippet copy button below to quickly install the required packages. npm i @clerk/astro@4.1.2-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/backend@3.17.3-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/chrome-extension@3.1.83-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/clerk-js@6.32.0-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/electron@0.0.43-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/electron-passkeys@0.0.4-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/eslint-plugin@0.2.1-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/expo@4.6.7-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/expo-google-signin@1.0.5-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/expo-passkeys@2.0.19-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/express@2.1.68-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/fastify@3.1.78-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/headless@0.0.33-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/hono@0.1.78-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/localizations@4.17.0-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/msw@0.0.69-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/nextjs@7.9.3-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/nuxt@3.1.2-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/react@6.16.0-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/react-router@3.6.23-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/shared@4.32.0-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/swingset@0.0.46-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/tanstack-react-start@1.5.14-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/testing@2.2.35-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/ui@1.33.0-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/upgrade@2.0.7-otp-keyboard-handoff.v20260912212758 --save-exact
npm i @clerk/vue@2.5.2-otp-keyboard-handoff.v20260912212758 --save-exact |
Description
When a sign-in request disables the focused phone or email input, iOS can close the keyboard before the verification screen appears. Keep that input active through the request so the existing OTP autofocus can take over.
The identifier still blocks edits while loading. Duplicate submissions are blocked, and other controls keep their disabled behavior. Submit preserves the existing identifier focus without calling
focus().Draft pending an iPhone check with the npm snapshot. Submit with the keyboard open and check that the first OTP digit needs no extra tap. Repeat with a slow response and a failed-request retry.
Checklist
pnpm testruns as expected for the affected UI flows.pnpm buildruns as expected for@clerk/uiand its dependencies.Type of change