Back to Skills

react-native-native-modules

verified

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

View on GitHub

Marketplace

pluginagentmarketplace-react-native

pluginagentmarketplace/custom-plugin-react-native

Plugin

react-native-assistant

Repository

pluginagentmarketplace/custom-plugin-react-native
3stars

skills/react-native-native-modules/SKILL.md

Last Verified

January 20, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/pluginagentmarketplace/custom-plugin-react-native/blob/main/skills/react-native-native-modules/SKILL.md -a claude-code --skill react-native-native-modules

Installation paths:

Claude
.claude/skills/react-native-native-modules/
Powered by add-skill CLI

Instructions

# 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<number>; // Async
}

export default TurboModuleRegistry.getEnforcing<Spec>('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

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
3224 chars