3.13 to 3.14 Migration Guide
This guide covers changes when upgrading from OHIF version 3.13 to version 3.14.
-
React 19 — the monorepo moves to React 19.2.7.
@ohif/ui-nextnow declares react/react-dom aspeerDependencies, so consuming applications must supply React 19, and extensions and modes require it too. -
SmartScrollbar —
SmartScrollbarFillandSmartScrollbarEndpointsnow require themarkedarray to change identity when its contents change. Theversionprop is deprecated and no longer invalidates. -
WorkList —
LegacyWorkListand theworkList.variantcustomization still work in 3.14 and are deprecated. A future release removes both; migrate to theworkList.*customizations on the ui-nextWorkList. -
DataTable / TanStack Table v9 —
@ohif/ui-nextupgrades@tanstack/react-tableto v9. Column definitions need theDataTableFeaturesgeneric and thesortFnrename; programmatic visibility toggles should go throughuseToggleColumnVisibility. -
useSegmentationExpanded — the hook returns
undefinedoutside aSegmentationExpandedProviderinstead of throwing, and no longer takes a component-name argument. Callers that wrapped it intry/catchshould check forundefined; callers that require the provider should assert for themselves. -
Viewport element hooks —
useViewportRefanduseViewportRefsare replaced byuseViewportElementfor readers anduseViewportElementRegistrationfor the viewport that owns the element, andViewportRefsProvideris renamedViewportElementsProvider. The element is now a subscribed value rather than a snapshot read during render. -
Save/report dialog — the dialog for storing measurements, segmentations and contours replaces its series drop down with an explicit choice of three destinations: Save to current, Save as new and Replace existing. The series number of a new series is editable, and the series descriptions used before are remembered per type of item and offered as completions.
createReportDialogPrompttakesdefaultSeriesDescription,itemTypeandrememberedDescriptionCount, and returns aseriesNumber. A stored instance is now identified like a loaded one, so the object just saved becomes the predecessor of the next save of the same data. -
Display set date/time ordering — derived display sets are ordered by the creation date/time of the instance they show rather than by their series date/time, comparators registered with
addSameSeriesComparenow actually run, instances tie-break by creation date/time before the SOP instance UID, and saved reports and segmentations are stamped with a creation date/time and an instance number. -
useCustomization —
@ohif/coreadds auseCustomizationhook. A component that callscustomizationService.getCustomizationduring render can now freeze at a stale value, because the React Compiler caches the call on the service reference, which never changes. Move such reads to the hook. Event handlers and non-React code keep calling the service directly. -
InputNumber —
InputNumber.HorizontalControlsandInputNumber.VerticalControlsnow sharemin,max,stepanddisabledthrough a nested provider rather than by writing onto the root context object. That fixes constraints being discarded on every keystroke, but it means only descendants of the controls receive them; anInputNumber.Inputrendered as a sibling silently falls back tomin=0, max=100, step=1. -
createContext helper — the internal
ui-next/lib/createContexthelper is removed. It was never exported from@ohif/ui-next; if you imported it from source, use React's owncreateContextanduseContext— the compiler now provides the memoization it was hand-rolling.
React 19
3.14 upgrades the monorepo to React 19.2.7.
Display set date/time ordering
Derived series - reports, segmentations, structure sets - are ordered by when
WorkList
3.13 shipped the ui-next WorkList at / and kept the previous study list as
SmartScrollbar
In 3.13, SmartScrollbarFill and SmartScrollbarEndpoints accepted a marked array
DataTable / TanStack Table v9
@ohif/ui-next upgrades @tanstack/react-table from v8 to v9. If you consume
useSegmentationExpanded
useSegmentationExpanded used to throw when a component was rendered outside a
Viewport element hooks
The viewport element registry lets a component reach a viewport's DOM element by
Save/report dialog
The dialog shown when storing measurements, segmentations or contours
createContext helper
platform/ui-next/src/lib/createContext.tsx is deleted. It was an internal helper
useCustomization
3.14 adds useCustomization to @ohif/core. If a component of yours reads a
InputNumber
InputNumber.HorizontalControls and InputNumber.VerticalControls accept min,