npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@versini/ui-utilities

v1.4.1

Published

[![npm version](https://img.shields.io/npm/v/@versini/ui-utilities?style=flat-square)](https://www.npmjs.com/package/@versini/ui-utilities) ![npm package minimized gzipped size](<https://img.shields.io/bundlejs/size/%40versini%2Fui-utilities?style=flat-sq

Readme

@versini/ui-utilities

npm version npm package minimized gzipped size

A collection of utility functions for device detection and performance optimization.

This package provides lightweight utility functions commonly needed when building UI components, including device detection, viewport analysis, PWA mode detection, and function debouncing.

Table of Contents

Features

  • 📱 Device Detection: Detect mobile devices, tablets, iPhones, and iPads
  • 🚀 PWA Support: Detect if the app is running in standalone PWA mode
  • ⚡ Performance: Debounce utility for optimizing expensive function calls
  • 🔧 TypeScript: Fully typed with comprehensive type definitions
  • 🌲 Tree-shakeable: Import only the utilities you need
  • 🪶 Lightweight: Minimal footprint with no dependencies

Installation

npm install @versini/ui-utilities

Usage

import {
  debounce,
  isProbablyMobile,
  isProbablyTablet,
  isProbablyiPhone,
  isProbablyiPad,
  isPWAMode
} from "@versini/ui-utilities";

API Reference

debounce

Creates a debounced function that delays invoking the provided function until after the specified wait time has elapsed since the last time the debounced function was invoked.

const debouncedFn = debounce(func: (...args: any[]) => void, wait: number)

Parameters:

  • func - The function to debounce
  • wait - The number of milliseconds to delay

Returns: A new debounced function

Example:

const handleResize = debounce(() => {
  console.log("Window resized");
}, 300);

window.addEventListener("resize", handleResize);

isProbablyMobile

Determines if the current viewport width suggests a mobile device. Uses a width threshold of 403 pixels.

const isMobile = isProbablyMobile(): boolean

Returns: true if the viewport width is less than 403 pixels

Example:

if (isProbablyMobile()) {
  // Render mobile-specific UI
}

isProbablyTablet

Determines if the current viewport width suggests a tablet device. Uses a width range between 403 and 1220 pixels.

const isTablet = isProbablyTablet(): boolean

Returns: true if the viewport width is between 403 and 1220 pixels (inclusive)

Example:

if (isProbablyTablet()) {
  // Render tablet-specific UI
}

isProbablyiPhone

Attempts to detect if the current device is likely an iPhone. Uses a combination of platform detection, user agent analysis, screen size, and touch capability checks.

const isiPhone = isProbablyiPhone(): boolean

Returns: true if the device is likely an iPhone

Example:

if (isProbablyiPhone()) {
  // Apply iPhone-specific behavior
}

isProbablyiPad

Attempts to detect if the current device is likely an iPad. Uses a combination of platform detection, user agent analysis, screen size, and touch capability checks.

const isiPad = isProbablyiPad(): boolean

Returns: true if the device is likely an iPad

Example:

if (isProbablyiPad()) {
  // Apply iPad-specific behavior
}

isPWAMode

Detects if the app is running in standalone/PWA mode. Checks for both the standard display-mode media query and the iOS-specific standalone property.

const isPWA = isPWAMode(): boolean

Returns: true if the app is running as a standalone PWA

Example:

if (isPWAMode()) {
  // Hide browser-specific UI elements
}