mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
* chore(ai-workflow): track repo-managed review tooling * fix(ai-workflow): remove repo-specific path assumptions Make shared workflow hooks and APK testing guidance resolve paths from the repo and contributor environment so the tooling works for all contributors, not just one machine.
41 lines
1.0 KiB
Markdown
41 lines
1.0 KiB
Markdown
---
|
|
title: Use Transitions for Non-Urgent Updates
|
|
impact: MEDIUM
|
|
impactDescription: maintains UI responsiveness
|
|
tags: rerender, transitions, startTransition, performance
|
|
---
|
|
|
|
## Use Transitions for Non-Urgent Updates
|
|
|
|
Mark frequent, non-urgent state updates as transitions to maintain UI responsiveness.
|
|
|
|
**Incorrect (blocks UI on every scroll):**
|
|
|
|
```tsx
|
|
function ScrollTracker() {
|
|
const [scrollY, setScrollY] = useState(0)
|
|
useEffect(() => {
|
|
const handler = () => setScrollY(window.scrollY)
|
|
window.addEventListener('scroll', handler, { passive: true })
|
|
return () => window.removeEventListener('scroll', handler)
|
|
}, [])
|
|
}
|
|
```
|
|
|
|
**Correct (non-blocking updates):**
|
|
|
|
```tsx
|
|
import { startTransition } from 'react'
|
|
|
|
function ScrollTracker() {
|
|
const [scrollY, setScrollY] = useState(0)
|
|
useEffect(() => {
|
|
const handler = () => {
|
|
startTransition(() => setScrollY(window.scrollY))
|
|
}
|
|
window.addEventListener('scroll', handler, { passive: true })
|
|
return () => window.removeEventListener('scroll', handler)
|
|
}, [])
|
|
}
|
|
```
|