Install
Works with Drupal: ^10.3 || ^11Using Composer to manage Drupal site dependencies
Alternative installation files
Release notes
SDX 1.0.0-alpha3 introduces framework-agnostic hook cores under @sdx/core/*, a native dialog system replacing jQuery UI, preprocessor-agnostic SSR builds, and shared-chunk CSS auto-attachment. One breaking change: HtmlFragment now emits the marker class flatten instead of sdx-flatten.
Breaking changes
HtmlFragment(React + Vue) now emitsclassName="flatten"(previouslysdx-flatten). Themes that style this marker class must update the selector. No change is needed in template authors' code.
Highlights
Framework-agnostic core layer
@sdx/core/transport:apiCall,fetchDataProviderProps,SDX_HEADERS@sdx/core/mount: shared mount pipeline for React / Vue / Svelte@sdx/security: centralized CSRF handling@sdx/base/types: shared TS types (BlockProps,DrupalAttributes,ContextualLink,MenuItem,LocalTaskTab,ActionLink)- Hook cores under
sdx/js/core(drupal-settings,batch-polling,confirm-modal);useDeferredProps/useLazyPropported to Vue and Svelte
Native dialog system
Replaces jQuery UI dialogs with an SDX-owned pipeline; async unsaved-changes guard.
SSR builds are now preprocessor-agnostic
vite.config.ssr.jsshort-circuits.css/.scss/.sass/.less/.stylimports to no-ops. SSR bundles output HTML, not CSS.react-dom/clientexternalized in SSR. Prevents build failures when a client-only module (e.g.installDialogBridge) is statically imported from the component graph.- Uninstalling
sdx_sassno longer breaksdrush sdx:ssr:build. CSR still resolves styles via the feature plugin system.
AutoLibraryGenerator: shared-chunk CSS
Discovers and attaches assets/[chunk].css siblings of Vite-emitted chunks/[chunk]-[hash].js. Primitives whose styles land in a shared chunk (Card, IconButton, Prose, LinkList, and so on) now load correctly.
Admin dashboard
New overview + packages DataProvider pages with pnpm tree audit.
TypeScript-first runtime
runtime.tsconverted to TypeScript (ESM compile path)sdx-navigaterewritten in TypeScript; dead registry removedsdx_typescriptabsorbed into sdx core; JSX ownership moved tosdx_reactsdx-devel-toolbarported to TypeScript;sdx-setup-wizard.jsmodernized to ES2020sdx_vueis now a thin hook-adapter layer over@sdx/core/*withHtmlFragmentparity
Fixes
- Preserve DataProvider props on same-URL re-navigation
- Batch: redirect detection, null-safe state restoration, translated modal strings,
innerHTMLfor server-rendered HTML labels ConfirmModalStore: SSR-safe construction +getServerSnapshotspreadAttributes: normalize style strings to React style objectsform_actiontokens resolve to canonical path inside confirm formsinterpretStyleProcessoremits bothloadPaths(modern-compiler) andincludePaths(legacy) for sass-embedded API switching- Promoted
Badge,EmptyState,ToggleSwitchto framework_shared/ui
Internal
sdx_routerforwardsajax_page_state[libraries]to preventwindow.Drupalwipesdx_react: server-only token contract;sdx_ssrowns its own page-render injection- SSR:
framework-renderer.mjsnow lives underprivate/sdx - Full PHPCS / PHPStan level 0 clean; PHPUnit 176/176 green
BuildOutputResolver: central vs distributed build output modes- Import map emitted server-side via
ImportMapBuilder - AJAX interceptor consolidated across frameworks
Full changelog: CHANGELOG.md