Contributing
The canonical repository is
Inertia-X/InertiaX. Read its
CONTRIBUTING.md before opening
a change; it is the authority for environment setup, commit policy, release intent, and pull-request
checks.
Repository structure
Section titled “Repository structure”packages/protocol canonical wire schema and fixturespackages/core portable state, requests, sessions, catalogspackages/react React renderer and built-in Table UIpackages/react-inertia Inertia application-stack adapterpackages/laravel Laravel authoring and executionapps/react-renderer-lab direct renderer examplesapps/laravel-workbench full-stack Laravel/Inertia examplesapps/demo public browser-simulated examplesapps/docs this documentation siteEach publishable package keeps its own manifest, public boundary, version, and artifact even though the source shares one repository.
Set up the workspace
Section titled “Set up the workspace”Use the repository’s pinned package-manager version and install frontend dependencies from the root. Install Laravel dependencies in the package/workbench paths described by the root contributor guide.
Useful focused commands include:
pnpm lintpnpm testpnpm --dir apps/docs buildpnpm --filter @inertiax/react-renderer-lab testcomposer --working-dir=packages/laravel testpnpm --filter @inertiax/laravel-workbench verify:appRun the checks proportional to the paths changed. The required CI performs path classification and
aggregates selected evidence into CI / Required CI.
Route the change
Section titled “Route the change”- Protocol structure or meaning starts in
packages/protocol, then refreshes Laravel’s snapshot. - Portable state, requests, sessions, catalogs, and pipelines belong in
packages/core. - React presentation belongs in
packages/react. - Inertia prop, navigation, and location behavior belongs in
packages/react-inertia. - Laravel definitions, query execution, validation, and data behavior belong in
packages/laravel. - Browsable full-stack examples belong in
apps/laravel-workbench. - Public browser-simulated examples belong in
apps/demoand must preserve their explicit non-Laravel/non-Inertia disclosure plus equivalent Laravel authoring. - Renderer conformance examples belong in
apps/react-renderer-lab. - Customer documentation belongs in
apps/docs.
A rendering framework and an application stack are separate axes. A renderer must not import Inertia; an Inertia integration must not move host navigation into Core.
Adding a frontend package
Section titled “Adding a frontend package”Package discovery is manifest-driven under packages/*. A new package needs a unique public
responsibility, build and export metadata, license, ownership/path coverage, package-consumer
evidence, and a Changeset. Do not add a shared global version or hardcoded package list.
Add no speculative package before a concrete integration proves the boundary.
Protocol changes
Section titled “Protocol changes”Start with canonical schemas and valid/invalid fixtures. Regenerate runtime types and artifacts, verify the checksum, refresh Laravel’s locked snapshot, build compatible consumers, and run the live full-stack workbench:
pnpm --filter @inertiax/protocol verifycomposer --working-dir=packages/laravel protocol:refreshpnpm protocol:verifyThe protocol package and consumers version independently. An incompatible major must fail early.
Release intent
Section titled “Release intent”Pull requests that touch a Changesets-managed npm package must include that package in a manually
authored .changeset/*.md file. Release-worthy Laravel changes must add customer-facing notes under
## Unreleased in packages/laravel/CHANGELOG.md.
The required CI compares the exact base and head and performs both checks read-only. Use
skip-changeset only when changed package paths genuinely do not warrant a distributed release.
Changesets version only affected npm packages; Laravel has a separate, human-approved preparation
flow documented in the repository release guide.
Full-stack evidence
Section titled “Full-stack evidence”apps/laravel-workbench/tools/verify.mjs exercises live Composer and pnpm links, a real Inertia page,
query and Collection sources, and matched Inertia generations. Release-grade evidence uses an
isolated packed consumer so a passing workspace link cannot hide an artifact problem.
Use monorepo CI ownership to identify the evidence selected by each path. Unknown product paths fail classification until they receive an explicit owner.