OHIF Viewer v3.11
August 5th, 2025
Overview Video
New Features
Enhanced Viewport Dialog for Multimodality Fusion
The viewport dialog has been completely reimagined, transforming from a basic segmentation controller into a comprehensive multimodality data fusion and overlay management system. Users can now seamlessly integrate and view multiple datasets such as PET over CT or RT Dose overlays in a single viewport.
Interactive controls for opacity and blending allow you to fine-tune how datasets appear together, simplifying overlay management and accelerating multimodality imaging workflows. Whether you're comparing functional and anatomical data or reviewing dose distributions alongside imaging studies, these tools provide clearer visual insights.

Dedicated Lung Ultrasound Mode
OHIF now offers a specialized lung ultrasound mode for precise annotation and analysis of pleural and B-lines—essential markers in lung ultrasound imaging. Users can draw and manage lines directly on ultrasound frames, toggle overlays for clearer visualization, and automatically calculate pleura percentage for each annotated frame.

DICOM Labelmap Segmentations IOD Support
OHIF Viewer 3.11 now supports the new DICOM Label Map Segmentation standard, revolutionizing how we handle large, non-overlapping segmentations. This implementation makes segmentations load significantly faster, use less memory, and handle bigger datasets more efficiently.
This feature complements existing DICOM segmentation formats, adding a high-performance option while maintaining full backward compatibility with traditional segmentation objects.

Radiation Therapy Dose Overlay
Full support for RT Dose visualization is now available, allowing users to overlay RT Dose data directly onto imaging modalities such as CT and MR scans. This integration enables more accurate assessment and improved planning in radiation therapy workflows.
Users can seamlessly view DICOM RT Dose objects within the same viewport as anatomical images. The feature supports adjustable visualization settings including transparency, color mapping, and dose thresholds, providing the flexibility needed to tailor views to specific clinical requirements.

SCOORD3D Support for 3D Coordinate Annotations
OHIF Viewer now supports SCOORD3D, enabling import and export of annotations with 3D coordinates that are not bound to a specific image plane. This allows for representing measurements, points, and shapes in true volumetric space, providing more flexible and accurate annotations across multi-planar views.
This highly requested community feature enables working with DICOM SR objects containing 3D spatial coordinates, making it possible to create and share annotations that maintain their accuracy across different viewing orientations. We're grateful to the Freie Universität Berlin team for their contribution to this functionality.

Advanced Multi-planar Visualization for RT Structure Sets
OHIF now supports projecting RT Structure Set (RTSS) contours in orientations beyond their original acquisition plane. Using separate-thread processing, the viewer reconstructs and displays contours in different views without affecting UI performance.
This update provides seamless integration into oncology workflows, significantly boosting spatial accuracy and overall utility for clinicians and researchers working with radiation therapy planning and review.

