fix(lint): flag seek-unsafe CSS transitions - #3797
Open
Ftgn-dpA wants to merge 2 commits into
Open
Conversation
miguel-heygen
approved these changes
Sep 9, 2026
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.
What
Add a
css_transition_usedlint error for seek-unsafe CSS transitiondeclarations in
<style>blocks and inline styles.The rule covers standard and
-webkit-transition properties, while allowingexplicit
transition: none/transition-property: nonedeclarations andignoring custom properties.
Why
CSS transitions run on the browser clock rather than the seekable Hyperframes
timeline. Class or attribute changes can therefore restart a transition on
fresh render workers, causing parallel renders and snapshots to produce
different frames.
Fixes #3493.
How
Use PostCSS to inspect actual declarations instead of matching raw CSS text.
Unsafe declarations report an error with guidance to keep state changes in
classes or attributes and move the visual animation onto the paused GSAP
timeline.
Test plan
Unit tests added/updated
Manual testing performed — not required for this parser-only rule
Documentation updated — not applicable
bun run --filter @hyperframes/lint test— 648 passedbun run --filter @hyperframes/lint typecheckbunx oxlint packages/lint/src/rules/core.ts packages/lint/src/rules/core.test.tsbunx oxfmt --check packages/lint/src/rules/core.ts packages/lint/src/rules/core.test.ts