# mini-coi

> A minimalistic version of coi-serviceworker

Latest version **0.4.3** (published 2025-12-10) · MIT license · 0 weekly downloads

## Install

```sh
npm install mini-coi
pnpm add mini-coi
yarn add mini-coi
bun add mini-coi
```

Provides the command `mini-coi`.

## Health

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

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.4.3 |
| Published | 2025-12-10 |
| First published | 2023-07-26 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 10.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 33 |
| Author | Andrea Giammarchi |
| Maintainers | webreflection |
| Keywords | mini, coi, coi-serviceworker |

## Links

- npm: https://www.npmjs.com/package/mini-coi
- Repository: https://github.com/WebReflection/mini-coi
- Homepage: https://github.com/WebReflection/mini-coi#readme
- Issues: https://github.com/WebReflection/mini-coi/issues
- npm.io page: https://npm.io/package/mini-coi

## Dependencies (1)

- [static-handler](https://npm.io/package/static-handler.md) ^0.5.3

## Alternatives

- [cron](https://npm.io/package/cron.md) — 4.9M weekly downloads
- [@vercel/queue](https://npm.io/package/@vercel/queue.md) — 731.6K weekly downloads
- [create-sonicjs](https://npm.io/package/create-sonicjs.md) — 1.6K weekly downloads
- [@exellix/jobs-api](https://npm.io/package/@exellix/jobs-api.md) — 941 weekly downloads
- [@forwardimpact/libskill](https://npm.io/package/@forwardimpact/libskill.md) — 575 weekly downloads

## Recent versions

- 0.4.3 (latest) — 2025-12-10
- 0.4.2 — 2024-09-12
- 0.4.1 — 2024-09-11
- 0.4.0 — 2024-09-10
- 0.3.3 — 2024-02-07
- 0.3.2 — 2024-02-06
- 0.3.1 — 2024-02-06
- 0.3.0 — 2024-02-06
- 0.2.1 — 2023-09-27
- 0.2.0 — 2023-07-27
- 0.1.1 — 2023-07-26
- 0.1.0 — 2023-07-26
- 0.0.0 — 2023-07-26

## README

# mini-coi

This project ensures your browser's
[complicated Cross Origin Isolation (COI) settings](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements)
"just work"&#8482; for web workers. This is especially useful when you have no
control over the HTTP headers returned by the server.

The simplest way to use mini-coi is to **place the `mini-coi.js` file in the
root of your website (i.e. `/`), and reference it as the first child tag in the
`<head>` of your HTML documents**:

```html
<script src="/mini-coi.js" scope="./"></script>
```

For more complete technical details, read on...

## What is mini-coi?

A minimalistic *CLI* utility or a simplified version of [coi-serviceworker](https://github.com/gzuidhof/coi-serviceworker), with an optional `scope` attribute to define where Cross Origin Isolation should happen.

## CLI

Bootstrap a local server with all headers enforced:

```sh
npx mini-coi .

# the third argument is a path so ...
# npx mini-coi ./public/
# npx mini-coi ./test/
# ...
```

The *CLI* brings in what's possible already to do with [static-handler](https://github.com/WebReflection/static-handler/tree/main) by passing `--coi` by default.


## Service Worker

Allow headers in places like GitHub pages or any other server where you cannot change current headers:

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="./mini-coi.js" scope="./"></script>
</head>
</html>
```

#### What's different from coi-serviceworker?

  * no options at all: "*it just works*" ™
  * always *require-corp* to have this working on Safari as well as Chrome or Firefox
  * errors are just thrown in devtools

- - -

### How to use mini-coi as Service Worker

  * the file **must be a local file**, you can't use any CDN or raw GitHub URL, you need to copy the file content locally [^1]
  * the script *must not be a module*, it has to be exactly a `<script src="./mini-coi.js"></script>` at the top of your `<head>` tag in your page (or in general before any other `script` or `link` or `style` is used, it can be after `meta` and `title` though)

[^1]: You can either use the *CLI* utility:

    ```sh
    npx mini-coi -sw public/mini-coi.js

    // or ...
    npx mini-coi --service-worker public/mini-coi.js
    ```

    Or you can grab the file from a CDN and save it locally:

    ```sh
    # grab mini-coi.js and save it locally as mini-coi.js
    curl -LO https://raw.githubusercontent.com/WebReflection/mini-coi/main/mini-coi.js
    ```

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