Skip to main content
The @wordpress/compose package provides a collection of useful React hooks and higher-order components (HOCs) for building WordPress components with enhanced functionality.

Installation

Function Composition

compose

Composes multiple HOCs into a single HOC (right-to-left).

pipe

Composes functions left-to-right.

Common Hooks

useInstanceId

Generates unique instance IDs for components.

usePrevious

Retrieves the previous value of a prop or state.

useMediaQuery

Responds to media query changes.

useViewportMatch

Checks if viewport matches WordPress breakpoints.

Debounce and Throttle

useDebounce

Debounces a function call.

useThrottle

Throttles a function call.

useDebouncedInput

Helper hook for debounced input fields.

Focus Management

useFocusOnMount

Focuses an element when component mounts.

useFocusReturn

Returns focus to previous element on unmount.

useConstrainedTabbing

Constrains tab navigation within an element.

Refs and Effects

useMergeRefs

Merges multiple refs into one.

useRefEffect

Effect-like ref callback with cleanup.

useEvent

Creates stable callback with latest values.

Resize Observer

useResizeObserver

Observes element size changes.

Keyboard Shortcuts

useKeyboardShortcut

Attaches keyboard shortcut handlers.

Copy to Clipboard

useCopyToClipboard

Copies text to clipboard on click.

Async Operations

useAsyncList

Asynchronously appends items to a list.

Accessibility

useDisabled

Disables all focusable elements within a container.

useReducedMotion

Detects user’s reduced motion preference.

State Management

useStateWithHistory

State with undo/redo functionality.

Higher-Order Components

withInstanceId

Provides unique instance ID as prop.

withSafeTimeout

Provides timeout functions that auto-cleanup.

Utilities

createHigherOrderComponent

Helper for creating HOCs with proper display names.

Observable Map

observableMap

Creates an observable key-value store.

Best Practices

  1. Memoize Dependencies - Always provide dependency arrays to hooks
  2. Cleanup Effects - Use useRefEffect for effects needing cleanup
  3. Stable Callbacks - Use useEvent for callbacks used in effects
  4. Compose Wisely - Order HOCs carefully for proper prop flow
  5. Test Accessibility - Always test focus management features