Skip to content

v4.1: Overridden user details in Auth0Provider are ignored when retrieving user details with useUser() #1993

Open
@payamtrack

Description

@payamtrack

Checklist

Description

Hi,
In v3, we could easily override user details by updating the user prop within <UserProvider />. For example:

import { UserProvider } from '@auth0/nextjs-auth0/client'
import { headers } from 'next/headers'

export default async function RootLayout({
    children,
}: {
    children: React.ReactNode
}) {
    const headersList = headers()
    const sub = headersList.get('user-id') ?? ''
    const email = headersList.get('user-email') ?? ''
    const name = headersList.get('user-name') ?? ''

    return (
        <>
            <UserProvider user={{ sub, email, name }}>
                {children}
            </UserProvider>
        </>
    )
}

Then in client components, we could then access the overridden user details via useUser().

However, in v4, even though we set the user={{ sub, email, name }} prop in <Auth0Provider />, useUser() ignores these overridden details and instead returns the default session.user details.

Reproduction

  1. In the root layout, set the user prop on Auth0Provider with test data:
<Auth0Provider user={{ sub: "test_id", email: "[email protected]", name: "test name" }}>
  {children}
</Auth0Provider>
  1. In a client component, retrieve user details using useUser():
'use client'

import { useUser } from '@auth0/nextjs-auth0'

export default function ClientComponent() {
   const { user } = useUser()

    console.log('User details:', user)
    
    return (
      <>{user?.sub} - {user?.email} - {user?.name}</>
    )
}

Additional context

No response

nextjs-auth0 version

4.1.0

Next.js version

14.2.25

Node.js version

18.19.0

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