Open Bug 1929870 Opened 16 days ago Updated 1 day ago

Occasional FLIP animation flicker

Categories

(Core :: DOM: Animation, defect)

Firefox 131
defect

Tracking

()

UNCONFIRMED

People

(Reporter: kvndy, Unassigned, NeedInfo)

Details

Attachments

(3 files)

Steps to reproduce:

JSFiddle that shows occasional flicker during FLIP animation (manually constructed via Web Animations API) on slider drag:
https://jsfiddle.net/wxofypj0/

This also happens frequently using what I call Relative Animation (manually created Web Animations that animate from a delta to zero with additive or accumulate compsiting), when rapidly pressing the 6, 7, 8, and 9 number keys:
https://kevindoughty.gitlab.io/preact-sibling-animation/

Actual results:

Occasional flicker.

It might be due to interruptible layout not adding animations at the same time as value change. It might also be related to vsync but that is not a particularly informed opinion.

Atttached image captures flicker in action. The div is rendered partially offscreen to the left, outside of all possible prescribed values, suggesting to me the animation is added and its effect computed before the discrete value change.

Expected results:

Should not flicker. Chromium does not flicker.

FLIP and Relative Animation both animate from a delta to zero (or identity). Value and animation change need to happen simultaneously to be effective.

The Bugbug bot thinks this bug should belong to the 'Core::DOM: Animation' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: Untriaged → DOM: Animation
Product: Firefox → Core

Failed to mention this is a very longstanding bug

rapidly pressing 6 7 8 9 (in any order) keys will cause elements to flicker.
Repros with hw-wr/sw-wr so it is not a hardware thing.

The gitlab site is not a minimal reproduction so I made a second fiddle that animates in the same way. The difference from the first fiddle is it does not call getBoundingClientRect, uses accumulate compositing instead of replace, and I gave it a cubic bezier timing function.
https://jsfiddle.net/ghr6a0ke/

The severity field is not set for this bug.
:boris, could you have a look please?

For more information, please visit BugBot documentation.

Flags: needinfo?(boris.chiou)

In-house version

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: