Skip to content

fix(web): keep feedback under prefers-reduced-motion - #24

Merged
PunGrumpy merged 1 commit into
mainfrom
motion/05-reduced-motion
Aug 7, 2026
Merged

fix(web): keep feedback under prefers-reduced-motion#24
PunGrumpy merged 1 commit into
mainfrom
motion/05-reduced-motion

Conversation

@PunGrumpy

@PunGrumpy PunGrumpy commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Problem

With prefers-reduced-motion: reduce set, the app dropped all feedback: hover fades, the status-dot crossfade, and checkbox fills stopped animating, and the processing spinners froze — reduced-motion users lost the only "working on it" indicator.

Root Cause

The global block zeroed animation-duration/transition-duration and forced animation-iteration-count: 1 on *, which turns an infinite spinner rotation into a single invisible 0.01ms run. Reduced motion is meant to remove movement (translation/scaling — the vestibular triggers), not color and opacity feedback.

Solution

The block now forces transition-property to a movement-free safe list (color, background-color, border-color, fill, stroke, opacity, box-shadow), so transform/position transitions snap while feedback fades keep their authored durations. tw-animate-css entrance/exit keyframes (animate-in/animate-out) are reduced to instant since they move elements; animate-spin (in-place state indication) and animate-pulse (opacity-only) keep running. scroll-behavior: auto is scoped to html, where smooth is set.

Result

Under reduced motion nothing translates or scales over time, but spinners spin and color/opacity feedback remains — gentler, not zero. Pairs with #20, which skips the JS-driven slider sweep under the same preference. Implements plans/005-reduced-motion-keep-feedback.md.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Aug 7, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
pigo Ready Ready Preview Aug 7, 2026 4:51pm
pigo-api Ready Ready Preview Aug 7, 2026 4:51pm

@changeset-bot

changeset-bot Bot commented Aug 7, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 1c713bd

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

The global reduced-motion block zeroed every animation and transition,
killing the color/opacity fades that aid comprehension and freezing the
processing spinners (iteration-count: 1 on an infinite rotation), so
reduced-motion users lost the only "working on it" indicator. The block
now forces transition-property to a movement-free safe list (colors,
opacity, shadows) so transform/position transitions snap while feedback
fades keep their durations, reduces tw-animate-css entrance keyframes to
instant, and scopes scroll-behavior to html where it is set.

Implements plans/005-reduced-motion-keep-feedback.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@PunGrumpy
PunGrumpy force-pushed the motion/05-reduced-motion branch from ce90a2b to 1c713bd Compare August 7, 2026 16:50
@PunGrumpy
PunGrumpy merged commit a4a4194 into main Aug 7, 2026
14 of 15 checks passed
@PunGrumpy
PunGrumpy deleted the motion/05-reduced-motion branch August 7, 2026 16:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant