---
url: /inertia-table/docs/introduction.md
description: >-
  Inertia Table is the Eloquent-powered table component for Laravel +
  Inertia.js. Define sorting, filtering, exports, and bulk actions in PHP. Vue
  or React.
---

# Introduction

Inertia Table is the **Eloquent-powered table component for Laravel + [Inertia.js](https://inertiajs.com)**. It turns a single PHP class into a fully interactive data table with sorting, filtering, exports, bulk actions, saved views, and a built-in query builder. It ships in both Vue 3 and React 19, and is part of [Inertia UI](https://inertiaui.com), a suite of commercial packages designed for Laravel, Inertia.js, and Tailwind CSS.

::: tip On v3?
The v3 documentation is archived at [inertiaui.com/inertia-table/legacy-docs](https://inertiaui.com/inertia-table/legacy-docs/introduction). See the [upgrade guide](/upgrading) for what changed in v4.
:::

* Sorting, including support for related models
* Pagination with a customizable number of items per page
* Toggleable columns
* Sticky columns and header
* Search with support for related models
* Extensive filtering options (text, date, boolean, sets, etc.)
* Row links, actions and bulk actions with customizable confirmation dialogs and icons
* Export to CSV, Excel, and PDF
* Queued exports for large datasets
* Multiple tables per page with independent settings
* Dark mode and RTL support
* Empty state with customizable message and actions
* Integration with Inertia Modal
* Extensively tested across multiple Laravel versions, PHP versions, and database drivers (MariaDB, MySQL, PostgreSQL, SQLite)
* Built for Laravel and Inertia.js with React and Vue support

## Example Table class

Tables may be defined fluently with a builder or via dedicated classes. Here's a typical Table class:

```php
class Users extends Table
{
    protected ?string $resource = User::class;

    public function columns(): array
    {
        return [
            Columns\TextColumn::make('id', 'ID', toggleable: false),
            Columns\TextColumn::make('name', 'Full Name', sortable: true),
            Columns\TextColumn::make('email', sortable: true),
            Columns\DateColumn::make('email_verified_at'),
            Columns\ActionColumn::new(),
        ];
    }

    public function filters(): array
    {
        return [
            Filters\TextFilter::make('name', 'Full Name'),
            Filters\TextFilter::make('email'),
            Filters\BooleanFilter::make('is_admin', 'Admin'),
            Filters\DateFilter::make('email_verified_at')->nullable(),
        ];
    }

    public function actions(): array
    {
        return [
            Action::make('Deactivate', handle: fn (User $user) => $user->deactivate())
                ->asDangerButton()
                ->asBulkAction()
                ->confirm(
                    title: 'Deactivate User',
                    message: 'Are you sure you want to deactivate this user? This will remove their verified email status.',
                    confirmButton: 'Deactivate',
                )
        ];
    }
}
```

## Getting Started

Ready to add Inertia Table to your Laravel app? Pick the install guide that matches your stack:

* [Install for Laravel + Vue 3](/installation-vue)
* [Install for Laravel + React 19](/installation-react)

Or jump straight to [Generating Tables](/generating-tables) and [Basic Usage](/basic-usage) once you have it installed.

## License and Pricing

Inertia Table is a **commercial package**. A license unlocks both the Vue and React versions, includes one year of updates, and your version keeps working forever.

* **Single project** at €199, valid for one Laravel application
* **Unlimited projects** at €649, valid for every project you ship

Both tiers include the full source code, twelve months of updates, and a discount on every other Inertia UI package. [View pricing and buy a license →](https://inertiaui.com/inertia-table#pricing)

## Frequently Asked Questions

### Does Inertia Table work with Vue and React?

Yes. Inertia Table ships in both **Vue 3.4+** and **React 19+**, with feature parity between the two frontends. A single license unlocks both packages, and the same PHP `Table` class drives either stack. You only swap which NPM package you import on the frontend.

### What versions of Laravel and Inertia.js does it support?

Inertia Table v4.x supports **PHP 8.2+**, **Laravel 12 or 13**, and **Inertia.js v2 or v3**. It is tested against MariaDB, MySQL, PostgreSQL, and SQLite. See the [requirements](/requirements) page for the complete matrix.

### Is there a free version?

No. Inertia Table is a paid commercial package. The smallest license is €199 for a single Laravel project; it includes the Vue and React frontends, the source code, twelve months of updates, and your version keeps working after the update window ends. A [live demo](https://table-demo.inertiaui.com) is available to try before buying.

### Can I export tables to CSV, Excel, or PDF?

Yes. Inertia Table integrates with [Laravel Excel](https://docs.laravel-excel.com/) to export the current table view to **CSV, Excel, or PDF**. Exports can run inline for small datasets or be pushed onto the queue with user notification when the file is ready. See the [exporting](/exporting) page.

### Does it support sorting and filtering across related models?

Yes. Both [sorting](/sorting) and [search](/search) work across Eloquent relationships without you writing the joins yourself. The built-in query builder resolves the relationships and applies the correct query constraints automatically.

### Who built Inertia Table?

Inertia Table is built and maintained by [Pascal Baljet](https://pascalbaljet.dev), creator of [Inertia UI](https://inertiaui.com), author of several other Laravel packages, and contributor to Inertia.js.
