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

@digitalronin/browser-or-node

v2.0.2

Published

Checks for browser or node environment

Readme

browser-or-node

NPM npm (scoped) node-current Test

A tiny, zero-dependency-at-runtime utility for detecting whether your code is running in a browser or in Node.js, and for pulling basic environment info once you know which.

Useful for isomorphic/universal JavaScript modules that need to branch their behavior depending on the runtime — for example, choosing fetch vs. a Node HTTP client, or deciding whether window/document are safe to touch.

Installing

# using NPM
> npm install @digitalronin/browser-or-node -S

# using Yarn
> yarn add @digitalronin/browser-or-node --save

Usage

const { isNode, isBrowser, getInfo } = require('@digitalronin/browser-or-node');

console.log(isNode());
console.log(isBrowser());
console.log(getInfo());

API

isNode()

Returns true if the code is running in a Node.js process, false otherwise.

if (isNode()) {
  // safe to use Node-only APIs, e.g. `fs`, `process.env`
}

isBrowser()

Returns true if the code is running in a browser (i.e. window and window.document are defined), false otherwise.

if (isBrowser()) {
  // safe to use `window`, `document`, `navigator`, etc.
}

getInfo()

Returns an object describing the current environment, shaped differently depending on the runtime:

  • In Node.js:

    {
      type: 'node',
      info: {
        version: '24.0.0',   // process.versions.node
        platform: 'darwin',  // process.platform
      }
    }
  • In a browser:

    {
      type: 'browser',
      info: {
        navigator: 'Mozilla/5.0 ...', // navigator.userAgent, or undefined if unavailable
      }
    }
  • If neither Node.js nor a browser is detected (e.g. a Web Worker or an unusual embedded runtime):

    {
      type: 'unknown';
    }

Development

> yarn install
> yarn test

Tests run via Jest and are checked on every push/PR by GitHub Actions.

Publishing

Publishing to npm is automated via GitHub Actions and is triggered by creating a GitHub Release — there is no manual npm publish step.

  1. Bump the version field in package.json (following semver) and commit the change to master.
  2. Create a GitHub Release with a tag matching the new version, prefixed with v (e.g. v2.0.1):
    > gh release create v2.0.1 --title "v2.0.1" --notes "Description of the change"
    This can also be done from the "Releases" page in the GitHub UI.
  3. Publishing the release triggers the Release workflow, which:
    • Installs dependencies
    • Runs format:check and test
    • Publishes the package to the npm registry with provenance attached
  4. Once the workflow completes successfully, the new version is live on npm. Progress can be checked under the repo's Actions tab.

The workflow authenticates to npm using OpenID Connect (trusted publishing) — no npm token or local npm login is needed to release a new version.

License

MIT