diff --git a/.changeset/twenty-lamps-rule.md b/.changeset/twenty-lamps-rule.md new file mode 100644 index 00000000000..eca620b373a --- /dev/null +++ b/.changeset/twenty-lamps-rule.md @@ -0,0 +1,5 @@ +--- +'@clerk/clerk-js': patch +--- + +Fix redirect flow for OAuth2 IDP flow with email_link verification. diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts index f1e3fd7a2f2..971af96ad4c 100644 --- a/packages/clerk-js/src/core/clerk.ts +++ b/packages/clerk-js/src/core/clerk.ts @@ -1681,11 +1681,13 @@ export default class Clerk implements ClerkInterface { } const userSignedIn = this.session; - const signInUrl = this.#environment?.displayConfig.signInUrl; + const signInUrl = this.#options.signInUrl || this.#environment?.displayConfig.signInUrl; const referrerIsSignInUrl = signInUrl && window.location.href.startsWith(signInUrl); + const signUpUrl = this.#options.signUpUrl || this.#environment?.displayConfig.signUpUrl; + const referrerIsSignUpUrl = signUpUrl && window.location.href.startsWith(signUpUrl); - // don't redirect if user is not signed in and referrer is sign in url - if (requiresUserInput(redirectUrl) && !userSignedIn && referrerIsSignInUrl) { + // don't redirect if user is not signed in and referrer is sign in/up url + if (requiresUserInput(redirectUrl) && !userSignedIn && (referrerIsSignInUrl || referrerIsSignUpUrl)) { return false; }