A lean, production-ready Expo starter with file-based routing, Redux, theming, and a curated set of @rific packages pre-wired.
| Layer | Package |
|---|---|
| Framework | Expo ~56 / React Native ~0.85 |
| Navigation | expo-router ~56 |
| State | Redux Toolkit + redux-persist |
| UI | react-native-paper ~5 |
| Gestures | react-native-gesture-handler ~2.31 |
| Animations | react-native-reanimated ~4 |
| OTA | expo-updates ~56 |
| Language | TypeScript ~6 |
Adaptive react-native-paper theming. Derives a full triadic Material 3 palette from a single seed color and wires it to system / light / dark appearance automatically.
import { AutoPaperProvider } from '@rific/auto-paper';
<AutoPaperProvider seedColor="#6750A4">
{children}
</AutoPaperProvider>Haptic feedback wrappers for react-native-paper and built-in pressable components. Drop-in replacements that fire expo-haptics on press.
import { HapticButton, HapticPressable } from '@rific/haptic-press';
<HapticButton mode="contained" onPress={handlePress}>Submit</HapticButton>Stacking, animated toast notifications with a history stack and swipe-to-dismiss. Includes a provider and a useToast hook.
import { ToasterProvider, useToast } from '@rific/toaster';
// Wrap your app
<ToasterProvider />
// Trigger anywhere
const { show } = useToast();
show({ message: 'Saved!', type: 'success' });OTA update hook for Expo apps. Silently fetches updates in the background on foreground, with an optional manual check that shows a confirmation dialog before reloading.
import { useUpdater } from '@rific/updater';
// In your root layout — background polling is automatic
useUpdater();These are not included by default but are built to work seamlessly with this stack.
| Package | Description |
|---|---|
@rific/focus-chain |
Auto-incrementing focus chain hook for form inputs — wire a returnKeyType="next" sequence with one hook call |
@rific/heatmap |
GitHub-style activity heatmap with SVG rendering and customizable cell modes |
@rific/resizable-input |
Auto-growing, drag-resizable text input with optional react-native-paper support |
@rific/scanner |
Full-screen barcode scanner with animated overlays, pinch zoom, timeout ring, and scan tracking |
@rific/timer |
Animated SVG progress ring timer |
npm install
npm run start # Expo Go
npm run client # dev client
npm run reset # clear cache + startnpm run prebuild # expo prebuild --clean
npm run ios # run on iOS simulator
npm run android # run on Android emulatornpm run validate # lint + typecheck + test
npm run lint
npm run typecheck
npm run testnpm run build:production
npm run build:staging
npm run update # eas update
npm run update:bump # bump OTA version + pushsrc/
app/ # expo-router file-based routes
components/ # shared UI components
constants/ # app-wide constants
redux/ # store, slices, persistor
types/ # shared TypeScript types
utils/ # utility functions
__tests__/ # Jest test suite