Skip to content

spec(AST-090): touch presentations keep their native exit - #8536

Merged
kentonquatman merged 1 commit into
mainfrom
spec/exit-motion-touch
Oct 26, 2026
Merged

kentonquatman merged 1 commit into
mainfrom
spec/exit-motion-touch

Conversation

@kentonquatman

Copy link
Copy Markdown
Contributor

Exact decision needed

Whether the spec:AST-090 exit switches reach touch presentations.

As it stands on main, AST-090 ships every dialog and layer exit off, with no exception for touch. Two current records say otherwise for touch presentations:

  • spec:AST-094 FR7: a touch presentation plays the exit its UIKit counterpart plays, on every touch platform.
  • design:reduced-motion DR2: under reduced motion, a touch presentation cross-fades (opacity only, 200 ms or less), where AST-090 FR10 closes every surface at once.

Existing authority searched

AST-090 is the record to change: AST-094 and design:reduced-motion are current, and AST-090 is the draft that conflicts with them.

Decision

Proposed, pending review by the motion owners (ernestt, cixzhang):

  • AST-090 governs pointer presentations. The Intent defines a touch presentation by spec:AST-094 FR13 and calls every other presentation a pointer presentation. FR1–FR13 apply to pointer presentations.
  • FR14 (new): touch presentations keep their native exit. A dialog or layer surface in a touch presentation plays the exit its component's record gives it under AST-094 FR7 and FR8. The exit switches, --ease-exit, and --duration-exit do not change it, whether a theme leaves a kind off or turns it on.
  • FR10: under reduced motion, a pointer presentation's exit closes at once, now citing design:reduced-motion DR3 and DR4. A touch presentation cross-fades through AST-094 FR8 (DR2).
  • FR12: BottomSheet's close reads --ease-exit in a pointer presentation.
  • DEC-5 (new) records the reason. A non-goal, a Platform support note, two Current-state impact lines (spec:AST-094, design:reduced-motion), and an FR14 verification row follow from it. OQ1 asks about pointer-presented dialogs.

Tokens, defaults, and every pointer-presentation behavior are unchanged.

Rejected alternatives

  • Letting the switches reach touch exits, so that touch exits ship off by default too: it removes the exit spec:AST-094 FR7 requires.
  • Making --ease-exit and --duration-exit time touch exits: spec:AST-094 FR4 and DEC-11 keep touch motion roles internal until a public set is decided.

Claim scope and non-goals

This changes only which presentations AST-090 governs. It does not change:

  • touch exits themselves, spec:AST-094, or design:reduced-motion;
  • the exit tokens or their defaults;
  • any pointer-presentation requirement.

#8004 (--ease-exit) is unaffected: it changes no behavior, and a touch close follows AST-094 once one ships.

Evidence and implementation relationship

  • spec:AST-094 FR13 and non-goals, and design:reduced-motion DR2 and DR3, quoted above.
  • The touch pull requests above already implement touch exits under AST-094; this removes their conflict with AST-090.
  • No implementation accompanies this record.

Writing rubric results

  • R1 narration: scanned for proposes, previously, now, decided, today, and will across the new Intent paragraphs, FR14, the FR10 and FR12 edits, DEC-5, and the new Current-state impact lines; none in the record.
  • R2 research in the record: none.
  • R3 evidence naming a change: none. The new FR14 verification row names a real-browser test under a coarse primary pointer.
  • R4 rejected alternatives over one line or outside a decision: one new, a single Rejected: line in DEC-5; the existing ones are unchanged.
  • R5 pull request or issue references remaining: none (searched # followed by digits, /pull/, and /issues/).
  • R6 ruled open questions still listing options: none ruled. OQ1 now asks about pointer-presented dialogs and keeps its options; OQ2 is unchanged.

Scope

  • This PR contains specification records only.
  • It records observable behavior and preserves equivalent internal implementations.
  • Any named internal mechanism is intentionally public, names its dependent caller/system, and explains why an equivalent implementation would not satisfy the contract. (None added.)
  • Verification states the evidence layer and failure signal without prescribing CI job/workflow topology.
  • It records one intentional durable decision, not a rescue for a separable tagalong.
  • The canonical knowledge owner, affected current claims, and overlapping open work are named; any ownership collision is resolved or called out for human decision.
  • Adjacent API, visual, accessibility, composition, and implementation facts remain outside scope unless this exact decision depends on them.
  • Public text and artifacts contain no internal Meta context.

Validation

  • node scripts/check-knowledge.mjs --base origin/main: aligned.
  • Prettier: clean.
  • git diff --check: clean.

@vercel

vercel Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
astryx Ready Ready Preview Oct 26, 2026 3:02pm UTC

Request Review

@astracat-bot

astracat-bot Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

AI review status for this pull request.

Review status Updated
⏳ Queued (for maintainers only) Oct 26, 2026, 3:53 PM UTC

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Meta Open Source bot. label Oct 26, 2026
@kentonquatman
kentonquatman marked this pull request as ready for review October 26, 2026 15:53
@kentonquatman
kentonquatman merged commit c4a9ae0 into main Oct 26, 2026
57 checks passed
@github-actions
github-actions Bot deleted the spec/exit-motion-touch branch October 27, 2026 06:22

This branch was successfully deployed

1 active deployment
Preview — baafdb51 Deployed Oct 26, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Meta Open Source bot.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant