Skip to main content
Estimated Upgrade Time: 5-10 minutes for most applications.

Updating Dependencies

Update your composer.json file to require Shopper 2.3:
"require": {
    "shopper/framework": "^2.3"
}
Then run:
composer update -W
After updating Composer dependencies, run the migrations:
php artisan migrate

New Features

Product Tags

Shopper 2.3 introduces Product Tags — simple, flat labels you can attach to products for cross-cutting organization. Unlike categories (hierarchical) or collections (rule-based), tags are flexible and ideal for seasonal labels, marketing campaigns, or storefront filtering. See the Product Tags documentation for full details.

New Permissions

New permissions have been added for tags. For existing installations, create them and assign to your admin role:
use Shopper\Core\Models\Permission;
use Spatie\Permission\Models\Role;

Permission::generate('tags', 'products');

$admin = Role::findByName('administrator');
$admin->givePermissionTo([
    'browse_tags',
    'read_tags',
    'edit_tags',
    'add_tags',
    'delete_tags',
]);
If you don’t create these permissions, users will not be able to access the Tags page or manage tags from the product form.

New Feature Flag

A new tag feature flag has been added to config/shopper/features.php. If you have a published config file, add:
use Shopper\Enum\FeatureState;

return [
    // ... existing features
    'tag' => FeatureState::Enabled,
];
Set to FeatureState::Disabled if you don’t need tags in your store.

Published Components

If you have published product components via php artisan shopper:component:publish product, add the new tag page to your config/shopper/components/product.php:
'pages' => [
    // ... existing pages
    'tag-index' => \Shopper\Livewire\Pages\Tag\Index::class,
],

Migration Checklist

  • Update composer.json dependencies
  • Run composer update
  • Run php artisan migrate (creates product_tags table)
  • Create new permissions for tags
  • Update published config files if applicable (features.php, components/product.php)
  • Clear caches: php artisan optimize:clear
  • Test your application