npm install @stack-auth/stack-auth
This component is the official way to integrate Stack Auth with your Convex project.
To get started, first install Stack Auth using the setup wizard:
npx @stackframe/init-stack@latest
Create a new Stack Auth project and set the environment variables in Convex to the project ID & API key environment variables from the Stack Auth dashboard. Also, add the same values to the .env.local
file.
Next, update or create a file in convex/auth.config.ts
:
import { getConvexProvidersConfig } from "@stackframe/js"; // Vanilla JS
// or: import { getConvexProvidersConfig } from "@stackframe/react"; // React
// or: import { getConvexProvidersConfig } from "@stackframe/stack"; // Next.js
export default {
providers: getConvexProvidersConfig({
projectId: process.env.STACK_PROJECT_ID, // or: process.env.NEXT_PUBLIC_STACK_PROJECT_ID
}),
}
Then, update your Convex client to use Stack Auth:
convexClient.setAuth(stackServerApp.getConvexClientAuth()); // browser JS
convexReactClient.setAuth(stackServerApp.getConvexClientAuth()); // React
convexHttpClient.setAuth(stackServerApp.getAuthForConvexHttpClient({ tokenStore: requestObject })); // HTTP, see Stack Auth docs for more information on tokenStore
Now, you'll be able to access Stack Auth's functionality from your frontend & backend:
// MyPage.tsx
export function MyPage() {
// see https://docs.stack-auth.com for more information on how to use Stack Auth
const user = useUser();
return <div>Your email is {user.email}</div>;
}
// myFunctions.ts
export const myQuery = query({
handler: async (ctx, args) => {
// In queries & mutations, use the special `getPartialUser` function to get user info
const obj = await stackServerApp.getPartialUser({ from: "convex", ctx });
return JSON.stringify(obj);
},
});
For more information on how to use Stack Auth, see the Stack Auth docs.