Feature Requests

With Expo, you can write iOS and Android experiences in JavaScript using React Native.
Add tsx to EAS Build worker environment for TypeScript app.config.ts support
Problem Statement EAS Build workers don't include tsx in their environment, but Expo's official documentation recommends using tsx/cjs for TypeScript configuration files. This creates an inconsistent developer experience where following official best practices requires manual workarounds. Current Official Documentation Expo docs explicitly recommend using tsx/cjs at the top of app.config.ts: import "tsx/cjs"; import type { ConfigContext, ExpoConfig } from "expo/config"; // ... rest of config The Issue When EAS Build attempts to evaluate app.config.ts, it fails with: Cannot find module 'tsx/cjs' This occurs because: • @expo/config uses sucrase internally for TypeScript compilation • User config files import tsx/cjs following official documentation • EAS Build workers don't have tsx pre-installed • Build fails before reaching dependency installation phase Current Workaround Required Developers must add a pre-install hook to their package.json: "scripts": { "eas-build-pre-install": "npm install -g tsx@4.20.5" } Use Case Details • Project Type: React Native + Expo SDK 54 app • TypeScript Config: Complex app.config.ts with multiple imports and conditional logic • Following Best Practices: Using recommended tsx/cjs import per official docs • Build Environment: EAS Build with development profile • Package Manager: Bun (but affects all package managers) Why This Should Be Included • Documentation Consistency: Workers should support what the docs recommend • Zero-Config Experience: Developers shouldn't need workarounds for documented patterns • Common Use Case: Most TypeScript projects use tsx for config files • Small Footprint: tsx is a lightweight addition to worker environment • Industry Standard: tsx is the de-facto tool for running TypeScript in Node.js Proposed Solution Pre-install tsx in EAS Build worker environments alongside other essential tools like Node.js, npm/yarn, etc. Impact: Eliminates need for workarounds and ensures seamless experience when following official Expo TypeScript documentation. Environment • Expo SDK: 54.0.6 • EAS CLI: 16.19.3 • React Native: 0.81.4 • TypeScript: 5.9.2 • Package Manager: Bun 1.2.22
0
Feature Request: Support Real-Time File Download (PDF/Excel) to Device Downloads Folder
📌 Feature Request: Support Real-Time File Download (PDF/Excel) to Device Downloads Folder 🚀 Summary Currently, in Expo/React Native, when exporting or downloading files (e.g., PDF or Excel statements), developers must use expo-file-system and expo-sharing. These APIs only allow saving inside the app sandbox (cacheDirectory, documentDirectory) or opening a share dialog. There is no official way to: Save files directly into the system Downloads folder (like banking/finance apps do). Automatically notify users and allow in-app file viewing after download. 🐞 Problem Files saved in cacheDirectory or documentDirectory are not accessible via the user’s native Downloads app or file manager. Users expect downloaded statements (Excel/PDF) to appear in Downloads, just like Chrome, Gmail, or WhatsApp. Workarounds require ejecting from Expo or using native modules (RNFetchBlob, react-native-fs) which break managed workflow. ✅ Expected Behavior A simple API like: const uri = await FileSystem.downloadToDownloadsAsync( remoteUrlOrBase64, "Statement.pdf" ); Should: Save directly in Downloads (Android) or Files app / iCloud Drive Downloads (iOS). Send a system notification (Download complete: Statement.pdf). Allow immediate in-app opening with a viewer (openFile(uri)). 💡 Use Case Banking, wallet, and e-commerce apps where users download monthly statements, order invoices, or reports. Users expect these files to appear in their Downloads, without needing to "share" manually. 🔧 Current Workarounds expo-sharing: Requires user interaction, no automatic saving. expo-file-system: Limited to sandbox storage; not visible in Downloads. Ejected apps use RNFetchBlob / react-native-fs, but this breaks Expo Managed workflow. 📋 Proposal Introduce a cross-platform API in expo-file-system: Android → Save to /storage/emulated/0/Download/ with MediaStore. iOS → Save to Files app Downloads (via UIDocumentInteractionController). Provide option: await FileSystem.downloadToDownloadsAsync(urlOrBase64, { filename: "Statement.xlsx", mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", notify: true, // show system notification openAfterDownload: true, // auto open in viewer }); 🔒 Security Considerations Respect iOS sandbox; files should still be manageable via Files app. Explicit user permissions (WRITE_EXTERNAL_STORAGE on Android < 11). Use Scoped Storage / MediaStore API for Android 10+. 📌 In short: We need a first-class Expo API to save/export PDF/Excel directly into Downloads folder with system-level behavior (notification + view), just like real-world banking/finance apps.
1
Load More