Socket
Socket
Sign inDemoInstall

react-lazy-no-flicker

Package Overview
Dependencies
5
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    react-lazy-no-flicker

Prevent flickering of loading fallback when using react suspense/lazy


Version published
Weekly downloads
165
decreased by-22.9%
Maintainers
1
Install size
12.0 kB
Created
Weekly downloads
 

Changelog

Source

[2.1.0][] - 2023-03-27

Added

  • Suspense wrapper.

Readme

Source

react-lazy-no-flicker

This light-weight library contains a hook to prevent the display of your loading component until a certain amount of time has passed, and wrapper around React.lazy to ensure that if the component is displayed it stays on screen for a minimum amount of time (defaults to half a second).

While purposely making a load take longer is a bit counter-intuitive, I think it gives a nicer user experience.

Usage

import { useState } from 'react';
import { lazy, Suspense } from 'react-lazy-no-flicker';

function Loading() {
	return <div>Loading ...</div>;
}

const MyComponent = lazy(() => import('./MyComponent'));

function App() {
	const [ show, setShow ] = useState(false);

	return <div>
		<button onClick={() => setShow(current => ! current)}>Toggle Component</button>
		<Suspense fallback={<Loading />}>
			{ show && <MyComponent /> }
		</Suspense>
	</div>;
}

lazy

Wrapper around React.lazy.

Takes a function that performs the import call as the first argument. Second argument is an optional options object with the following defaults ...

{
	time_before_fallback: 200, // The amount of time in ms before the loading fallback is displayed, should match parameter given to usePastDelay
	minimum_fallback_time: 500 // The minimum amount of time in ms the loading fallback will be displayed for
}

Suspense

Wrapper around React.Suspense which prevents the fallback component from being rendered until the delay has passed.

Adds an optional prop for delay, which defaults to 200. This should match the time_before_fallback value given to lazy.

usePastDelay

This hook takes one optional parameter for the amount of time to delay before it returns true. This defaults to 200ms. If you change this value be sure to modify time_before_fallback option in lazy to match.

  • Any imports taking less than time_before_fallback to load will be displayed immediately after loading.
  • Any imports taking more than time_before_fallback to load will display the fallback for at least minimum_fallback_time before returning.

FAQs

Last updated on 27 Mar 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc