`<SignIn />` and `<SignUp />` email and name fields have no `autocomplete`, so browsers don't offer the user's email
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 72/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- next.js, react, typescript
- Lĩnh vực
- accessibility, authentication, frontend
Hướng nghiên cứu
Start with packages/ui/src/components/SignIn/SignInStart.tsx at the identifier field mentioned in the issue, then locate the corresponding SignUp fields and their tests. Check how identifier types and passkey autofill are handled, and run the relevant component tests. Done when the fields receive the standard autocomplete tokens described in the issue, including a valid field name before webauthn.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Reproduction
No special setup needed: any app with the default <SignIn /> / <SignUp /> and email (email code) as the only identifier shows it, e.g. a fresh Next.js quickstart.
Description
With email as the sign-in identifier, the prebuilt components render the email and name fields without any autocomplete attribute:
<!-- <SignIn /> -->
<input id="identifier-field" name="identifier" type="text" inputmode="email" ...>
<!-- <SignUp /> -->
<input id="firstName-field" name="firstName" type="text" ...>
<input id="lastName-field" name="lastName" type="text" ...>
<input id="emailAddress-field" name="emailAddress" type="text" inputmode="email" ...>
So Safari (macOS/iOS/iPadOS), the iOS QuickType keyboard and password managers can't tell the field is an email field, and they don't offer the user's email. This is worst with passwordless sign-in (email code): there's no password field, so the browser never saves a login. Users type their full email by hand on every sign-in. We see it in session recordings: the same users typing their email letter by letter every week, and users have reported it.
type="text", name="identifier" and a translated label (here French, "Adresse e-mail") leave the browser almost nothing to guess from.
In the source, the identifier field only gets autocomplete when passkey autofill is on, and then the value is webauthn on its own:
autoComplete={isWebAuthnAutofillSupported ? 'webauthn' : undefined}
There's no prop or appearance option to set it, so the only workaround is adding the attribute to Clerk's DOM from outside with a MutationObserver.
Steps to reproduce:
- Enable email (email code) as the only identifier in the dashboard.
- Render
<SignIn />(or<SignUp />). - Inspect the email field, or focus it in Safari on iOS/iPadOS.
Expected behavior:
The fields carry standard autocomplete tokens, so browsers, keyboards and password managers can offer the user's details:
- Sign-in identifier:
emailwhen email is the only identifier,telfor phone only,usernamefor username or mixed identifiers. With passkey autofill, addwebauthnafter the field name (username webauthn,email webauthn). A barewebauthnisn't a valid value per the HTML spec, which expects it after a field name. - Sign-up:
emailonemailAddress,given-nameonfirstName,family-nameonlastName,telonphoneNumber,usernameonusername.
This is also an accessibility issue: WCAG 2.1 SC 1.3.5 Identify Input Purpose (Level AA) asks for autocomplete on fields that collect the user's own information.
Actual behavior:
No autocomplete attribute on these fields (unless passkeys are on, then a bare webauthn). Safari and the iOS keyboard don't suggest the user's email.
Environment
@clerk/nextjs: 7.5.2
@clerk/clerk-js: 6 (loaded from Frontend API)
@clerk/ui: 1.40.0 (loaded from Frontend API)
next: 16.3.1
react: 19
Seen in: Safari on iPadOS (user report); confirmed in Chromium and WebKit (Playwright)
- Ngôn ngữ chính
- TypeScript
- Star
- 1.8k
- Fork
- 480
- Merge trung bình
- 1 ngày 19 giờ
- Pull request đã merge (30 ngày)
- 285
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của clerk/javascript
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
clerk/javascript#10026 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
@clerk/nextjs: onBeforeSetActive never settles when invalidateCacheAction rejects (e.g. after a redeploy), so setActive and signOut hang foreverCó thể đã có người làm @RaphaelFakhri đã nhận 15 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
clerk/javascript#9987 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 18/100
clerk/javascript#10231 · 2 bình luận · 3 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
clerk/javascript#10185 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 1-2 ngày Mức phù hợp với người mới 45/100
clerk/javascript#10118 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của clerk/javascript
Issue tương tự
-
[BUG] rag: sentence content can cross the reported sentence boundariesCó thể đã có người làm @LJK-ikun đã nhận hôm nay. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Maintainer thường phản hồi trong vòng 1 ngày
-
README: the Resource URI Schemas example's file://documents/* pattern only matches that literal URIĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
platformatic/mcp#361 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
frontend
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Push: sem service worker ou sem VAPID, o interruptor de Notificações fica ligado sem avisar nadaĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
melgarafael/DeskcommCRM#3164 ·
Maintainer thường phản hồi trong vòng 1 ngày