Vigia

Upgrading expo-file-system from 57.x to 58.x

Comparison of the public API of expo-file-system 57.0.7 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 paths1
Removed exports0
Changed signatures1
Removed class or interface members0
Changed class or interface members3
Newly deprecated2
Requirement changes (engines, peer dependencies)0
New exports4

Removed import paths

Removed import paths
expo-file-system/legacy

Removed exports

None detected.

Changed signatures

exportBeforeAfter
expo-file-system · DownloadTaskOptions{ headers?: Record<string, string> | undefined; sessionType?: NetworkTaskSessionType | undefined; onProgress?: ((data: DownloadProgress) => void) | undefined; signal?: AbortSignal | undefined; }{ headers?: Record<string, string> | undefined; deferBackgroundSessionCompletion?: boolean | undefined; sessionType?: NetworkTaskSessionType | undefined; onProgress?: ((data: DownloadProgress) => void) | undefined; signal?: AbortSignal | undefined; }

Removed class or interface members

None detected.

Changed class or interface members

memberBeforeAfter
File.write(content: string | Uint8Array<ArrayBufferLike>, options?: FileWriteOptions | undefined): void(content: string | ArrayBuffer | Uint8Array<ArrayBufferLike>, options?: FileWriteOptions | undefined): Promise<void>
FileHandle.readBytes(length: number): Uint8Array<ArrayBuffer>(length: number): Promise<Uint8Array<ArrayBuffer>>
FileHandle.writeBytes(bytes: Uint8Array<ArrayBufferLike>): void(bytes: Uint8Array<ArrayBufferLike>): Promise<void>

Newly deprecated

export@deprecated
expo-file-system · File.md5Use `await file.digest('MD5')` instead.
expo-file-system · InfoOptionsUse `await file.digest('MD5')` to calculate an MD5 digest.

Requirement changes (engines, peer dependencies)

None detected.

New exports (4)
importexportkind
expo-file-systemFilePreviewOptionstype
expo-file-systemFileDigestAlgorithmtype
expo-file-systemFileCanPreviewOptionstype
expo-file-systemFilePreviewCollectionOptionstype

Changelog between these versions

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

58.0.9
### 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.8
### Patch Changes

