Docs / Overview
Getting started
NativeKit gives React Native truly native UI components. Each one renders a real platform view, Jetpack Compose on Android and SwiftUI or UIKit on iOS, from a single typed React Native API.
Installation
Add the package with your package manager:
npm install @nameisjayant/react-native-nativekit
# or
yarn add @nameisjayant/react-native-nativekitThen install the iOS pods:
cd ios && pod installRequirements
| Platform | Requirement |
|---|---|
| React Native | New Architecture (Fabric) enabled |
| Android | minSdkVersion 24+, Kotlin 2.x (Jetpack Compose + Material 3 are bundled) |
| iOS | SwiftUI; Liquid Glass needs iOS 26+ and Xcode 26 (Swift 6.2) |
The components render real platform views, so they are not available on web.
Basic usage
Import the components and use them like any other React Native view. Here a button opens a native bottom sheet that renders your own React Native children:
import { useState } from 'react';
import { Text } from 'react-native';
import {
NativeKitBottomSheet,
NativeKitButton,
} from '@nameisjayant/react-native-nativekit';
export default function Checkout() {
const [open, setOpen] = useState(false);
return (
<>
<NativeKitButton title="Show details" onPress={() => setOpen(true)} />
<NativeKitBottomSheet
visible={open}
variant="halfExpanded"
onDismiss={() => setOpen(false)}
style={{ padding: 24, gap: 12 }}
>
<Text>Any React Native content</Text>
<NativeKitButton title="Close" onPress={() => setOpen(false)} />
</NativeKitBottomSheet>
</>
);
}How it works
Every component is a Fabric native component. On Android it hosts a Compose view inside MaterialTheme; on iOS it hosts SwiftUI in a UIHostingController or presents a UIKit sheet. Props flow down through codegen, and native events such as onPress and onDismiss flow back up to your JavaScript.
Because the views are native, you get each platform's own ripple, press feedback, haptics, drag physics, detents and accessibility for free.
TypeScript
Every prop, variant and callback type is exported from the package:
import type {
NativeKitButtonProps,
NativeKitButtonVariant,
NativeKitBottomSheetProps,
NativeKitBottomSheetVariant,
} from '@nameisjayant/react-native-nativekit';