---
title: "UI feedback transition longer than 500ms (lint/long-ui-duration)"
description: "lint/long-ui-duration: Hover, press and focus feedback over ~300ms feels sluggish; above 500ms users perceive the interface as slow and repeated interactions…"
canonical: https://void-design.vercel.app/rules/lint/long-ui-duration
lastModified: 2026-09-16
---

# UI feedback transition longer than 500ms

`lint/long-ui-duration` · severity **info** · category Lint · detected by `void lint` and `void audit`

## Why it matters

Hover, press and focus feedback over ~300ms feels sluggish; above 500ms users perceive the interface as slow and repeated interactions queue up.

## How to fix it

Keep interaction feedback at 100–200ms (`--duration-fast`), entrances at 200–400ms. Long durations are for ambient/decorative motion only.

## Example

```tsx
<a className="transition-colors duration-150 hover:text-fg" />
```

## More lint rules

`void lint` reports 67 rules in this category. Static source checks with no browser: Tailwind v4 silent failures, Next.js 16 API traps, React render-body bugs, accessibility markup, SEO files and motion hygiene.

- `outline-none-no-replacement` Focus outline removed without a visible replacement — [lint/outline-none-no-replacement](https://void-design.vercel.app/rules/lint/outline-none-no-replacement)
- `scale-zero-entry` Element enters from `scale(0)` — [lint/scale-zero-entry](https://void-design.vercel.app/rules/lint/scale-zero-entry)
- `scroll-timeline-no-fallback` Base rule hides an element; only an `@supports (animation-timeline: …)` block undoes it — [lint/scroll-timeline-no-fallback](https://void-design.vercel.app/rules/lint/scroll-timeline-no-fallback)
- `ease-in-enter` `ease-in` used for an entrance or hover — [lint/ease-in-enter](https://void-design.vercel.app/rules/lint/ease-in-enter)
- `no-reduced-motion` Animations present but no `prefers-reduced-motion` handling anywhere — [lint/no-reduced-motion](https://void-design.vercel.app/rules/lint/no-reduced-motion)
- `overflow-x-hidden-sticky` `overflow-x: hidden` on html/body/root wrapper breaks `position: sticky` — [lint/overflow-x-hidden-sticky](https://void-design.vercel.app/rules/lint/overflow-x-hidden-sticky)
- `vh-hero` Hero sized with `100vh` / `h-screen` — [lint/vh-hero](https://void-design.vercel.app/rules/lint/vh-hero)
- `will-change-static` `will-change` applied statically to many elements — [lint/will-change-static](https://void-design.vercel.app/rules/lint/will-change-static)

Detected by `void lint` and `void audit`. Explain it in a terminal: `void rules lint/long-ui-duration`
