UseOS
guarahooks/use-osFreeHook
Detects the user's operating system.
Install it
npx shadcn@latest add https://guarahooks.com/r/use-os.jsonSource
1import { useMemo } from 'react';23export enum OS {4 Undetermined = 'undetermined',5 MacOS = 'macos',6 IOS = 'ios',7 Windows = 'windows',8 Android = 'android',9 Linux = 'linux',10}1112const macosPattern = /(Macintosh)|(MacIntel)|(MacPPC)|(Mac68K)/i;13const iosPattern = /(iPhone)|(iPad)|(iPod)/i;14const windowsPattern = /(Win32)|(Win64)|(Windows)|(WinCE)|(Windows)/i;15const androidPattern = /Android/i;16const linuxPattern = /Linux/i;1718function detectOS(userAgent: string): OS {19 if (20 iosPattern.test(userAgent) ||21 (macosPattern.test(userAgent) &&22 typeof document !== 'undefined' &&23 'ontouchend' in document)24 ) {25 return OS.IOS;26 }27 if (macosPattern.test(userAgent)) {28 return OS.MacOS;29 }30 if (windowsPattern.test(userAgent)) {31 return OS.Windows;32 }33 if (androidPattern.test(userAgent)) {34 return OS.Android;35 }36 if (linuxPattern.test(userAgent)) {37 return OS.Linux;38 }39 return OS.Undetermined;40}4142export function useOS(): OS {43 return useMemo(() => {44 if (typeof window === 'undefined' || typeof navigator === 'undefined') {45 return OS.Undetermined;46 }47 return detectOS(navigator.userAgent);48 }, []);49}
Files it writes
More from guarahooks
All 100 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| UseAbortControlleruse-abort-controller | guarahooks | Hooks | Free | no deps | |
| UseArrayStateuse-array-state | guarahooks | Hooks | Free | no deps | |
| UseAxiosuse-axios | guarahooks | Hooks | Free | no deps | |
| UseBatteryStatususe-battery-status | guarahooks | Hooks | Free | no deps | |
| UseBetterAuthuse-better-auth | guarahooks | Hooks | Free | no deps | |
| UseClickOutsideuse-click-outside | guarahooks | Hooks | Free | no deps | |
| UseConfirmuse-confirm | guarahooks | Hooks | Free | no deps | |
| UseCookieuse-cookie | guarahooks | Hooks | Free | no deps |
