Version v1.72.0 Changelog April 2, 2026
Breaking Changes
- Engine: Breaking: Deprecated scene mode. The engine no longer restricts features based on scene mode. All features (video playback, timeline, audio, export, etc.) work on every scene regardless of mode. See the v1.72 migration guide for details.
- Engine/Web: Breaking:
scene.getMode()now returnsnullfor scenes created withscene.create(). Previously returned'Design'. The return type changed fromSceneModetoSceneMode | null. - Engine/Web: Deprecated
scene.getMode(),scene.setMode(), andscene.createVideo(). These APIs still work but will be removed in a future version. - Engine/Web:
block.addVideo(),block.getBackgroundTrack(),block.addImage(), andblock.getThumbnailAt()no longer throw errors on Design-mode scenes. - Editor/Web: Breaking: Deprecated
cesdk.createDesignScene(),cesdk.createVideoScene(), and themodeoption on thescene.createaction. Usecesdk.actions.run('scene.create')instead. - Editor/Web: Breaking: Browser support checks (
editor.checkBrowserSupportaction) are no longer triggered automatically based on scene mode. Config plugins must call the action explicitly with{ videoDecode, videoEncode }parameters. Starter kit configs (video editor, advanced video editor) are already updated. - Editor/Web: Breaking: Code that reads
scene/modeviaengine.block.getEnum(scene, 'scene/mode')will throw on scenes without a mode. Remove mode checks or set a mode explicitly. - Renderer/CLI: Scenes without a mode now default to image export instead of crashing.
- Migration guide: Upgrading to v1.72 covers scene creation changes, removing mode checks, browser support configuration, TypeScript type updates, cross-platform compatibility, and how to keep using legacy mode if needed.
- Editor/iOS: Renamed
InspectorBar.Buttons.editVoiceover()toaddVoiceoverRecording()andInspectorBar.Buttons.ID.editVoiceoverto.addVoiceoverRecording. RemovedImage.imgly.editVoiceover; useImage.imgly.addVoiceoverinstead. Voiceover clips now support duplicate, split, and replace actions in the inspector bar.
Non Breaking Changes
- Engine: Added
.wavto the supported audio import formats in the file format support documentation. - Editor/Android: Added Voiceover recording to the timeline audio flow with multiple voiceover tracks, recording beyond video end, and waveform/trim handling improvements.
- Editor/Web: Added grid and rulers feature with configurable grid spacing, snap-to-grid, grid color customization, and canvas rulers. Controlled via
ly.img.rulersfeature flag — enabled by default in advanced editor and video editor configurations. - Editor/iOS: Voiceover recording now uses a compact floating record sheet with multi-track recording support and lets you add follow-up recordings from selected voiceover clips. Added
SheetStyle.only(isFloating:detent:)andPresentationDetent.imgly.micro. The default style forSheetType.voiceover()changed to a floating micro sheet. - Engine: Added
maxPreviewResolutionsetting that caps the rendering resolution during preview mode. When set to a value greater than 0, the scene is rendered to a smaller offscreen surface and upscaled, improving performance on high-DPI displays. Does not affect exports or thumbnails. Defaults to -1 (disabled). - Engine: Added
page/title/canEditsetting to enable renaming pages by double-clicking the page title on the canvas. Pressing Enter confirms the new name. - Editor/Web: When
page/title/canEditis enabled, double-clicking the page title opens an inline text editor to rename the page. - Engine: Added
page/reparentBlocksToSceneWhenOutOfPagesetting that allows blocks to be automatically reparented to the scene when dragged outside all pages, and back to a page when dragged over one. - Engine: Added
page/highlightDropTargetsetting that highlights the page under a dragged element as a drop target. Defaults tofalse. - Engine: Added text decoration support with
setTextDecoration,getTextDecorations,toggleTextDecorationUnderline,toggleTextDecorationStrikethrough, andtoggleTextDecorationOverlineAPIs.- Line types: Underline, Strikethrough, Overline (combinable per text run).
- Visual styles: Solid, Double, Dotted, Dashed, Wavy.
- Underline-specific options: color override (
underlineColor), thickness multiplier (underlineThickness), position offset (underlineOffset), and skip-ink (skipInk). - Overline and strikethrough always use the text color.
- Decoration state is persisted with scene serialization.
- Engine/Web: Added
block.setTextDecoration(id, config, from?, to?),block.getTextDecorations(id, from?, to?),block.toggleTextDecorationUnderline(id, from?, to?),block.toggleTextDecorationStrikethrough(id, from?, to?), andblock.toggleTextDecorationOverline(id, from?, to?). New typesTextDecorationLine,TextDecorationStyle, andTextDecorationConfigare exported from@cesdk/engine. - Engine/Android: Added
block.setTextDecoration(block, config, from, to),block.getTextDecorations(block, from, to),block.toggleTextDecorationUnderline(block, from, to),block.toggleTextDecorationStrikethrough(block, from, to), andblock.toggleTextDecorationOverline(block, from, to)withTextDecorationLine,TextDecorationStyle, andTextDecorationConfigdata class. - Engine/Swift: Added
block.setTextDecoration(id, config:, in:),block.getTextDecorations(id, in:),block.toggleTextDecorationUnderline(id, in:),block.toggleTextDecorationStrikethrough(id, in:), andblock.toggleTextDecorationOverline(id, in:)withTextDecorationLineOptionSet,TextDecorationStyleenum, andTextDecorationConfigstruct. - Engine: Add keyboard interaction behaviors for text list editing: automatic list creation on trigger sequences (
*,-,+,1.), Tab/Shift+Tab indentation (up to 5 levels), Enter to continue or exit a list, Shift+Enter to add a line break within a list item, and Backspace to decrease indent or remove list structure. - Engine/Android: During text editing Shift+Enter creates a new line instead of a new paragraph.
- Engine: Added text list support with ordered and unordered list styles. New APIs:
setTextListStyle,getTextListStyle,setTextListLevel,getTextListLevel, andgetTextParagraphIndicesallow per-paragraph list formatting with configurable nesting levels. Lists can be nested for a maximum of 5 levels. - Editor/Web: Added UI controls for text list styles in the advanced text inspector and as canvas menu actions.
- Editor/Android: Added UI controls for text list styles in the format options sheet.
- Editor/iOS: Added UI controls for text list styles in the text format options.
- Engine: Added vector path editing mode with vertex add/delete, node selection, segment hover with midpoint handles, and control point manipulation
- Engine: LineShape entities are now automatically converted to VectorPath with stroke on deserialization for proper stroke controls and vector editing
- Engine: Bypassed SVG round-trip for conic-based shapes (circles/ellipses) to preserve smooth curves during vector edit conversion
- Engine: Fixed frame-to-path dimension mismatch for inscribed shapes (polygons, stars) during vector conversion
- Engine: Proportional image fill during vector path refit preserves Cover behavior and user’s zoom/pan position
- Engine/Web: Added vector edit APIs for node manipulation, bend mode, add/delete modes, and mirror mode
- Editor/Web: Added vector edit UI with Move/Bend mode toggle, anchor point add/delete, mirror mode dropdown, and keyboard shortcuts (Backspace/Delete)
- Editor/Web: Deferred vector path conversion — entering vector edit mode is non-destructive until first modification
- Editor/Web: Added corner radius slider for vector_path shapes in shape inspector
- Engine: Improved WAV audio import reliability and added support for the
audio/waveMIME type. - Editor/Android: Fixed image placeholder tapping immediately opening the replace sheet when
dragStartCanSelectis enabled. - Editor/Web: Fixed arrow key movement not working when more than 3 blocks were selected via Cmd/Ctrl+click
- Engine: Fixed bold and italic toggle behavior so that toggling checks whether all runs in the selection are bold/italic. If all are, the style is removed; if any are not, the style is added to all. Previously, the toggle only checked the current editing style rather than the full selection range.
- Editor/Web: Fixed bold and italic toggle buttons to show as active only when all characters in the selection are bold/italic, not when any single character is.
- Engine: Fixed PDF export producing blank pages when the effective rendering size at the scene’s DPI exceeds GPU texture limits.
- Editor/Web: Fixed
web/fetchCredentialssetting not being respected on asset thumbnails and audio preview elements. When set to'include', thecrossOriginattribute on media HTML elements is now correctly set to'use-credentials'instead of always using'anonymous'. - Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Engine: Fixed GStreamer video export failures with HE-AAC and HE-AACv2 audio tracks, and resolved infinite loops during backward seeks.
- Editor/iOS: Fixed image placeholder tapping immediately opening the replace sheet when
dragStartCanSelectis enabled. - Editor/Web: Fixed keyboard shortcuts (e.g., Ctrl+B for bold, Ctrl+I for italic) not toggling off due to a stale closure in the shortcut handler.
- Engine: Fixed loop animation duration not being clamped when reducing a block’s duration.
- Engine: Fixed a crash in MP4 demuxing when reading from a streaming resource with a negative offset.
- Engine: Fixed a crash when entering text editing mode on text blocks that had
setTextColorapplied while containing template variables. - Engine: Fixed text shaping to automatically merge adjacent text runs with identical style properties, preserving cross-run kerning and ligatures.
- Engine: Fixed text cursor placement when clicking in the gap between lines, which previously caused the selection to jump to the end of the text block.
- Engine: Fixed incorrect video duration for iOS-trimmed videos where metadata tracks retained the original untrimmed duration.
- Editor/Web: Added a Document Settings button to the navigation bar that opens a dedicated panel for page size, layout, and document properties.
- Editor/Android: Fixed the “Scale” loop animation not being applied or adjustable.
- Engine: Fixed
relocateResource()not properly invalidating cached resource state after font URI changes, causing fonts to not be re-fetched from the new URL after scene load. UserelocateResource()to migrate font URIs (e.g. after a CDN change).