Skip to main content
The @wordpress/element package provides a React abstraction layer for WordPress, re-exporting React components and hooks with WordPress-specific enhancements.

Installation

Why Use @wordpress/element?

This package:
  • Provides consistent React imports across WordPress
  • Adds WordPress-specific utilities
  • Simplifies React version management
  • Ensures compatibility with WordPress core

Basic Usage

With JSX:

React Hooks

All standard React hooks are available:

useState

useEffect

useContext

useRef

useMemo

useCallback

Components

Fragment

Render multiple elements without a wrapper.

StrictMode

Enables additional checks and warnings.

Suspense

Handles loading states for lazy components.

WordPress-Specific Components

RawHTML

Renders unescaped HTML safely.

Platform

Detects the current platform.

String Utilities

createInterpolateElement

Creates elements from interpolated strings.

concatChildren

Concatenates multiple children arrays.

switchChildrenNodeName

Changes the element type of children.

Element Creation

createElement

Creates React elements.

cloneElement

Clones an element with new props.

Refs

createRef

Creates a ref object.

forwardRef

Forwards refs to child components.

Rendering

createRoot (React 18)

Creates a root for rendering.

hydrateRoot (React 18)

Hydrates server-rendered markup.

render (Legacy)

Class Components

Component

Base class for components.

PureComponent

Component with shallow prop/state comparison.

Portals

createPortal

Renders children into a different DOM node.

Context

createContext

Creates a context object.

Advanced Hooks

useLayoutEffect

Runs synchronously after DOM mutations.

useImperativeHandle

Customizes ref value.

Utilities

isValidElement

Checks if a value is a valid React element.

isEmptyElement

Checks if an element is empty.

Children

Utilities for working with children.

Best Practices

  1. Always use @wordpress/element - Don’t import React directly
  2. Prefer hooks - Use function components with hooks over classes
  3. Memoize expensive operations - Use useMemo and useCallback
  4. Follow React patterns - Element behaves like standard React
  5. Handle errors - Use error boundaries for production code