Expo has strong APIs for creating, downloading, selecting, and sharing files, but there is no focused SDK API for opening a local file in the platform-native preview flow.
Proposed package: expo-file-preview
  • iOS: preview local files with Quick Look (QLPreviewController), which supports many common file types such as PDFs, images, text files, CSV files, Office documents, iWork documents, and USDZ files.
  • Android: expose local files through FileProvider and open them with ACTION_VIEW, so - Android can launch a compatible installed app.
  • CNG: configure Android package visibility queries for the MIME types an app previews.
  • Fallback: compose with expo-sharing for share/export fallback when preview is unavailable.
Example API:
await FilePreview.openPreviewAsync(file.uri, {
mimeType: "application/pdf",
title: "Manual",
fallbackToShare: true,
});
const canPreview = await FilePreview.canPreviewAsync(file.uri, {
mimeType: "application/pdf",
});
This would complement existing Expo packages:
  • expo-file-system creates or downloads the local file.
  • expo-document-picker lets users select files.
  • expo-file-preview previews the local file.
  • expo-sharing shares or exports the file.
Community packages such as @magrinj/expo-quick-look, react-native-file-viewer-turbo, @react-native-documents/viewer, and react-native-file-viewer show demand for this workflow and use the same native primitives. An official Expo package could provide the CNG-friendly, Expo-aligned version: local-file-first, explicit MIME types, Android package visibility config, and clear docs about Android handler-app dependence.