New:Microsoft Teams Notifications Are Now Available in Socket.Learn more
Get Started

@uekichinos/browser-gate

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@uekichinos/browser-gate

Detect outdated browsers and redirect or block access. Supports feature detection (default), minimum version checks, and live latest-version checks via endoflife.date — use one, two, or all three together.

Source
npmnpm
Version
0.1.4
Version published
Weekly downloads
24
-86.89%
Maintainers
1
Weekly downloads
 
Created
Source

@uekichinos/browser-gate

Socket Badge

Detect outdated browsers and redirect or block access. Supports three detection modes — use one, two, or all three together.

  • Feature detection (default) — checks for modern browser APIs
  • Minimum version — fails if browser version is below your threshold
  • Latest version — live check via endoflife.date API

Zero dependencies. Works via ESM, CommonJS, or <script> tag.

Installation

npm install @uekichinos/browser-gate

Quick start

Place in <head> — before your app loads — so outdated browsers are caught early.

<script type="module">
  import { browserGate } from '@uekichinos/browser-gate'
  await browserGate({ redirect: '/outdated' })
</script>

API

browserGate(options)

Returns a Promise<void>. Resolves silently if the browser passes all checks. Redirects or calls onOutdated if it fails.

await browserGate(options: BrowserGateOptions): Promise<void>

Options

OptionTypeDefaultDescription
redirectstringURL to redirect to when outdated
onOutdated(info: OutdatedInfo) => voidCallback instead of redirect
featuresFeatureKey[] | true | falsetrueFeature detection (see below)
minVersions{ chrome?: number, firefox?: number, safari?: number, edge?: number, opera?: number }Minimum version per browser
checkLatestboolean | { tolerance?: number }Live latest-version check

Either redirect or onOutdated must be provided.

Detection modes

Mode 1 — Feature detection (default)

Runs automatically. Checks whether the browser supports five modern APIs:

FeatureAbsent in
globalThisIE11, very old browsers
fetchIE11
Promise.allSettledChrome < 76, Firefox < 71, Safari < 13
IntersectionObserverIE11, old Safari
CSS.supportsIE11
// Default — checks all five features
await browserGate({ redirect: '/outdated' })

// Custom feature list
await browserGate({
  redirect: '/outdated',
  features: ['fetch', 'IntersectionObserver'],
})

// Disable feature detection
await browserGate({
  redirect: '/outdated',
  features: false,
  minVersions: { chrome: 100 },
})

Mode 2 — Minimum version

Checks the detected browser version against your thresholds. Only browsers you list are checked — others pass through.

Uses User-Agent parsing. Note: UA strings can be spoofed, so this is best combined with feature detection.

await browserGate({
  redirect: '/outdated',
  minVersions: {
    chrome: 100,
    firefox: 100,
    safari: 15,
    edge: 100,
  },
})

Mode 3 — Latest version (async)

Fetches live version data from endoflife.date and checks whether the browser is up to date.

Use tolerance to allow a few versions behind (useful since Chrome releases every 4 weeks).

Fails open on network error, timeout (5s), or unrecognised browser — your users are never blocked due to an API outage.

// Must be on latest
await browserGate({ redirect: '/outdated', checkLatest: true })

// Allow up to 2 versions behind
await browserGate({ redirect: '/outdated', checkLatest: { tolerance: 2 } })

Combining all three modes

Any failing check triggers the outdated handler.

await browserGate({
  redirect: '/outdated',
  features: ['fetch', 'IntersectionObserver', 'CSS.supports'],
  minVersions: { chrome: 100, safari: 15 },
  checkLatest: { tolerance: 2 },
})

onOutdated callback

Use onOutdated instead of redirect to handle the outdated case yourself.

await browserGate({
  onOutdated: (info) => {
    console.log(info.browser)  // 'chrome'
    console.log(info.version)  // '80'
    console.log(info.reasons)
    // [
    //   'Missing feature: IntersectionObserver',
    //   'Below minimum version: chrome >= 100 (detected: 80)',
    // ]

    document.body.innerHTML = `<p>Please update your browser.</p>`
  },
})

Via <script> tag (no bundler)

<script src="https://unpkg.com/@uekichinos/browser-gate/dist/index.global.js"></script>
<script>
  BrowserGate.browserGate({ redirect: '/outdated' })
</script>

Supported browsers detected

BrowserDetected via
ChromeChrome/XX in UA
FirefoxFirefox/XX in UA
SafariVersion/XX Safari in UA
Edge (Chromium)Edg/XX in UA
Edge (legacy)Edge/XX in UA
OperaOPR/XX in UA

Unrecognised browsers always pass through.

License

MIT © uekichinos

Keywords

uekichinos

FAQs

Package last updated on 11 Apr 2026

Related posts