Skip to content

Upgrade guide

This guide describes how to upgrade from v0.9.x to v0.10.x.

WARNING

Hybridly v0.10.x is still in beta, and breaking changes are still to be expected. It is not advised to upgrade right now.

Upgrade dependencies high impact

v0.10.x targets Laravel 13+ and Vite 8+.

Replace partial with on_demand high impact

The partial function was renamed to on_demand. Even if you grew used to it, the name was definitely confusing.

php
use function Hybridly\partial; 
use function Hybridly\on_demand; 

return hybridly('users.index', [
    'filters' => partial(fn () => $filters),
    'filters' => on_demand(fn () => $filters),
]);

Architecture API changes high impact

The ComponentsResolver interface was simplified:

  • loadModulesFrom was removed.
  • loadComponentsFrom was removed.
  • loadTypeScriptFilesFrom was removed.
  • loadModuleFrom now accepts only directory and namespace.
php
$hybridly->loadModuleFrom(
    directory: __DIR__,
    namespace: 'billing',
    deep: true,
    loadViews: true,
    loadLayouts: true,
    loadComponents: true,
    loadTypeScript: true,
);

If you need fine-grained registration, use:

  • loadViewsFrom
  • loadLayoutsFrom
  • addView
  • addLayout

Update refining filters high impact

The generic Filters\Filter class has been replaced by explicit filter classes.

php
use Hybridly\Refining\Filters;

Filters\Filter::make('name');  
Filters\TextFilter::make('name');  
Filters\NumericFilter::make('price');  
Filters\DateFilter::make('published_at');  

If you implemented custom filters, note that Filter::apply now receives a QueryFilter value object:

Before:

php
public function apply(Builder $builder, mixed $value, string $property): void
{
    // ...
}

After:

php
use Hybridly\Refining\Filters\QueryFilter;

public function apply(Builder $builder, QueryFilter $filter, string $property): void
{
    $value = $filter->value;
    // ...
}