Closed
Description
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",

Metadata
Metadata
Assignees
Labels
No labels