Tapable is a small JavaScript module that provides many Hook classes for building plugin systems, letting you define sync and async hooks (including bail, waterfall, and loop behaviors). Developers can register plugin callbacks on named hooks and then trigger those hooks, with Tapable managing argument passing and optimized execution order based on the registered taps.
Project status
- Actively maintained, evidenced by a recent upstream push on 2026-06-05 and multiple recent versioned updates (v2.3.1 to v2.3.3) within 2026.
- Update cadence appears steady, with updates on 2026-03-23, 2026-03-23, 2026-04-21, and then activity again by 2026-06-05 (roughly monthly, with an extra same-day update in March).
AI summary generated Today
Recent updates
v2.3.3
1 month agov2.3.3 is presented as a patch release focused on performance improvements. The diff shows multiple runtime fast paths in tap registration, hook compilation, and hook-map/multi-hook hot loops, plus benchmark and workflow updates.
v2.3.2
2 months agov2.3.2 is a patch release that changes how tap ordering constraints handle `before` entries that do not match any registered tap name. It reverts prior behavior so invalid `before` values are no longer ignored during hook scheduling.
v2.3.1
2 months agov2.3.1 makes targeted fixes to tap option handling in the Hook implementation, specifically around trimming tap names and ignoring invalid `before` constraints. The release notes only mention those behavioral tweaks, but the actual diff also includes substantial repository tooling and dev-dependency changes (yarn to npm, Jest upgrades, changesets/CI workflow additions).
v2.3.0
8 months agov2.3.0 primarily updates the TypeScript type definitions for tapable. Release notes mention adding a new `TypedHookMap` type, and the diff confirms new exported typings, but it also changes existing generic and callback signatures used by hook map factories and interceptors.
Featuresv2.2.3
9 months agov2.2.3 includes a fix for promise-based hook taps so that falsy rejected values are treated as errors, instead of being mishandled. The diff also shows a number of mechanical refactors (function declaration style, minor variable renames) plus some additional test coverage for waterfall hooks with undefined and null results.
v2.2.2
5/19/2025v2.2.2 primarily updates the TypeScript typings to add proper interceptor typing on the Hook class. The JavaScript code changes in this diff are largely non-functional formatting adjustments, while the repo tooling and CI setup were also updated (linting, prettier, and removal of codecov).
Featuresv2.2.1
9/13/2021Release v2.2.1 claims only a typings fix for tapable. The code diff, however, shows specific TypeScript declaration changes to the Hook class, which can affect how developers type-check calls, especially around withOptions chaining.
v2.2.0
12/4/2020v2.2.0 adds basic browser support and adjusts the hook code generation to avoid arrow functions. It also introduces internal codegen tweaks intended to improve parsing behavior and execution shape in common paths.
Featuresv2.1.1
11/9/2020v2.1.1 is a small patch release. The only code changes are in TypeScript declaration files (tapable.d.ts) plus a package.json version bump, described as a workaround for a JSDoc-related TypeScript issue.
v2.1.0
11/9/2020v2.1.0 updates tapable's TypeScript type definitions to support custom options on taps. It also adjusts the typing for interceptor.register. The changes in the diff are type-level only (tapable.d.ts), there is no runtime code change shown.
Features