🎯

react-native-native-modules

🎯Skill

from pluginagentmarketplace/custom-plugin-react-native

VibeIndex|
What it does

Enables building high-performance native modules for React Native using Turbo Modules, JSI, and platform-specific implementations for iOS and Android.

πŸ“¦

Part of

pluginagentmarketplace/custom-plugin-react-native(9 items)

react-native-native-modules

Installation

Add MarketplaceAdd marketplace to Claude Code
/plugin marketplace add pluginagentmarketplace/custom-plugin-react-native
Install PluginInstall plugin from marketplace
/plugin install react-native-assistant@pluginagentmarketplace-react-native
git cloneClone repository
git clone https://github.com/pluginagentmarketplace/custom-plugin-react-native.git
Claude CodeAdd plugin in Claude Code
/plugin load .
πŸ“– Extracted from docs: pluginagentmarketplace/custom-plugin-react-native
15Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

Master native modules - Turbo Modules, JSI, Fabric, and platform bridging

Overview

# React Native Native Modules Skill

> Learn to build native modules for iOS and Android using Turbo Modules, JSI, and the new architecture.

Prerequisites

  • React Native intermediate knowledge
  • Basic iOS (Swift/Objective-C) or Android (Kotlin/Java)
  • Understanding of async/sync patterns

Learning Objectives

After completing this skill, you will be able to:

  • [ ] Create native modules for iOS and Android
  • [ ] Implement Turbo Modules with Codegen
  • [ ] Bridge third-party SDKs
  • [ ] Handle native events
  • [ ] Debug native code issues

---

Topics Covered

1. Turbo Module Spec

```typescript

// specs/NativeCalculator.ts

import type { TurboModule } from 'react-native';

import { TurboModuleRegistry } from 'react-native';

export interface Spec extends TurboModule {

add(a: number, b: number): number; // Sync

multiply(a: number, b: number): Promise; // Async

}

export default TurboModuleRegistry.getEnforcing('Calculator');

```

2. iOS Implementation (Swift)

```swift

@objc(Calculator)

class Calculator: NSObject {

@objc static func requiresMainQueueSetup() -> Bool { false }

@objc func add(_ a: Double, b: Double) -> Double {

return a + b

}

@objc func multiply(_ a: Double, b: Double,

resolve: @escaping RCTPromiseResolveBlock,

reject: @escaping RCTPromiseRejectBlock) {

resolve(a * b)

}

}

```

3. Android Implementation (Kotlin)

```kotlin

@ReactModule(name = "Calculator")

class CalculatorModule(reactContext: ReactApplicationContext) :

ReactContextBaseJavaModule(reactContext) {

override fun getName() = "Calculator"

@ReactMethod(isBlockingSynchronousMethod = true)

fun add(a: Double, b: Double): Double = a + b

@ReactMethod

fun multiply(a: Double, b: Double, promise: Promise) {

promise.resolve(a * b)

}

}

```

4. Native Events

```typescript

import { NativeEventEmitter, NativeModules } from 'react-native';

const { MyModule } = NativeModules;

const emitter = new NativeEventEmitter(MyModule);

// Subscribe

const subscription = emitter.addListener('onProgress', (data) => {

console.log('Progress:', data.percent);

});

// Cleanup

subscription.remove();

```

5. When to Use Native Modules

| Scenario | Solution |

|----------|----------|

| Access native APIs | Native module |

| Performance-critical | JSI/Turbo Module |

| Third-party SDK | Bridge wrapper |

| UI component | Fabric component |

---

Quick Start Example

```typescript

// JavaScript usage

import NativeCalculator from './specs/NativeCalculator';

// Sync call (blocks JS thread briefly)

const sum = NativeCalculator.add(5, 3);

console.log('Sum:', sum); // 8

// Async call (non-blocking)

const product = await NativeCalculator.multiply(5, 3);

console.log('Product:', product); // 15

```

---

Common Errors & Solutions

| Error | Cause | Solution |

|-------|-------|----------|

| "Module not found" | Not linked | Run pod install |

| Crash on sync | Main thread | Use async or background |

| Type mismatch | Codegen issue | Regenerate specs |

---

Validation Checklist

  • [ ] Module loads on both platforms
  • [ ] Sync methods don't block UI
  • [ ] Async methods resolve correctly
  • [ ] Events fire and cleanup properly

---

Usage

```

Skill("react-native-native-modules")

```

Bonded Agent: 04-react-native-native