Authentication
How fullscreen auth is wired from Convex to the Expo + Next clients.
VibeFast ships with a full Convex authentication system so you can gate screens, trigger password resets, and run social login flows without wiring everything yourself.
Backend configuration
Every auth provider is configured in packages/backend/convex/auth.ts, and the OAuth client IDs/secrets live in packages/backend/convex/auth.config.ts. The package also includes helpers such as authPasswordReset, authOtp, and authPasswordResetActions so you can connect email verification, magic links, and OTP flows directly to Convex.
Convex Auth supports email/password, Google, Apple, GitHub, and the built-in Anonymous provider, giving every visitor a guest session that you can upgrade during onboarding.
Frontend implementation
The native UI sits under apps/native/src/features/authentication, and the Expo Router route (e.g., apps/native/src/app/(tabs)/_layout.tsx) uses useConvexAuth plus the AuthWatcher to keep the navigation tree in sync with the current session.
The hook exposes isAuthenticated, isLoading, and userQuery, so you can easily show a Splash, redirect to login, or run onboarding logic before letting a user into the tabs.
Protecting routes
Wrap any layout with the hook and redirect logic shown in apps/native/src/app/(tabs)/_layout.tsx. The hook listens to Convex auth changes and keeps the React Navigation stack in sync.
Extending providers
To add providers, edit auth.ts/auth.config.ts, then run pnpm dev:server so Convex picks up the changes. If you want to expose new auth screens, add them under apps/native/src/features/authentication and guard them with useConvexAuth.
Found an issue or bug in the docs?
Help me improve! If you spot any errors, typos, or have suggestions, please let me know.
Reach out on X/Twitter @zafarbuildzz