NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #149 most downloaded on npm
EventEmitter3 focuses on performance while maintaining a Node.js AND browser compatible interface.
Last release 8 months ago
19 Jan 2026
Release timing varies
gaps range from 2 months to 2.7 years
Most releases are documented
notes for 28 of 38 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
38 releases · first in 2013
Restored TypeScript type definitions to their pre-5.0.2 state ( 92fb3c6 , 71ab64b ).
Fixed TypeScript type definitions ( #282 ).
One column per quarter.
Fixed type definitions for ESM import ( #279 ).
Moved the types condition to the top ( #258 ).
types condition to the top (#258).The umd directory has been renamed to dist and the eventemitter3.min.js bundle to eventemitter3.umd.min.js ( #252 ).
umd directory has been renamed to dist and the eventemitter3.min.jseventemitter3.umd.min.js (#252).import EventEmitter = require('eventemitter3') syntax is no longerRefined types to improve extends behavior ( #234 ).
Fixed TypeScript type definitions ( #232 ).
Fixed TypeScript type definitions ( #231 ).
Fixed compatibility with TypeScript 3.9 ( #226 ).
Fixed regressions introduced in version 4.0.1 and 4.0.2 ( #224 ).
Fixed regressions introduced in version 4.0.1 (#223).
Improved TypeScript type definitions (#219).
TypeScript type definitions now require TypeScript 3.
Revert "[ts] Improve ListenerFn interface (#193)" (08431250).
ListenerFn interface (#193)" (08431250).The ListenerFn interface has been updated to support async functions (#193).
ListenerFn interface has been updated to support async functions (#193).A source map is now included in the umd folder of the npm package (a053f61).
umd folder of the npm package (a053f61).Fixed TypeScript type definitions (#135).
EventEmitter.prototype.listeners() always returns an array. Use EventEmitter.prototype.listenerCount() for existence checking.
EventEmitter.prototype.listeners() always returns an array. Use EventEmitter.prototype.listenerCount() for existence checking.EventEmitter.prototype.setMaxListeners() has been removed. It was a noop and documented as not supported.EventEmitter.prototype.listenerCount().The npm package now contains a minified UMD bundle.
The npm package now contains a minified UMD bundle.
This release ships with TypeScript type definitions. Thanks to @delta62, @Stubb0rn, and @roblav96 who helped making this release possible!
This release ships with TypeScript type definitions. Thanks to @delta62, @Stubb0rn, and @roblav96 who helped making this release possible!
This release comes with a minor fix that allows EventEmitter to be imported as module namespace in ES6-compatible environments.
This release comes with a minor fix that allows EventEmitter to be imported as module namespace in ES6-compatible environments.
import { EventEmitter } from 'eventemitter3';
The reason for the major version bump is that there is a small breaking change. With eventemitter3@<2.0.0 you could inherit from the EventEmitter clas…
This release comes with some nice optimizations which make 2.0.0 our fastest release ever. If you are curious you can see the results of our benchmarks here: https://github.com/primus/eventemitter3/blob/master/benchmarks/README.md.
The reason for the major version bump is that there is a small breaking change.
With eventemitter3@<2.0.0 you could inherit from the EventEmitter class without calling the super constructor.
var EventEmitter = require('eventemitter3');
function MyEmitter() {}
MyEmitter.prototype = Object.create(EventEmitter.prototype, {
constructor: { value: MyEmitter }
});
With eventemitter3@2.0.0 this no longer works. Super constructor invocation is required.
var EventEmitter = require('eventemitter3');
function MyEmitter() {
EventEmitter.call(this);
}
MyEmitter.prototype = Object.create(EventEmitter.prototype, {
constructor: { value: MyEmitter }
});
This release ships with a new method called eventNames. It returns an array listing the events for which the emitter has registered listeners. The val
This release ships with a new method called eventNames. It returns an array listing the events for which the emitter has registered listeners. The values in the array will be strings or Symbols.
const EventEmitter = require('eventemitter3');
const ee = new EventEmitter();
ee.on('foo', () => {});
ee.on('bar', () => {});
ee.on(Symbol('s'), () => {});
console.log(ee.eventNames());
// => [ 'foo', 'bar', Symbol(s) ]
Nothing published for this version
We added a minor feature in this release. The EventEmitter constructor now has a prefixed property which lets you know what is the character used to p
We added a minor feature in this release.
The EventEmitter constructor now has a prefixed property which lets you know what is the character used to prefix the event names. This property is set to false when Object.create() is available.
var prefix = require('eventemitter3').prefixed;
console.log(prefix);
This release brings back the performances of version 0.1.6 without sacrificing features and safety.
This release brings back the performances of version 0.1.6 without sacrificing features and safety.
This releases brings support for using ES6 Symbols for event names!
This releases brings support for using ES6 Symbols for event names!
Nothing published for this version
In addition to that we've made a breaking change the internal argument order of the removeListener api. Historically we used the third argument as ind…
The way we export the module is changed. For legacy reasons we also supported .EventEmitter property on the returned eventemitter3 object but this has been completely removed. So your previous:
var EventEmitter = require('eventemitter3').EventEmitter;
Should be changed to:
var EventEmitter = require('eventemitter3');
In addition to that we've made a breaking change the internal argument order of the removeListener api. Historically we used the third argument as indication that only once listeners but we've changed to allow the third argument to be used as context argument as we could also remove listeners based on the context.
Other than that, we added support for a second argument in the listeners API. Happy hacking.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
First, a new feature. I've added support for context based emits by adding a third context param to on and once as illustrated by this example:
First, a new feature. I've added support for context based emits by adding a third context param to on and once as illustrated by this example:
var e = new EventEmitter();
e.on('event', function () {
this === context
}, context);
In addition to that, I've detected a critical bug that cause the complete events object to be erased when one of the events was added using .once.
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →