Overview
The upload screen is located atapps/mobile/app/file-uploads/s3.tsx and provides:
- Photo picker with recent photos
- Document picker for PDFs/videos
- Multi-file selection
- Progress tracking
- Automatic upload strategy selection
File Pickers
Photos
Usesexpo-image-picker and expo-media-library:
Documents
Usesexpo-document-picker:
Upload Strategies
The app automatically selects the best strategy:Upload Queue
Files are tracked in an upload queue with individual status:- Persists to AsyncStorage for navigation resilience
- Shows per-file progress
- Supports parallel uploads (for native uploads)
- Shows summary alert when all complete
Progress UI
The upload button dynamically shows status:Permissions
Required permissions for iOS (Info.plist):
AndroidManifest.xml):
Customization
Change Upload Thresholds
Adjust the constants at the top ofs3.tsx:
Allowed File Types
Modify the document picker types:Photo Grid Size
Test Checklist
- Select a photo and upload successfully
- Large file triggers multipart or native upload
- Upload progress updates in UI
Troubleshooting
If uploads fail, verify permissions andEXPO_PUBLIC_API_URL in
apps/mobile/.env (from apps/mobile/example.env).
Remove / Disable
To disable uploads while you configure S3, set:apps/mobile/features/feature-registry.tsx → featureFlags.fileUploads = false
For production removal guidance, see Removing Features.