Install

Works with Drupal: ^10.3 || ^11

Using Composer to manage Drupal site dependencies

Alternative installation files

Download tar.gz 666.43 KB
MD5: 2ecf33c41d28728c8e74c447a48a038c
SHA-1: 9fad1c579b019c1b44298825906c99b2568df4e9
SHA-256: 95aa4b04a1a1c3bfccf8cb96c23323013a708b1add8599a5becb8bbd8d8a0f1b
Download zip 1.15 MB
MD5: 8687b7ce3760a83d0505d657fb75ae3b
SHA-1: aa21fc6aa48d59f81154ab03e9d732eb84ade4a4
SHA-256: 32f0c314d1b007d227ca51a81409f38dd1869d1e0c5597d267ed7e5fac182351

Release notes

Fixed

  • SPA form submissions no longer discard the POST response. sdx_router's form listener was re-fetching response.url after the POST resolved, which doubled the network round trip and, because the POST render already drained the status_messages flash bag, left every validation error, status flash, and save confirmation invisible. The listener now tags the POST with X-SDX-Navigate: 1 and hands the resolved Response to a new NavigationController.adoptResponse() path that runs it through the same normalize + apply pipeline as a fresh navigation. One network request per submit; every messenger message reaches the UI.
  • Drupal.sdxNavigation survives redirected form submits. Every SPA fetch (GET or POST) now forwards the current document's loaded-library manifest as the X-SDX-Ajax-Libraries header; sdx_router's new SdxAjaxLibrariesHeader stack middleware lifts the value into $request->query['ajax_page_state'] so Drupal core's own AjaxPageState middleware processes it unchanged. Headers survive same-origin redirects, so the 303 Drupal form handlers emit after a successful POST reaches the redirect target with the manifest intact. The query-parameter equivalent used previously was dropped on the redirect hop and the redirected GET re-delivered the full library bundle (including core/drupal, whose re-evaluation resets window.Drupal = { behaviors: {} } and erases Drupal.sdxNavigation). Every SPA navigation after a form submit now swaps the React shell normally instead of freezing on the pre-submit content.

Removed

  • The form_action_p_* detection plus window.location.pathname fallback in every framework's form template (sdx_react, sdx_vue, sdx_svelte core components and the sdx_react_base, sdx_vue_base overrides). Form action URLs and CSRF tokens now arrive pre-resolved from drupal/sdx_drast's FormDataProvider, so the client-side placeholder workaround, which produced / during SSR and masked the underlying bug, is no longer needed.

Changed

  • Dependency renamed from drupal/sdx_engine to drupal/sdx_drast. Service ids, PHP namespace references, and theme-engine module dependency lines all follow. Install drupal/sdx_drast 1.0.0-alpha1 or newer alongside this release.
Created by: vzsigmond
Created on: 23 Apr 2026 at 22:47 UTC
Last updated: 23 Apr 2026 at 22:47 UTC
Bug fixes
New features

Other releases