Vigia

Upgrading expo-media-library from 57.x to 58.x

Comparison of the public API of expo-media-library 57.0.5 and 58.0.9, computed automatically from their TypeScript types. A changed signature is a candidate for a breaking change, not a certainty.

Summary

Removed import paths2
Removed exports0
Changed signatures5
Removed class or interface members0
Changed class or interface members1
Newly deprecated0
Requirement changes (engines, peer dependencies)0
New exports5

Removed import paths

Removed import paths
expo-media-library/next
expo-media-library/legacy

Removed exports

None detected.

Changed signatures

exportBeforeAfter
expo-media-library · AssetInfo{ id: string; filename: string; uri: string; mediaType: MediaType; width: number; height: number; duration: number | null; creationTime: number | null; modificationTime: number | null; isFavorite: boolean; }{ id: string; filename: string; uri: string; mediaType: MediaType; width: number; height: number; duration: number | null; creationTime: number | null; modificationTime: number | null; isFavorite?: boolean | undefined; mediaSubtypes?: MediaSubtype[] | undefined; }
expo-media-library · AssetMetadata{ id: string; filename: string | null; mediaType: MediaType; width: number | null; height: number | null; duration: number | null; creationTime: number | null; modificationTime: number | null; isFavorite: boolean; }{ id: string; filename: string | null; mediaType: MediaType; width: number | null; height: number | null; duration: number | null; creationTime: number | null; modificationTime: number | null; isFavorite: boolean; mediaSubtypes?: MediaSubtype[] | undefined; }
expo-media-library · usePermissions(options?: any): [any, () => Promise<any>, () => Promise<any>](options?: any): [any, () => Promise<PermissionResponse>, () => Promise<PermissionResponse>]
expo-media-library · getPermissionsAsync(writeOnly?: boolean | undefined, granularPermissions?: GranularPermission[] | undefined): Promise<any>(writeOnly?: boolean | undefined, granularPermissions?: GranularPermission[] | undefined): Promise<PermissionResponse>
expo-media-library · requestPermissionsAsync(writeOnly?: boolean | undefined, granularPermissions?: GranularPermission[] | undefined): Promise<any>(writeOnly?: boolean | undefined, granularPermissions?: GranularPermission[] | undefined): Promise<PermissionResponse>

Removed class or interface members

None detected.

Changed class or interface members

memberBeforeAfter
Asset.getUri(): Promise<string>(options?: AssetUriOptions | undefined): Promise<string>

Newly deprecated

None detected.

Requirement changes (engines, peer dependencies)

None detected.

New exports (5)
importexportkind
expo-media-libraryAlbumTypeenum
expo-media-librarySubscriptionvariable
expo-media-libraryAlbumMetadatatype
expo-media-libraryAssetUriOptionstype
expo-media-libraryAssetUriVersionenum

Changelog between these versions

Text published by the package authors, shown as-is.

58.0.9
### Patch Changes

