felipeva/inertia-table
felipeva/inertia-table is a Laravel package for building data tables in Inertia.js applications. It aims to simplify table setup and bridge backend data with frontend components, reducing boilerplate for common table workflows in Laravel/Inertia projects.
This assessment is based on the 2.0.0-beta.1 release notes only — treat it as a starting orientation and confirm specifics against the repo's README.md and UPGRADING.md before committing to a migration.
laravel-data 4. If you are on Laravel 11, Inertia 1, or laravel-data 3, stop here: ^1.x is unaffected by this release and continues on the 1.x branch. Confirm each constraint in your composer.json before running anything.UPGRADING.md before installing. The release notes explicitly call this out. It is the authoritative source for the 1.x → 2.x delta (renamed classes, changed prop shapes, config keys) and will be more accurate than blog posts or the README's older examples.^2.0 constraint:
composer require "felipeva/inertia-table:^2.0@beta"
npm install @felipeva/inertiajs-table-react@next
The npm package may 404 initially — the notes say it lands only once the staged release is approved. If npm install fails with ETARGET, the frontend half has not shipped yet; you are not doing anything wrong.laravel-data resource, paginated and sortable, no filters, no bulk actions. This shakes out the composer/npm/Inertia wiring (the most likely place to hit version friction) without touching tables your users depend on.UPGRADING.md for the migration path, README.md for the current API surface, and the package's test suite or demo app (if present) for the exact shape of the props the React component expects — that shape is the thing you will spend the most time matching.only: ['users'] or equivalent) rather than re-shipping every prop on the page. This is the single biggest perceived-performance lever in an Inertia table.with(), search scopes and column definitions belong in a dedicated class. This keeps the controller readable and makes the table testable without rendering React.laravel-data own the row shape. Define a DTO per row with explicit types and DataCollection::prepareForInertia()-style transformation, so the frontend contract is a typed object rather than an Eloquent model's incidental attributes. This also means column renames are a one-line DTO change instead of a React change.page parameter. Forgetting this produces the classic "no results on page 4" bug.laravel-data 3 → 4 upgrade is likely a larger and more invasive change than the table package itself. Land the laravel-data bump on its own (with its own tests) and then swap the table package, so a failure has an obvious owner.@beta is a stability flag, not a version. ^2.0@beta will happily pull beta.2, beta.3, and so on. Between betas there is no API stability guarantee — pin the exact version (2.0.0-beta.1) in CI and read the changelog on every bump. Floating a pre-release constraint in a shared app is how you get a red build on a Tuesday for no reason.minimum-stability: dev to force the install. If @beta on the single requirement isn't enough, the real problem is a transitive constraint conflict (usually laravel-data 4 versus another package still pinning ^3). Fix that conflict; loosening global stability will silently pull unstable versions of unrelated packages.next, and it may not exist yet. A staged release awaiting approval means the tarball is not on the registry. Confirm the package resolves (npm view @felipeva/inertiajs-table-react dist-tags) before planning frontend work around it; otherwise you are blocked on a maintainer action, not on your own code.inertiajs-table-react. If your app is Vue or Svelte, this release does not give you a first-party frontend — check whether the server-side package is frontend-agnostic enough to hand-roll the client before assuming parity with 1.x.^1.x installs are explicitly unaffected and the 1.x branch is live. Treat 2.0.0-beta.1 as an evaluation target for a greenfield Laravel 12 app or a spike branch, not a drop-in for a shipped product.UPGRADING.md disagree, trust UPGRADING.md for the 1.x → 2.x jump. Docs on the default branch often track the unreleased line; the upgrade guide is written specifically for people in your position.dd($props) via the Inertia testing helpers, or the Vue/React devtools panel) before touching the frontend. Mismatched keys between the table class and the React component — often introduced by a beta rename — account for most of these reports.How can I help you explore Laravel packages today?