Getting Started
App Providerglobal.d.tsThemesTypes
cn(...args)Text ParserUnits Converters
AnchorAvatarBreadcrumbBurgerButtonCardCarouselCheckerCodeColor PickerCommandConfettiCopyButtonDouble Helix WordsFloating IndicatorGroupHighlight TextIndicatorInputKbdLabelLoaderPaginationPassword RequirementPolymorphic SlotProgressProseRatingRunning AreaScroll AreaSheetsSkeletonSliderStackSvgTableTabsTextareaTimelineTimesToasterTooltipTyping WordsTypography
useClickOutsideuseClipboarduseDeviceInfouseDialoguseDidUpdateuseDirectionuseDisclosureuseDocumentTitleuseDocumentVisibilityuseElementInfouseEyeDropperuseFetchuseFullscreenuseGeoLocationuseHotkeysuseHoveruseIduseImagePopupuseInputStateuseIntersectionuseIntervaluseIsomorphicEffectuseListStateuseLocalStorageuseMeasureScrollbaruseMediaQueryuseMergedRefuseMouseuseMoveuseMutationObserveruseNetworkuseOpenStateuseOrientationuseOSusePaginationusePWAInstalleruseRandomColorsuseReducedMotionuseReloaduseResizeObserveruseScrollIntoViewuseStateHistoryuseTimeoutuseTouchuseTriggeruseUncontrolleduseValidatedStateuseViewportSizeuseWindowEventuseWindowScroll
Docs
Web
Hooks
useOs
useOrientation

Tracks screen orientation in real-time.

usePagination

Manages pagination state and navigation logic.


Edit this page on GitHub
  • Started
  • Utilities
  • Configuration
  • Components
  • Hooks
  • Examples
  • Github
  • Contributing
⌘+J

© 2025 oeri rights MIT


Designed in Earth-616

Built by oeri

useOS

Identifies the user’s operating system (Windows, macOS, iOS, Android, etc.).

Usage

Basic usage example to quickly see how the useOS works.

Browser


Device

"use client";
import { useOS } from "@/hooks/use-os";

export function UseOSDemo() {
  const model = useOS();
  return (
    <table>
      <tbody>
        <tr>
          <td>Browser</td>
          <td>
            <p suppressHydrationWarning className="ml-4 flex flex-row items-center gap-2">
              {model.browser?.icon && <model.browser.icon size={32} />}
              <span>{String(model.browser?.name)}</span>
            </p>
          </td>
        </tr>
        <tr>
          <td colSpan={2}>
            <hr className="my-4 border-t" />
          </td>
        </tr>
        <tr>
          <td>Model</td>
          <td>
            <p suppressHydrationWarning className="ml-4 flex flex-row items-center gap-2">
              <model.device.icon size={32} />
              <span>{String(model.device.name)}</span>
            </p>
          </td>
        </tr>
      </tbody>
    </table>
  );
}

Props API

Styles APITypeDefaultAnnotation
getValueInEffect?boolean | stringfalse

Source Codes

Full working code example, including necessary markup and styles. You can copy and paste this code directly to start using the component immediately.

use-os.ts