Addresses FAC-83 by preventing Metro bundler from resolving optional Expo modules and Node.js-only packages in React Native client builds. Root Cause: Metro bundler resolves ALL module specifiers in the dependency graph at build time. Dynamic import() and external marking don't prevent Metro from traversing the import graph. Solution: 1. Expo Modules - Move behind @copilotkit/react-native/attachments subpath 2. Telemetry - Isolate behind @copilotkit/shared/telemetry with conditional node/default exports Co-authored-by: Implementation fixes for moduleResolution and CJS exports verification
@copilotkit/react-native
Headless React Native bindings for CopilotKit. Provides a lightweight provider and re-exports platform-agnostic hooks -- no DOM, CSS, or web framework dependencies. You build the chat UI with standard React Native components.
Installation
npm install @copilotkit/react-native
Polyfills
React Native's JS runtime (Hermes) lacks several Web APIs that CopilotKit depends on. Import the polyfills before any other code in your entry point:
// index.js
import "@copilotkit/react-native/polyfills";
import { AppRegistry } from "react-native";
import App from "./App";
import { name as appName } from "./app.json";
AppRegistry.registerComponent(appName, () => App);
If you already polyfill some of these APIs, you can import only what you need:
import "@copilotkit/react-native/polyfills/streams";
import "@copilotkit/react-native/polyfills/encoding";
import "@copilotkit/react-native/polyfills/crypto";
import "@copilotkit/react-native/polyfills/dom";
import "@copilotkit/react-native/polyfills/location";
Quick start
import {
CopilotKitProvider,
useAgent,
useCopilotKit,
} from "@copilotkit/react-native";
export default function App() {
return (
<CopilotKitProvider runtimeUrl="https://your-server/api/copilotkit">
<ChatScreen />
</CopilotKitProvider>
);
}
Re-exports hooks from @copilotkit/react-core: useAgent, useFrontendTool, useComponent, useHumanInTheLoop, useInterrupt, useSuggestions, useConfigureSuggestions, useAgentContext, useThreads, and useCopilotKit.
API Surface
The root import (@copilotkit/react-native) IS the v2 API.
Unlike the web SDK which has /v2 subpath, React Native exports
the v2 API directly from the package root.
Documentation
For full setup instructions, usage examples, and troubleshooting, see the React Native docs.