iOSAndroidWebv1.0.0

Background Uploads
for React Native

Seamless file uploads that continue even when your app goes to background. Pausable, resumable, and built for the S3 API.

Read the Docs
Your App
S3
Amazon S3
Scroll to upload...

Everything you need for reliable uploads

Written in Rust — compiled to native modules on iOS and Android, and to WebAssembly for the web.

True Background Uploads
Uploads continue when your app is backgrounded or the screen is locked. Native implementation for iOS and Android.
Pause & Resume
Full control over your uploads. Pause when needed, resume exactly where you left off. Continue uploads even after restarting your device or browser.
Multipart Uploads
Large files are automatically split into parts for faster, more reliable uploads with automatic retry.
Progress Tracking
Real-time progress updates with relevant data. On native platforms, a progress notification is shown.
Presigned URL Support
You provide the upload urls to the library. In your backend, you can generate presigned urls.
S3 API Compatible
Works with Amazon S3, MinIO, DigitalOcean Spaces, Backblaze B2, and any other S3-compatible storage.

Simple, intuitive API

Get started with just a few lines of code

upload.ts
1import { S3BgUploader } from 'react-native-s3-bg-uploader';
2
3// enqueue files
4S3BgUploader.uploadFile(file1, "transfer1");
5S3BgUploader.uploadFile(file2, "transfer1");
6
7// start the upload
8S3BgUploader.resume();
9
10// Pause when needed
11upload.pause();

Why we built this

We built this library for the redesign of ysendit, our own file sharing service. We needed uploads that survive backgrounding, app restarts, and flaky connections — reliably, on every platform. No existing library checked all the boxes, so we wrote one in Rust, open-sourced it, and continuously improve it.

If you are also a file uploading enthusiast, we are very open for your contribution to this project!