@joelbarron/expo-dev-kit
v0.1.6
Published
[](https://www.npmjs.com/package/@joelbarron/expo-dev-kit) [](https
Readme
@joelbarron/expo-dev-kit
Reusable toolkit for Expo/React Native apps with ready-to-use auth flows, form components, query integration, and app status controls.
What is included
| Module | Purpose |
| --- | --- |
| auth | API client, secure storage, context/provider, hooks, forms, and auth screens (JB*) |
| forms | Reusable input/select/checkbox and related form primitives |
| query | React Query setup with centralized unauthorized handling |
| core/app-status | Maintenance mode and required update checks |
| config, runtime, http, store, services, ui, utils | Shared mobile app building blocks |
Auth flows available
- Password sign-in
- OTP sign-in
- Sign up
- Forgot password
- Reset password (uid/token)
- Account confirmation + resend
- Sign out
- Welcome
Installation
npm i @joelbarron/expo-dev-kitMain peer dependencies:
react >= 19react-native >= 0.76expo-router >= 6@tanstack/react-query >= 5react-hook-form >= 7
Quick start
Expo Router auth screen example
Expo Router maps routes from the consumer app app/ directory.
This library gives you screen components; route files still live in the app.
// app/(auth)/sign-in.tsx
import { useRouter } from 'expo-router';
import { JBAuthSignInScreen } from '@joelbarron/expo-dev-kit/auth';
export default function SignInRoute() {
const router = useRouter();
return (
<JBAuthSignInScreen
navigator={{
goToSignIn: () => router.replace('/(auth)/sign-in'),
goToSignUp: () => router.push('/(auth)/sign-up'),
goToForgotPassword: () => router.push('/(auth)/forgot-password'),
goToVerifyEmail: ({ email }) =>
router.push({ pathname: '/(auth)/verify-email', params: email ? { email } : undefined }),
onSignedIn: () => router.replace('/(app)')
}}
/>
);
}App status (maintenance/update)
import { JBAppStatusProvider, JBAppStatusGate, createAppStatusClient } from '@joelbarron/expo-dev-kit/core';
const appStatusClient = createAppStatusClient({
baseUrl: 'https://api.example.com/v1',
endpoint: '/core/configs/mobile/'
});Local install helpers (for app integration testing)
From this repo:
# Local tarball install into finzenio-app
npm run install:lib:local:finzenio
# Install latest published npm version into finzenio-app
npm run install:lib:npm:finzenio
# Generic
npm run install:lib -- --source local --target /path/to/your/app
npm run install:lib -- --source npm --target /path/to/your/app --tag latestRelease channels
latest: stable releases frommainnext: rc prereleases fromnext
Check published version and dist-tags:
npm view @joelbarron/expo-dev-kit version dist-tags --jsonDocs
- Expo Router auth integration: docs/expo-router-auth-integration.md
- Release runbook: docs/release.md
- Finzenio extraction map: docs/finzenio-extraction-map.md
