Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including react-device-detect with all npm packages installed. Try it out:

require("react/package.json"); // react is a peer dependency. require("react-dom/package.json"); // react-dom is a peer dependency. var reactDeviceDetect = require("react-device-detect")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

react-device-detect v1.7.5

Detect device type and render your component according to it


Detect device, and render view according to detected device type.


To install, you can use npm or yarn:

npm install react-device-detect --save


yarn add react-device-detect



import {
} from "react-device-detect";
    <h1> This is rendered only in browser </h1>
    <h1> This is rendered only on mobile </h1>

if you don't need a view, you can use isMobile for conditional rendering

import {isMobile} from 'react-device-detect';

renderContent = () => {
    if (isMobile) {
        return <div> This content is unavailable on mobile</div>
    return <div> ...content </div>

render() {
    return this.renderContent();

If you want to leave a message to specific browser (e.g IE), you can use isIE selector

import {isIE} from 'react-device-detect';

render() {
    if (isIE) return <div> IE is not supported. Download Chrome/Opera/Firefox </div>
    return (

If you want to render a view on specific device and with specific condition:

import { browserName, CustomView } from 'react-device-detect';

render() {
    return (
        <CustomView condition={browserName === "Chrome"}>

Style the view

Yoa can style view component by passing class to viewClassName prop

<BrowserView viewClassName='custom-class'>
    <p> View content </p>

or you can pass inline styles to style prop

const styles = {
  background: "red",
  fontSize: "24px",
  lineHeight: "2"
<BrowserView style={styles}>
    <p> View content</p>

Selectors and views


isMobileboolreturns true if device type is mobile or tablet
isMobileOnlyboolreturns true if device type is mobile
isTabletboolreturns true if device type is tablet
isBrowserboolreturns true if device type is browser
isSmartTVboolreturns true if device type is smarttv
isWearableboolreturns true if device type is wearable
isConsoleboolreturns true if device type is console
isAndroidboolreturns true if os type is Android
isWinPhoneboolreturns true if os type is Windows Phone
isIOSboolreturns true if os type is iOS
isChromeboolreturns true if browser is Chrome
isFirefoxboolreturns true if browser is Firefox
isSafariboolreturns true if browser is Safari
isOperaboolreturns true if browser is Opera
isIEboolreturns true if browser is Internet Explorer
isEdgeboolreturns true if browser is Edge
isYandexboolreturns true if browser is Yandex
isChromiumboolreturns true if browser is Chromium
isMobileSafariboolreturns true if browser is Mobile Safari
osVersionstringreturns os version (e.g 7 for Windows or 6 for Android)
osNamestringreturns os name (e.g Windows, Android)
fullBrowserVersionstringreturns full browser version (e.g 65.0.3325.181 for Chrome)
browserVersionstringreturns browser major version (e.g 65 in Chrome or 9 in IE)
browserNamestringreturns browser name
mobileVendorstringreturns mobile device vendor (e.g LG, iPhone etc)
mobileModelstringreturns mobile device model (e.g Nexus 5)
engineNamestringreturns browser engine name (e.g Gecko for FF or WebKit for Chrome)
engineVersionstringreturns engine version
getUAstringreturns user agent
deviceTypestringreturns device type (e.g mobile or tablet)
deviceDetectfunctionreturn data object which includes all data about device (e.g version, engine, os etc.)


Available views:

  • MobileView
  • BrowserView
  • TabletView
  • AndroidView
  • IOSView
  • IEView
  • WinPhoneView
  • MobileOnlyView
  • SmartTVView
  • ConsoleView
  • WearableView
  • CustomView -- has condition prop which takes any expression which results into boolean (e.g browserName === 'Chrome')

Each view accepts three props:

  1. viewClassName - to style the view
  2. style - to add inline styles to view
  3. children - to pass children to view
  4. renderWithFragment - render with React.Fragment instead of <div>




RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free