Upcoming changes
Check this page regularly for a preview of upcoming breaking changes in future MAJOR releases. MAJOR releases happen once per year, around the end of CQ1. Learn more about Strato versioning and releases.
Components 4.0.0 (planned)
@dynatrace/strato-components
AiLoadingIndicator
The aria-disabled prop will be removed, since the attribute is only intended for interactive elements. Please remove this prop from your implementation.
AppHeader
The following deprecated items will be removed:
AppHeader.AppNavLink: UseAppHeader.LogoinsteadAppNavLinkInternalOwnProps: UseAppHeaderLogoOwnPropsinsteadAppHeader.NavItems: UseAppHeader.NavigationinsteadAppHeader.NavItem: UseAppHeader.NavigationIteminstead
We provide migrations.
CodeSnippet
The allowCopy prop that is used to hide the copy button will be removed; please use showCopyAction instead.
DataTable
The following will be removed with the next breaking change release:
datecolumn type: Usedatetimeinstead.linkoption oninteractiveRows: UseonActiveRowChangeinstead.nameprop onthresholdsoption inDataTableMeterbarColumnConfig.DataTableDownloadPropstype andonDownloadDataprop onDataTable: Use theonDownloadDatacallback on theDataTable.DownloadDatatoolbar slot instead.TableActionsMenu.ItemIconslot: UseTableActionsMenu.Prefixinstead.setupTableVirtualizationMockandclearTableVirtualizationMockmock functions: These were used with the legacy DataTable V1 component, which has been removed. UsesetupVirtualizationMockandclearVirtualizationMockfor unit testing instead.
In addition to the above:
The subset parameter of onDownloadData callbacks will be extended with a new 'selectedWithParents' value. This affects DataTableDownloadSlotProps, DataTableDownloadDataOptions, and the deprecated DataTableDownloadProps.
Impact:
- Runtime handling: Your
onDownloadDatahandler may now receivesubset: 'selectedWithParents'. If your handler only covers the existing values ('all','page','selected'), add a case for'selectedWithParents'or ensure your fallback handles it. - TypeScript error: If your
onDownloadDatahandler is explicitly typed with the narrowsubsetunion, TypeScript will report a type error after upgrading. Update the union to include'selectedWithParents'.
Editors
- The
isControlledprop will be removed fromCodeEditorandDQLEditor. Controlled behavior will be the default starting from version 4.0, so this prop will no longer be needed. You can useisControlledin 3.0 to try out the controlled behavior early, before it becomes the default. - The
gutterConfigurationprop will be removed fromCodeEditor. Use theshowLintGutterprop together with thediagnosticsprop instead.
FilterField
The object notation of keyPredicates will be removed. Switch to the array notation:
// Before
<FilterField validatorMap={{ keyPredicates: { status: { type: 'String' }, severity: { valuePredicate: { type: ['String', 'Number'] }, comparisonOperators: ['equals'] } } }} />
// After
<FilterField validatorMap={{ keyPredicates: [{ key: 'status', valueType: 'String' }, { key: 'severity', valueType: ['String', 'Number'], comparisonOperators: ['equals'] }] }} />
Use migrateFilterFieldKeyPredicatesToArray from @dynatrace/strato-components to convert your existing config.
FilterFieldValidatorMapTypePredicatewill be removed and can no longer be passed invaluePredicate. Use thevalueTypeproperty instead.FilterFieldDurationwill be removed. Instead of providing durations as{ value, unit }objects in thevalidatorMap, use plain strings such as'10ms'.
The deprecated convertStringToFilterFieldTree overload that accepts positional arguments will be removed. Instead, pass a ConvertStringToFilterFieldTreeOptions object as the second argument.
The following props will be removed from FilterField.SuggestionGroup: DOMProps, StylingProps, data-testid, aria-labelledby, aria-describedby, and aria-details. The component no longer renders your custom groups as DOM wrapper elements. Instead, it decomposes them before mounting. Each group label becomes a visually-hidden <span>, while each suggestion receives a matching aria-describedby attribute. Only aria-label will be retained to populate the hidden label text. The same props will be removed from FilterField.Suggestion.
When you select a suggestion inside an in (...) list, the component automatically appends a trailing , (for example, cluster in (dev, )). Ensure your implementation accepts this trailing , .
Core
FocusEvents is deprecated and will be removed. FormControlProps now includes focus and blur handling. Find these properties in any form component's property reference.
FormField
The FormFieldReducerActionPayload and FormFieldReducerAction types will be removed from public exports. These are internal reducer types. If your implementation used the id field on FormFieldReducerActionPayload, pass id directly to the form control instead.
Forms
The controlState prop and the following related types will be removed: FormControlState, FormControlValueState, and FormControlStateProps. The prop will be removed from all form components, including BaseInput, Calendar, Checkbox, DateTimePicker, DateTimeRangePicker, NumberInput, PasswordInput, Radio, RadioGroup, Select, Switch, and TextArea. Use FormFieldMessages and native validation props instead.
The internal helpers _useFormControlState and _useFormControlStateReturnType will also be removed from public exports.
- The
focusmethod will become mandatory. validateAsyncwill be removed. Usevalidate()instead, which will returnPromise<ValidationState>directly.
The following deprecated exports will be removed:
parseTime. UseparseTimeAsTimeValuefrom the SDK instead.TimeDetails. UseTimeValueinstead.TimeframeDetails. UseTimeframeinstead.
The Hint component and its associated HintProps type will be removed. Instead, use FormFieldMessage with variant="hint".
NumberInput
NumberInput will be removed and replaced by NumberInputV2. NumberInputV2 fires onChange whenever the value changes, so if your implementation relied on onBlur to receive the updated value, switch to onChange.
Select
The onFocus and onBlur event types will change from FocusEvent<HTMLInputElement, Element> to React.FocusEvent<Element> to align with the shared form-control surface. Please update your handler signatures accordingly.
TextInput
The TextInputControlledProps and TextInputUncontrolledProps types will be removed. Instead, use TextInputProps.
TimeframeSelector
The following deprecated items will be removed:
- The
_isSelectedprop on thePresetItemslot. This prop was for internal use only. - The
clearableprop along with the "Reset timeframe" button. The clear action is now available directly in the input. Therefore, removeclearablefrom your implementation.
Environment and tooling
React 18
Support for React 18 will be dropped. React 19 will be the minimum supported version. Update your app to React 19 before upgrading to the next MAJOR release.
Jest
Jest support will be dropped in favor of Vitest. Migrate your test setup to Vitest before upgrading. The setupTableVirtualizationMock and clearTableVirtualizationMock helpers (already removed in 4.0.0) will not be replaced with Jest-compatible variants.
CommonJS
CommonJS support will be dropped. All Strato packages will ship ES modules (ESM) only. If your build pipeline requires CommonJS output, you must update your bundler or transpiler configuration to handle ESM before upgrading.