jeremyspritelyco / react-native-jsi-bridge

React Native JSI library for communicate between js and native code via jsi

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

react-native-jsi-bridge

React Native JSI library for communicate between js and native code via jsi skipping the react-native bridge which improve performance and skips data serialization/deserialization.

Installation

#add to package.json
"react-native-jsi-bridge":"sergeymild/react-native-jsi-bridge#0.5.1"
# after that make yarn install
# and npx pod-install

Usage JS

on js side just import import { JsiBridge } from 'react-native-jsi-bridge' and subscribe on events which will be fired from native code.

import { JsiBridge } from 'react-native-jsi-bridge';

// for subscribe
JsiBridge.on('eventNameInJsCode', (data: string) => {

})

// for unsubscribe
JsiBridge.off('eventNameInJsCode')

For send event to native code

// send event to native code
JsiBridge.emit('eventNameInNativeCode', JSON.stringify({user: "withNamr"}))

Usage Native Java

On native side (Java/Kotlin)

// for subscribe
JsiBridge.on('eventNameInNativeCode', someObjectSerializedToString -> {

})

// for unsubscribe
JsiBridge.off('eventNameInNativeCode')

// send event to js code
JsiBridge.emit('eventNameInJsCode', someObjectSerializedToString)

Usage Native Objective-c

On native side

#import "JsiBridgeEmitter.h"

// for subscribe
[[JsiBridgeEmitter shared] on:@"eventNameInNativeCode" with:^(NSString *data) {
  // some logic
}];

// for unsubscribe
[[JsiBridgeEmitter shared] off:@"eventNameInNativeCode"];

// send event to js code
[[JsiBridgeEmitter shared] emit:@"eventNameInJsCode" with:@"someObjectSerializedToString"];

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

About

React Native JSI library for communicate between js and native code via jsi

License:MIT License


Languages

Language:Java 29.4%Language:C++ 16.8%Language:Objective-C++ 16.5%Language:Objective-C 11.8%Language:CMake 11.3%Language:TypeScript 5.7%Language:JavaScript 4.4%Language:Ruby 3.2%Language:Swift 0.6%Language:Shell 0.4%