- [iOS] Reject abandoned file preview presentations and allow subsequent previews to open. ([#51169](https://github.com/expo/expo/pull/51169) by [@eliotgevers](https://github.com/eliotgevers))
58.0.7
### Patch Changes

- [iOS] Add opt-in control over background download completion with `DownloadTask.acknowledgeBackgroundCompletionAsync()`, so apps can finish processing downloads before returning control to iOS. ([#50543](https://github.com/expo/expo/pull/50543) by [@savv](https://github.com/savv))
- Added static `File.preview()` and `File.canPreview()` methods for a file or array of files, with multi-file previews and initial selection on iOS. ([#50696](https://github.com/expo/expo/pull/50696) by [@eliotgevers](https://github.com/eliotgevers))
58.0.6
### 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.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))
58.0.3
### 🐛 Bug fixes

- [Android] Added missing permission checks to upload tasks and to file watchers. ([#50582](https://github.com/expo/expo/pull/50582) by [@barthap](https://github.com/barthap))
- [iOS] Added a missing permission check when opening a file handle. ([#50583](https://github.com/expo/expo/pull/50583) by [@barthap](https://github.com/barthap))
- [Android] Check permissions for `content://` URIs served by the app's own file providers. ([#50584](https://github.com/expo/expo/pull/50584) by [@barthap](https://github.com/barthap))
58.0.2
### 🐛 Bug fixes

- [iOS] Include the privacy manifest in prebuilt frameworks. ([#50503](https://github.com/expo/expo/pull/50503) by [@chrfalch](https://github.com/chrfalch))
58.0.1
### 🐛 Bug fixes

- [iOS] Anchored the file picker popover on every regular-width display, not only iPad, so it presents correctly on iPhone Duo. ([#50434](https://github.com/expo/expo/pull/50434) by [@alanjhughes](https://github.com/alanjhughes))
58.0.0
### 🛠 Breaking changes

- `File.write()` is now asynchronous and returns a Promise. Use `File.writeSync()` for synchronous behavior. ([#45992](https://github.com/expo/expo/pull/45992) by [@wh201906](https://github.com/wh201906))
- `FileHandle.readBytes()` and `FileHandle.writeBytes()` are now asynchronous and return a Promise. Use `FileHandle.readBytesSync()` and `FileHandle.writeBytesSync()` for synchronous behavior. ([#46280](https://github.com/expo/expo/pull/46280) by [@wh201906](https://github.com/wh201906))

### 🎉 New features

- Add `File.preview()` and `File.canPreview()` methods for opening files with platform-native preview flows. (by [@eliotgevers](https://github.com/eliotgevers))
- Added `File.digest()` for asynchronously calculating MD5, SHA-1, SHA-256, SHA-384 and SHA-512 file digests. ([#48089](https://github.com/expo/expo/pull/48089) by [@wh201906](https://github.com/wh201906))

### 🐛 Bug fixes

- Fixed `File.downloadFileAsync()` returning a runtime-specific error message when canceled with an `AbortSignal`. ([#49856](https://github.com/expo/expo/pull/49856) by [@Ubax](https://github.com/Ubax))
- Fix `File.readableStream()` returning zeroed bytes and writing past the requested region when a BYOB read targets a view that starts at a non-zero offset. ([#49234](https://github.com/expo/expo/pull/49234) by [@dennytosp](https://github.com/dennytosp))
- [Android][iOS] Fix `File.size` returning `null` for a missing or unreadable file. ([#49086](https://github.com/expo/expo/pull/49086)) by [@ACHP](https://github.com/ACHP))
- [iOS] Fix wrong permissions for text() and bytes(). ([#42422](https://github.com/expo/expo/pull/42422)) by [@simoneldevig](https://github.com/simoneldevig))
- Fixed `copyAsync` on iOS copying the unedited original when a `ph://` asset has edits applied in Photos. ([#48248](https://github.com/expo/expo/pull/48248) by [@CoffeeFlux](https://github.com/CoffeeFlux))
- Fixed iOS file previews rejecting a new preview while the previous Quick Look dismissal animation is still finishing. ([#47947](https://github.com/expo/expo/pull/47947) by [@eliotgevers](https://github.com/eliotgevers))
- Added `./next` subpath to package `exports` field to resolve Metro bundler warning. ([#44793](https://github.com/expo/expo/pull/44793) by [@chang-in](https://github.com/chang-in))
- Fixed `FileHandle` security-scoped access, and non-SAF `content://` URI support. ([#47176](https://github.com/expo/expo/pull/47176) by [@barthap](https://github.com/barthap))
- Fixed potential file offset races when asynchronous and synchronous `FileHandle` operations overlap on Android and iOS. ([#47945](https://github.com/expo/expo/pull/47945) by [@wh201906](https://github.com/wh201906))
- Fixed `readAsStringAsync` to respect `position` and `length` when reading UTF-8 strings. ([#20291](https://github.com/expo/expo/issues/20291) by [@mvincentong](https://github.com/mvincentong)) ([#45714](https://github.com/expo/expo/pull/45714) by [@mvincentong](https://githu

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-file-system from 57 to 58?

Between expo-file-system 57.0.7 and 58.0.9, Vigia found 0 removed exports, 1 changed signatures and 3 removed or changed class or interface members.

What became deprecated in expo-file-system 58?

2 exports or members are newly marked as deprecated in expo-file-system 58.0.9.

For agents

GET https://vigia.coredls.cloud/v1/packages/npm/expo-file-system/upgrade?from=57.0.7&to=58.0.9