js-cookie

A simple, lightweight JavaScript API for handling browser cookies, client-side.

Library
npm
v3.0.8
22,588 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
74 /100 Good
Development Activity 64
Maintenance 56
Community 76
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
89 /100 Excellent
Architecture 88
Code Quality 90
Innovation 85
Learning Curve 95

js-cookie is a tiny, dependency-free JavaScript library that provides a clean, ergonomic API for creating, reading, and deleting HTTP cookies in the browser. It wraps the awkward document.cookie string interface behind straightforward set, get, and remove methods, handling encoding, attribute serialization, and RFC 6265 compliance automatically.

At under 800 bytes gzipped with no dependencies, it supports ES modules, AMD, and CommonJS, works across an extensive range of browsers, and lets you configure attribute defaults, per-call attributes, and custom encoding/decoding converters. It has become one of the most widely used cookie utilities in the JavaScript ecosystem, downloaded tens of millions of times each week.

What You Get

  • A minimal Cookies API with set, get, remove, withAttributes, and withConverter methods
  • Automatic RFC 6265-compliant encoding and decoding of cookie names and values
  • Configurable cookie attributes: expires, path, domain, secure, sameSite, and partitioned
  • Custom read/write converters for interoperability with cookies written by other systems
  • ES module, UMD, and CommonJS builds plus a namespace-conflict-safe noConflict mode

Common Use Cases

  • Persisting user preferences such as theme, language, or dismissed banners across sessions
  • Storing lightweight client-side state like feature flags or onboarding progress
  • Reading server-set cookies (e.g. CSRF tokens or session identifiers) from JavaScript
  • Managing consent and tracking opt-in/opt-out flags with explicit expiry control

Under The Hood

Architecture

js-cookie is built from three small ES modules in src/. api.mjs contains an init(converter, defaultAttributes) factory that closes over the active converter and default attributes and returns a frozen API object created via Object.create, exposing set, get, remove, withAttributes, and withConverter. set merges attributes with assign.mjs, converts numeric expires values to Date UTC strings, percent-encodes the cookie name, serializes attributes into the document.cookie string, and truncates attribute values at the first semicolon per RFC 6265 section 5.2. get splits document.cookie, decodes each name, and lazily builds a jar object, returning a single value or the whole map. converter.mjs holds the default read/write encoders, and the public entry point exports init(defaultConverter, { path: '/' }). The withAttributes and withConverter methods re-invoke init with merged state, giving an immutable, instance-per-configuration design.

Tech Stack

The library is plain ES2015-era JavaScript with no runtime dependencies. It is authored as native .mjs modules and bundled with Rollup (rollup.config.mjs) plus @rollup/plugin-terser into UMD and ES module dist artifacts. Tooling includes ESLint 10, Prettier 3, and a Grunt-driven test harness (Gruntfile.js) running QUnit suites, with Selenium WebDriver and BrowserStack for cross-browser verification and simple-git-hooks/nano-staged for pre-commit checks.

Code Quality

The source is exceptionally compact and readable — the entire API is roughly 100 lines. Tests are thorough: test/tests.js (~617 lines) and test/encoding.js (~1170 lines) exercise setting, reading, removal, attribute handling, edge-case encoding, and RFC compliance across real browsers. The get loop guards decoding with a try/catch to skip malformed cookies, and assign.mjs explicitly skips __proto__ to avoid prototype pollution. Immutability is enforced via Object.freeze on attributes and converters. There are no TypeScript types in-repo (types ship separately as @types/js-cookie).

API Design

The developer experience is a key strength: three intuitively named core methods, sensible defaults (site-wide path: '/'), and progressive configuration through withAttributes and withConverter that return new instances rather than mutating global state. Getting started requires a single import and one call. Documentation is extensive, covering every attribute, encoding behavior, converters, and namespace-conflict handling. The main friction points are cookie-removal gotchas (attributes must match those used to set) which the README calls out explicitly.

Used by 40 apps in this directory

TypeScript
76%
AGPL 3.0

Abby

Developer Tools · Product Management

166

Statically typed feature flags, remote config, and A/B testing with framework-native SDKs for TypeScript teams.

View details
31
Repo Health
70
Technical
64
Dependency
Built with
TypeScript 76%
MDX 18%
Updated 1 years ago
TypeScript
97%
AGPL 3.0

Bigcapital

Invoicing Finance

3,916

Self-hostable double-entry accounting platform with invoicing, inventory, multi-currency, and real-time financial reporting for small and medium businesses.

View details
90
Repo Health
77
Technical
61
Dependency
Built with
TypeScript 97%
Updated 6 days ago
Rust
54%
Other

Cap

Team Chat · Video Conferencing

22,884

Open source Loom alternative with GPU-accelerated recording, instant share links, AI summaries, and full self-hosting via Docker Compose.

View details
89
Repo Health
81
Technical
64
Dependency
Built with
Rust 54%
TypeScript 42%
Updated 4 days ago
Ruby
50%
Other

Chatwoot

Customer Support

37,254

Open-source omnichannel customer support platform with AI-powered agents, live chat, and self-hosting — a full Intercom and Zendesk alternative.

View details
95
Repo Health
78
Technical
69
Dependency
Built with
Ruby 50%
Vue 25%
JavaScript 22%
Updated 5 days ago
TypeScript
50%
Other

Dify

AI Development · Design Tools · Developer Tools

157,364

Visual LLM workflow platform with RAG pipelines, agent capabilities, and model management for building production AI applications.

View details
92
Repo Health
85
Technical
66
Dependency
Built with
TypeScript 50%
Python 47%
Updated 4 days ago
TypeScript
95%
AGPL 3.0

Docmost

CMS · Collaboration · Note Taking

21,801

Self-hosted collaborative wiki and knowledge base with real-time editing, diagrams, AI assistance, and enterprise access controls — a modern alternative to Confluence and Notion.

View details
89
Repo Health
70
Technical
69
Dependency
Built with
TypeScript 95%
Updated 5 days ago
TypeScript
98%
Other

Dokploy

Devops · Hosting Control Panel · Security

37,543

Self-hosted PaaS that deploys apps and databases on your own VPS using Docker, Traefik, and multi-build-system orchestration

View details
88
Repo Health
76
Technical
64
Dependency
Built with
TypeScript 98%
Updated 1 weeks ago
TypeScript
100%
Other

Dub

Analytics · Marketing

24,835

The open-source link attribution platform for short links, conversion tracking, and affiliate programs — powering 100M+ clicks monthly.

View details
81
Repo Health
78
Technical
62
Dependency
Built with
TypeScript 100%
Updated 4 days ago
TypeScript
90%
Other

FastGPT

AI Agents · AI Development

29,758

Build, debug, and deploy knowledge-based AI agents with a visual workflow editor, RAG retrieval, and support for any OpenAI-compatible LLM.

View details
93
Repo Health
84
Technical
66
Dependency
Built with
TypeScript 90%
Updated 4 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers