npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

react-native-all-file-downloader

v0.2.3

Published

Native file downloader for React Native with:

Readme

react-native-download-all-files

A powerful, native file downloader for React Native with robust features including background downloads, Base64 support, progress tracking, mid-flight controls, and interactive system notifications.

Features

  • URL & Base64 Downloads: Seamlessly download remote URLs or save raw Base64 strings directly to the device.
  • Background Downloads (iOS): URL downloads are handed off to the iOS background daemon and will finish even if the app is killed.
  • Interactive System Notifications: Automatically displays progress notifications and "Download Complete" alerts. On iOS, users can long-press progress notifications to Pause, Resume, or Cancel natively.
  • Mid-Flight Controls: Programmatically pauseDownload, resumeDownload, and cancelDownload.
  • Custom HTTP Headers: Pass headers (like Authorization tokens) to securely download protected files.
  • Configurable Destinations: Choose between the device's document directory or the cache directory.
  • Smart Overwrite Handling: Optionally set overwrite: true to prevent accumulating duplicate file (1).pdf files.
  • Tap to Open: Tapping the completion notification automatically opens the file in the device's native file viewer.

Installation

npm install react-native-download-all-files

or

yarn add react-native-download-all-files

If you are using iOS, don't forget to run pod install in your ios directory.

Usage

Downloading a URL

import { downloadFile } from 'react-native-download-all-files';

try {
  const result = await downloadFile({
    source: 'url',
    data: 'https://example.com/large-video.mp4',
    fileName: 'large-video.mp4',
    
    // Optional parameters:
    headers: { Authorization: 'Bearer YOUR_TOKEN' }, 
    cache: false,    // Set to true to save to the temporary cache directory
    overwrite: true, // Replaces existing files instead of appending (1) to the name
    
    // Tracking Callbacks:
    onStart: (downloadId) => {
      console.log(`Download started with ID: ${downloadId}`);
      // Save this ID if you want to pause/cancel it later programmatically!
    },
    onProgress: (progress) => {
      console.log(`Download progress: ${progress}%`); // 0 to 100
    }
  });

  console.log(`File saved successfully at: ${result.path}`);
} catch (error) {
  console.error('Download failed:', error);
}

Saving Raw Base64 Data

import { downloadFile } from 'react-native-download-all-files';

const base64Result = await downloadFile({
  source: 'base64',
  data: 'SGVsbG8gV29ybGQh...', // Your base64 string
  fileName: 'hello.txt'
});

console.log(`Base64 file saved at: ${base64Result.path}`);

Advanced Controls (Pause, Resume, Cancel)

If you captured the downloadId using the onStart callback, you can control the active download at any time:

import { pauseDownload, resumeDownload, cancelDownload } from 'react-native-download-all-files';

// Pause a download (Works natively on iOS)
await pauseDownload(downloadId);

// Resume a paused download (Works natively on iOS)
await resumeDownload(downloadId);

// Cancel an active download entirely (Works on iOS & Android)
await cancelDownload(downloadId);

Platform Support

| Feature | iOS | Android | |---------|-----|---------| | URL Downloads | ✅ | ✅ | | Base64 Saving | ✅ | ✅ | | Custom Headers | ✅ | ✅ | | Native Notifications | ✅ | ✅ | | Cancel Downloads | ✅ | ✅ | | Background Downloads | ✅ | ✅ | | Interactive Notifications | ✅ | ❌ | | Pause / Resume | ✅ | ❌* |

* Note: Android natively delegates downloading to the OS DownloadManager. The OS will manage the network efficiently, but does not expose Pause/Resume APIs to third-party apps.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT


Made with create-react-native-library