FAQs

FAQs

What is the project status of the library?

Convex Auth is in early preview.

I found a bug

Please file an issue (opens in a new tab) or open a PR on GitHub (opens in a new tab).

What are the known issues?

See issues on Github (opens in a new tab).

Why should I use Convex Auth instead of NextAuth?

  • NextAuth (Auth.js) requires a Next.js (or similar) server. Convex Auth works with and without a Next.js server, you can use it directly from an SPA hosted on a CDN.
  • Convex Auth by running directly and only on your Convex backend avoids some of the complexity of syncing state between two servers.
  • Convex Auth has built-in support for OTP and email+passwords methods

Why should I use Convex Auth instead of Clerk or Auth0?

  • Convex Auth doesn’t require signing up for another service, except for:
    • Email provider for email-based authentication methods
    • OAuth providers like Google or Github, but you would have to set these up with Clerk/Auth0 later anyway
  • Convex Auth is simpler because it stores all user data directly in your Convex database. It doesn't require syncing state from an external database.
  • Convex Auth doesn't require owning a top-level domain (like example.com), although your email provider or OAuth provider might.
  • We still recommend Clerk and Auth0 as featureful auth solutions.

Why should I use Convex Auth instead of Firebase Auth or Supabase Auth?

  • Firebase and Supabase Auth store user data in their respective databases. Convex Auth stores user data directly in your Convex database.
  • Convex Auth includes basic functionality included in Firebase/Supabase Auth. For advanced authentication functionality (SSO, MFA, etc.) we recommend using Clerk or Auth0.

Why should I use Convex Auth instead of Lucia?

  • Lucia is oriented towards traditional servers that host a website.
  • The previous Convex+Lucia integrations are now deprecated.