🐛 [iPhone Duo] Cameras are rotated 90° clockwise when using the camera on the inner display
Maintainers usually reply within 1 day
@ismaelsousa is already working on this.
Since Oct 18, 2026.
Assessment
- Difficulty
- 4/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- ios, react-native, typescript
- Domain
- computer-vision, mobile
Research direction
Start with the linked reproduction at commit afc9d0c and follow the preview and switch camera button behavior when the iPhone Duo unfolds and rotates. The report identifies the affected setup as iOS device, VisionCamera 5.2.3, and React Native 0.85.3, but names no project files or tests. Done means the preview and switch camera button orientation match the device on both displays.
Written by the indexing model from the issue text.
Description
Prerequisites
- I have read and followed every applicable step in the Nitro Modules Troubleshooting guide.
- I have read the VisionCamera Troubleshooting guide.
- I have searched existing issues and found nothing matching.
- I am on the latest version of react-native-vision-camera, or have a specific reason I cannot upgrade.
Reproduction
https://github.com/Jakef14/react-native-vision-camera
Steps to reproduce
- Clone the repo https://github.com/Jakef14/react-native-vision-camera
- Checkout to commit
afc9d0c - Run
bun bootstrapto prepare the example app - Run
bun example startto start metro for the example app in the repo - In Xcode 27, build and install the application on an iPhone Duo
- After the application installs and launches, observe the outer display has the correct rotation
- Open the device (unfold)
- Notice the orientation is still correct on the inner display
- Rotate the phone
- Notice the orientation of the preview no longer matches the orientation of the device (90° rotation)
- Close the application from the inner display
- Open the application from the inner display
- Notice the preview is still rotated 90° clockwise
What did you expect to happen?
I would expect the preview orientation to match the orientation of the device no matter the orientation the application is opened from. This includes iPad-style screens, like the iPhone Duo, that allows for window rotation.
What actually happened?
When using any camera on the inner display on the iPhone Duo, the preview is rotated 90° clockwise. When rotating the phone, the application window rotates and matches the orientation of the device, but the preview and switch camera button continues to maintain that 90° rotation from the device orientation
Affected platforms
iOS (device)
Device(s) affected
iPhone Duo, iOS 27.0.1-27.2
VisionCamera version
5.2.3
React Native version
0.85.3
React Native architecture
New Architecture (Fabric / bridgeless)
Features being used
- Preview
- Photo capture
- Video capture
- Frame Processors (worklets)
- Skia Frame Processors
- Code/Barcode Scanner
- Location metadata
- Multi-cam
- Depth data
- HDR / custom dynamic range
- Custom format / FPS / resolution
Relevant logs / stack trace
N/A
Additional context
Submission
- The reproduction I linked is either (preferred) a PR against this repo that adds a failing harness test following the harness-tests README, or (fallback) a public repo that reproduces the bug on a fresh clone. I understand the issue will be closed without one.
- I pasted logs as text (not screenshots).
- I wrote this report in my own words. I did not paste AI-generated descriptions of the bug.
- Dominant language
- TypeScript
- Stars
- 9.7k
- Forks
- 1.4k
- Avg merge
- 16h 53m
- Merged PRs (30d)
- 1
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from margelo/react-native-vision-camera
-
Android (vision-camera-location): HybridLocationManager never quits its HandlerThread on disposeOpen
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
margelo/react-native-vision-camera#4217 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
margelo/react-native-vision-camera#4216 ·
Maintainers usually reply within 1 day
-
🐛 bug
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
margelo/react-native-vision-camera#4211 ·
Maintainers usually reply within 1 day
-
🐛 bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
margelo/react-native-vision-camera#4096 · 3 comments ·
Maintainers usually reply within 1 day
-
✨ feature
Difficulty 5/5 Over a week Newbie friendliness 35/100
margelo/react-native-vision-camera#4238 ·
Maintainers usually reply within 1 day
All issues in margelo/react-native-vision-camera
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Northeastern-Electric-Racing/FinishLine#4660 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
excaliburjs/Excalibur#3895 ·
Maintainers usually reply within 3 days
-
infer_audio_type only recognises one MPEG Layer III frame header, so most MP3 files are rejectedPossibly taken @Steve-20-ai claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Earn report crashes with "RangeError: Invalid time value" when a report row has an unparsable timestampPossibly taken @Gurkaran18 claimed this today. Openbug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
joinmarket-webui/jam#1588 ·
Maintainers usually reply within 3 days
-
BeOS .json missingOpen
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
mihaip/infinite-mac#475 ·