1.0.1 • Published 1 year ago

runtime-info v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Nano untility library for JavaScript runtime detection

This is important for SSR/SSG, isomorphic runtime code checks: Should certain code be executed or not? Some code works only on server, some code works in browser, and some in browser, but not in WebWorkers.

Instead of a weak if (typeof window !== 'undefined') { ... } etc. checks which are easy to mistaken you can use this safe, fast and nano sized library. Using it gives you more readble code and reliability.

  • ✅ JavaScript runtime checks: isBrowser(), isServer(), isWebWorker()
  • ✅ Just 174 byte nano sized (ESM, gizpped)
  • ✅ Tree-shakable, side-effect free, so maybe just 58 byte for you
  • ✅ Zero dependencies
  • ✅ First class TypeScript support
  • ✅ 100% Unit Test coverage
  • yarn: yarn add runtime-info
  • npm: npm install runtime-info
import { isBrowser, isServer, isWebWorker } from 'runtime-info'

if (isBrowser()) {
  // safely use window, location, etc. here
}

if (isServer()) {
  // safely use Node.js/Deno API's here like process
}

if (isWebWorker()) {
  // safely use postMessage() inside of a webworker
}
const { isBrowser, isServer, isWebWorker } = require('runtime-info')

// same API like ESM variant

If you're running inside of a server-side environment where globals like window and document are defined (JSDOM), then you're effectively running in a browser-compatible environment, and this library will return true for isBrowser and false for isServer. This is an edge case. You can check for this using the following code: navigator.userAgent.includes("jsdom")