Skip to main content

Using Nitro in a library

Nitro can be used as a simple C++ library in your React Native library, which is very lightweight and simple.

1. Create a Nitro Module

First, you need to create a Nitro Module - either by just using the Nitro Modules template, or by just adding react-native-nitro-modules to your existing React Native library.

2. Create Hybrid Objects

To actually use Nitro, you need to create Hybrid Objects - either by using Nitro's code-generator CLI “Nitrogen”, or by just manually extending the HybridObject base class in C++.

3. Register Hybrid Objects

Each Hybrid Object you want to initialize from JS has to be registered in Nitro - either by autolinking them with Nitrogen (see Configuration (Autolinking)), or by manually registering the constructors in the HybridObjectRegistry.

4. Use your Hybrid Objects in JS

Lastly, you can initialize and use the registered Hybrid Objects from JS. This is what this will ultimately look like:

interface Math extends HybridObject {
add(a: number, b: number): number
}

const math = NitroModules.createHybridObject<Math>("Math")
const value = math.add(5, 7) // --> 12

5. Run it

To test the library you just created, you now need to set up an example app for it. There's multiple different ways to set up a react-native app nowadays, either via Expo, RN CLI, or bare brownfield iOS/Android apps.

For example, to create a new Expo app, run create-expo-app:

npx create-expo-app@latest

Then add the Nitro Module you created in step 1 as a local library (aka linking it), and run it.