All Changes
- feat(annotation): Add command to show pleura percentage in USAnnotationPanel and update condition for BLinePleuraPercentage (PR#5297)
- feat: add support to scoord3d (PR#5016)
- Adds containsAll validator (PR#5279)
- feat: improve segment label (PR#5217)
- fix(colorbar): Allow for AdvancedRenderingControls to be placed at the left or right of the viewport. (PR#5273)
- fix(colorbar): Allow for AdvancedRenderingControls to be placed at the top or bottom of the viewport. (PR#5270)
- fix null save voi range properties (PR#5268)
- fix(multiframes): Corrected combining frame instances for multiframes. (PR#5264)
- test(SegmentationPanel): add test for jump to center of segments from PACS and basic add, rename, delete from panel (PR#5262)
- fix(tooltips): tool tips should be portals (PR#5265)
- fix: prevent failure in DICOM loader for wadouri type (PR#5260)
- fix(ArrowAnnotate): Allow free-form text for arrow annotations (PR#5259)
- Fix flaky SEGDataOverlayForUnreferencedDisplaySetNoHydration test. (PR#5254)
- fix: issue introduced from PR 5022 (PR#5223)
- Handle 200 status response and add default error handling (PR#5227)
- fix(calibration): do not override user set calibration (PR#5231)
- fix: disable seg download/export buttons until a user has drawn something (PR#4953)
- fix(ViewportOrientationMarkers): round rotation to fix floating point issue (PR#5135)
- fix(security): Removed stylus package due to potential security vulnerability and we don't use it. (PR#5250)
- fix(docs): Added docs for multimonitor and local linking (PR#5247)
- feat: Add customization for handling missing referencedDisplaySetInstanceUID for the SEG/RTSTRUCT. (PR#4983)
- fix(multimonitor): Study browser more menu fixes (PR#5208)
- fix(docs): Added entry for the showStudyList configuration setting. (PR#5235)
- fix(security): Pin eslint-config-prettier and eslint-plugin-prettier versions. (PR#5234)
- fix labelmap init (PR#5228)
- fix: image slices are displayed in reverse order, if we switch from common layout to 2D MPR (PR#5022)
- fix(viewportgrid): don't subscribe to duplicate event listeners (PR#5218)
- fix(black-viewports): MPR viewports were turning black if their parent stack had it's properties reset (PR#5219)
- fix(DicomUpload): Fix upload form and some scrollbars styles (PR#5125)
- Bug: Fix segmentationid undefined 5106 (PR#5107)
- fix(TMTV): The TMTV CSV file now has the correct name and contents (PR#5215)
- fix(segmentation): Removed LOAD/hydrate button for segmentation overlays (PR#5214)
- fix(panels): Allow for setting the initial and minimum expanded widths of each side panel. (PR#5207)
- feat(viewport): Enhance Orientation Menu with Reformat Option and UI Improvements (PR#5184)
- fix(segmentation overlays): Allow for the addition of multiple segmentation overlays. (PR#5189)
- fix(UI): Restored the scroll bar OHIF L&F (PR#5202)
- Use shouldResolvePreviewRequests method (PR#5199)
- ui(icons): Adds action and helper icon artwork for segmentation (PR#5200)
- fix(UnitTests): Fixing "Cannot find module @cornerstonejs/core" error while running unit tests (PR#5148)
- fix(security): Patch for Babel vulnerability (PR#5193)
- fix exception in newly added segmentations (PR#5198)
- feat(rendering): Introduce WebGLContextPool for parallel rendering in ContextPoolRenderingEngine (PR#5196)
- feat: group clear measurements history (PR#5194)
- fix(rendering): Introduce SequentialRenderingEngine to resolve canvas size limitation, performance degradation on high res monitors and enhance multi-monitor support (PR#5195)
- feat: add segment label tool (PR#5164)
- fix(measurement-group): use measurment study uid instead of active study uid (PR#5091)
- fix(labeling): measurement labeling dialog was overwriting the entire measurement and breaking it (PR#5095)
- fix(overlay-menu): Adding, changing and removing segmentation overlays should update the overlay menu instantly (PR#5181)
- add force to remove image from cache (PR#5176)
- feat: Add possibility to add additional props for PanelSection (PR#5172)
- fix(segmentation): Added support for unhydrated RTSTRUCT in MPR. Added support for overlaying segmentations over display sets the segmentations do not reference. (PR#5168)
- fix(WindowLevelActionMenu): The window level menu must show different contents for 3D volume viewports (PR#5113)
- feat(hp): add onStageChange callback (PR#5165)
- fix(hp): When reapplying an hp the display set selectors should be considered. (PR#5074)
- fix(unit-tests): Update bun.lock to fix unit tests. (PR#5159)
- fix(touch): Allow for multi-touch in OHIF (PR#5099)
- fix(touch): Prevent touch drag to refresh the browser page. (PR#5108)
- fix(segmentation): Changes to fix problems with non hydrated/loaded segmentations to be viewable when switching hanging protocols (e.g. MPR) (PR#5139)
- feat(labelmap): Add labelmap segmentation in OHIF (PR#5158)
- Fix BUILD_PACKAGES_QUICK PR check (PR#5160)
- feat(toolbar/hokeys): add pub sub events to hotkeys manager class, subscribe toolbar to hotkeys pressed event (PR#5157)
- test(MeasurementPanel): Converted MeasurementPanel interaction tests from cypress to playwright (PR#5153)
- Feat: Ultrasound Pleura B-line Annotation Mode & Extension (PR#5061)
- fix(action-corners): check hideWhenDisabled at both the evaluator and prop levels (PR#5149)
- fix(UnitTest): run was failing due to JS tests importing TS modules (PR#5145)
- feat(data overlay): add foreground background control plus orientation change in the UI and add RTDOSE support (PR#5007)
- fix(getToolbarModule): fix enabled state of image slice sync (PR#5136)
- bugfix(ToolbarService): Fixed removeButton bug for removing buttons inside sections (PR#5123)
- feat(commandsModule): Enhanced flipViewport and rotateViewport commands (PR#5065)
- fix: data-viewportId name is illegal, renamed to data-viewportid (PR#5121)
- fix(markerlabelmap): accept preview/reject preview not working when the marker annotation tools are active (PR#5101)
- docs: improved migration guides for 3p10 (PR#5110)
- fix(tmtv): Corrected the various section names being referenced. (PR#5093)
- fix(capture): Disable or enable the tool group based on the show flag. (PR#5069)
- fix(frame-view): After pan and/or zoom, stack scroll is now synchronized for frame view (PR#5067)
- fix(router): Expose the react router from the worklist too. (PR#5062)
- fix(context-menu): Move the reposition logic from the context menu to the dialog component. (PR#5060)
- feat(viewport): Added getter for presentation id provider. (PR#5053)
- fix(segmentation): segmentation stats calculations were not being done on a subsequent navigation to a mode (PR#5046)
- fix(segmentation): Allow for debounced pub/sub events to be reliably cancelled when unsubscribed to. (PR#5092)
- docfix: Fixed incorrect documentation and variables names (PR#5080)
- feat: create memo when manually adding and removing annotations (PR#5051)
- fix(ui): Prevent unintended text selection and improve component behavior (PR#5077)
- bugfix(Customization): Fixed incorrect events broadcast (PR#5075)
- fix: e2e playwright tests runnigns (PR#5070)
- fix(cli): removing missing imports in mode template (PR#5049)
- fix: backward compatibility with toolbar service (PR#5052)
- ui(feat): Adds light/dark mode support for viewport overlay text and markers (PR#5041)
- feat(actions): simplify action corner api through the toolbarService (PR#5033)
- fix: Added missing export for LayoutSelector in ui-next (PR#5040)
- fix(NotFoundStudy): Fixed the viewer not-found page when showStudyList: false (PR#5035)
- fix(DicomWebProxyDataSource): bug fix to save Segmentation files back to Kheops (PR#5028)
- feat(app): Decouple colorbar UI from service and enable action menu programatic control (PR#5018)
- feat(thumbnails): Enhance DICOM Thumbnail Rendering with different strategies (PR#5004)
- fix(orientationMarker): MPR orientation change should get reflected too (PR#5020)
- feat: add locale files for Russian language, translated texts in locale json files to Russian language. (PR#4984)
- feat(i18n): add Arabic translations (PR#5013)
- refactor(viewport): Remove resize detector and optimize viewport resizing logic (PR#5006)
- feat: improve menu modals customizations (PR#5011)
- fix/remove legacy ui (PR#5010)
- llm txt (PR#5009)
- docs: clarify terminology for study, series, and display sets (PR#5000)
- Fix: issue #4759 Enable proper DICOM image rendering when Rescale parameters are set to null (PR#5003)
- fix(referencelines): and bring back the notification for worker updates but disallow duplication (PR#5005)
- fix(template): Update mode template to match current implementation (OHI-1833) (PR#4998)
- fix(docs): Fix SSR build errors by dynamically importing UI components and resolving other issues (PR#4991)
- fix (PR#4988)
- fix docs (PR#4986)
- docs(components): Adds new components to ui-next documentation (PR#4974)
- Improve unsupported displayset messages (PR#4979)
- fix(dicomWebClient): use public getter for activeDataSourceName instead of accessing private property (PR#4973)
- fix(ExtensionManager): getDataSources method (PR#4959)
- fix: making onnxruntime work with rsbuild (PR#4957)
- ui(fix): Study panel scrollbar fix and updates (PR#4951)
- fix: add back study browser scrollbar (PR#4942)
- feat: expose scroll thumbnail into view (PR#4941)
- fix: enable measurements panel scroll (PR#4943)
- fix: make datasource selection work (PR#4944)
- docs: next version (PR#4940)
- fix(ui): Enhance UI Components and Update CornerstoneJS Dependencies and resizable panels (PR#4938)
- fix: x-ray pixel spacing calibration (PR#4922)
- docs: migration guides 3p10 (PR#4937)