# expo-media-library

> Provides access to user's media library.

Latest version **57.0.5** (published 2026-09-11) · MIT license · 0 weekly downloads

## Install

```sh
npm install expo-media-library
pnpm add expo-media-library
yarn add expo-media-library
bun add expo-media-library
```

## Health

**Score 80/100 (A)** — status: active.

Positive: has types; esm support; no vulnerabilities; recently updated; high maintenance score; high quality score; popular repo; extremely popular.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 57.0.5 |
| Published | 2026-09-11 |
| First published | 2018-08-31 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 6.7 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 52380 |
| Author | 650 Industries, Inc. |
| Maintainers | ide, brentvatne, expoadmin, exponent, bycedric, kudochien, alanhughes, tsapeta, expo-bot, philpl, ccheever, wschurman |
| Keywords | react-native, expo, media, library, cameraroll, photos, videos |

## Links

- npm: https://www.npmjs.com/package/expo-media-library
- Repository: https://github.com/expo/expo
- Homepage: https://docs.expo.dev/versions/latest/sdk/media-library/
- Issues: https://github.com/expo/expo/issues
- npm.io page: https://npm.io/package/expo-media-library

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 57.0.5 (latest) — 2026-09-11
- 58.0.1 (next) — 2026-09-22
- 58.0.0-canary-20260909-ea7a89a (canary) — 2026-09-09
- 55.0.21 (sdk-55) — 2026-08-25
- 56.0.11 (sdk-56) — 2026-08-17
- 56.0.7-canary-20260701-9100865 (canary-sdk-56) — 2026-07-01
- 55.0.10-canary-20260429-a5e59cf (canary-sdk-55) — 2026-04-29
- 16.0.3 (sdk-51) — 2024-04-23
- 15.9.1 (sdk-50) — 2023-12-19
- 58.0.0 — 2026-09-10
- 58.0.0-canary-20260908-e343e6e — 2026-09-08
- 58.0.0-canary-20260902-26df09e — 2026-09-02
- 58.0.0-canary-20260901-2164f24 — 2026-09-02
- 55.0.20 — 2026-08-17
- 57.0.4 — 2026-08-14
- … 290 more at https://npm.io/package/expo-media-library/versions

## README

<p>
  <a href="https://docs.expo.dev/versions/latest/sdk/media-library/">
    <img
      src="../../.github/resources/expo-media-library.svg"
      alt="expo-media-library"
      height="64" />
  </a>
</p>

Provides access to user's media library.

# API documentation

- [Documentation for the latest stable release](https://docs.expo.dev/versions/latest/sdk/media-library/)
- [Documentation for the main branch](https://docs.expo.dev/versions/unversioned/sdk/media-library/)

# Installation in managed Expo projects

For [managed](https://docs.expo.dev/archive/managed-vs-bare/) Expo projects, please follow the installation instructions in the [API documentation for the latest stable release](https://docs.expo.dev/versions/latest/sdk/media-library/).

# Installation in bare React Native projects

For bare React Native projects, you must ensure that you have [installed and configured the `expo` package](https://docs.expo.dev/bare/installing-expo-modules/) before continuing.

### Add the package to your npm dependencies

```
npx expo install expo-media-library
```

### Configure for Android

This package automatically adds the `READ_EXTERNAL_STORAGE` and `WRITE_EXTERNAL_STORAGE` permissions. They are used when accessing the user's images or videos.

```xml
<!-- Added permissions -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```

If you'd like to access asset location (latitude and longitude EXIF tags), you have to add `ACCESS_MEDIA_LOCATION` permission to the `AndroidManifest.xml`:

```xml
<!-- Add this to AndroidManifest.xml -->
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
```

Starting with Android 10, the concept of [scoped storage](https://developer.android.com/training/data-storage#scoped-storage) is introduced. Currently, to make `expo-media-library` working with that change, you have to add `android:requestLegacyExternalStorage="true"` to `AndroidManifest.xml`:

```xml
<manifest ... >
  <application android:requestLegacyExternalStorage="true" ... >
    ...
  </application>
</manifest>
```

### Configure for iOS

Add `NSPhotoLibraryUsageDescription`, and `NSPhotoLibraryAddUsageDescription` keys to your `Info.plist`:

```xml
<key>NSPhotoLibraryUsageDescription</key>
<string>Give $(PRODUCT_NAME) permission to access your photos</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Give $(PRODUCT_NAME) permission to save photos</string>
```

Run `npx pod-install` after installing the npm package.

# Contributing

Contributions are very welcome! Please refer to guidelines described in the [contributing guide](https://github.com/expo/expo#contributing).

---
_Source: https://npm.io/package/expo-media-library · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
