Troubleshooting
The package does not work in Expo Go
This is expected. Build a development client after prebuild:
npx expo prebuild --clean
npx expo run:ios
# or
npx expo run:android
The app is missing from the Android share sheet
- Confirm the config plugin is present in Expo configuration.
- Check that the source MIME type matches
androidIntentFiltersorandroidMultiIntentFilters. - Run a clean prebuild after changing filters.
- Reinstall the native app; restarting Metro is not enough.
- Inspect the generated Android manifest for
SENDandSEND_MULTIPLEfilters.
The iOS Share Extension is missing
- Confirm
ios.bundleIdentifierexists. - Run a clean prebuild.
- Open the generated workspace, not only the Xcode project.
- Confirm the extension target and embedded
.appexproduct exist. - For physical devices, verify the App Group and provisioning profiles in Apple Developer or EAS credentials.
Sharing succeeds but the host app does not open on iOS
Queue delivery and host opening are separate. The default is to leave the user in the source app. Even with iosOpenHostAppAfterShare: true, Apple does not guarantee foregrounding. Query pending payloads when the host becomes active.
The same share is processed twice
At-least-once delivery permits the event and pending paths to expose the same payload ID. Deduplicate with payload.id and acknowledge after successful business processing.
releaseSharedFilesAsync rejects an ID
The receipt is probably still pending. Persist required files, call clearPendingSharesAsync([id]), then release its managed files.
An attachment URI stops existing
Module-managed acknowledged files are not permanent storage. Copy required files before releasing them. If they are not explicitly released, they become eligible for lazy cleanup seven days after receipt when a later queue operation runs.
A source app fails while another works
Source applications vary in MIME/UTType, metadata, URI permissions, and file-provider behavior. Capture the error event, test the generated platform configuration, and reproduce on a physical device with the specific source application.
Reset generated native output
When plugin identifiers or options change:
rm -rf ios android
npx expo prebuild --clean
Do this only when the native directories are disposable. If they are manually maintained, review changes rather than deleting them.