Expo Native Module Builder
A practical guide to creating Expo native modules and views with Swift, Kotlin, and TypeScript.
The skill defines module types, platforms, and configuration scope, and provides MIT licensing plus some data-flow examples. However, it does not systematically address least privilege, user confirmation, rollback, or external side effects. Its config-plugin example writes an apiKey into Info.plist/AndroidManifest without warning about sensitive-data exposure; npx downloads and telemetry are also not adequately disclosed within the skill, so points are deducted.
The DSL, scaffolding, autolinking, and lifecycle guidance is generally coherent and includes several non-interactive and edge-behavior notes. Still, this is a static review with no key-path test suite, CI execution evidence, or consistent diagnostic failure workflow; some CLI/API behavior may also change across versions, keeping the score below the higher range.
The audience, use cases, and migration exclusion are clear, with coverage for Swift, Kotlin, TypeScript, iOS, Android, and web. Trigger boundaries remain incomplete, Chinese-language support is not addressed, and core scaffolding depends on npx/npm and Expo tooling whose reachability from mainland-China networks is uncertain, so points are deducted.
The skill has a clear main document, topical reference files, quick start, workflow, and usable examples; version and MIT license are explicit. It lacks a skill-level changelog, named maintenance owner, change history, or a clear update-responsibility path, while limitations and troubleshooting coverage remain limited, so it does not receive full marks.
The material can directly guide common Expo native-module, native-view, config-plugin, and autolinking tasks, and its examples are actionable. However, there is no statically verifiable representative output, test result, or comparative-benefit evidence; users must still adapt and validate the implementation, so the score is conservatively reduced within the static-review ceiling.
The submission includes organized reference files, command examples, code samples, and a source-of-truth statement pointing to Expo documentation and tooling. It lacks reproducible tests, third-party execution evidence, and cross-source corroboration; the supplied CI only checks skill limits and plugin versions, not this skill’s key paths, so evidence is limited.
- This assessment is source-only; scaffolding, compilation, prebuild, and native runtime behavior were not executed.
- The config-plugin apiKey example may place credentials in distributable native configuration; confirm secure storage and exposure scope before using real secrets.
- npx create-expo-module@latest relies on external network access and a moving version; pin versions and review dependency provenance where possible.
- Chinese-language support and mainland-China network reachability are not specified; those environments may require mirrors, proxies, or offline procedures.
What does this skill do, and when should you use it?
Expo Native Module Builder is an open-source Agent Skill from the expo/skills repository focused on native module and native view development for Expo projects. It covers the Expo Modules API, module definition DSL, shared objects, config plugins, lifecycle hooks, autolinking, and the type system. It is suited to creating modules, wrapping platform SDKs, and adding platform support. It is not intended for migrating an existing Swift module from the definition DSL to Expo Modules API 2.0 macros.
It guides an agent through choosing a local or standalone module, scaffolding with create-expo-module, and selecting feature samples such as Constant, Function, AsyncFunction, Event, View, ViewEvent, and SharedObject. It provides patterns for Swift, Kotlin, and TypeScript implementations, expo-module.config.json configuration, config plugins, lifecycle hooks, autolinking, and additional platform support.
- An Expo developer needs to add native camera, sensor, or system-API functionality to an app.
- A team needs to wrap a platform SDK and expose it to React Native through Swift and Kotlin.
- A module author needs native views with props, events, lifecycle behavior, or ref-based functions.
- A developer needs a config plugin that changes Info.plist or AndroidManifest.xml.
- A maintainer needs to add Android, Apple, or web support to an existing Expo module.
What are this skill's strengths and limitations?
- Covers the main workflow from module scaffolding through configuration, autolinking, and config plugins.
- Provides guidance for Swift, Kotlin, and TypeScript.
- Distinguishes local modules from reusable standalone modules.
- Clearly identifies the separate migration workflow for Expo Modules API 2.0 macros.
- It is instructional guidance, not a native-module runtime or live documentation service.
- The supplied source does not include the full contents of the referenced files, so their depth and edge-case coverage cannot be assessed.
- The supplied Skill does not establish which Expo SDK versions or platform combinations have been tested.
How do you install this skill?
This repository is a collection of 23 skills. Install the Expo skill collection with the Skills CLI: npx skills@latest add expo/skills --skill '*'. Alternatively, install the collection in Claude Code with claude plugin install expo@claude-plugins-official, or in Codex with codex plugin add expo@openai-curated. The source does not provide a separate command for installing only expo-module.
How do you use this skill?
After installation, ask the agent for a concrete native-module task, such as: “Create an Expo native module for my app with Swift, Kotlin, and TypeScript interfaces, including a native view.” Before scaffolding or extending a module, consult references/create-expo-module.md. For a new platform, request create-expo-module add-platform-support instead of manually copying native directories.
How does this skill compare with similar options?
For migrating an existing Swift module from the definition DSL to Expo Modules API 2.0 macros, use expo-migrate-module instead.