ReactWP is a WordPress starter designed for teams who want WordPress to stay in charge of content while React owns the frontend runtime.
Current starter version: 3.0.0
Changelog:
- Keep WordPress reliable, familiar, and editor-friendly
- Use ACF for structured content and site settings
- Treat routing, payloads, and frontend rendering as first-class concerns
- Keep the tooling practical and dependency-light
- Ship one repository that contains source code and generated
dist/
- WordPress is the CMS and editorial back office
- React is the application shell and page rendering layer
- A shared payload shape powers both first render and client-side navigation
- The frontend reads a single bootstrap payload instead of scattered globals
- Theme CSS is compiled as a real stylesheet asset
- Headless consumers can use a stable public API contract without coupling to the PHP theme shell
reactwp-v3/
|-- configs/ # build tooling and installed node dependencies
|-- dist/ # generated WordPress output
`-- src/
|-- core/
|-- mu-plugins/
|-- plugins/
`-- themes/
The default theme is split across PHP, runtime JavaScript, React templates, and SCSS:
src/themes/reactwp/template/for the PHP shell and theme setupsrc/themes/reactwp/js/inc/for runtime codesrc/themes/reactwp/js/components/for reusable componentssrc/themes/reactwp/js/templates/for route-level templatessrc/themes/reactwp/scss/default.scssfor the global stylesheet entrypoint
ReactWP uses a shared payload between WordPress and React, including site, theme, system, assets, navigation, route, and seoDefaults.
SCSS can also be imported directly from JavaScript when a style should stay local to a template or component.
The starter keeps a few frontend configuration points intentionally easy to find:
src/themes/reactwp/js/inc/config/configureLoader.jsfor first-load behaviorsrc/themes/reactwp/js/inc/config/configurePageTransition.jsfor route transition animationsrc/themes/reactwp/js/inc/config/configureTemplateRegistry.jsfor registering or overriding React templates
The runtime resets safe defaults internally before those configuration files run, so projects can focus on overrides instead of bootstrapping mechanics.
- Open a terminal in
configs/ - Install dependencies there if needed
- Run
npm run get:core - Configure
src/core/wp-config.php - Point your local server to
dist/ - Run
npm run buildornpm run watch
Run commands from configs/:
cd configs
npm run build
npm run build:themes
npm run watch
npm run prod
npm run get:coreOn first boot, ReactWP prepares a usable starter setup:
- a home page named
ReactWP 3 - default language rows in site settings
- a starter menu location in the ReactWP settings
- a starter menu assigned to that location
- a static front page setup
- permalink structure configuration
- Getting Started
- Project Structure
- Build Tooling
- Architecture
- PHP Runtime
- Bootstrap and Route Payloads
- Hooks and Filters
- Head and SEO
- Admin and Settings
- Frontend Runtime
- Components
- Routing and Navigation
- Theme Shell and Scroll
- Loader
- Template Registry
- Page Transitions
- Styling
- Content and Menus
- Headless API
- Keep WordPress reliable and content-focused
- Keep React expressive but understandable
- Prefer architectural clarity over tool churn
- Minimize dependencies unless they clearly buy back time or capability