- [iOS] Add `mediaSubtypes` to `AssetInfo` and `AssetMetadata`, so `Asset.getInfo()` and `Query.exeForMetadata()` return an asset's subtypes. ([#51514](https://github.com/expo/expo/pull/51514) by [@Wenszel](https://github.com/Wenszel))
- [iOS] Add the `animation` and `screenRecording` media subtypes. ([#51513](https://github.com/expo/expo/pull/51513) by [@Wenszel](https://github.com/Wenszel))
58.0.8
### Patch Changes

- [Internal] Bump precompiled artifacts due to ABI breakage in expo-modules-jsi, which makes `JavaScriptValue` a non-copyable struct. ([#51368](https://github.com/expo/expo/pull/51368) by [@tsapeta](https://github.com/tsapeta))
58.0.7
### Patch Changes

- Bump precompiled artifacts due to ABI breakage in expo-modules-core@58.0.13. ([#51138](https://github.com/expo/expo/pull/51138) by [@alanjhughes](https://github.com/alanjhughes))
58.0.6
### Patch Changes

- [Android] Fix assets moved with `Album.create` (with `moveAssets` set to `true`) or `album.add` sometimes disappearing from the media library. The file was moved, but its MediaStore entry was deleted, so it only showed up again after a rescan, with a new ID. ([#50817](https://github.com/expo/expo/pull/50817) by [@devonik](https://github.com/devonik))
58.0.5
### Patch Changes

- Bump precompiled artifacts due to ABI breakage in expo-modules-jsi@58.0.6. ([#50881](https://github.com/expo/expo/pull/50881) by [@kitten](https://github.com/kitten))
58.0.4
### Patch Changes

- Force-bump all packages, due to migration to changesets. ([#50762](https://github.com/expo/expo/pull/50762) by [@kitten](https://github.com/kitten))
- [iOS] Fix `Album.getAll()` not returning albums nested inside folders. ([#47822](https://github.com/expo/expo/pull/47822) by [@Wenszel](https://github.com/Wenszel))
- [iOS] Add `Album.getSmartAlbums()` and `Album.getType()`. ([#47822](https://github.com/expo/expo/pull/47822) by [@Wenszel](https://github.com/Wenszel))
- Add `Album.getAlbumsMetadata()` for cheap bulk album listing and `album.getAssetCount()`. ([#47903](https://github.com/expo/expo/pull/47903) by [@Wenszel](https://github.com/Wenszel))
58.0.3
_This version does not introduce any user-facing changes._
58.0.2
### 🐛 Bug fixes

- [Android] Fix `Album.create` naming copied assets (with `moveAssets` set to `false`) after the full `file://` path of the original, e.g. `file____storage_emulated_0_DCIM_Camera_IMG_1234.jpg`, instead of its file name. ([#50621](https://github.com/expo/expo/pull/50621) by [@devonik](https://github.com/devonik))
58.0.1
### 🐛 Bug fixes

- [iOS] Request a single high-quality delivery for Live Photos. Under the default `.opportunistic` delivery mode `requestLivePhoto` invokes its result handler more than once, and the first, degraded pass could resolve `getAssetInfoAsync` without `pairedVideoAsset`. ([#50295](https://github.com/expo/expo/pull/50295) by [@henriquegpb](https://github.com/henriquegpb))
58.0.0
### 🛠 Breaking changes

- [iOS] `Asset.getUri()` and `AssetInfo.uri` now resolve a video to the version currently shown in the Photos app instead of the originally captured file. Pass `version: AssetUriVersion.ORIGINAL` to `getUri()` to keep the previous behavior. Note that only `getUri()` accepts the option; `AssetInfo.uri` from `getInfo()` always resolves the current version. ([#48640](https://github.com/expo/expo/pull/48640) by [@barthap](https://github.com/barthap))

### 🎉 New features

- [iOS] Add a `version` option to `Asset.getUri()` for choosing between the current and the original rendition of an asset. ([#48640](https://github.com/expo/expo/pull/48640) by [@barthap](https://github.com/barthap))
- [Android] Add `PhotographicSensitivity` to returned EXIF metadata. ([#47222](https://github.com/expo/expo/pull/47222) by [@Wenszel](https://github.com/Wenszel))

### 🐛 Bug fixes

- [Android] Parallelize per-file EXIF and location reads in `getAssetsAsync` when `resolveWithFullInfo` is true, speeding up large library scans. ([#48637](https://github.com/expo/expo/pull/48637) by [@hsource](https://github.com/hsource) and [@robin-pham](https://github.com/robin-pham))
- [iOS] Include GPS `location` in `getAssetsAsync` batch results and return numeric latitude/longitude instead of strings for `Asset.location` and `Album.approximateLocation` (matching the documented `Location` type). ([#49188](https://github.com/expo/expo/pull/49188) by [@hsource](https://github.com/hsource) and [@fractalbeauty](https://github.com/fractalbeauty))
- [Android] Fix transposed `width`/`height` for rotated assets (portrait photos and videos): `Asset.getInfo()`, `getWidth()`/`getHeight()`/`getShape()` and `Query.exeForMetadata()` now honor MediaStore `ORIENTATION`, matching the legacy API. ([#48150](https://github.com/expo/expo/pull/48150) by [@oeddyo](https://github.com/oeddyo))

### 💡 Others

- Re-organize TS code ([#45953](https://github.com/expo/expo/pull/45953) by [@Wenszel](https://github.com/Wenszel))

Give your AI agent these facts

Vigia is a free MCP server: your coding agent checks versions, breaking changes and vulnerabilities before it writes code. No signup, no API key.

claude mcp add --transport http vigia https://vigia.coredls.cloud/mcp

Add to CursorAdd to VS Code★ Star on GitHub

Any other MCP client
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }

Agent skill (SKILL.md): tells the agent when to use Vigia · GitHub Action for pull requests

Frequently asked questions

What are the breaking changes when upgrading expo-media-library from 57 to 58?

Between expo-media-library 57.0.5 and 58.0.9, Vigia found 0 removed exports, 5 changed signatures and 1 removed or changed class or interface members.

What became deprecated in expo-media-library 58?

0 exports or members are newly marked as deprecated in expo-media-library 58.0.9.

For agents

GET https://vigia.coredls.cloud/v1/packages/npm/expo-media-library/upgrade?from=57.0.5&to=58.0.9