# ember-cookies

> Cookies abstraction for Ember.js that works both in the browser as well as with Fastboot on the server.

Latest version **1.3.0** (published 2024-12-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install ember-cookies
pnpm add ember-cookies
yarn add ember-cookies
bun add ember-cookies
```

## Health

**Score 45/100 (D)** — status: stable.

Positive: esm support; no vulnerabilities; high maintenance score.

Warnings: low downloads; no types.

Negative: stale.

## Facts

| | |
|---|---|
| Version | 1.3.0 |
| Published | 2024-12-28 |
| First published | 2016-03-30 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Node | >= 16.* |
| Dependencies | 1 |
| Unpacked size | 45.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 115 |
| Maintainers | mainmatter |
| Keywords | ember-addon |

## Links

- npm: https://www.npmjs.com/package/ember-cookies
- Repository: https://github.com/simplabs/ember-cookies
- Homepage: https://github.com/simplabs/ember-cookies#readme
- Issues: https://github.com/simplabs/ember-cookies/issues
- npm.io page: https://npm.io/package/ember-cookies

## Dependencies (1)

- [@embroider/addon-shim](https://npm.io/package/@embroider/addon-shim.md) ^1.7.1

## Recent versions

- 1.3.0 (latest) — 2024-12-28
- 1.4.1 (undefined) — 2025-11-08
- 1.2.0 — 2024-11-01
- 1.1.2 — 2024-01-08
- 1.1.1 — 2023-10-13
- 1.1.0 — 2023-10-13
- 1.0.0 — 2023-04-21
- 0.5.2 — 2019-10-29
- 0.5.1 — 2019-10-29
- 0.5.0 — 2019-10-10
- 0.4.0 — 2019-03-08
- 0.3.1 — 2018-06-28
- 0.3.0 — 2018-03-29
- 0.2.0 — 2018-02-13
- 0.1.3 — 2018-01-24
- … 16 more at https://npm.io/package/ember-cookies/versions

## README

![CI](https://github.com/simplabs/ember-cookies/workflows/CI/badge.svg)

# ember-cookies

`ember-cookies` implements an abstract __cookie API that works both in the
browser (via `document.cookie`) as well as with Fastboot in the server
context__ (using the `request` and `response` accessible via the `fastBoot`
service).

__Having access to cookies both in the browser as well as in FastBoot is key to
being able to share a common session.__

> [!NOTE]
> ember-cookies was written and is maintained by [Mainmatter](https://mainmatter.com) and contributors.
> We offer consulting, training, and team augmentation for Ember.js – check out our [website](https://mainmatter.com/ember-consulting/) to learn more!

## Installation

Install `ember-cookies` with

`ember install ember-cookies`

## Example Usage

### Typescript

```ts
// app/controllers/index.ts
import { inject as service } from '@ember/service';
import Controller from '@ember/controller';
import CookiesService from 'ember-cookies/services/cookies';

type Cookie = { name: string; value?: string };

export default class IndexController extends Controller {
  @service cookies!: CookiesService;

  get allCookies(): Cookie[] {
    this.cookies.write('now', new Date().getTime());

    const cookies = this.cookies.read();
    return Object.keys(cookies).reduce((acc, key) => {
      let value = cookies[key];
      acc.push({ name: key, value });

      return acc;
    }, [] as Cookie[]);
  }

  get singleCookie(): Cookie {
    const cookie = this.cookies.read('now');
    return { name: 'now', value: cookie };
  }
}
```

### Javascript

```js
// app/controllers/index.js
import Controller from '@ember/controller';
import { inject as service } from '@ember/service';
import { computed } from '@ember/object';

export default class ApplicationController extends Controller {
  @service cookies;

  @computed
  get allCookies () {
    let cookieService = this.cookies;
    cookieService.write('now', new Date().getTime());

    let cookies = cookieService.read();
    return Object.keys(cookies).reduce((acc, key) => {
      let value = cookies[key];
      acc.push({ name: key, value });

      return acc;
    }, []);
  }
}
```

## API

The `cookies` service has methods for reading and writing cookies:

* `read(name, options = {})`: reads the cookie with the given name, returns its
  value as a `String`; options can be used to set `raw` (boolean, disables
  URL-decoding the value).
* `write(name, value, options = {})`: writes a cookie with the given name and
  value; options can be used to set `domain`, `expires` (Date), `maxAge` (time
  in seconds), `path`, `secure`, `raw` (boolean, disables URL-encoding the
  value) and `sameSite`.
* `clear(name, options = {})`: clears the cookie so that future reads do not
  return a value; options can be used to specify `domain`, `path` or `secure`.
* `exists(name)`: checks whether a cookie exists at all (even with a falsy
  value) and returns `true` if that is the case or `false` otherwise.

## Testing

`ember-cookies` exposes the `clearAllCookies` test helper that clears
all known cookies to reset state before and/or after tests:

```js
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
import { clearAllCookies } from 'ember-cookies/test-support';

module('Unit | Some Module', function (hooks) {
  setupTest(hooks);

  hooks.beforeEach(function () {
    clearAllCookies();
  });

  // or you may wat to clear cookies after the test run
  hooks.afterEach(function () {
    clearAllCookies();
  });
});
```

## License

`ember-cookies` is developed by and &copy;
[Mainmatter GmbH](http://mainmatter.com) and contributors. It is released under the
[MIT License](https://github.com/simplabs/ember-simple-auth/blob/master/LICENSE).

`ember-cookies` is not an official part of [Ember.js](http://emberjs.com) and
is not maintained by the Ember.js Core Team.

---
_Source: https://npm.io/package/ember-cookies · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
