Skip to content

mrousavy/nitro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,800 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nitro Modules

Nitro Modules are highly efficient native modules with a statically compiled binding layer to JSI, and typesafe JS bindings. It consists of two parts:

Example

Declaration (TypeScript):

export interface Math extends HybridObject<{ ios: 'c++' }> {
  add(a: number, b: number): number
}

Implementation (C++, Swift or Kotlin):

class HybridMath: public HybridMathSpec {
public:
  HybridMath(): HybridObject(TAG) {}
  double add(double a, double b) override {
    return a + b;
  }
}

Usage (TypeScript):

import { NitroModules } from 'react-native-nitro-modules'

const math = NitroModules.createHybridObject<Math>('Math')
const result = math.add(5, 3)

Installation

Install react-native-nitro-modules from npm:

npm i react-native-nitro-modules
cd ios && pod install

Documentation

Supported Platforms

Cross-platform

Cross-platform native modules can be built with C++. Any custom C++ types can be used and bridged to JS with minimal overhead.

JS <-> C++ type converters are statically generated ahead of time - no more dynamic lookups or runtime parser errors! 🥳

iOS

iOS native modules and view components can be written either in pure C++, or pure Swift. Thanks to Swift 5.9, Swift Nitro Modules bridge directly to C++ instead of going through Objective-C message sends. Woohoo, no more Objective-C, and zero overhead C++ -> Swift calls! 🥳

Android

Android native modules and view components can be written either in pure C++, or pure Kotlin/Java. Thanks to fbjni, even complex types can be effortlessly bridged to Kotlin/Java with minimal overhead! 🔥

Margelo

Nitro is built with ❤️ by Margelo. We build fast and beautiful apps. Contact us at margelo.com for consultancy services.

Contributing

Read CONTRIBUTING.md for the contribution flow (PR expectations, the required test-per-fix rule, and the nitrogen workflow). For environment setup and reproduction walkthroughs, see the contributing guide on the docs site.

License

MIT