Skip to content

Release Notes โ€‹

What is new in PowerGrid 7. For every breaking change and migration snippet, use the Upgrade Guide.

PowerGrid 7 โ€‹

Themes are built from section methods and inherit from each other. Inline editing, toggles, export, tabs, and truncation are plugins. Sorting, filtering, and paging update only the parts of the table that changed.

Requirements โ€‹

Requirementv6v7
PHP8.2+8.3+
Laravel10+12+ (13 is supported)
Livewire3.5.4+4.0+
Tailwind CSSv3 or v4v4

composer require power-components/livewire-powergrid:^7.0 also installs power-components/turbine and power-components/partials.

New Features โ€‹

Unified Theme Architecture โ€‹

struct() only sets the base view. Tokens live in section methods: layout(), header(), table(), footer(), cols(), tabs(), filter(), editable(), and toggleable(). A child theme sets $parentTheme and overrides only the sections it changes.

DaisyUI ships no Blade files โ€” it reuses Tailwind markup and changes tokens. Flux has <flux:*> Blade files only where the HTML differs.

Restyle a few tokens with theme_overrides in the config, or write a plain-array theme with ArrayTheme. See Custom Theme.

Theme Registry โ€‹

config('livewire-powergrid.theme') accepts a name from PowerGridManager::DEFAULT_THEMES (tailwind, daisyui, flux) or an FQCN:

phpconfig/livewire-powergrid.php
'theme' => 'tailwind',
// 'theme' => 'daisyui',
// 'theme' => 'flux',
// 'theme' => \PowerComponents\LivewirePowerGrid\Themes\Tailwind::class,

Register your own name:

phpapp/Providers/AppServiceProvider.php
use App\PowerGridThemes\BrandTheme;
use PowerComponents\LivewirePowerGrid\PowerGridManager;

public function boot(): void
{
    PowerGridManager::registerTheme('brand', BrandTheme::class);
}

Modular Plugin System โ€‹

PowerGridManager::DEFAULT_PLUGINS is always registered. PowerGridManager::plugins() merges extras on top and never drops the defaults:

PluginWhat it adds
EditablePluginColumn::editOnClick()
ToggleablePluginColumn::toggleable()
FlatpickrPluginDate and date-time filters
MultiSelectPluginMulti-select filters with TomSelect or SlimSelect
ExportPluginHeader export UI when PowerGrid::exportable() is set
FilterBuilderPluginAND / OR filter modal
TabsPluginStatus tabs above the toolbar
TruncatePluginColumn::limit() and Column::tooltip()

See Plugins.

Filter Panels โ€‹

  • inline โ€” inside the table, live and debounced
  • dropdown โ€” popover on a Filter button, committed on Apply
  • flyout โ€” side drawer, committed on Apply

See Filters.

Partials and Hot Zones โ€‹

power-components/partials updates only the fragments that changed. See Partials and Hot Zones.

Server-Side Action Rendering โ€‹

Row and header actions render as Blade on the server. window.pgActions and window.pgActionsHeader are gone.

PowerGrid Lite โ€‹

<x-pg-*> Blade components use the active theme for simple tables that do not need the full engine. See PowerGrid Lite.

Status Tabs โ€‹

PowerGrid::tabs() adds a themed tab strip above the toolbar. classes() restyles it per grid. See Tabs.

Filter Builder โ€‹

PowerGrid::filterBuilder() opens a modal where users compose AND / OR conditions from your filters() definitions. See Filter Builder.

Configurable Header Buttons โ€‹

Header buttons resolve icon, title, and label from setUp(), then the theme token, then the package default. An icon is a Blade component name; an unknown one renders nothing. See Header and Footer.

Laravel Boost Skills โ€‹

Agent Skills for Laravel Boost ship in resources/boost/skills: powergrid-theme, upgrade-theme-v6-to-v7, and create-powergrid-plugin. See AI Tools and Skills.

Portable Grid Definitions โ€‹

If the same grid also feeds Inertia or a REST endpoint, describe it once and swap the adapter. See Portable Grid Definitions.

Other Changes โ€‹

  • Plain string field values are escaped. Return HtmlString for markup, or set escape_closure_fields to false to keep v6 behavior.
  • max_per_page (default 1000) caps the rows a page loads, including "All".
  • Changing rows per page keeps the selected rows.

Removed in v7 โ€‹

See the Upgrade Guide for replacements.

  • Bootstrap 5 theme and Themes\Base
  • PowerGrid::lazy() load-more API (Livewire #[Lazy] still works)
  • Laravel Pulse integration
  • WithExport trait (PowerGrid::exportable() is enough)
  • OpenSpout 4 export driver
  • Built-in batch-export progress UI โ€” use ->progressView()
  • withSum(), withCount(), withAvg(), withMin(), withMax() โ€” use summarize() / withSummary()
  • theme_style() โ€” use theme(). isBootstrap5() / isTailwind() โ€” use instanceof
  • pg-primary-* โ€” Tailwind uses accent-*. pg-secondary-* still exists in tailwind4.css
  • window.pgActions / window.pgActionsHeader
  • Nested Livewire powergrid-detail
  • View namespace components.frameworks.*
  • filter_attributes (use filter_wire)
  • Bundled TomSelect
  • Tailwind 3 and the pre-built dist/ bundles

Unchanged Core API โ€‹

  • datasource(), fields(), columns(), filters(), setUp()
  • Column::make() / Column::add()
  • Button::add() fluent API
  • Filter types: InputText, Boolean, Select, MultiSelect, Number, DatePicker, DateTimePicker ($filters is now keyed by field)
  • actions() and actionRules()
  • Sorting, searching, pagination
  • Persist drivers (cookies, session, cache). Filters saved by v6 are not applied
  • Cache configuration
  • Lifecycle hooks transformQuery, transformRows, transformActions

Created By Luan Freitas and @DanSysAnalyst