Skip to content
Open Source · MIT Licensed

Define in PHP.Render anywhere.

Backend-driven dynamic tables for Laravel + Inertia.js.
Columns, sorting, search, and pagination - all from a single PHP class.

composer require forjedio/inertia-table+
npm install @forjedio/inertia-table-reactornpm install @forjedio/inertia-table-vue

One class. Full table.

Define columns, sorting, and search in PHP. The frontend handles the rest.

app/Tables/ServerTable.php
use Forjed\InertiaTable\Table;
use Forjed\InertiaTable\Column;
use Forjed\InertiaTable\Columns\{
    LinkColumn, EnumColumn,
    DateTimeColumn, ActionsColumn
};

class ServerTable extends Table
{
    protected function columns(): array
    {
        return [
            LinkColumn::make('name', 'Name')
                ->route('servers.show', ['server' => ':id'])
                ->sortable(),
            EnumColumn::make('status', 'Status')
                ->sortable(),
            DateTimeColumn::make('created_at', 'Created')
                ->sortable(),
            ActionsColumn::make(),
            Column::data('id'),
        ];
    }
}
Pages/Servers.tsx
import { InertiaTable } from '@forjedio/inertia-table-react';

export default function Servers({ servers }) {
    return (
        <InertiaTable
            tableData={servers}
            actions={(row) => (
                <button onClick={() => edit(row)}>
                    Edit
                </button>
            )}
        />
    );
}

// Search, sorting, pagination
// all work automatically.

Everything you need

A complete table system - not just a component.

10 Column Types

Text, Badge, Date, DateTime, Link, Copyable, Icon, Component, Enum, and Actions - all pre-configured with sensible defaults.

PHP Source of Truth

Column definitions, sorting rules, search fields, and display formatting all live in one PHP class. No duplication.

Full Override Control

Every element is replaceable - cells, headers, search, pagination, empty state, toolbar. Via render props or slots.

Realtime via Hooks

A tableSettings hook system enables live WebSocket updates, analytics, or any custom behaviour.

shadcn/ui Ready

Use the useTable hook with shadcn components for a fully branded table. Or use the default UI with Tailwind overrides.

Dark Mode

All default styles include dark: variants. Works automatically with your Tailwind dark mode configuration.

Start building in minutes

One Composer install, one npm install, one PHP class - you have a complete table.

Read the docs