expo-module

Create Expo native modules and views using Swift, Kotlin, and TypeScript.

Updated Sep 13, 2026
One-click install
npx skills add https://github.com/aadilmallick/myfitness-pal-clone --skill expo-module-aadilmallick
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: expo-module
Source: https://github.com/aadilmallick/myfitness-pal-clone/tree/main/.agents/skills/expo-module
Command: npx skills add https://github.com/aadilmallick/myfitness-pal-clone --skill expo-module-aadilmallick

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Building native functionality for Expo apps requires coordinating Swift, Kotlin, TypeScript, config plugins, and autolinking configuration, which is error-prone without a structured reference. This Skill provides the complete Expo Modules API workflow so you can scaffold, implement, and register native modules and views correctly. ## Core Features & Use Cases - Module Scaffolding: Guides use of create-expo-module for local and standalone modules, including platform selection, feature examples, and add-platform-support for existing modules. - Native Module DSL Reference: Covers Name, Function, AsyncFunction, Property, Constant, Events, Records, Enums, Either types, and Shared Objects in both Swift and Kotlin. - Native Views & Config Plugins: Documents View, Prop, EventDispatcher, view lifecycle hooks, AppDelegate subscribers, Android lifecycle listeners, and config plugins that modify Info.plist and AndroidManifest.xml. - Use Case: You need to wrap a platform SDK (e.g., a key-value store or sensor API) for your React Native app. Use this Skill to scaffold the module, implement the Swift and Kotlin definitions, and register it via expo-module.config.json for autolinking. ## Quick Start Use the expo-module skill to scaffold a new local Expo native module with a function and async function for iOS and Android.

Frequently Asked Questions about expo-module

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

FAQPage Schema
How do I create a new Expo native module?▼

Use npx create-expo-module with an explicit slug, choosing --local for app-specific modules or a standalone package for reusable ones. Pass --platform apple android and --features like Function or AsyncFunction to generate starter code, then replace the examples with your real implementation.

How do I add a native view to an Expo module?▼

Define a View block in the module definition referencing an ExpoView subclass, then register Prop setters and Events inside it. On the TypeScript side, use requireNativeView to render it as a React component and dispatch events via EventDispatcher.

Does Expo autolinking require manual native project configuration?▼

No. Expo autolinking discovers any module containing an expo-module.config.json file, resolving standalone modules from dependencies and local modules from the modules directory or nativeModulesDir. You just install the package and run pod install.

How do I add Android support to an existing Expo module?▼

Run npx create-expo-module add-platform-support --platform android from the module root. It only adds platforms missing from expo-module.config.json, refuses to overwrite existing native directories, and works only with modules using the Expo Modules API DSL.

What is the difference between Function and AsyncFunction in Expo modules?▼

Function runs synchronously and blocks the JS thread until completion, supporting up to 8 arguments. AsyncFunction returns a Promise and runs on a background thread by default, with an option to force main-queue execution via runOnQueue(.main).

When should I not use this skill for Expo module work?▼

Do not use it to migrate an existing Swift module from the definition DSL to the Expo Modules API 2.0 macros like @ExpoModule and @JS. That migration is handled by the separate expo-migrate-module skill from the expo-experiments plugin.