Install

Works with Drupal: ^10.3 || ^11

Using Composer to manage Drupal site dependencies

Alternative installation files

Download tar.gz 681.39 KB
MD5: fc0348fd2e26ea3e0004b078a85d14e0
SHA-1: 5bb88a6489d65d6d2de3e243e0aef85a9b4ff78d
SHA-256: fbdf576b2c4be5097b38bc737c55dd8dc8126487b039b7b79b07bab648ceeada
Download zip 1.17 MB
MD5: 340f798fb590cbfd83d304e5f6cd2d0a
SHA-1: dd8624f6a538018c88a2d514955620462a123f4f
SHA-256: 4a1cc09804ff833f957aeb83d6c9a667bfedb95d12f90812fdb7a7a08cffb2b4

Release notes

Changed

  • Dropped the treeshake: false Rollup override in the centralized Vite config. preserveEntrySignatures: 'strict' (the line right below) already protects entry exports, so tree-shaking is now on.

Fixed

  • ssr-runtime.mjs now exports sharedSingleton, hasSharedSingleton, and isModuleAvailable, restoring drop-in equivalence with @sdx/runtime. The three primitives shipped in alpha7 went to the browser runtime only; consumers importing them from @sdx/runtime worked under CSR but resolved to undefined under SSR, silently breaking cross-bundle state and optional-alias detection on any SSR-rendered route.
  • Vite shared-vendor chunk over-bundling. The auto-generated vite.config.js carried a hand-written manualChunks(id) that returned 'shared-vendor' for every node_modules module, collapsing every vendor dep into one chunk imported by every entry. Public pages preloaded heavy editor stacks (TipTap, ProseMirror) shipped only with portal entries; The override is removed; Rollup's native per-entry-set chunking now drives the split, so a vendor dep imported only by editor entries lands in an editor-only chunk, deps shared across every entry land in a fully shared chunk, and adding a heavy library to one component no longer regresses payload for unrelated pages. experimentalMinChunkSize: 10000 keeps the per-request count sane.
  • Watchdog noise from internal SDX progress logs. The build orchestrator (per-framework build/dev-server progress), NPM registry cache invalidation, dependency hook lockfile refresh on module install/uninstall, SSR cache invalidation + circuit-breaker recovery, and component-data-provider discovery all logged at info/debug on every normal-path call. Drush stdout already covered the build progress; the rest were per-event traces with no operator value. Only error and warning paths remain in watchdog. Logger calls dropped in sdx core. AutoLibraryGenerator's "no entry point found" log moved from notice to warning to match the severity of its symptom (the affected component will not bundle).

Removed

  • Drupal\sdx\Service\PageRegistrationCollector::__construct no longer accepts a ?LoggerInterface $logger = NULL argument; the corresponding @logger.channel.sdx argument in sdx.services.yml is gone with it. The collaborator was the sole consumer of an info log that this release also removes. Sites that construct the service via the container are unaffected; direct instantiation must drop the third argument.
  • Drupal\sdx_vite\Service\ViteConfigGenerator::buildManualChunks() and the matching 'manual_chunks' placeholder pass into the centralized stub. The stub never referenced the placeholder, so the method's output never reached the emitted Vite config; dead code. Visibility was protected with no external callers.
Created by: vzsigmond
Created on: 4 May 2026 at 06:36 UTC
Last updated: 4 May 2026 at 06:36 UTC
Bug fixes

Other releases