Your widget failure involves three interconnected issues introduced by the UI theme update that require systematic resolution.
First, UI theme asset changes in aec-2023’s latest theme version restructured how custom widgets load stylesheets and JavaScript resources. The theme moved from a flat asset structure to a versioned, namespaced approach where custom widget assets must be registered with explicit version tags. Your CSS files are likely returning 404 errors because they’re still referencing the old /assets/custom/ path when the new theme expects /assets/v2/widgets/custom/. You need to update your widget’s manifest file to declare asset dependencies using the new schema:
widgetConfig: {
assets: {
styles: ['v2/widgets/custom/pipeline-widget.css'],
scripts: ['v2/widgets/custom/pipeline-bundle.js']
}
}
Additionally, the theme now uses CSS custom properties (variables) for colors and spacing, replacing the old fixed class names. Your widget’s styles need to reference the new theme variables like var(--aec-primary-color) instead of hardcoded values.
Second, widget dependency management has become more strict with the theme update. The platform now uses a sandboxed module loading system to prevent conflicts between custom widgets and core platform components. Your React component needs to be registered as a proper module dependency rather than assuming React is globally available. The new theme isolates third-party libraries to avoid version conflicts. Update your widget initialization to explicitly import React from the platform’s module registry:
import { React, ReactDOM } from '@adobe/aec-widget-sdk';
widgetRegistry.register('pipeline-widget', {
component: PipelineWidget,
container: 'opp-analytics-zone'
});
This ensures your widget uses the platform’s React version (currently 18.2 in aec-2023) rather than bundling its own, which was causing the component registration failures you observed.
Third, React integration with the new dashboard architecture requires widgets to follow a lifecycle pattern that aligns with the theme’s rendering pipeline. The old direct ReactDOM.render approach bypasses the platform’s component lifecycle management, causing your widget to initialize before the dashboard container is fully ready. Implement the widget SDK’s lifecycle hooks - particularly the onDashboardReady callback - to ensure your React component mounts only after the theme has completely initialized the dashboard structure. This prevents race conditions where your widget tries to render into containers that don’t yet exist.
The complete fix involves three steps: update asset paths in your manifest, migrate to the widget SDK’s module system for dependency management, and implement proper lifecycle hooks for React component initialization. After these changes, your pipeline analytics widget will load reliably with the new theme and maintain compatibility with future theme updates since you’ll be using the official integration patterns rather than direct DOM manipulation.