PHPackages                             forjedio/inertia-table - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. forjedio/inertia-table

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

forjedio/inertia-table
======================

Backend-driven dynamic tables for Laravel + Inertia.js

v1.2.0(3w ago)9377↑174.3%1[1 issues](https://github.com/forjedio/inertia-table/issues)MITTypeScriptPHP ^8.2CI passing

Since Mar 24Pushed 4w agoCompare

[ Source](https://github.com/forjedio/inertia-table)[ Packagist](https://packagist.org/packages/forjedio/inertia-table)[ RSS](/packages/forjedio-inertia-table/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (9)Dependencies (70)Versions (17)Used By (0)

Inertia Table
=============

[](#inertia-table)

 Backend-driven dynamic tables for Laravel + Inertia.js. Define your entire table in PHP - columns, sorting, searching, pagination, and display formatting - and the frontend renders it automatically. No duplicated definitions, no frontend table logic, no state management.

 [![Tests](https://github.com/forjedio/inertia-table/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/forjedio/inertia-table/actions/workflows/tests.yml) [![PHP Coverage](https://camo.githubusercontent.com/795b1dcbf12921b1faddc3a6f03f22e83c1c667810442923ed9f2004957272aa/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470733a2f2f676973742e67697468756275736572636f6e74656e742e636f6d2f52696368617264416e646572736f6e2f65323962663561343236623534656662383538393861346635656234626434392f7261772f696e65727469612d7461626c652d7068702d636f7665726167652e6a736f6e)](https://github.com/forjedio/inertia-table/actions/workflows/tests.yml) [![Vue Coverage](https://camo.githubusercontent.com/37e32aab27050eb9e85cdc9b9e2540b357d22a6fbdeb8ac4922fca5080442205/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470733a2f2f676973742e67697468756275736572636f6e74656e742e636f6d2f52696368617264416e646572736f6e2f65323962663561343236623534656662383538393861346635656234626434392f7261772f696e65727469612d7461626c652d7675652d636f7665726167652e6a736f6e)](https://github.com/forjedio/inertia-table/actions/workflows/tests.yml) [![React Coverage](https://camo.githubusercontent.com/3a81d5596b69d448ca7a0116e4608c4dd55515935f0838338b6a86011e904b99/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470733a2f2f676973742e67697468756275736572636f6e74656e742e636f6d2f52696368617264416e646572736f6e2f65323962663561343236623534656662383538393861346635656234626434392f7261772f696e65727469612d7461626c652d72656163742d636f7665726167652e6a736f6e)](https://github.com/forjedio/inertia-table/actions/workflows/tests.yml) [![Documentation](https://camo.githubusercontent.com/303c1f300c98d974d076ec6768d49d72cef691345d7e3dc9819a3bdba7c65bbf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f63732d696e65727469612d2d7461626c652e666f726a65642e696f2d626c7565)](https://inertia-table.forjed.io/) [![License](https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e)](LICENSE)

 [![Inertia Table](https://camo.githubusercontent.com/69825e6db88e6f5508144915445f00a491c394b275f895862819d5008ad781b5/68747470733a2f2f696e65727469612d7461626c652e666f726a65642e696f2f696d616765732f64656d6f2d6c696768742e706e67)](https://camo.githubusercontent.com/69825e6db88e6f5508144915445f00a491c394b275f895862819d5008ad781b5/68747470733a2f2f696e65727469612d7461626c652e666f726a65642e696f2f696d616765732f64656d6f2d6c696768742e706e67)

Quick Example
-------------

[](#quick-example)

```
class CompanyTable extends Table
{
    protected string $defaultSort = '-created_at';

    protected function columns(): array
    {
        return [
            LinkColumn::make('name', 'Name')
                ->route('companies.show', ['company' => ':id'])
                ->sortable(),
            TextColumn::make('email', 'Email')->sortable(),
            EnumColumn::make('status', 'Status')->sortable(),
            BooleanColumn::make('active', 'Active'),
            DateTimeColumn::make('created_at', 'Created')->sortable(),
            ActionsColumn::make(),
            Column::data('id'),
        ];
    }

    protected function searchable(): array
    {
        return ['name', 'email'];
    }
}
```

Pass it to your Inertia page:

```
return Inertia::render('Companies/Index', [
    'companies' => CompanyTable::make(Company::query())->paginate(),
]);
```

Render it on the frontend:

```
import { InertiaTable } from 'inertia-table-react';

export default function Index({ companies }) {
    return ;
}
```

That's it. Search, sorting, pagination, and all cell rendering handled automatically.

Features
--------

[](#features)

- **11 column types** - Text, Badge, Boolean, Date, DateTime, Link, Copyable, Enum, Component, Actions, and hidden data columns
- **Icon modifiers** - `withIcon()` and `asIcon()` on any column with map, closure, or fixed icon support
- **Sorting** - single-column with URL state, three-tier priority, `-` prefix for descending
- **Searching** - global full-text search with configurable debounce
- **Pagination** - full and simple modes with configurable per-page
- **Enum integration** - PHP enums automatically render as coloured badges
- **Table hooks** - `beforeQuery` and `afterData` hooks for query modification and data transformation
- **Frontend hooks** - extension system for realtime updates, analytics, and feature flags
- **Link routing** - Ziggy or server-side URL resolution (configurable)
- **Multiple tables** - identifier system for independent tables on the same page
- **Component columns** - register reusable frontend components for custom cell rendering
- **Dark mode** - all styles include `dark:` variants out of the box
- **Fully customisable** - override any cell, header, search, pagination, or toolbar via render props. Compatible with shadcn/ui.

Installation
------------

[](#installation)

```
composer require forjedio/inertia-table
```

```
# React
npm install vendor/forjedio/inertia-table/react

# Vue
npm install vendor/forjedio/inertia-table/vue
```

Requirements
------------

[](#requirements)

- PHP 8.2+
- Laravel 12 or 13
- Inertia.js 2.x or 3.x
- React 18/19 or Vue 3.4+
- Tailwind CSS 3.4+ or 4.0+

Documentation
-------------

[](#documentation)

Full documentation is available at **[inertia-table.forjed.io](https://inertia-table.forjed.io/)**.

Live Demo
---------

[](#live-demo)

See it in action at **[inertia-table-demo.forjed.io](https://inertia-table-demo.forjed.io/)**.

License
-------

[](#license)

MIT

###  Health Score

49

—

FairBetter than 94% of packages

Maintenance93

Actively maintained with recent releases

Popularity25

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 82.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~6 days

Total

11

Last Release

25d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9145ffe87fdebe115047eb8abc872f34f638307f345ec3f1700ff5b680c52d24?d=identicon)[richard-forjedio](/maintainers/richard-forjedio)

---

Top Contributors

[![RichardAnderson](https://avatars.githubusercontent.com/u/860443?v=4)](https://github.com/RichardAnderson "RichardAnderson (19 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (4 commits)")

---

Tags

inertiajslaravellaravelinertiadatatabletablesdynamic-tables

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/forjedio-inertia-table/health.svg)

```
[![Health](https://phpackages.com/badges/forjedio-inertia-table/health.svg)](https://phpackages.com/packages/forjedio-inertia-table)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3345.1M337](/packages/psalm-plugin-laravel)[larastan/larastan

Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel

6.4k51.0M7.6k](/packages/larastan-larastan)[calebdw/larastan

Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel

15104.9k4](/packages/calebdw-larastan)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)[zidbih/laravel-deadlock

Make temporary Laravel workarounds expire and fail CI when ignored.

984.0k](/packages/zidbih-laravel-deadlock)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
