---
title: "Smoothness rules (smooth/*)"
description: "All 13 smoothness rules void reports, each with severity, why it matters and how to fix it."
canonical: https://void-design.vercel.app/rules/smooth
lastModified: 2026-09-16
---

# Smoothness rules

How the page feels after it loads: dropped frames during a scripted scroll, long animation frames, INP of real clicks, shifts after input, animated layout properties, idle rAF loops and reduced-motion handling. Run `void smooth` or `void audit`.

| Rule | Severity | Problem |
| --- | --- | --- |
| [`smooth/scroll-jank`](https://void-design.vercel.app/rules/smooth/scroll-jank.md) | warn | Frames are dropped while scrolling |
| [`smooth/long-frames-during-scroll`](https://void-design.vercel.app/rules/smooth/long-frames-during-scroll.md) | warn | Long animation frames block scrolling |
| [`smooth/scroll-listener-nonpassive`](https://void-design.vercel.app/rules/smooth/scroll-listener-nonpassive.md) | warn | Non-passive wheel/touch listener |
| [`smooth/inp-slow`](https://void-design.vercel.app/rules/smooth/inp-slow.md) | warn | Interactions are slow to respond (INP) |
| [`smooth/layout-shift-after-input`](https://void-design.vercel.app/rules/smooth/layout-shift-after-input.md) | warn | Layout shifts long after an interaction |
| [`smooth/layout-shift-on-scroll`](https://void-design.vercel.app/rules/smooth/layout-shift-on-scroll.md) | warn | Layout shifts while scrolling |
| [`smooth/animate-layout-property`](https://void-design.vercel.app/rules/smooth/animate-layout-property.md) | warn | Animation of a layout-triggering property |
| [`smooth/transition-all`](https://void-design.vercel.app/rules/smooth/transition-all.md) | warn | transition: all |
| [`smooth/will-change-overuse`](https://void-design.vercel.app/rules/smooth/will-change-overuse.md) | info | will-change is applied too broadly |
| [`smooth/reduced-motion-ignored`](https://void-design.vercel.app/rules/smooth/reduced-motion-ignored.md) | warn | Animations keep running with prefers-reduced-motion |
| [`smooth/raf-loop-idle`](https://void-design.vercel.app/rules/smooth/raf-loop-idle.md) | warn | requestAnimationFrame loop runs while idle |
| [`smooth/scroll-timeline-no-fallback`](https://void-design.vercel.app/rules/smooth/scroll-timeline-no-fallback.md) | error | Content is invisible without scroll-driven-animation support |
| [`smooth/multiple-webgl-contexts`](https://void-design.vercel.app/rules/smooth/multiple-webgl-contexts.md) | warn | Multiple WebGL contexts |
