Optional~opensType only, never a value: the screens this definition opens through
action edges — edges its handle does not show (actionEdge) — so
ScreenOpenTargetsOf follows them and a screen reached only that way is
still visible to the registry-derived reachability. The parameter is
bivariant (a method's is), so a definition that names its targets is still
accepted wherever a definition's parts are read; never for a definition
whose transitions all live on its handle.
ReadonlyactionsReadonly InternalafterWhat runs once the screen's handle is assembled, inside the enter's
transaction: a swipeable feed gives the first item in front its enter
here, because its items were shown without one. Absent for every screen
and every plain feed. A failure rolls the enter back.
Readonly InternalcatalogThe retrace's view of this screen, with its errors and services.
Readonly InternalcheckpointWhat a frame keeps beyond what entering it showed (a feed's deepest page), as a checkpoint stores it; absent when the screen keeps nothing.
ReadonlydataWhat enter returns: the user's data, flat on the handle; never in a trail.
ReadonlyenterThe burst: the first page and the navigation, as any feed's. onSwipe is
not part of it — its failure belongs to swipeToNext and stream alone —
so a caller of OpenApp never handles an error the enter cannot emit.
ReadonlyfindReadonlyidReadonlyinputWhat an edge passes to enter — for an item, the schema of one list entry.
ReadonlyisWhether value is this screen's handle: the narrowing of a union of
handles obtained without their path in the type — what back returns
after a restore, or the launch's first-screen union — written
XxxScreen.is(handle) (owner decision, 2026-10-23: the guard is a method
of the definition, not a free function).
ReadonlyitemsAbsent when the screen shows no item lists.
Readonly InternalitemWhether the items of its lists have visits (leave, resume): a plain feed's have none.
ReadonlykindReadonlyleaveWhat the engine runs each time the thing stops being on top — covered by another screen, closed, or left by a tab switch — after the transition that did it committed. It receives the visit that ended, with its duration by the engine's clock. It cannot fail; absent when the thing does nothing then.
ReadonlyownsWhether checkpoint is this screen's, read synchronously from the id it
carries: a type guard, so after it any of the screen set's restores of this
screen cannot refuse with a mismatch. A corrupt checkpoint still fails them
with CheckpointDecodeError.
The restores themselves live on the platform's screen set
(screenSet(…).restoreSilently(screen, checkpoint)): they rebuild
every frame of the stack and so need the registry, while a definition
carries only its own registry-free facts.
Readonly InternalpositionWhere the screen's frame is beyond what entering shows (a feed's deepest page shown), for a trail; absent when nowhere beyond.
Readonly InternalreleasedThe names a released trail format gave this screen's item lists, mapped to
the current ones (a feed's items were page in formats 1 and 2): a
retrace of a released trail reads a step's list through it.
Readonly InternalrestorePuts that back into a handle a checkpoint rebuilt, before any action runs.
Readonly InternalrestoreBrings a fresh frame back to a position a trail stored, sending what the app sends to get there.
ReadonlyresumeWhat the engine runs each time the thing is on top again after a leave —
the screen that covered it was closed — after that transition committed.
Never on the first show (that is enter), never after a rolled-back
transition. It cannot fail; absent when the thing does nothing then.
ReadonlystateWhat continuing from it needs, from its input and data.
The viewer's definition type, named: the feed's handle carries this screen's type through its
openReelsTabedge, and the platform's launch declaration would otherwise expand the whole swipeable-feed type and exceed the compiler's declaration-serialization limit (the same reasonandroidScreensnames its type). An interface, not an alias, so declaration emit prints its name at every use site instead of inlining the type.