Skip to Content
react-native-kernel is in active development (v0.0.0) — APIs may change before v1.

react-native-kernel

One well-typed native toolkit for React Native — device info, networking, secure storage, biometric auth, permissions, QR/document scanning, file picking, and update checks. Replace 8–10 small packages with one.

New Architecture onlyZero runtime dependenciesFull TypeScriptTree-shakeable subpaths
Terminal
npm install react-native-kernel

kernel/system

useDeviceInfo(), useNetwork(), useBattery() — device identity, live connectivity (including IP, SSID, carrier), and battery state.

kernel/network

createApiClient() with token refresh, retry with backoff, and an offline queue. Plus InternetGuard and useFileUpload().

kernel/storage

SecureStorage (Keychain / Keystore) and useOfflineSync() backed by a synchronous, MMKV-fast local KV store — with zero added native dependencies.

kernel/auth

useBiometricAuth() and useAuthToolkit() — Face ID / Touch ID / Fingerprint, session locking, and auto-logout on inactivity or backgrounding.

kernel/permissions

usePermission() — one request/check API for camera, location, notifications, and storage across both platforms, with a built-in denied-state fallback UI.

kernel/media

useSmartScanner() — QR code, barcode, and document scanning, backed by each platform’s real system scanner UI.

kernel/picker

usePicker() — pick any file type via each platform’s real system file picker, with URI, whole-file base64, or streamed base64 chunks for large files. Zero extra dependencies.

kernel/updates

useAppUpdateCheck() — compares the installed version against the App Store / Play Store latest.

Why react-native-kernel?

One package, not ten

A typical app reaches for react-native-device-info, @react-native-community/netinfo, axios, react-native-keychain, react-native-mmkv, react-native-biometrics, react-native-permissions, a barcode-scanner library, and an in-app-update library — nine separate version-compatibility matrices to track, nine sets of native code to keep in sync with your React Native upgrades. Kernel replaces all of it with one package, one version number, one native-linking step.

Almost zero dependencies, and the two exceptions are explained

No MMKV, no Axios, no NetInfo. Every feature is built directly on platform APIs. There are exactly two deliberate exceptions — androidx.biometric for the Android biometric prompt, and Google Play Services for the Android scanner UI — and both are called out explicitly in these docs rather than silently bundled.

Real system UI, not a reimplementation

The scanner in kernel/media is Google’s own ML Kit scanner sheet on Android and Apple’s own VisionKit document scanner on iOS — not a custom camera view this package maintains. Same idea for kernel/auth’s biometric prompt: it’s the actual system dialog, so it already matches your users’ device language, accessibility settings, and OS look.

New Architecture from day one

Every native module is a TurboModule written against Codegen — no legacy bridge fallback, no dual-implementation maintenance burden. That also means correctly synchronous calls where it matters (kernel/storage’s fast KV store) instead of everything being forced through the async bridge.

Full TypeScript, honestly typed

No any anywhere in the public API. Platform limitations are documented in the types themselves — e.g. kernel/auth’s BiometryType on Android is typed as 'biometric', not a fabricated 'touchId' | 'faceId', because Android’s API genuinely can’t tell those apart.

Tree-shakeable by design

import ... from 'react-native-kernel/media' never pulls in kernel/network’s code. Each module is its own subpath, so you only ship what you use — a small app using just kernel/system doesn’t carry kernel/media’s scanner code in its bundle.