Upgrading expo-camera from 57.x to 58.x
Comparison of the public API of expo-camera 57.0.6 and 58.0.10, computed automatically from their TypeScript types. A changed signature is a candidate for a breaking change, not a certainty.
Summary
| Removed import paths | 0 |
|---|---|
| Removed exports | 0 |
| Changed signatures | 3 |
| Removed class or interface members | 0 |
| Changed class or interface members | 2 |
| Newly deprecated | 0 |
| Requirement changes (engines, peer dependencies) | 0 |
| New exports | 5 |
Removed exports
None detected.
Changed signatures
| export | Before | After |
|---|---|---|
expo-camera · AvailableLenses | { lenses: string[]; } | { lenses: LensInfo[]; } |
expo-camera · CameraNativeProps | { pointerEvents?: any; style?: any; ref?: any; onCameraReady?: CameraReadyListener | undefined; onMountError?: MountErrorListener | undefined; onBarcodeScanned?: ((event: { nativeEvent: BarcodeScanningResult; }) => void) | undefined; onPictureSaved?: PictureSavedListener | undefined; onResponsiveOrientationChanged?: ResponsiveOrientationChangedListener | undefined; onAvailableLensesChanged?: AvailableLensesChangedListener | undefined; facing?: string | undefined; flashMode?: string | undefined; enableTorch?: boolean | undefined; animateShutter?: boolean | undefined; autoFocus?: FocusMode | und… | { pointerEvents?: any; style?: any; ref?: any; onCameraReady?: CameraReadyListener | undefined; onMountError?: MountErrorListener | undefined; onBarcodeScanned?: ((event: { nativeEvent: BarcodeScanningResult; }) => void) | undefined; onPictureSaved?: PictureSavedListener | undefined; onResponsiveOrientationChanged?: ResponsiveOrientationChangedListener | undefined; onAvailableLensesChanged?: AvailableLensesChangedListener | undefined; onRecordingProgress?: RecordingProgressListener | undefined; facing?: string | undefined; flashMode?: string | undefined; enableTorch?: boolean | undefined; anim… |
expo-camera · CameraRecordingOptions | { maxDuration?: number | undefined; maxFileSize?: number | undefined; mirror?: boolean | undefined; codec?: VideoCodec | undefined; } | { maxDuration?: number | undefined; maxFileSize?: number | undefined; progressUpdateInterval?: number | undefined; mirror?: boolean | undefined; codec?: VideoCodec | undefined; } |
Removed class or interface members
None detected.
Changed class or interface members
| member | Before | After |
|---|---|---|
CameraView.getAvailableLensesAsync | (): Promise<string[]> | (): Promise<LensInfo[]> |
CameraViewRef.getAvailableLenses | (): Promise<string[]> | (): Promise<LensInfo[]> |
Newly deprecated
None detected.
Requirement changes (engines, peer dependencies)
None detected.
New exports (5)
| import | export | kind |
|---|---|---|
expo-camera | LensInfo | type |
expo-camera | RecordingProgress | type |
expo-camera | DocumentScanningResult | type |
expo-camera | DocumentScanningOptions | type |
expo-camera | RecordingProgressListener | type |
Changelog between these versions
Text published by the package authors, shown as-is.
58.0.10
### 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.9
### Patch Changes
- [Android] Fixed barcode scanning stopping after the camera delivers a frame without an image. Also fixed a leak of the ML Kit barcode scanner each time the camera is recreated or unmounted. ([#51050](https://github.com/expo/expo/pull/51050) by [@alanjhughes](https://github.com/alanjhughes))
- [iOS] Fixed `recordAsync()` never settling when it is called while a recording is already active. It now rejects with an error. ([#51049](https://github.com/expo/expo/pull/51049) by [@alanjhughes](https://github.com/alanjhughes))58.0.8
### Patch Changes
- [Android] Fixed the window staying white when the camera view unmounts during the shutter animation ([#50904](https://github.com/expo/expo/issues/50904)). ([#50950](https://github.com/expo/expo/pull/50950) by [@alanjhughes](https://github.com/alanjhughes))
- [Web] Fire `onCameraReady` only once the video has a frame that can be captured, instead of as soon as the camera stream is obtained, so calling `takePictureAsync` from `onCameraReady` no longer throws `ERR_CAMERA_NOT_READY`. `takePictureAsync` now only requires a decoded frame instead of `HAVE_ENOUGH_DATA`, which live streams may never reach in Safari. `onCameraReady` is no longer called when the camera fails to start; use `onMountError` instead. ([#50884](https://github.com/expo/expo/pull/50884) by [@Cedric921](https://github.com/Cedric921))58.0.7
### 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.6
### Patch Changes
- [Android] Bind the barcode image analyzer only while barcode scanning is enabled, so the camera preview and captured photo use the same frame. ([#50808](https://github.com/expo/expo/pull/50808) by [@hitanshur](https://github.com/hitanshur))58.0.5
### 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.4
### 💡 Others
- [iOS] Remove a dead `compilerFlags` block from the SwiftPM build configuration. It had no effect on either build path. ([#50417](https://github.com/expo/expo/pull/50417) by [@chrfalch](https://github.com/chrfalch))58.0.3
### 🐛 Bug fixes
- [iOS] Import `CoreImage` in `BarcodeUtils`, which relied on another file in the module importing it. ([#50479](https://github.com/expo/expo/pull/50479) by [@chrfalch](https://github.com/chrfalch))
- [iOS] Pin `ZXingObjC` by revision rather than by version, so that Swift Package Manager can resolve it. SwiftPM refuses a version-pinned remote dependency that declares `unsafeFlags`, which `zxingify-objc` does. ([#50491](https://github.com/expo/expo/pull/50491) by [@chrfalch](https://github.com/chrfalch))58.0.2
_This version does not introduce any user-facing changes._58.0.1
_This version does not introduce any user-facing changes._58.0.0
### 🛠 Breaking changes
- [iOS] Changed `selectedLens` prop to use stable `deviceType` identifiers instead of locale-dependent `localizedName` strings, enabling reliable programmatic lens selection across all device languages. ([#42916](https://github.com/expo/expo/pull/42916) by [@mplumador](https://github.com/mplumador))
### 🎉 New features
- [Android] Add `PhotographicSensitivity` to returned EXIF metadata. ([#47222](https://github.com/expo/expo/pull/47222) by [@Wenszel](https://github.com/Wenszel))
- Added `CameraView.scanDocumentAsync` to scan multi-page documents on Android and iOS. ([#47362](https://github.com/expo/expo/pull/47362) by [@alanjhughes](https://github.com/alanjhughes))
- Added an `onRecordingProgress` event to `CameraView` that reports the recorded duration and file size while recording video, at a rate set by the new `progressUpdateInterval` recording option. ([#48871](https://github.com/expo/expo/pull/48871), [#48872](https://github.com/expo/expo/pull/48872), [#48873](https://github.com/expo/expo/pull/48873) by [@alanjhughes](https://github.com/alanjhughes))
### 🐛 Bug fixes
- [iOS] Fix `CameraView` leaking its barcode scanner, metadata delegate and capture session on every mount, by no longer having the delegate retain the scanner it reports to. ([#49692](https://github.com/expo/expo/pull/49692) by [@chrfalch](https://github.com/chrfalch))
- [iOS] Fix all barcode scanning stopping when the optional `ExpoCameraBarcodeScanning` companion pod is not linked. The AVFoundation scanner now runs on its own, so QR codes and every other natively supported symbology keep scanning; the ZXing provider is once again only the fallback for `pdf417`, `code39`, and `codabar`. ([#49692](https://github.com/expo/expo/pull/49692) by [@chrfalch](https://github.com/chrfalch))
- [iOS] Fix repeatedly mounting and unmounting `CameraView` freezing the UI when the capture session cannot start, such as on a simulator. The session is now stopped before it is torn down and before the preview layer detaches from it, and it is no longer started at all when no capture device is available. ([#49028](https://github.com/expo/expo/pull/49028) by [@barthap](https://github.com/barthap))
- [Android] Use the selected camera to determine video stabilization support. ([#45896](https://github.com/expo/expo/pull/45896) by [@vivekjm](https://github.com/vivekjm))
- Fix iOS captures being saved above their native resolution due to orientation normalization rendering at the screen scale. ([#47477](https://github.com/expo/expo/pull/47477) by [@boojamya](https://github.com/boojamya))
- [iOS] Fix the ZXing barcode fallback scanner returning raw AVFoundation type strings (e.g. `org.iso.PDF417`) instead of short expo `BarcodeType` values (e.g. `pdf417`) for `pdf417`, `code39`, and `codabar`, restoring the fix from [#44726](https://github.com/expo/expo/pull/44726) that was reverted by the `ExpoCameraBarcodeScanning` pod extraction in [#44766](https://github.com/expo/expo/pulGive 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-camera from 57 to 58?
Between expo-camera 57.0.6 and 58.0.10, Vigia found 0 removed exports, 3 changed signatures and 2 removed or changed class or interface members.
What became deprecated in expo-camera 58?
0 exports or members are newly marked as deprecated in expo-camera 58.0.10.
For agents
GET https://vigia.coredls.cloud/v1/packages/npm/expo-camera/upgrade?from=57.0.6&to=58.0.10