Skip to content

Action clerk auth identity is always null #83

Closed
@AtiqGauri

Description

@AtiqGauri

I am having trouble integrating clerk auth in Nextjs.

here is code to reproduce:

chat/page.tsx

'use client';

import { Authenticated, useQuery } from 'convex/react';
import { api } from 'convex/_generated/api';

// TaskList component that uses the query hook
const TaskList = () => {
  const tasks = useQuery(api.tasks.get);
  return <div>{tasks?.map(({ _id, text }) => <div key={_id}>{text}</div>)}</div>;
};

export default function ChatPage() {
  return (
    <main className="flex min-h-screen flex-col items-center justify-between p-24">
      <Authenticated>
        <div>Logged in</div>
        <TaskList />
      </Authenticated>
    </main>
  );
}

auth.config.ts

export default {
  providers: [
    {
      domain: process.env.NEXT_PUBLIC_CLERK_TENANT_DOMAIN,
      applicationID: 'convex',
    },
  ],
};

layout.tsx

import { ClerkProvider, useAuth } from '@clerk/nextjs';
import { ClerkComponentText } from '@/lib/clerk-components';
import { ConvexReactClient } from 'convex/react';
import { ConvexClientProvider } from '@/lib/convexClientProvider';

const convex = new ConvexReactClient(process.env.NEXT_PUBLIC_CONVEX_URL!, {});


....
....

<ClerkProvider
            publishableKey={process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY}
            localization={ClerkComponentText}
            dynamic
            appearance={{
              variables: { colorPrimary: '#595cd9' },
            }}
          >
            <ConvexProviderWithClerk useAuth={useAuth} client={convex}>
              <ConvexClientProvider>
                <ChakraProvider value={defaultSystem}>
                  <PHProvider>
                    <Provider>
                      <AuthToken />
                      <DevTools />
                      <MainWithSuspend modal={modal}>{children}</MainWithSuspend>
                    </Provider>
                  </PHProvider>
                </ChakraProvider>
              </ConvexClientProvider>
            </ConvexProviderWithClerk>
          </ClerkProvider>

action tasks.ts

import { query } from './_generated/server';

export const get = query({
  args: {},
  handler: async (ctx) => {
    console.log('server identity', await ctx.auth.getUserIdentity());
    return ctx.db.query('tasks').collect();
  },
});

Server Identity is always null, I have check inspect ws->sync valid jwt is getting pass.

"@clerk/nextjs": "^6.11.1",
"convex": "^1.23.0",
"next": "^15.1.6",
"react": "^19.0.0",

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions