Skip to main content
Version: 2026.2

Upgrade Notes

These steps are necessary when updating to newer versions.

Upgrade to 2026.2.2​

Frontend Build Ships as a Packaged Archive​

The compiled Studio frontend is no longer committed as an expanded public/studio/build/ directory. It now ships as a single archive (build-dist/build-<id>.zip) that is extracted into public/studio/build/ automatically during cache warmup.

pimcore/studio-ui-bundle ^2026.2.1 is now required, as it provides the archive extraction.

Note: Read-only filesystem deployments must run bin/console cache:warmup (or cache:clear) during the build/deploy phase while the bundle directory (usually under vendor/) is still writable. Standard Pimcore deployments already do this. When assets:install runs in copy mode, run cache:warmup before it, otherwise no frontend assets are copied. If the filesystem becomes read-only before the first warmup, the bundle fails with BuildArchiveNotWritableException because there is no build to serve.

Upgrade to 2026.1.0​

General​

  • Added support for PHP 8.5.
  • Removed support for PHP 8.3 and Symfony v6.

Removed Admin Classic / ExtJS Support​

  • Removed pimcore/admin-ui-classic-bundle dependency. The bundle no longer supports the ExtJS-based admin UI.
  • PimcoreWorkflowAutomationIntegrationBundle no longer implements PimcoreBundleAdminClassicInterface. The getJsPaths() and getCssPaths() methods returning ExtJS assets have been removed.
  • The following legacy ExtJS assets have been removed:
    • public/js/pimcore/configTab.js
    • public/js/pimcore/startup.js
    • public/css/admin.css
    • public/css/icons.css

Removed Legacy Controllers and Routing​

  • Removed Controller\DataHub\ConfigController - replaced by Controller\Studio\Config\* controllers.
  • Removed Controller\N8N\Download\GraphQlController - replaced by Controller\Studio\N8N\GraphQlController.
  • Removed Controller\N8N\Download\WebhooksController - replaced by Controller\Studio\N8N\WebhooksController.
  • Removed Routing\StudioRouteLoader - Studio routes are now registered via standard Symfony configuration.
  • Removed config/pimcore/studio_routing.yaml.

Removed Internal Trait​

  • Removed Utils\Traits\LogAndReturnTrait (@internal). This trait was used exclusively by the deleted legacy controllers and is no longer available.

Interface Changes​

  • ConfigurationServiceInterface (Service\DataHub\ConfigurationServiceInterface):
    • getConfigurations(array $configurationTypes = []): Parameter PHPDoc updated from @param string[] to @param array<int, string>. Added @return array<int, Configuration> return type annotation. Added use for Pimcore\Bundle\DataHubBundle\Configuration.
    • getListOptionsForConfiguration(string $configurationId): Added @return array<int, array<string, string>> return type annotation.
  • ListOptionsProviderInterface (Provider\ListOptionsProviderInterface):
    • getOptions(): Added @return array<int, array<string, string>> return type annotation.
  • ConfigurationResolverInterface (Resolver\DataHub\ConfigurationResolverInterface):
    • getList(): Added @return array<int, Configuration> return type annotation.
  • WebhookServiceInterface (Service\DataHub\WebhookServiceInterface):
    • getSubscriberId(array $subscribers, ...): Added @param array<int, string> $subscribers PHPDoc annotation.

Bug Fix​

  • Fixed a logic error in OptionService::getListOptions() where the array_is_list() condition was inverted, causing incorrect list option resolution.