# sindresorhus/emittery

Simple and modern async event emitter

Repository: https://github.com/sindresorhus/emittery
Canonical: https://ross.abutalabs.com/products/emittery
Language: JavaScript
License: MIT
License Family: permissive
Topics: event-emitter, event-listener, emitter, async, promise, nodejs, npm-package, javascript
Last push: 2026-05-24T15:04:08+00:00

## Health v2 (maintenance only)
Score: 75/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 84, release rhythm 49, longevity 100
- inputs: {"age_days": 3201, "days_push": 101, "days_rel": 182, "gap_med": 144, "n_releases_24m": 4}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 2073, forks 83 (observed 2026-08-28T04:06:10.499183+00:00)

## What it is
Emittery is a small, zero-dependency JavaScript library providing an async-first event emitter with strongly typed events, async iteration, AbortSignal cancellation, and lifecycle hooks. It works in Node.js and bundled browser environments as a modern alternative to EventEmitter.

## Use cases
- emit events asynchronously without blocking the event loop
- typed event emitter for TypeScript projects
- subscribe to events with async iteration for-await-of
- cancel event subscriptions with AbortSignal
- lazy setup and teardown of listener resources
- pub/sub communication between app components

## When to choose
- you want an async, promise-based event emitter instead of Node's EventEmitter
- you need TypeScript-typed events with zero dependencies
- you need async iteration or cancellation support in your event system

## When to avoid
- you need synchronous event dispatch with guaranteed immediate listener execution
- you need cross-process or distributed pub/sub messaging
- your environment cannot use ES modules or bundlers

## Facets
- artifact type: library
- maturity: stable
- function: middleware, developer-tools
- domain: developer-tools, web-development, backend, frontend
- platform: browser
- tags: event-emitter, pubsub, async, promise, typescript, zero-dependency, observer-pattern, nodejs, javascript

## Member repositories
- sindresorhus/emittery (main) score 75

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:06:10.499183+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T02:56:40.041419+00:00, confidence not recorded.
  - readme: https://github.com/sindresorhus/emittery (fetched 2026-08-28T04:06:10.499183+00:00, sha 2da4176bfdd5)
  - registry_npm: https://registry.npmjs.org/emittery (fetched 2026-08-29T10:36:58.472948+00:00, sha 37619eebfb1a)
- Data as of 2026-08-30T08:39:29.467469+00:00.
