Format: YYYY-MM-DD-description.md - 2026-01-19-infrastructure-deployment.md - 2026-01-19-backend-api-implementation.md (in progress) Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
39 lines
815 B
Markdown
39 lines
815 B
Markdown
---
|
||
title: CSS content-visibility for Long Lists
|
||
impact: HIGH
|
||
impactDescription: faster initial render
|
||
tags: rendering, css, content-visibility, long-lists
|
||
---
|
||
|
||
## CSS content-visibility for Long Lists
|
||
|
||
Apply `content-visibility: auto` to defer off-screen rendering.
|
||
|
||
**CSS:**
|
||
|
||
```css
|
||
.message-item {
|
||
content-visibility: auto;
|
||
contain-intrinsic-size: 0 80px;
|
||
}
|
||
```
|
||
|
||
**Example:**
|
||
|
||
```tsx
|
||
function MessageList({ messages }: { messages: Message[] }) {
|
||
return (
|
||
<div className="overflow-y-auto h-screen">
|
||
{messages.map(msg => (
|
||
<div key={msg.id} className="message-item">
|
||
<Avatar user={msg.author} />
|
||
<div>{msg.content}</div>
|
||
</div>
|
||
))}
|
||
</div>
|
||
)
|
||
}
|
||
```
|
||
|
||
For 1000 messages, browser skips layout/paint for ~990 off-screen items (10× faster initial render).
|