React Responsive Media Queries

10.0.1 · active · verified Sun Apr 19

react-responsive is a well-established and actively maintained library (current stable version 10.0.1) that simplifies the integration of CSS media queries into React applications. It provides a declarative API for responsive design, allowing developers to render components or apply logic based on viewport characteristics. The library offers two primary interfaces: the modern `useMediaQuery` hook (introduced in v8.0.0) for functional components and a `MediaQuery` component (using render props) for class components or older patterns. Key differentiators include its support for both hooks and component-based approaches, convenient camel-cased shorthand properties for media query expressions, and a `device` prop for explicitly setting device characteristics, which is crucial for server-side rendering (SSR) and testing environments. It also ships with comprehensive TypeScript types, ensuring robust development. The library maintains a steady release cadence, focusing on stability and modern React paradigms.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates the `useMediaQuery` hook for conditional rendering based on mobile, tablet, desktop, and orientation media queries.

import React from 'react';
import { useMediaQuery } from 'react-responsive';

const MyResponsiveComponent = () => {
  const isMobile = useMediaQuery({ maxWidth: 767 });
  const isTablet = useMediaQuery({ minWidth: 768, maxWidth: 1023 });
  const isDesktop = useMediaQuery({ minWidth: 1024 });
  const isPortrait = useMediaQuery({ orientation: 'portrait' });

  return (
    <div>
      <h2>Responsive View</h2>
      {isMobile && <p>You are viewing this on a Mobile device!</p>}
      {isTablet && <p>You are viewing this on a Tablet!</p>}
      {isDesktop && <p>You are viewing this on a Desktop!</p>}
      <p>Orientation: {isPortrait ? 'Portrait' : 'Landscape'}</p>

      <p>This demonstrates how to use the `useMediaQuery` hook to conditionally render content based on various screen dimensions and orientations. It's a clean way to apply responsive logic directly within your functional components.</p>
    </div>
  );
};

export default MyResponsiveComponent;

view raw JSON →