Repository navigation
Conversation
An Apple TV simulator's only display is its TV output, an external display, so resolving the display a screenshot or video stream targets found no active integrated display. That is waited out, as it passes during a hinge change, so every screenshot and every video stream of an Apple TV waited the full 5 s before capturing the main screen anyway. A report that lists displays, none of them integrated, now falls back to the main screen straight away (noIntegratedDisplay).
DylanVann
added a commit
to DylanVann/react-native-fast-image
that referenced
this pull request
Oct 22, 2026
The patched idb companion's README links meta/idb#987: once it's in a release, the workflow can download that release again and the folder can go.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every screenshot and video stream of an Apple TV simulator waits 5 s before capturing anything. On a new Apple TV 4K (3rd generation) simulator with tvOS 27.0,
idb screenshottakes about 5.5 s each time with v1.7.7, against about 0.6 s on an iPhone 17 Pro. The companion's log says why:An Apple TV's only display is its TV output, which its display report lists as external (the shape in
SimulatorDisplayReadTests.reportWithOnlyAnExternalDisplayHasNoActiveIntegratedDisplay).SimulatorDisplayResolutionfinds no active integrated display, andresolveDisplay()waits that out fortransitionSettling.timeout(5 s), as it should during a hinge change, before throwing;SimulatorScreenshotCommands.capturethen captures the main screen. On an Apple TV no integrated display is coming, so every screenshot waits the full 5 s, and so does every video stream's first frame (5.2 s). (Since 61a0808 and the commits after it, a tvOS screenshot falls back to the main screen instead of failing; that fallback comes once the wait has timed out.)Change: a report that lists displays, none of them integrated, resolves to a new fallback,
noIntegratedDisplay, which isn't waited out, so the capture goes to the main screen straight away. An empty report, and reports with integrated displays, resolve as before: a foldable's cover and inner displays are both integrated, so a hinge change still passes throughnoActiveIntegratedDisplayorambiguousActiveDisplaysand is still waited out.Tests:
DisplayCommandsTests.aRuntimeWithOnlyATVOutputFallsBackWithoutWaiting: a report with only a TV output resolves to.fallback(.noIntegratedDisplay)after one read.SimulatorDisplayReadTests.reportWithOnlyAnExternalDisplayHasNoIntegratedDisplay(renamed): tvOS's report shape with backlightoffnow resolves to.noIntegratedDisplay; withunknown, still to.legacyIntegratedDisplays(count: 0)../build.sh test FBSimulatorControl: all 431 tests pass.To reproduce:
idb screenshot, 3 runsWe found this running react-native-fast-image's regression tests on an Apple TV simulator, with screenshots and video from the companion's gRPC API: the tvOS cases took about 18 minutes, and about 3 with this change.