# primus/eventemitter3

EventEmitter3 - Because there's also a number 2. And we're faster.

Repository: https://github.com/primus/eventemitter3
Canonical: https://ross.abutalabs.com/products/eventemitter3
Language: JavaScript
License: MIT
License Family: permissive
Topics: eventemitter, nodejs, browser
Last push: 2026-01-19T15:02:50+00:00

## Health v2 (maintenance only)
Score: 71/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 63, release rhythm 66, longevity 100
- inputs: {"age_days": 4725, "days_push": 226, "days_rel": 226, "gap_med": 0.0, "n_releases_24m": 3}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 3538, forks 236 (observed 2026-08-28T04:08:09.139987+00:00)

## What it is
EventEmitter3 is a high-performance JavaScript event emitter that is API-compatible with Node.js's built-in EventEmitter while also running in browsers. It is micro-optimized for speed, supports custom 'this' context for listeners without fn.bind, and is written in EcmaScript 3 so it works in very old browsers and Node versions.

## Use cases
- fast event emitter for node.js
- event emitter library that works in the browser
- drop-in replacement for node EventEmitter with better performance
- lightweight pub/sub event bus for javascript
- event emitter with custom this context instead of fn.bind
- event system compatible with old browsers and node versions

## When to choose
- You need maximum event emission throughput in Node.js or the browser
- You want a drop-in Node.js EventEmitter replacement that adds contextual binding and removes bind() overhead
- You must support very old browsers or Node versions since the code is EcmaScript 3

## When to avoid
- You rely on Node.js domains or the newListener/removeListener lifecycle events
- You need setMaxListeners, getMaxListeners, prependListener, or prependOnceListener methods
- You expect an error to be thrown when emitting an 'error' event with no listeners

## Facets
- artifact type: library
- maturity: stable
- function: message-queue
- domain: web-development, frontend, backend, developer-tools
- platform: browser, bun, cross-platform
- tags: event-emitter, pubsub, event-bus, publish-subscribe, observer-pattern, high-performance, drop-in-replacement, es3-compatible, javascript, nodejs, electron, deno

## Member repositories
- primus/eventemitter3 (main) score 71

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:08:09.139987+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-29T18:35:01.537784+00:00, confidence not recorded.
  - readme: https://github.com/primus/eventemitter3 (fetched 2026-08-28T04:08:09.139987+00:00, sha 8a0723842332)
  - registry_npm: https://registry.npmjs.org/eventemitter3 (fetched 2026-08-29T09:29:03.158625+00:00, sha 7160700d9b2e)
- Data as of 2026-08-30T08:39:29.467469+00:00.
