npm install react-device-detector
EXAMPLE:
import useDeviceDetector from 'react-device-detector';
function MyComponent() { const device = useDeviceDetector();
return (
This is an iPhone
} {device.isAndroidTablet &&This is an Android tablet
} {device.isDesktop &&This is a desktop computer
}All Available Properties The hook returns an object with these detection properties:
isMobile True for all mobile phones isTablet True for all tablets isDesktop True for desktop/laptop devices
isIOS True for any iOS device isAndroid True for any Android device isWindowsPhone True for Windows phones
isKindle True for Kindle devices isSilk True for Amazon Silk browser isPlaybook True for Blackberry Playbook
isChrome Chrome/Chromium browsers isFirefox Firefox browser isSafari Safari (not Chrome on iOS) isEdge Microsoft Edge isOpera Opera browser isIE Internet Explorer
- Platform-Specific Components
function PlatformSpecificComponent() { const { isIPhone, isAndroidPhone, isDesktop } = useDeviceDetector();
if (isIPhone) return ; if (isAndroidPhone) return ; if (isDesktop) return ;
return ; }
- Responsive Layout with Device Detection
function ResponsiveLayout() { const device = useDeviceDetector();
return (
<div className={app-container ${device.isMobile ? 'mobile' : ''} ${device.isTablet ? 'tablet' : ''}
}>
{device.isMobile && }
{device.isTablet && }
{device.isDesktop && }
<main>
{device.isIPad && <IPadOptimizedContent />}
{device.isAndroidTablet && <AndroidTabletContent />}
{device.isDesktop && <DesktopContent />}
</main>
</div>
); }
- Browser-Specific Feature Detection
function BrowserFeatures() { const { isChrome, isFirefox, isSafari } = useDeviceDetector();
return (
{!isChrome && !isFirefox && !isSafari && (
<p>Please use Chrome, Firefox or Safari for best experience</p>
)}
</div>
); }
- Device-Specific Analytics
function AnalyticsTracker() { const device = useDeviceDetector();
useEffect(() => { if (device.isIPhone) { trackEvent('iPhone User'); } else if (device.isAndroidPhone) { trackEvent('Android Phone User'); } // etc... }, [device]);
return ; }
Performance Considerations
Efficient Re-rendering: The hook only triggers re-renders when device characteristics actually change Resize Optimization: Device detection is debounced during window resizing SSR Compatible: Safely falls back to default values during server-side rendering
TypeScript Support The package includes full TypeScript type definitions. Example with TypeScript:
import useDeviceDetector from 'react-advanced-device-detector';
interface DeviceProps { device: ReturnType; }
const DeviceInfo: React.FC = ({ device }) => (
function App() { const device = useDeviceDetector(); return ; }
Troubleshooting If you encounter any issues:
Check user agent: Log navigator.userAgent to verify detection
useEffect(() => { console.log('User Agent:', navigator.userAgent); }, []);
Verify hook output:
function DebugComponent() { const device = useDeviceDetector(); console.log('Device Info:', device); return null; }