jubakitiashvili/everything-react-native-expo/native-module-scaffold

Claude Code and agent skill by jubakitiashvili/everything-react-native-expo

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Guided wizard for creating Turbo Modules and Expo Modules with iOS and Android implementations

Install

npx vskill@latest install jubakitiashvili/everything-react-native-expo/native-module-scaffold

SKILL.md

Native Module Scaffold

You are creating a native module for React Native. This skill guides you through the entire process from TypeScript API design to native implementations.

When to Use This Skill

Invoke when:

  • Need to access native platform APIs not available in React Native
  • Building a bridge between JavaScript and Swift/Kotlin
  • Creating a custom UI component with native rendering
  • Integrating a native SDK

Module Type Selection

Option A: Expo Modules API (Recommended for Expo projects)

Simplest approach. Uses expo-modules-core for bridging:

bash
npx create-expo-module my-module

Generated structure:

modules/my-module/
expo-module.config.json
src/MyModuleModule.ts # TypeScript API
ios/MyModuleModule.swift # Swift implementation
android/src/.../MyModuleModule.kt # Kotlin implementation
src/__tests__/MyModule.test.ts
Option B: Turbo Modules (For bare RN / New Architecture)

Lower level, more control. Uses codegen from TypeScript spec:

Step 1: Define TypeScript spec

tsx
// NativeMyModule.ts
import type { TurboModule } from 'react-native';
import { TurboModuleRegistry } from 'react-native';
export interface Spec extends TurboModule {
multiply(a: number, b: number): Promise<number>;
getDeviceInfo(): { model: string; os: string; version: string };
}
export default TurboModuleRegistry.getEnforcing<Spec>('MyModule');

Step 2: Implement iOS (Swift)

swift
@objc(MyModule)
class MyModule: NSObject {
@objc func multiply(_ a: Double, b: Double, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
resolve(a * b)
}
@objc func getDeviceInfo() -> [String: String] {
return [
"model": UIDevice.current.model,
"os": UIDevice.current.systemName,
"version": UIDevice.current.systemVersion
]
}
}

Step 3: Implement Android (Kotlin)

kotlin
class MyModuleModule(reactContext: ReactApplicationContext) :
NativeMyModuleSpec(reactContext) {
override fun multiply(a: Double, b: Double): Promise {
return Promise.resolve(a * b)
}
override fun getDeviceInfo(): WritableMap {
return Arguments.createMap().apply {
putString("model", Build.MODEL)
putString("os", "Android")
putString("version", Build.VERSION.RELEASE)
}
}
}
Option C: Fabric Components (For custom native views)

For custom UI components rendered natively:

tsx
// NativeMyView.ts
import type { ViewProps } from 'react-native';
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
interface NativeProps extends ViewProps {
color?: string;
radius?: number;
}
export default codegenNativeComponent<NativeProps>('MyView');

Post-Scaffold Checklist

  • [ ] TypeScript types match native implementations
  • [ ] Error handling uses reject/Promise.reject with error codes
  • [ ] Threading: heavy work on background thread, UI on main
  • [ ] Memory: cleanup listeners and subscriptions
  • [ ] Platform parity: same API surface iOS and Android
  • [ ] Tests cover the TypeScript API
  • [ ] README documents usage

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
35
Repository forks
3
Repository npm downloads, 7 days
28
7-day trend score
32

Stars and forks are for the whole GitHub repository, not this skill alone. Downloads are for the repository's npm package. Refreshed 30 Apr 2026, 6 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/jubakitiashvili/everything-react-native-expo/native-module-scaffold/badge)](https://verified-skill.com/skills/jubakitiashvili/everything-react-native-expo/native-module-scaffold)

Something wrong with this skill or its page? Tell us.