Repository navigation
spec(ProgressBar): touch determinate timing and a Reduce Motion pulse - #9425
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
AI review status for this pull request.
|
Contributor
Author
|
/approve-spec 290c3d7 |
This branch was successfully 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.
Maintainer impact
Exact decision needed
How a determinate fill moves under a coarse primary pointer, and what the indeterminate bar shows under reduced motion.
Existing authority searched
component:ProgressBar(FR4, FR6, AR1, OQ1, OQ2),component:Skeleton(FR3, FR4),spec:AST-094(FR1, FR2, FR4, FR13, DEC-1, DEC-5, DEC-6, DEC-15),spec:AST-108(FR2, FR3, FR4, DEC-1),design:reduced-motion(DR1–DR3, DEC-3, content boundary),design:motion, the theme duration tokens (longest is 1300 ms), and the registered motion tables. AST-094 makes native measured timing the touch default and requires named roles, but leaves each component's presentation to its own record; the reduced-motion record leaves continuous status indicators out of scope; ProgressBar OQ2 held the reduced-motion loop open. ProgressBar's record owns both decisions.Decision
The owner ruled on 2026-11-01:
Changed records:
component:ProgressBaronly.component:Skeletonis unchanged.progress.fillTrackMsrole (1000 ms, UIKit's progress view for a whole-track change) times the share of the track moved; at least 16px above zero; nothing at zero. The duration and its linear curve (progress.curves.fill) are roles in the generated motion role table, and tempo scales the duration (spec:AST-094FR4, FR13, DEC-1, DEC-5;spec:AST-108FR3). Fine pointers unchanged; reduced motion still lands at once.progress.reducedMotionPulseMsrole (2000 ms) and the existingtiming.curves.movecurve; the track is unchanged. No theme duration token is near 2 s, so the pulse is a named role; as a busy loop it is on the fixed list, so tempo does not scale it. It appliesdesign:reduced-motionDR1's no-travel rule (an opacity change in place of travel).This unblocks #8225 and the Reduce Motion part of #8239; #8239's quarter-track sweep under a finger and its 0.74–1.0 pulse are not adopted. #8253 (Skeleton) is not adopted.
Rejected alternatives
Claim scope and non-goals
Determinate fill timing under a coarse pointer and the indeterminate bar under reduced motion only. Skeleton, the fine-pointer determinate motion, the standalone contrast treatment (OQ1) and the tone colors are unchanged.
Evidence and implementation relationship
UIKit measurement of the progress view's animated timing (whole track 1 s, linear) and minimum fill, iOS 26.2 simulator. Contrast computed from the default theme tokens: each fill at 0.84 opacity composited over
--color-background-mutedon the body and surface backgrounds, light and dark. No implementation in this PR.Writing rubric results
Scope
Validation
pnpm install --frozen-lockfilepnpm check:knowledge: Knowledge templates and records are aligned.git diff --check: clean