Secure cookie management with security-first defaults.
import { CookieManager, CookieOptions } from '@zappzarapp/browser-utils/cookie';
// Set a persistent cookie (30 days)
CookieManager.set('theme', 'dark', CookieOptions.persistent('theme', 30));
// Get a cookie
const theme = CookieManager.get('theme'); // 'dark' | null
// Remove a cookie
CookieManager.remove('theme');| Export | Description |
|---|---|
CookieManager |
Static methods for cookie CRUD operations |
CookieOptions |
Immutable configuration for cookie attributes |
CookieOptionsInput |
Options interface for creating CookieOptions |
SameSiteValue |
Type: 'Strict' | 'Lax' | 'None' |
| Attribute | Default | Description |
|---|---|---|
secure |
true |
HTTPS only |
sameSite |
'Strict' |
Strongest CSRF protection |
path |
'/' |
Available site-wide |
import { CookieOptions } from '@zappzarapp/browser-utils/cookie';
// Session cookie (expires when browser closes)
const session = CookieOptions.session('sessionId');
// Persistent cookie (30 days)
const persistent = CookieOptions.persistent('prefs', 30);
// Custom options
const custom = CookieOptions.create({
name: 'token',
expires: 7, // 7 days
path: '/api',
domain: '.example.com',
secure: true,
sameSite: 'Lax',
});const options = CookieOptions.session('token')
.withExpires(7) // 7 days
.withPath('/api')
.withDomain('.example.com')
.withSecure(true)
.withSameSite('Lax');| Value | Description |
|---|---|
Strict |
Cookie never sent cross-site. Best for auth cookies. |
Lax |
Sent on top-level navigation (clicking links). Default in modern browsers. |
None |
Always sent (requires Secure). Use only when necessary for cross-site. |
// With options
CookieManager.set('theme', 'dark', CookieOptions.persistent('theme', 30));
// With inline options
CookieManager.set('lang', 'en', { name: 'lang', expires: 365 });const value = CookieManager.get('theme'); // string | nullif (CookieManager.has('theme')) {
// Cookie exists
}// Basic removal
CookieManager.remove('theme');
// With path/domain (must match original cookie)
CookieManager.remove('theme', { path: '/api', domain: '.example.com' });const all = CookieManager.all();
// { theme: 'dark', lang: 'en', ... }
const keys = CookieManager.keys();
// ['theme', 'lang', ...]CookieManager.clear();
// With specific path
CookieManager.clear({ path: '/api' });if (CookieManager.isEnabled()) {
// Cookies are available
}import { Result } from '@zappzarapp/browser-utils/core';
import { CookieManager } from '@zappzarapp/browser-utils/cookie';
// Set with Result
const setResult = CookieManager.setResult('key', 'value');
if (Result.isErr(setResult)) {
console.error('Failed to set cookie:', setResult.error.message);
}
// Get with Result
const getResult = CookieManager.getResult('key');
if (Result.isOk(getResult)) {
console.log('Value:', getResult.value);
}const options = CookieOptions.session('sessionId');
CookieManager.set('PHPSESSID', sessionId, options);const options = CookieOptions.persistent('remember', 30); // 30 days
CookieManager.set('remember_me', token, options);const options = CookieOptions.create({
name: 'api_token',
expires: 1, // 1 day
path: '/api',
sameSite: 'Strict',
});
CookieManager.set('api_token', token, options);// Only when truly needed for cross-site functionality
const options = CookieOptions.create({
name: 'tracking',
sameSite: 'None',
secure: true, // Required with SameSite=None
});
CookieManager.set('tracking', id, options);-
Always use Secure flag - Prevents interception over HTTP. Default is
true. -
Prefer SameSite=Strict - Strongest CSRF protection. Default is
'Strict'. -
Avoid SameSite=None - Only use if truly needed for cross-site functionality.
-
Short expiry for sensitive cookies - Session cookies should expire with the browser session.
-
Limit Path scope - Use specific paths when cookie is only needed for certain routes.
-
HttpOnly for server cookies - Cookies set by JavaScript are always accessible to JavaScript. Use server-side cookies with HttpOnly for authentication.
-
Warning for insecure cookies - Setting a non-secure cookie on HTTPS triggers a console warning.
-
Name/Value validation - Cookie names and values are validated to prevent injection attacks.
-
Path/Domain validation - Cookie
pathanddomainvalues are validated to prevent injection of additional cookie attributes via crafted values.