Skip to content

Auth0 middleware sets cookie and reloads page.tsx on every Server Action call #2124

Open
@kompiro

Description

@kompiro

Checklist

Description

Auth0 middleware sets cookies and triggers page reloads on every Server Action call

Cause

  • Next.js revalidates Router Cache when cookies are updated in Server Actions Next.js Deep Dive: Caching
  • auth0-nextjs works as follows on requests to Server Action when processed by middleware: auth-client.js
  1. Retrieve the session from the sessionStore
  2. If session can be retrieved, update sessionStore for rolling update
    a. For the default StatelessSessionStore, encrypt the originalSessionData in the session into jwe, chunk it, and store it in the cookie. In jwe, the cookie is updated each time because it includes the time of creation: stateless-session-store.ts
    b. For StatefulSessionStore, session ID is chunked into jwe and stored in cookie. jwe includes generation time, so cookie is updated every time stateful-session-store.ts

Reproduction

Assumption

  • In middleware, set up a call to auth0.middleware
  • Reproduce with or without sessionStore set in Auth0 configuration

Reproduction

  1. Call Server Action
  2. Because auth0.middleware performs authentication processing, a Set-Cookie is added to the response header, X-Action-Revalidated becomes [[],0,1], and NextJS Client follows the instructions to reload RSC (React Server Component) reloading the RSC (React Server Component) as instructed.
server-action-call-revalidates-by-set-cookie.mov

Additional context

When server action call, please skip to update cookie. We can identify server action when the request has Next-Action header.

Or if session.rolling is false, skip cookie update process and manage cookie lifetime based on the first cookie created. This TODO comment suggests this behavior

nextjs-auth0 version

4.6.0

Next.js version

15.3.2

Node.js version

22.10

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions