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 🙏

© 2024 – Pkg Stats / Ryan Hefner

leizy

v1.0.1

Published

A React wrapper component that enables lazy loading

Downloads

2

Readme

Leizy

MIT Licence npm version

Introduction

Leizy lazy loads your components when the component comes into the viewport. Powered by the intersection observer :fire::fire:

Read more about the intersection observer here: https://www.w3.org/TR/intersection-observer/

Why?

Initial loading of React components can sometimes slow your app down. If your components do some heavy lifting under the hood, e.g. fetching data or loading five hundred cat pictures at once (while the viewport can only show 20 full pictures at once) is not efficient.

How?

Leizy is a React component that creates an Intersection observer hook. Leize prevents the wrapped component from rendering initially if it's not visible on the viewport (by a certain amount). The user can customize the threshold when the component will render on the DOM. The fallback component (which is shown if the component doesn't pass the threshold value set by the user) can be also configured manually. Leizy uses an outer ref on a div component and the default fallback component is just a plain React fragment.

Installation

  1. Run npm install leizy --save. TypeScript typings are included in the library.
  2. Import Leizy in your code
import { Loadable } from 'leizy';
  1. Wrap your component in a Loadable
import { Loadable } from 'leizy';

const LazyLoadedCatPictureContainer = () => <Loadable><CatPicture/></Loadable>

Optionally, you can use the component prop to set your component, like so:

import { Loadable } from 'leizy';

const LazyLoadedCatPictureContainer = () => <Loadable component={<CatPicture/>}/>

Configuring Leizy

Custom fallback component

You can insert a custom fallback component:

import { Loadable } from 'leizy';

const LazyLoadedCatPictureContainer = () => <Loadable fallback={<div>Loading...</div>}><CatPicture/></Loadable>

Custom render threshold

You can customize the rendering threshold of Leizy. In this example, a value of 0.8 is shown. It means, that if more than 80% of the component is visible on the page/document, the inner component will render.

import { Loadable } from 'leizy';

const LazyLoadedCatPictureContainer = () => <Loadable threshold={0.8}><CatPicture/></Loadable>

Leizy is extremely powerful if you want to implement a scrolling view or your page has so much content that it needs to be scrolled down.

Known issues

  • The intersection observer hook continues to re-render the component even if the ref has been cleared

Contributing

Please open an issue if you find a bug in the library. Contributions are welcome!

License

MIT license