expo-module

Build and integrate native modules and views for Expo applications.

Updated Apr 5, 2026
One-click install
npx skills add https://github.com/sc30gsw/jikan-log --skill expo-module
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: expo-module
Source: https://github.com/sc30gsw/jikan-log/tree/main/.agents/skills/expo-module
Command: npx skills add https://github.com/sc30gsw/jikan-log --skill expo-module

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This guide removes friction when adding native functionality to Expo apps by consolidating the Expo Modules API patterns, module and view DSL examples, config plugin recipes, autolinking guidance, and lifecycle conventions so developers can implement, debug, and publish native modules reliably across platforms.

Core Features & Use Cases

  • Multi-platform module DSL: Clear Swift, Kotlin, and TypeScript examples for defining Name, Function, AsyncFunction, Property, Constant, Events, and shared objects.
  • Native views & events: Patterns for ExpoView-based UI components, prop setters, event dispatching, async view functions, and ref-based calls from TypeScript.
  • Config plugins & autolinking: Recipes for modifying Info.plist and AndroidManifest, using expo-module.config.json for autolinking, and building standalone modules for publication.
  • Use Case: Wrap a platform camera SDK into an Expo native module with config plugin settings for permissions and a native view exposing camera preview and capture events to React.

Quick Start

Scaffold a new local Expo native module named MyModule with create-expo-module, rename the generated folder to a kebab-case module directory, run pod install in ios, and adapt the module and view files to implement your native functionality.

Frequently Asked Questions about expo-module

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build a native module for Expo using Swift and Kotlin?

To build a native module for Expo, use the Expo Modules API to define module functionality, async functions, properties, and constants across Swift for iOS and Kotlin for Android, with TypeScript bindings exposing the API to React.

How does autolinking work for local Expo modules?

Autolinking for local Expo modules uses the expo-module.config.json file to register the module directory, automatically linking native iOS Swift and Android Kotlin code without manual native project modifications.

How do I create a native view in an Expo module and handle events?

Create a native view in an Expo module by extending ExpoView, setting up prop setters for configuration, dispatching events to React, and using ref-based calls to trigger async view functions from TypeScript.

Can I modify Info.plist and AndroidManifest using Expo config plugins?

Yes, Expo config plugins can modify Info.plist and AndroidManifest, allowing you to inject required permissions, metadata, and configuration settings during the prebuild phase for native modules.

What is the best way to scaffold a new publishable Expo native module?

The best way to scaffold a publishable Expo native module is using create-expo-module, which generates the required Swift, Kotlin, TypeScript bindings, and expo-module.config.json structure for autolinking and publication.

Does Expo support shared objects and lifecycle hooks in native modules?

Yes, Expo supports shared objects and lifecycle hooks within native modules, allowing you to manage state across function calls and execute code in response to app or module lifecycle events using Swift and Kotlin.