Nitro Modules
A Nitro Module is a library built with Nitro. It may contain one or more Hybrid Objects.
Structure
A Nitro Module contains the usual react-native library structure, with ios/
and android/
folders, a package.json
, and a *.podspec
file for iOS.
In addition to the base react-native library template, a Nitro Module also contains:
- A TypeScript setup
- A
nitro.json
configuration file
Creating a Nitro Module
1. Initialize the template
To create a new Nitro Module, simply run nitro-codegen init <moduleName>
:
npx nitro-codegen@latest init react-native-math
2. Implement your Hybrid Objects
Once you set up the library, you can start implementing your Hybrid Objects!
- With Nitrogen ✨
- Manually
With Nitrogen you can ✨ automagically ✨ generate all native interfaces from your TypeScript definitions.
After implementing the generated specs, register them using the HybridObjectRegistry
.
See Hybrid Objects (Implementation) for more information.
If you don't want to use Nitrogen, simply create your native C++ classes that inherit from HybridObject
, and register them using the HybridObjectRegistry
.
See Hybrid Objects (Implementation) for more information.
3. Set up an example app
After creating a Nitro Module, it's time to set up an example app to test your library!
- Expo
- Bare RN
npx create-expo-app@latest
npx @react-native-community/cli@latest init NitroMathExample
The Hybrid Objects from your Nitro Module will be registered in the HybridObjectRegistry
. This registration process needs to be called from somewhere:
- In React Native, this happens in the
*Package.java
file which calls.initializeNative()
. - If you are not using React Native, you need to manually call
.initializeNative()
in your library's entry point.