Replace jsonwebtoken with jose to Fix Edge Runtime Compatibility #13131
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🔍Problem
Using the jsonwebtoken package in a Next.js App Router project causes the following error when deploying to the Edge Runtime:
This occurs because jsonwebtoken relies on Node's native crypto module, which is not available in the Edge runtime environment.
✅ Solution
This PR replaces jsonwebtoken with jose, a fully compliant, modern, and Edge-compatible JWT library. It uses Web Crypto API under the hood, making it safe for use in environments like:
Vercel Edge Functions
Cloudflare Workers
Next.js Edge runtime
🔁 Changes
Replaced jsonwebtoken.sign() with new SignJWT() from jose
Updated JWT creation logic in the NextAuth session() callback
🧪 Result
This change ensures:
✅ Compatibility with Edge Runtime
✅ No more crypto-related runtime errors
✅ Equivalent JWT functionality with standards-compliant library
📌 Note
No changes were made to the file structure or existing auth flow. Only the JWT signing implementation was updated.
🧢 Checklist