-
Notifications
You must be signed in to change notification settings - Fork 444
signIn.ticket() doesn't complete sign-in for sign-in tokens (status stays at needs_identifier) #8219
Description
Description
When using signIn.ticket({ ticket }) from useSignIn() (Core 3 / @clerk/nextjs v7) with a sign-in token generated via the Backend API (POST /v1/sign_in_tokens), the method returns { error: null } but signIn.status remains at "needs_identifier" instead of progressing to "complete". This prevents calling signIn.finalize() which requires a completed sign-in.
Expected behavior
After signIn.ticket({ ticket: validToken }) returns without error, signIn.status should be "complete" and signIn.createdSessionId should be set, per the SignInFuture docs.
Actual behavior
signIn.ticket() result: { result: undefined, error: null }
signIn.status: "needs_identifier"
signIn.createdSessionId: null
The sign-in silently fails to complete. No error is returned.
Reproduction
- Create a sign-in token via Backend API:
POST /v1/sign_in_tokenswith{ user_id, expires_in_seconds } - On a Next.js page, use the token:
const { signIn, fetchStatus } = useSignIn();
const { error } = await signIn.ticket({ ticket: token });
console.log(error); // null
console.log(signIn.status); // "needs_identifier" — should be "complete"Workaround
Using signIn.create({ strategy: 'ticket', ticket }) + setActive() (Core 2 API) works correctly — the sign-in completes and signInAttempt.status is "complete".
Environment
@clerk/nextjs: 7.0.1@clerk/react: 6.0.1@clerk/shared: 4.0.0- Next.js: 16.1.6
- React: 19.2.4
Additional context
Clerk AI support confirmed this behavior is inconsistent with the documented behavior and that signIn.status should reach "complete" after a successful ticket() call.