
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
@wordpress/hooks
Advanced tools
A lightweight & efficient EventManager for JavaScript.
Install the module
npm install @wordpress/hooks --save
This package assumes that your code will run in an ES2015+ environment. If you're using an environment that has limited or no support for such language features and APIs, you should include the polyfill shipped in @wordpress/babel-preset-default in your code.
In your JavaScript project, use hooks as follows:
import { createHooks } from '@wordpress/hooks';
myObject.hooks = createHooks();
myObject.hooks.addAction(); //etc...
In the above example, we are creating a custom instance of the Hooks object and registering hooks there. The package also creates a default global instance that's accessible through the defaultHooks named exports, and its methods are also separately exported one-by-one.
In the WordPress context, that enables API functions to be called via the global wp.hooks object, like wp.hooks.addAction(), etc.
One notable difference between the JS and PHP hooks API is that in the JS version, addAction() and addFilter() also need to include a namespace as the second argument. Namespace uniquely identifies a callback in the form vendor/plugin/function.
createHooks()addAction( 'hookName', 'namespace', callback, priority )addFilter( 'hookName', 'namespace', callback, priority )removeAction( 'hookName', 'namespace' )removeFilter( 'hookName', 'namespace' )removeAllActions( 'hookName' )removeAllFilters( 'hookName' )doAction( 'hookName', arg1, arg2, moreArgs, finalArg )doActionAsync( 'hookName', arg1, arg2, moreArgs, finalArg )applyFilters( 'hookName', content, arg1, arg2, moreArgs, finalArg )applyFiltersAsync( 'hookName', content, arg1, arg2, moreArgs, finalArg )doingAction( 'hookName' )doingFilter( 'hookName' )didAction( 'hookName' )didFilter( 'hookName' )hasAction( 'hookName', 'namespace' )hasFilter( 'hookName', 'namespace' )actionsfiltersdefaultHooksShould be a non empty string containing only numbers, letters, dashes, periods and underscores. Also, the hook name cannot begin with __.
StringShould be a non empty string containing only numbers, letters, dashes, periods, underscores and slashes. It should take the form vendor/plugin/function.
StringWhenever an action or filter is added or removed, a matching hookAdded or hookRemoved action is triggered.
hookAdded action is triggered when addFilter() or addAction() method is called, passing values for hookName, functionName, callback and priority.hookRemoved action is triggered when removeFilter() or removeAction() method is called, passing values for hookName and functionName.all hookIn non-minified builds developers can register a filter or action that will be called on all hooks, for example: addAction( 'all', 'namespace', callbackFunction );. Useful for debugging, the code supporting the all hook is stripped from the production code for performance reasons.
This is an individual package that's part of the Gutenberg project. The project is organized as a monorepo. It's made up of multiple self-contained software packages, each with a specific purpose. The packages in this monorepo are published to npm and used by WordPress as well as other software projects.
To find out more about contributing to this package or Gutenberg as a whole, please read the project's main contributor guide.

EventEmitter3 is a high-performance event emitter for Node.js and the browser. It provides a similar mechanism for managing events but does not include the concept of filters. It is more focused on emitting and listening to events.
Mitt is a tiny functional event emitter. It provides a simple API for emitting and listening to events, similar to the action functionality in @wordpress/hooks, but does not include filtering capabilities.
Hookable is a lightweight library for creating hooks in JavaScript. It provides a similar API for adding and triggering hooks, including both actions and filters, making it a closer alternative to @wordpress/hooks.
FAQs
WordPress hooks library.
The npm package @wordpress/hooks receives a total of 389,884 weekly downloads. As such, @wordpress/hooks popularity was classified as popular.
We found that @wordpress/hooks demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 25 open source maintainers collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.