Skip to main content

Overview

The upload screen is located at apps/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

Uses expo-image-picker and expo-media-library:

Documents

Uses expo-document-picker:

Upload Strategies

The app automatically selects the best strategy:

Upload Queue

Files are tracked in an upload queue with individual status:
The queue:
  • 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):
For Android (AndroidManifest.xml):

Customization

Change Upload Thresholds

Adjust the constants at the top of s3.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 and EXPO_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.tsxfeatureFlags.fileUploads = false For production removal guidance, see Removing Features.