Skip to content

yii2-framework/inertia-react

Repository files navigation

Yii Framework

Inertia React


PHPUnit Mutation Testing PHPStan

React adapter helpers for yii2-framework/inertia
React-friendly root view and Vite asset integration for Yii2 Inertia applications

Features

Feature Overview

Overview

yii2-framework/inertia-react is a thin PHP-side adapter package for building React-based Inertia applications on top of yii2-framework/inertia.

This package does not install npm dependencies for you. Instead, it provides.

  • a React-specific bootstrap class for Yii2;
  • a default root view that outputs Vite tags plus the initial Inertia page payload;
  • a Vite helper component for development-server and manifest-driven production assets;
  • React Refresh preamble output for @vitejs/plugin-react in development mode;
  • documentation and conventions for the application-owned React client entrypoint.

Installation

composer require yii2-framework/inertia-react:^0.1

Register the React bootstrap class.

return [
    'bootstrap' => [
        \yii\inertia\react\Bootstrap::class,
    ],
    'components' => [
        'inertiaReact' => [
            'class' => \yii\inertia\Vite::class,
            'baseUrl' => '@web/build',
            'devMode' => YII_ENV_DEV,
            'devServerUrl' => 'http://localhost:5173',
            'entrypoints' => [
                'resources/js/app.jsx',
            ],
            'manifestPath' => '@webroot/build/.vite/manifest.json',
            'preambleProvider' => \yii\inertia\react\Bootstrap::reactRefreshPreambleProvider(),
        ],
    ],
];

Use only yii\inertia\react\Bootstrap::class in the bootstrap list. It already delegates the base yii2-framework/inertia bootstrap.

React client entrypoint

Install the client-side dependencies in your application project.

npm install react react-dom @vitejs/plugin-react @inertiajs/react vite

Then create your client entrypoint, for example resources/js/app.jsx:

import { createInertiaApp } from "@inertiajs/react";
import { createElement } from "react";
import { createRoot } from "react-dom/client";

createInertiaApp({
  resolve: (name) => {
    const pages = import.meta.glob("./Pages/**/*.jsx", { eager: true });
    return pages[`./Pages/${name}.jsx`];
  },
  setup({ el, App, props }) {
    createRoot(el).render(createElement(App, props));
  },
});

Development mode and React Refresh

When devMode is enabled and preambleProvider is set to \yii\inertia\react\Bootstrap::reactRefreshPreambleProvider(), this package emits the React Refresh preamble recommended by the official Vite backend integration guide before loading @vite/client and your entrypoint scripts.

Production asset integration

This package expects a Vite manifest file generated with build.manifest = true. In production it will render.

  1. style sheet tags for the entrypoint chunk and its imported chunks;
  2. module entry scripts for each entrypoint;
  3. optional modulepreload tags for imported JavaScript chunks.

Documentation

For detailed configuration options and advanced usage.

Package information

PHP Latest Stable Version Total Downloads

Quality code

Codecov PHPStan Level Max Super-Linter StyleCI

License

License

About

Inertia.js React adapter for Yii2: React Refresh preamble, Vite integration, root view, and bootstrap wiring.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

Generated from yii2-extensions/template