v3.0.0-beta.1
Pre-releaseCaution
This is a beta release of the framework. Breaking changes may be introduced to v3 releases during the beta period.
Shopper 3.0 is the first major release built on Filament 5 and Laravel 13. It introduces the public Store API and a JavaScript SDK, a redesigned admin shell with theme tokens, a full promotion engine, and a dedicated upgrade package to move 2.x projects forward.
Installation
"minimum-stability": "beta",
"prefer-stable": truecomposer require shopper/framework:^3.0.0-betaHighlights
Store API and JavaScript SDK
The flagship of 3.x. A public, headless Store API built on JSON:API, served by two new packages: shopper/api (endpoints, resources) and shopper/http (HTTP infrastructure). Coverage includes catalog, geo (countries, zones, currencies), customer authentication and accounts, guest and customer carts, promotion codes on carts, shipping options, and checkout, payment and orders. Product resources are shaped by product type and expose catalog stock. A first-party JavaScript SDK (@shopperlabs/shopper-sdk) and generated TypeScript types (@shopperlabs/shopper-types) consume the API directly.
Filament 5 and Laravel 13
The admin panel migrates from HasForms to HasSchemas, adopts Filament 5 patterns end to end, and adds Laravel 13 support (range 11, 12, 13 on PHP 8.3 and 8.4).
Redesigned v3 admin shell
A full-width header shell with a theme token system, admin theme selection, dynamic breadcrumbs with sidebar auto-detection, grouped settings navigation with a split layout, a reworked product edit navigation shell, a customers shell with inline stats, reviews page polish, theme-aware empty-state illustrations, and a session expired modal replacing the native 419 prompt.
Promotion engine
Campaigns with parent grouping, stacking rules, and automatic promotions, with a reworked discount create and edit UI that persists items synchronously.
Upgrade package for 2.x to 3.x
shopper/upgrade ships a shopper:upgrade orchestrator command, a Rector ruleset for class renames, Boost skills for the remaining breaking changes, and a permissions dot-notation migration command.
Permissions and authorization hardening
Permissions migrate to dot notation with domain-based grouping. Explicit, fine-grained permission checks are enforced across Filament actions and Livewire mutations, including destructive variant, attribute and tag actions.
New Features
- feat(api): scaffold
shopper/apiJSON:API package by @mckenziearts in #537 - feat(http): add
shopper/httpAPI infrastructure package by @mckenziearts in #536 - feat(api): expose catalog stock and shape product resources by type by @mckenziearts in #544
- feat(api): store geo endpoints (countries, zones, currencies) by @mckenziearts in #545
- feat(api): customer authentication and account endpoints by @mckenziearts in #546
- feat(api): guest and customer cart endpoints by @mckenziearts in #547
- feat(api): cart shipping options endpoint by @mckenziearts in #548
- feat(api): checkout, payment and order endpoints by @mckenziearts in #549
- feat(api): capture guest email on cart by @mckenziearts in #556
- feat(api): apply and remove a promotion code on a cart by @mckenziearts in #557
- feat(api): transfer a guest cart to a customer on login by @mckenziearts in #558
- feat(api): patch cart endpoint with currency, email and metadata by @mckenziearts in #559
- feat: promotion engine with campaigns, stacking and automatic promotions by @mckenziearts in #561
- feat(deps): add Laravel 13 support by @mckenziearts in #497
- feat(themes): admin theme selection with design tokens by @mckenziearts in #534
- feat(admin): v3 admin shell full-width header and theme token system by @mckenziearts in #500
- feat(admin): dynamic breadcrumb system with sidebar auto-detection by @mckenziearts in #501
- feat(admin): grouped settings navigation with split layout by @mckenziearts in #504
- feat(products): rework product edit into an extensible navigation shell by @mckenziearts in #535
- feat(admin): customers v3 shell with sidebar, navigation and inline stats by @mckenziearts in #509
- feat(admin): session expired modal replacing the native 419 prompt by @mckenziearts in #503
- feat(admin): theme-aware empty-state illustrations and UI polish by @mckenziearts in #567
- feat(admin): Livewire 4 optimizations and admin authorization hardening by @mckenziearts in #569
- feat(admin): add internal database notifications for administrators by @mckenziearts in #571
- feat(catalog): add per-product attribute value swatch images by @mckenziearts in #577
- feat(upgrade): add
shopper:upgradeorchestrator command by @mckenziearts in #565 - feat(upgrade): add Rector ruleset for 2.x to 3.x class renames by @mckenziearts in #563
- feat(upgrade): add Boost skills for the remaining 2.x to 3.x breaking changes by @mckenziearts in #564
- feat(upgrade): add permissions dot-notation migration command by @mckenziearts in #562
- feat: nested sortable categories with SortableJS by @mckenziearts in #454
- feat: migrate permissions to dot notation with domain-based grouping by @mckenziearts in #452
- feat: Filament 5 upgrade and 2FA store prefix by @mckenziearts in #449
- feat: add starter kit install and init commands by @mckenziearts in #486
- feat: add starter kit export command and simplify
kit:initby @mckenziearts in #487 - feat: add Turkish language translations by @yellow-three in #568
Improvements
- refactor: migrate from
HasFormstoHasSchemas(Filament 5) by @mckenziearts in #465 - refactor: split
TwoFactorAuthenticatableinto SOLID interfaces and traits by @mckenziearts in #467 - refactor(onboarding): replace Spatie wizard with a native Filament wizard by @mckenziearts in #530
- refactor(admin): settings pages polish with reusable components and tabs by @mckenziearts in #506
- feat(discounts): rework create and edit UI and persist items synchronously by @mckenziearts in #533
- refactor: replace internal slide-over with
laravelcm/livewire-slide-oversby @mckenziearts in #470 - refactor: allow attributes on virtual products by @mckenziearts in #482
- refactor: make gender field optional across the application by @mckenziearts in #479
Bug Fixes
- fix(admin): enforce fine-grained permissions on destructive variant, attribute and tag actions by @mckenziearts in #572
- fix(admin): enforce explicit permissions on remaining Filament actions and Livewire mutations by @mckenziearts in #575
- fix: dedupe discountables, fix shipment slide-over and stepper by @mckenziearts in #576
Breaking Changes
This is a major release with breaking changes across Filament 5, permissions, and renamed classes. Run the upgrade package on your 2.x project:
composer require shopper/upgrade --dev
php artisan shopper:upgradeIt applies the Rector ruleset for class renames, migrates permissions to dot notation, and surfaces the remaining manual steps via Boost skills.
Contributors
Full Changelog: v2.9.2...v3.0.0-beta.1