About import-on-visibility
import-on-visibility is a guide to a frontend loading pattern that delays module imports until components enter the viewport. It is for developers reducing initial page loading, and covers use cases, limitations, and loading fallbacks.
Key features
- 01Import components when visible
- 02Use IntersectionObserver
- 03Use visibility-loading libraries
- 04Show a module-loading fallback
- 05Identify cases where it is unsuitable
Use cases
- 01Defer below-the-fold components
- 02Load images or widgets while scrolling
- 03Reduce initial page loading
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ patternsdev/ skills --skill import-on-visibilityAfter installing, type/import-on-visibilityin Claude Code to confirm it loaded.
Details
From the project READMEImport On Visibility
Besides user interaction, we often have components that aren't visible on the initial page. A good example of this is lazy loading images that aren't directly visible in the viewport, but only get loaded once the user scrolls down.
As we're not requesting all images instantly, we can reduce the initial loading time. We can do the same with components! In order to know whether components are currently in our viewport, we can use the IntersectionObserver API, or use libraries such as react-lazyload or react-loadable-visibility to quickly add import on visibility to our application.
When to Use
- Use this for components that aren't visible on the initial page (e.g., below-the-fold content)
- This is helpful for lazy loading images, widgets, or heavy components as the user scrolls
When NOT to Use
- For above-the-fold content that must render immediately — deferring it causes visible layout shifts and slow LCP
- When the component is lightweight enough that lazy loading adds more overhead than it saves
- When the content is critical for SEO and needs to be present in the initial HTML
Instructions
- Use the
IntersectionObserverAPI to detect when components enter the viewport - Use libraries like
react-lazyloadorreact-loadable-visibilityfor quick implementation - Provide a loading fallback component while the module is being loaded
Details
Whenever a component is rendered to the screen, react-loadable-visibility detects that the element should be visible on the screen. Only then, it will start importing the module while the user sees a loading component being rendered.
This fallback component lets the user know that our application hasn't frozen: they simply need to wait a short while for the module to be loaded, parsed, compiled, and executed!