Skip to main content

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 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.

3. Set up an example app

After creating a Nitro Module, it's time to set up an example app to test your library!

npx create-expo-app@latest
tip

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.