Skip to content

Bug: <SignUp/> incorrectly formats form_password_matches_identifier as a complexity error. #9478

Description

@mikroskato62

Preliminary Checks

Reproduction

This issue occurs out-of-the-box on any standard Next.js setup using the core component, no special reproduction repository is needed as it relies on the core component's default error handling logic.

Publishable key

pk_test_Z3JhdGVmdWwtaGFyZS04Mi5jbGVyay5hY2NvdW50cy5kZXYk

Description

Description:
When a user attempts to sign up with a password that is identical to their username or email, the backend correctly rejects it with a 422 containing the form_password_matches_identifier code.
However, the component appears to intercept this as a password complexity (zxcvbn) error because meta.param_name === "password". Because this specific API error does not return a meta.requirement field, the component seems to pass undefined to the passwordComplexity localizer.
(If this is intended behavior or a misconfiguration on my end, please let me know!)

Steps to reproduce:

  1. Mount a standard component on a fresh Next.js install.
  2. Enter an email address (e.g., test@example.com).
  3. Enter a password that exactly matches the email address (test@example.com).
  4. Complete any remaining required fields (e.g., username, legal consent).
  5. Submit the form.
  6. Observe the UI error under the password field.

Expected behavior:
I would expect the component to recognize form_password_matches_identifier as a standard form error rather than grouping it under passwordComplexity, and render the unstable__errors.form_password_matches_identifier localization string directly (e.g., "Password cannot be the same as your email.").

Actual behavior:
The component appears to fail to format a complexity requirement, resulting in a glitched UI string built from passwordComplexity.sentencePrefix + "" + ".". The UI renders the error: "Your password must contain ."

Additional context:
While the attached screenshot shows a customized screen using Clerk's appearance props and localization, I have done my best to verify that this glitch is not caused by any of my custom overrides. It seems to be a bug in the core SDK's error mapping for form_password_matches_identifier that occurs even on a completely vanilla component.
Image

Environment

System:
    OS: Windows 11 10.0.26200
    CPU: (12) x64 AMD Ryzen 5 2600 Six-Core Processor            
    Memory: 3.00 GB / 15.94 GB
  Binaries:
    Node: 24.15.0 - C:\Program Files\nodejs\node.EXE
    npm: 11.12.1 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Chrome: 151.0.7922.138
    Edge: Chromium (151.0.4129.86)
  npmPackages:
    @clerk/nextjs: ^7.5.20 => 7.5.20 
    @clerk/themes: ^2.4.57 => 2.4.57 
    @clerk/ui: ^1.25.7 => 1.27.1 
    next: ^16.2.10 => 16.2.12 
    react: ^19.2.7 => 19.2.7 
    react-dom: ^19.2.7 => 19.2.7

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triageA ticket that needs to be triaged by a team member

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions