browsers
A frozen, lowercase enum of every value detect() can return. Use it instead of typing string literals.
Shape
export const browsers: {
readonly ANDROID: 'android';
readonly CHROME: 'chrome';
readonly EDGE: 'edge';
readonly FIREFOX: 'firefox';
readonly IE: 'ie';
readonly OPERA: 'opera';
readonly SAFARI: 'safari';
readonly UNKNOWN: 'unknown';
};
Object.freeze'd at build time — attempting to mutate it is a TypeError in strict mode.
Why use it
Three reasons:
- Refactor-safe. Renaming
'chrome'to'chromium'in a future major would be a one-line type change — every call site updates automatically. - No typos.
browsers.SAFRAIis a compile error;'safrai'is silently wrong. - Exhaustive switches.
case browsers.CHROME:is type-narrowed to the literal'chrome', so the compiler enforces exhaustiveness.
Example
import { detect, browsers } from 'get-browser';
const browser = detect();
if (browser === browsers.SAFARI) {
patchSafariScrollBug();
}
// Or as a switch
switch (browser) {
case browsers.CHROME: return 'chromium';
case browsers.EDGE: return 'chromium';
case browsers.FIREFOX: return 'gecko';
case browsers.SAFARI: return 'webkit';
case browsers.OPERA: return 'chromium';
case browsers.IE: return 'trident';
case browsers.ANDROID: return 'legacy-webkit';
case browsers.UNKNOWN: return 'unknown';
}