npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@lxsmnsyc/react-image

v0.5.9

Published

Responsive, suspenseful images in React

Readme

@lxsmnsyc/react-image

Responsive, Suspenseful, Lazy-loading Image component in React

NPM

Install

Yarn

yarn add @lxsmnsyc/react-image

NPM

npm -i @lxsmnsyc/react-image

Features

Lazy-loading

The component employs the lazy-loading mechanism for loading the image only when necessary, in which case, if the image is visible in the client's viewport. This is achieved through the use of IntersectionObserver API.

Suspenseful

The component uses React's Suspense API to await the image's loading process, so that the image won't feel "snappy" when being rendered in the browser. While being loaded, the provided fallback is rendered.

Responsive

The component not only can receive an image source, it can receive a list of sources, coupled with a media query, which allows the component to present the correct image source when it matches the given media query.

Compatibility

Although the native image element supports these kinds of mechanisms, not all browsers supports those features. This component allows the users to achieve the same kind of functionality but with bonuses.

Usage

Example

import Img from '@lxsmnsyc/react-image';

// Your code

<Img
  src="default.jpg"
  fallback={<LoadingFallback />}
  containerRef={containerRef}
  sources={[
    {
      source: 'portrait.jpg',
      media: '(orientation: portrait)',
    },
    {
      source: 'landscape.jpg',
      media: '(orientation: landscape)',
    },
  ]}
/>

The <Img> is semantically the same with the <img> component, with some properties removed (i.e. srcSet, sizes, referrerPolicy, crossOrigin, etc.). This component has some extra properties:

  • fallback - a ReactNode; used to display as a fallback to the component while the image is being loaded or while the image is out of the view (won't shift back after the image has been loaded).
  • containerRef - The container of the <Img>, in which case, the DOM parent. This is used to detect if the image has intersected the viewport visibility.
  • sources - an array of objects with properties source and media.
    • source - the source of the image to be selected.
    • media - the media query used for selecting the image. If similar media occurs in other objects, only the last occuring media that matches will be allowed to select the image to be presented.