Up to date
Published
2 min read

Trevor I. Lasn

Staff Software Engineer, Engineering Manager

CSS content-visibility: The Web Performance Boost You Might Be Missing

The content-visibility CSS property delays rendering an element, including layout and painting, until it is needed

Web performance optimization can be a real headache. Shaving off milliseconds here and there, minifying everything in sight, and praying to the performance gods.

Picture this: you’re scrolling through a massive webpage with hundreds of images, complex layouts, and enough content to fill a book. Without content-visibility, browsers dutifully render every single pixel, whether you can see it or not. It’s like a restaurant cooking every dish on the menu just in case someone orders it.

The content-visibility property tells browsers they can skip rendering elements until they’re about to enter the viewport. This might sound simple, but it’s a game-changer for long scrolling pages.

The contain-intrinsic-size property is content-visibility’s partner in crime. It provides a size estimate so the browser can reserve space before rendering, preventing layout shifts.

content-visibility works best on pages with lots of complex, off-screen content. News feeds, product listings, and documentation sites are perfect candidates. I’ve seen initial render times improve by 30-50% on content-heavy pages.

One important detail: content-visibility doesn’t just defer paint operations - it skips layout calculations entirely. This means the browser doesn’t waste time figuring out how to position elements nobody can see yet.

content-visibility isn’t free magic though. Each element with content-visibility: auto becomes a separate containing block. This can affect positioning and scroll anchoring. Here’s what to watch for:

After experimenting with content-visibility across different scenarios, I’ve found it works best when:

  1. Sections are clearly defined and independent
  2. Content below the fold is complex
  3. Users typically don’t need immediate access to hidden content

Feeds are a great example - users rarely jump straight to the bottom, and each post is self-contained.


Found this article helpful? You might enjoy my free newsletter. I share dev tips and insights to help you grow your coding skills and advance your tech career.

Interested in supporting this blog in exchange for a shoutout? Get in touch.


Liked this post?

Check out these related articles that might be useful for you. They cover similar topics and provide additional insights.

Webdev
8 min read

Stop Using localStorage for Sensitive Data: Here's Why and What to Use Instead

Understanding the security risks of localStorage and what to use instead for tokens, secrets, and sensitive user data

Oct 28, 2024
Read article
Webdev
3 min read

NPQ: Open source CLI tool that audits and protects your npm installs from malicious packages

A CLI tool that checks packages for security issues and social engineering attacks before they hit your project

Jul 26, 2025
Read article
Webdev
4 min read

Understanding Vue's Suspense

How the Suspense component manages async dependencies and improves loading states in Vue apps

Aug 23, 2024
Read article
Webdev
4 min read

LH and RLH: The CSS Units That Make Vertical Spacing Easy

Exploring new CSS line-height units that eliminate guesswork from vertical rhythm

Dec 3, 2024
Read article
Webdev
4 min read

Optimize Your Astro Site's <head> with astro-capo

Automatically improve your Astro site's performance using astro-capo

Oct 19, 2024
Read article
Webdev
3 min read

Preloading Responsive Images

How to properly preload responsive images to improve initial page load

Nov 28, 2024
Read article
Webdev
8 min read

Invisible columns in SQL

It’s a small feature, but it can make a big difference.

Aug 26, 2024
Read article
Webdev
3 min read

align-content: The Simplest Way to Center Content with CSS

Finally, we can center things in block layouts without flexbox gymnastics

Dec 13, 2024
Read article
Webdev
4 min read

Remove Unnecessary NPM Packages with eslint-plugin-depend

We don't need packages to handle basic JavaScript tasks

Aug 13, 2024
Read article

This article was originally published on https://www.trevorlasn.com/blog/css-content-visibility. It was written by a human and polished using grammar tools for clarity.