Birch describes NativeScript as an end-to-end framework that lets JavaScript call iOS and Android APIs directly. For example, JavaScript can create an iOS `NSString` with `NSString.alloc().init()`, without writing a native module. His longer-term aim is to make NativeScript usable within other frameworks, including React Native.
Open Native and Universal Native Modules With Jamie Birch
Speaker
Jamie Birch, React Native and NativeScript creator and member of the NativeScript Technical Steering Committee, discusses cross-framework native modules with the Callstack host on the React Native Show podcast.
React Native, Flutter, and Capacitor each use different ways to connect JavaScript to native APIs, so their modules are not directly interchangeable. React Native’s classic modules use a JSON bridge, while Capacitor sends messages across a WebView boundary. Birch says this fragmentation makes smaller ecosystems repeat work and makes cross-framework reuse difficult.
Birch says Expo’s UniModules proposed a shared format, but Expo ended up doing most of the implementation work, and the effort was deprecated in 2021 in favor of Expo Modules. Open Native takes another approach: it aims to let NativeScript use existing React Native modules as they are, with package installation and autolinking handled by NativeScript. The episode describes this React Native-to-NativeScript path as the capability available at the time.
Open Native examines React Native’s module macros, registry, and bridge behavior, then uses build-time parsing to extract module names, methods, and signatures into JSON. Birch says the implementation used regular expressions because Objective-C AST approaches were slow. At runtime, NativeScript can load modules on demand and call methods directly, avoiding the classic JSON message round trip; the host cites performance figures in the repository that Birch recalls as possibly about 50 times faster.
Birch says adapting views is a later phase and was still under construction, with Open Native contributor Omar doing much of that work. View support would require an API-compatible equivalent to React Native’s `RCTView`, and React component libraries may not fit frameworks such as NativeScript Angular. Birch clarifies that Open Native did not yet let React Native consume Flutter modules; the demonstrated use was React Native modules from NativeScript.
Takeaways
- Different native module formats keep cross-platform ecosystems from reusing each other’s plugins directly.
- A build step can inspect existing module code and generate metadata, reducing the need for module authors to adopt a new shared format.
- NativeScript’s direct runtime calls can avoid the classic React Native bridge round trip, according to Birch.
- Treat function and method access separately from view support; the episode describes view adaptation as unfinished.
- Open Native’s demonstrated interoperability was React Native modules in NativeScript, not general two-way framework compatibility.
Mentioned in this talk
Search inside this talk
What was claimed 14
- role atJamie Birch is Technical Steering Committee member at NativeScript
“I'm on the NativeScript Technical Steering Committee”
YouTube Unverified1 source· Talk
- launchedExpo launched UniModules
“it was a common standard proposed and designed by Expo”
YouTube Unverified1 source· Talk
- builtJamie Birch built NativeScriptadapter for Expo modules
“a year later, I made an adapter for NativeScript”
YouTube Unverified1 source· Talk
- launchedExpo launched Expo Modules
“They sunset and deprecated UniModules in 2021 in favor of Expo Modules.”
YouTube Unverified1 source· Talk
- builtAmmar Ahmed built Open Native
“Open Native was a project started by Ammar Ahmed.”
YouTube Unverified1 source· Talk
- usesOpen Native uses React Native
“NativeScript could just npm install React Native WebView or whatever”
YouTube Unverified1 source· Talk
- featureOpen Native: Enables NativeScript to use React Native-specific native modules without modifying them
“His idea was to bring React Native modules to NativeScript.”
YouTube Unverified1 source· Talk
- usesOpen Native uses
Pods“if we make a CocoaPod that references all those files”
YouTube Unverified1 source· Talk
- featureOpen Native: Parses Objective-C module declarations with build-step regex and produces a JSON description for adapters
“we used regex. We found the names of the modules, methods, and method signatures”
YouTube Unverified1 source· Talk
- featureOpen Native: Loads classic modules lazily as TurboModules and calls them directly through NativeScript
“upgrade all classic-style native modules to TurboModules”
YouTube Unverified1 source· Talk
- metricOpen Native: NativeScript reportedly calls React Native classic-style modules about 50 times faster
“I think it might be 50 times faster.”
YouTube Unverified1 source· Talk
- uses
Hermes Agent uses Node-API
“getting Hermes to implement JSI on top of something that is ABI-stable”
YouTube Unverified1 source· Talk
- featureNode-API: Provides an ABI-stable foundation for native add-ons
“C++ doesn’t have a stable ABI, but you could implement JSI on top of something that is ABI-stable, which is Node-API.”
YouTube Unverified1 source· Talk
- integrates withNativeScript integrates with React Native native modules
“What you can do now is call React Native-specific modules from NativeScript.”
YouTube Unverified1 source· Talk





