Talk to your watchOS app directly from Expo

rn-watch-connect is a library for communicating with your companion watchOS app from your Expo and React Native app. It's built for Expo, with the Expo Modules API, on top of Apple's WatchConnectivity.

Why rn-watch-connect

Docs made for AI agents

Point your coding agent at /llms.txt, a short index of every page, or /llms-full.txt for all the docs in one file. Every page also has a plain Markdown version, and each code example is type-checked against the library, so the code an agent copies matches the real types.

Use the docs with AI agents →

Built for Expo

Written with the Expo Modules API for Expo SDK 57. Listen to events with Expo's own useEvent and useEventListener.

Watch status →

Promise-based

await sendMessage(...) resolves with the Watch's Reply, and rejects when it fails.

Messages →

Reply in one call

An incoming Message that asks for a Reply comes with its own reply() function, and the first reply wins.

onMessageWithReply →

Errors you can switch on

Every failure has a stable code, such as ERR_WATCH_NOT_REACHABLE, typed as WatchConnectErrorCode, including WatchConnectivity's own errors.

Error codes →

Transfers with a clear ending

Each User Info and File Transfer gets exactly one finish event: delivered, failed or cancelled. Both can be listed and cancelled.

Finish events →

Received files handled safely

Files from the Watch land in your temporary directory, never overwrite each other, and a file that couldn't be kept is reported instead of lost silently.

onFileReceived →

Status you can read right away

isWatchReachable, isWatchPaired and the other status values are plain properties, and their events fire only on a real change.

Watch status →