Update on 11/13/25: Breaking changes going from DE 1.18 to 1.19:
Experience Builder 1.19 introduces two critical breaking changes that prevent widgets built for 1.18 from loading. First, the WidgetState enum has been removed from 'jimu-core', requiring developers to replace WidgetState.Opened with the string literal "OPENED" in widget lifecycle methods. Second, and more significantly, the jsx() function signature has changed to align with React 17+'s new JSX transform—children must now be passed as a children property within the props object rather than as separate function arguments. This means jsx('div', {props}, child1, child2) must be rewritten as jsx('div', {props, children: [child1, child2]}) throughout the entire render method. While this is a substantial refactoring effort requiring updates to every jsx call in your widget, it brings Experience Builder in line with modern React standards and is a one-time migration requirement for the 1.18 to 1.19 upgrade path.
Note: This post includes both v1.18 and v1.19 versions of the widget for reference, allowing developers to compare the before and after implementations to better understand the required migration changes.