Retrieve User
Fetch and provide authenticated DB user data in native app flows.
What It Does
apps/mobile retrieves the authenticated user from TRPC (clientTrpc.getUser) and exposes it through UserProvider / useUser.
When To Use
- You need DB-backed user fields in mobile screens.
- You need onboarding/security gating based on
completedOnboardingor profile data.
Prerequisites
- Authenticated Supabase session available.
apps/dashboardAPI server reachable.
How To Use
Fetch DB user before rendering protected app stack.
import { UserProvider } from '@kit/auth/shared/user';
import { clientTrpc } from '~/utils/trpc-client';
function DrawerApp() {
const user = clientTrpc.getUser.useQuery();
if (user.isPending) return <LoadingScreen />;
if (!user.data) throw new Error('Failed to get db user');
if (!user.data.completedOnboarding) {
return <Redirect href={'/onboarding'} />;
}
return <UserProvider user={user.data}>{/* app stack */}</UserProvider>;
}Read current user from context in child screens.
import { useUser } from '@kit/auth/shared/user';
export function ProfileHeader() {
const user = useUser();
return <Text>{user.name}</Text>;
}Use the same pattern in onboarding layout.
apps/mobile/app/onboarding/_layout.tsx performs clientTrpc.getUser.useQuery() then wraps onboarding routes with UserProvider.
MCP Context
capability: auth_mobile_user_access
entrypoints:
- apps/mobile/app/(app)/_layout.tsx
- apps/mobile/app/onboarding/_layout.tsx
- apps/mobile/utils/trpc-client.ts
inputs:
- authenticated_session
outputs:
- db_user_context
constraints:
- getUser query requires reachable dashboard TRPC endpoint
- useUser must be called under UserProvider
side_effects:
- route gating based on user fieldsAgent Recipe
- Fetch user with
clientTrpc.getUser.useQuery()in layout-level component. - Handle pending/error states before rendering app routes.
- Wrap children with
UserProviderand consume viauseUser().
Troubleshooting
useUserthrows: verifyUserProviderwraps the current route subtree.getUseris null: verify dashboard API URL and auth token forwarding.- Onboarding loop: verify
completedOnboardingupdate path after onboarding submit.
Related
Integration
Implement @kit/auth native flows in a custom Expo app using the apps/mobile architecture.
User Settings
Integrate auth-related controls into mobile settings pages.
How is this guide?
Last updated on 3/23/2026