Browser helpers: URL search and hash navigation through the History API, typed localStorage/sessionStorage clients, Google gtag helpers, device detection and timezone-aware dates.
pnpm add @knitkode/browser
# or: npm install @knitkode/browser
import { createStorage, isMobile, navigateToParams } from "@knitkode/browser";
// update the query string without reloading, returns "?page=2&sort=name"
navigateToParams({ page: 2, sort: "name" });
// typed storage with encoded keys and values
const prefs = createStorage<{ theme: "dark" | "light"; visits: number }>({
theme: "light",
visits: 0,
});
prefs.set("theme", "dark");
prefs.get("theme"); // "dark"
if (isMobile()) {
// ...
}
Import from @knitkode/browser, or from one subpath per module, e.g. @knitkode/browser/navigateToParams.
@knitkode/browser/createStorage@knitkode/browser/getZonedDate@knitkode/browser/gtag@knitkode/browser/gtagPageview@knitkode/browser/isIE@knitkode/browser/isMobile@knitkode/browser/isWindowInsideIframe@knitkode/browser/listenUrlSearch@knitkode/browser/listenUrlSearchParams@knitkode/browser/navigateToHash@knitkode/browser/navigateToHashParams@knitkode/browser/navigateToMergedHashParams@knitkode/browser/navigateToMergedParams@knitkode/browser/navigateToParams@knitkode/browser/navigateToUrl@knitkode/browser/navigateWithoutUrlParam@knitkode/browser/redirectTo@knitkode/browser/storage@knitkode/browser/storageClientES modules only, with TypeScript declarations included. Use "moduleResolution": "bundler", "node16" or "nodenext" in TypeScript projects. See the repository README.
See CHANGELOG.md. Upgrading from @koine/*? Read the migration guide.