-
Notifications
You must be signed in to change notification settings - Fork 4.1k
Open
Labels
bugSomething isn't workingSomething isn't workingtriageUnseen or unconfirmed by a maintainer yet. Provide extra information in the meantime.Unseen or unconfirmed by a maintainer yet. Provide extra information in the meantime.
Description
Environment
"next": "15.1.7",
"next-auth": "^5.0.0-beta.25",
"react": "^19.0.0"
OS: Windows 10 Version 22H2 (OS Build 19045.5487)
Node.js version: v23.6.0
npm version: 11.1.0
Browser: Microsoft Edge Version 133.0.3065.82 (Official build) (64-bit) and Google Chrome
Reproduction URL
https://github.com/iltan987/redirect-issue
Describe the issue
First of all, this example is using custom sign in page.
As I understood, there are 2 ways to redirect user to sign-in page. Server-side and client-side. Using signIn function coming from the NextAuth instance in auth.ts (method 1 in my code) and using signIn function from "next-auth/react" (method 2)
The problem is when you use method 1, URL is not correct but rendered page is correct, just the URL wrong. You can see the correct URL only if you refresh the page manually.
Method 2 works completely fine; both URL seen in browser and rendered page are correct.
How to reproduce
- Run
npm install - Run
npx auth secretor put your AUTH_SECRET to the .env file - Run the app
npm run dev - In the main page, you will see 2 buttons. Press the one saying "Method 1", you will see wrong URL which includes "/api/auth/signin"
- Refresh the page (no need to do anything), and you will see the correct URL which is "/login"
- Go back to main page and press the other button. You will see that you will directly see the correct URL which is "/login"
Expected behavior
Same as method 2, without needing to refresh the page manually, URL in the browser should be same as the URL specified in NextAuth config
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingtriageUnseen or unconfirmed by a maintainer yet. Provide extra information in the meantime.Unseen or unconfirmed by a maintainer yet. Provide extra information in the meantime.