react-use-device

An npm package for react 16. useDevice is a custom hook that can be used to load different content on different viewports. The content also updates on screen resize. It works well also on SSR applications like does built with NextJS

Usage no npm install needed!

<script type="module">
  import reactUseDevice from 'https://cdn.skypack.dev/react-use-device';
</script>

README

react-use-device

A custom react hook to render content responsively based on device breakpoints. The contents also updates on screen resize. It works well also on SSR applications like does built with NextJS.

NPM JavaScript Style Guide

Install

npm install --save react-use-device

Usage with default breakpoint values

useDevice is a hook that returns an object with breakpoints for four devices.

{
    isMOBILE: device === isMOBILE,   // up to winndow.innerWidth of 768px
    isTABLET: device === isTABLET,   // up to winndow.innerWidth of 992px
    isLAPTOP: device === isLAPTOP,   // up to winndow.innerWidth of 1170
    isDESKTOP: device === isDESKTOP  // from window.innerWidth of 1170 up
};

Example

import React from "react";

import { useDevice } from "react-use-device";

const MyComponent = () => {
  const { isMOBILE, isTABLET, isLAPTOP, isDESKTOP } = useDevice();

  return (
    <section>
      {isMOBILE && <h1>I am a mobile screen</h1>}
      {isTABLET && <h1>I am a tablet screen</h1>}
      {isLAPTOP && <h1>I am a laptop screen</h1>}
      {isDESKTOP && <h1>I am a desktop screen</h1>}
    </section>
  );
};

export default MyComponent;

Usage with your own breakpoint values

useDevice accepts a breakpoints object as input, so you can adapat the breakpoints to your project needs. It is important to notice here that you can pass whatever values you wish, but the propety names must be as follows:

const breakpoints = {
  tablet: 650, // useDevice will return isMobile for wiewports < 650 and isTablet for viewports > 650
  laptop: 980, // useDevice will return isTablet for wiewports < 980 and isLaptop for viewports > 980
  desktop: 1200 // useDevice will return isLaptop for wiewports < 1200 and isDesktop for viewports > 1200
};

Example

import React from "react";

import { useDevice } from "react-use-device";

const MyComponent = () => {
  const breakpoints = {
    tablet: 650,
    laptop: 980,
    desktop: 1200
  };

  const { isMOBILE, isTABLET, isLAPTOP, isDESKTOP } = useDevice(breakpoints);

  return (
    <section>
      {isMOBILE && <h1>I am a mobile screen</h1>}
      {isTABLET && <h1>I am a tablet screen</h1>}
      {isLAPTOP && <h1>I am a laptop screen</h1>}
      {isDESKTOP && <h1>I am a desktop screen</h1>}
    </section>
  );
};

export default MyComponent;

License

MIT © alexBCN84