Cold starts included
A durable pending queue keeps shared content available until JavaScript is ready and your app acknowledges it.
A typed Expo Module for receiving text, URLs, images, video, audio, and files from the native share sheet—with durable cold-start delivery.
npx expo install react-native-share-contentFeatures & use cases
Native share flows start outside React Native. This module bridges that gap without making delivery depend on JavaScript startup timing.
A durable pending queue keeps shared content available until JavaScript is ready and your app acknowledges it.
Text, URLs, images, video, audio, and files from one native share operation arrive as one typed payload.
The Expo config plugin creates Android intent filters and a native iOS Share Extension during prebuild.
Temporary provider data is copied into module-managed storage before the source app revokes access.
Live listeners provide immediate delivery while pending APIs provide retryable, at-least-once processing.
Keep queue delivery independent of foregrounding. Opt into iosOpenHostAppAfterShare only when you want a best-effort return to the host app.
One durable path
The config plugin creates platform integration. Native code owns the intake. Your JavaScript owns business processing and permanent retention.
Android intents and iOS extension items are normalized into one payload.
Queue records and attachments survive a cold launch until JavaScript reads them.
Clear only after successful import, then release module-managed files explicitly.
See what the API feels like
Keep the receipt pending while your import is in progress. If processing fails, the queue remains available on the next launch.
const subscription = ExpoShareContent.addShareListener(async (payload) => {
await importShare(payload);
await ExpoShareContent.clearPendingSharesAsync([payload.id]);
await ExpoShareContent.releaseSharedFilesAsync([payload.id]);
});Live and pending deliveryOne processing path, stable payload IDs
Native where it matters
Android
Receives ACTION_SEND and ACTION_SEND_MULTIPLE, including warm intents and cold-launch delivery.
Android guideiOS
Generates the target, App Group queue, entitlements, activation rules, and extension source during prebuild.
iOS guideFAQ
Native share integration has platform constraints. These are the important ones.
No. The package contains native Android code and an iOS Share Extension. Use an Expo development build or a production build after running prebuild.
No. Queue delivery is reliable, but foregrounding the containing app is not guaranteed by iOS. Auto-open is opt-in and uses a best-effort open chain (UIApplication / responder-chain / NSExtensionContext.open).
Yes. Delivery is at least once. Pending queries and live events can expose the same stable payload ID, so application processing should be idempotent.
Acknowledge the queue record after your import succeeds, then call releaseSharedFilesAsync for that receipt. Copy files into application-owned permanent storage first if you need to keep them.
Yes. Configure Android MIME filters, iOS activation rules, item limits, file-size limits, bundle identifiers, and App Group identifiers through the Expo config plugin.
Start receiving
Install the module, add the config plugin, then create a development build.
npx expo install react-native-share-content