
Security News
GitHub Actions Adds cache-mode to Limit Cache Poisoning Risk
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.
@uekichinos/browser-gate
Advanced tools
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.
Detect outdated browsers and redirect or block access. Supports three detection modes — use one, two, or all three together.
Zero dependencies. Works via ESM, CommonJS, or <script> tag.
npm install @uekichinos/browser-gate
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>
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>
| Option | Type | Default | Description |
|---|---|---|---|
redirect | string | — | URL to redirect to when outdated |
onOutdated | (info: OutdatedInfo) => void | — | Callback instead of redirect |
features | FeatureKey[] | true | false | true | Feature detection (see below) |
minVersions | { chrome?: number, firefox?: number, safari?: number, edge?: number, opera?: number } | — | Minimum version per browser |
checkLatest | boolean | { tolerance?: number } | — | Live latest-version check |
Either redirect or onOutdated must be provided.
Runs automatically. Checks whether the browser supports five modern APIs:
| Feature | Absent in |
|---|---|
globalThis | IE11, very old browsers |
fetch | IE11 |
Promise.allSettled | Chrome < 76, Firefox < 71, Safari < 13 |
IntersectionObserver | IE11, old Safari |
CSS.supports | IE11 |
// 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 },
})
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,
},
})
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 } })
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 callbackUse 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>`
},
})
<script> tag (no bundler)<script src="https://unpkg.com/@uekichinos/browser-gate/dist/index.global.js"></script>
<script>
BrowserGate.browserGate({ redirect: '/outdated' })
</script>
| Browser | Detected via |
|---|---|
| Chrome | Chrome/XX in UA |
| Firefox | Firefox/XX in UA |
| Safari | Version/XX Safari in UA |
| Edge (Chromium) | Edg/XX in UA |
| Edge (legacy) | Edge/XX in UA |
| Opera | OPR/XX in UA |
Unrecognised browsers always pass through.
MIT © uekichinos
FAQs
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.
The npm package @uekichinos/browser-gate receives a total of 24 weekly downloads. As such, @uekichinos/browser-gate popularity was classified as not popular.
We found that @uekichinos/browser-gate demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.

Company News
Allow myself to introduce... myself.

Research
/Security News
A Twitch browser extension on Chrome and Firefox forwards users’ live OAuth session tokens through proxies controlled by a Russian bot service.