Changelog
Explore the recent changes made to CreativeEditor SDK.
Our release notes contain more details on features and changes.
Download the full changelog as a plain text file.
Recent Releases
Version v1.74.1 Changelog May 7, 2026
Breaking Changes
Non Breaking Changes
- Editor/Web: Fixed dependency declarations and import resolution causing some starterkits to fail on startup.
- Camera/iOS: Fixed a crash that could occur when the camera failed to start.
Version v1.74.0 Changelog May 5, 2026
Breaking Changes
- Editor/Web: BREAKING: The video editor starter kit now defaults to a simplified timeline.
timeline/trackVisibilityis set to'active'so only the selected track is shown in the foreground, and thely.img.video.timeline.rulerfeature is disabled so the time scale is hidden.
Non Breaking Changes
- Editor/Web: Add
builder.Spinner()to render an indeterminate loading spinner in registered panels, with an optionallabelrendered beneath the spinner. - Engine: Improved corner rounding on polygon and vector path shapes to produce smooth bezier arcs at curved segment junctions
- Engine: Added
Dynamicoption totouch/pinchActionsetting. Pinch gestures scale the block at the center point between fingers, or zoom the camera if no block is found. - Engine/Web: Added
exportPdfWithDeviceCMYKexport option. When enabled, direct CMYK colors are written as DeviceCMYK (k/Koperators) and spot colors with CMYK values are written as DeviceN with process CMYK components in exported PDFs. Disabled by default for backward compatibility. - Engine: Added
page/flipDimensionsOn90DegreeCropRotationsetting. When enabled, rotating the crop by 90 degrees automatically swaps the block’s width and height, causing the page aspect ratio to rotate with the content. - Editor/Web: Replaced the editor loading indicator with a theme-aware beacon ring that adapts to light and dark surfaces using the host’s design tokens.
- Editor/Web: Added UI controls to add and delete gradient color stops from the color picker.
- Editor/Web: Added UI controls for switching between linear, radial and conical gradient fill types.
- Editor/Web: Added a mirror button to reverse gradient stops.
- Engine/Editor: Added
page/marqueeSelectOnBodyDragsetting (default:false). When enabled, a click+drag that starts on the page body marquee-selects the blocks inside the page instead of moving the page. The page can still be moved by dragging its title, or by holding Cmd (macOS) / Ctrl (Windows/Linux) while clicking+dragging on the page body, on any block inside the page, or on a page whose body is fully covered by content. In free layout the Cmd/Ctrl+drag translates the page; in horizontal/vertical stack layouts it reorders the page within the stack. - Plugins/Web: Added
embedICCProfileoption to the Print-Ready PDF plugin’sconvertToPDFX3. When set tofalse, the resulting PDF is converted to device CMYK (or RGB, depending on the selectedoutputProfile) without embedding an ICC profile or the PDF/X-3 OutputIntent, enabling integration with downstream prepress pipelines such as ZePrA or PitStop that assign their own ICC profile and apply color normalization. Defaults totruefor backward compatibility. - Engine/Editor: Added
page/restrictPageSelectionToBorderAndTitlesetting (default:false). When enabled, clicking inside a page body no longer selects the page; the page can only be selected by clicking on its border or title. - Engine: Auto-width text blocks now shrink back to fit the remaining text when content is deleted to a single line while the page-edge clamping feature is active.
- Engine: Snap guide lines are now finite and bounded to the edges of the involved elements. Element boundaries are shown with a dashed pattern, while connecting lines and gaps between elements are solid.
- Engine: Vector anchor handles in vector edit mode now snap to page edges, centers, siblings, grid lines, and to other anchors’ horizontal/vertical alignment.
- Engine: Added
hasSelectedVectorControlPoint()anddeleteSelectedVectorControlPoints()APIs for managing bezier control point handles during vector editing. - Engine: Added
shape/star/cornerRadiusproperty for rounding star shape corners. - Engine: Improved vector editing: corner radius is now preserved as a live property when converting parametric shapes to vector paths, bend mode no longer overwrites existing control handles, and segment splits produce smooth nodes by default.
- Plugins/Web: Fixed background removal failing on GPUs without WebGPU
shader-f16support by falling back to CPU-based inference. - Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Engine: Fixed
getTypeface()andgetTypefaces()returning an error for text blocks without an explicitly set typeface. They now resolve the default font from settings when no typeface has been assigned. - Editor/Web: Fixed an issue where the hex color input did not update when pasting a color value.
- Engine/Swift: Dispatch async
onXChangedstream unsubscribes to the main thread, fixing a race in the engine’s subscription map when multiple streams terminate concurrently. - Engine: Thumbnail generation now caps the effective render resolution at 512 px on each dimension. The returned thumbnail still matches the requested output size.
- Engine: Fixed the
cesdk-rendererLinux CLI exporting only the first page when writing a scene to PDF. PDF exports now include every page of the scene by default; pass--page <index>to export a single page. - Engine: Fixed PDF export wrapping spot-colour text in a transparency group.
- Engine: Fix underlayer shape being offset by the page margin in PDF export when
page/marginEnabledis enabled. - Editor/Web: Added 46 new Starter Kits covering video editing, plugins, custom built UIs, customization, assets, templating, creative automation, and extensibility.
- Engine: Fixed an issue where text blocks with pending font resources (e.g., system font fallback) would show a gray background overlay in exported images.
- Engine: Fixed a rare crash that could occur when moving, resizing, or rotating an element if the selection changed during the gesture.
- Editor/Web: Fixed the canvas view jumping to the page center on undo/redo when zoomed in.
- Engine: Star shapes now use the smooth corner rounding introduced for polygons and vector paths, so a star’s
cornerRadiuslooks identical whether or not it is in vector edit mode. - Engine: Entering vector edit mode on a circle or ellipse now mirrors its control handles in both angle and length by default, keeping the shape symmetric while dragging a single handle.
- Editor/Web: Updated the design of gradient color stop handles.
- Editor/Web: Fixed gradient bar preview to reflect actual stop positions while dragging.
- Editor/Web: Replaced the color mode label with a dropdown to switch between RGB and CMYK.
- Editor/Web: Hide the Position control in the inspector bar when a page block is selected. Previously a disabled Position button was shown because the
ly.img.positionfeature was implicitly kept enabled by its always-truearrange,align, anddistributechild predicates; the child predicates now mirror the parent and returnfalsefor pages. - Engine: Fixed
page/title/colorsetting not being applied while editing a page title; the editing text no longer inherits the selection-highlight color from the displayed title. - Plugins/Web: Added
middlewarestoGatewayProviderConfiguration, bringing AI gateway providers in line with every other AI provider. Use it to hook logging, rate limiting, custom error handling, oruploadMiddlewareto re-upload generated assets to your own storage — the recommended fix for the gateway’s short-lived presigned URLs. - Engine: Added
ExportOptions.underlayerRenderRatioandExportOptions.underlayerMaxErrorto allow tuning the fidelity of the PDF underlayer contour. - Editor/Web: Fixed canvas being greyed out by the ruler overlay on Firefox in advanced mode.
- Editor/ReactNative: Fixed
IMGLYEditor.openEditorandIMGLYCamera.openCamerahanging on iOS when the host app already had a view controller presented modally (e.g.react-native-screensmodal routes, Expo Router modal screens, RN<Modal>, system sheets). The editor is now presented from the topmost view controller, so the returnedPromisesettles correctly in all hosting scenarios. - Editor/Android: Introduced the
addToBackgroundTrackparameter forEditorEvent.AddUriToScenewhen adding URI assets to the scene. - Editor/Android: Fixed the “Select Group” canvas menu button being rendered as a plain text label instead of the filled tonal chip-style button.
Version v1.73.1 Changelog April 23, 2026
Non Breaking Changes
- Editor/iOS: Engine-provided animation asset labels can now be localized through the platform localization system. Apps can override labels per locale by declaring the matching string keys.
- Editor/Android: Engine-provided animation asset labels can now be localized through the platform localization system. Apps can override
labels per locale by declaring the matching string keys in their
strings.xml
Version v1.73.0 Changelog April 20, 2026
Breaking Changes
-
Editor/Android: BREAKING: Introduced Starter Kits - pre-configured editor templates that replace the previous built-in editor composables. The editor now initializes with a blank canvas by default.
Key changes:
- The editor initializes a blank canvas with minimal configuration. Use one of our Starter Kits to get started quickly based on your use case.
Migration: See the Starter Kits Migration Guide for step-by-step instructions.
-
Editor/iOS:
OnCreate.defaultandOnCreate.loadSceneno longer load the default and demo asset sources. -
Editor/iOS: Removed
SceneModedependency from UI logic. Editor behavior is now configured explicitly per solution rather than derived from the scene mode. -
Editor/iOS: Added
OnExport.static()andOnExport.video()replacing the removedOnExport.default. -
Editor/iOS: Removed
AssetLibrarySceneModeReader,OnExport.default, andOnCreate.loadAssetSources. -
Editor/iOS: Added
photoRollTabrequirement to theAssetLibraryprotocol. Custom conformances must implement this property. -
Engine/Swift: Removed
sceneModeparameter fromaddDemoAssetSources. Theexcludeparameter now defaults to excluding video and audio sources; passexclude: []to include all.
Non Breaking Changes
- Engine/Android: Bumped compileSdk and targetSdk versions to 36.
- Editor/Android: Bumped compileSdk and targetSdk versions to 36.
- Engine/Editor: Added
controlGizmo/dynamicMoveHandleVisibilitysetting (default:true). Set tofalseto keep the move handle always visible regardless of block size. Default behavior is unchanged. - Editor/Web: Improved keyboard accessibility by returning focus to the trigger button when closing a panel
- Editor/Web: Add
builder.Select()support to navigation bar, inspector bar and canvas bar withsearchableandsearchPlaceholderoptions. - Engine: Added SVG export support using the
image/svg+xmlMIME type. Text is exported as vector paths for consistent rendering across environments. Drop shadows, blur, effects, and raster images are rasterized and embedded as images. - Engine: Fixed importing some camera-recorded MP4/3GP videos whose audio track uses AMR sample entries.
- Engine: Fixed animation duration slider not allowing the full clip length due to rounding.
- Engine: Local asset sources now resolve labels and tags using a fallback chain (requested locale → “en” → first available) instead of returning empty values when the exact locale is not found.
- Editor/Web: Fixed the “Match Language Direction” control incorrectly showing RTL mode when LTR text is right-aligned.
- Editor/Android: Fixed the “Match Language Direction” control incorrectly showing RTL mode when LTR text is right-aligned.
- Editor/iOS: Fixed the “Match Language Direction” control incorrectly showing RTL mode when LTR text is right-aligned.
- Engine: Fixed multiline text rendering for fonts with non-standard line gap metrics (e.g., Coiny). The font’s line gap is now correctly incorporated into line height calculations, fixing incorrect line spacing and cursor height.
- Engine: Fixed document colors missing colors and incorrect active states for text with mixed run colors.
- Editor/Web: Fixed document colors not refreshing when changing partial text colors.
- Engine: Fixed fade animation jumping when combined with element opacity on groups
- Editor/Web: Fixed archive import and
cesdk.utils.loadFileopening file picker twice on Windows when OPFS is not available - Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Engine: Fixed an issue where pages in free layout mode would jump to align with neighboring pages after flipping their orientation.
- Engine:
findAllSettings()no longer returns internal or legacy settings such asdebug/*andfeatures/*. - Engine/Web: Fixed hover frame remaining visible when moving the mouse from a selected block to the canvas menu.
- Engine/Swift: Fixed certain HEVC videos not playing correctly on iOS.
- Engine/Swift: Improved export time for videos.
- Engine: Fixed console errors when mixing RTL and LTR text in a text block with word wrapping enabled.
- Engine: Fixed opacity not being applied correctly to nested groups.
- Engine/Node: Fixed null engine reference on dispose, respect forceCPU on Linux, GPU flush on destruction, and JSON validation for scene deserialization.
- Editor/Web: Fixed a memory leak where switching fill types (solid/gradient) orphaned the previous fill entity
- Editor/Web: Fixed page titles being styleable (font, color, size) during editing.
- Engine: Fixed pinch-to-zoom deselecting the selected element, causing canvas jumps from single-touch scroll, and accidentally triggering handle drags during two-finger gestures.
- Engine: Reduced jittery behavior when starting a pinch-to-zoom gesture by increasing the single-touch pan distance threshold and adding a time delay before single-touch panning activates.
- Engine: Fixed placeholder settings not being adjustable for blocks loaded from older scenes.
- Engine: Fixed a bug where clicking on empty areas within a non-rectangular shape’s bounding box caused the selection to flicker.
- Engine: Fixed system font fallback rendering producing incorrect results in thumbnails.
- Engine: Fixed applying a template overwriting the scene layout mode, causing inconsistent state when the previous layout differed from the template’s layout.
- Engine: Fixed text variables being duplicated when entering text edit mode after applying a text color range that intersected a variable placeholder. Variables are now treated as a single grapheme unit in all text formatting APIs (consistent with inline text editing), so formatting ranges are always snapped to variable boundaries rather than splitting inside them.
- Engine: Fixed an issue where
payload.sourceSetwas not applied to video fills when usingdefaultApplyAsset - Engine/Android: Fixed audio playing back at ~2x speed for videos with HE-AAC (SBR) or HE-AACv2 (PS) audio tracks.
- Engine: Fixed audio duration being reported as half the actual value for HE-AAC/HE-AACv2 audio.
- Editor/Web: Fixed incorrect translations.
- Editor/iOS: Added new
Editorstruct providing a unified core editor. - Editor/iOS: Added
OnChangedcallback to be notified when state changes occur in the editor. - Editor/Web: Added 10 new floral stickers to the
StickerAssetSourceplugin, available under thely.img.sticker.floralscategory. - Editor/Web: Added new
PremiumTemplatesAssetSourceplugin for premium template assets (ly.img.templates.premium). - Engine: Fixed a crash when loading scene files saved with engine versions prior to 1.72.0 that contain text blocks.
- Engine/Android: Fixed a crash in pan gesture handling during multi-touch interactions.
- Editor/Android: Fixed a crash where zooming to a selected block could fail if the block was deleted during the zoom debounce window.
- Editor/Android: Fixed a rare crash in the canvas menu when the selected block was deleted.
- Editor/Web: Fixed double-click page title renaming not working on direct load. Page title editing is now enabled by default in every editor config.
- Engine: Fixed audio waveform thumbnail generation for 24-bit WAV files.
- Editor/Web: Fixed shape controls incorrectly appearing for sticker blocks in the inspector.
Version v1.72.3 Changelog April 14, 2026
Breaking Changes
Non Breaking Changes
- Engine/Android: Fixed a crash in pan gesture handling during multi-touch interactions.
- Editor/Android: Fixed a crash caused by stale block IDs in the zoom function when blocks are deleted during debounce delay.
- Editor/Android: Fixed a rare crash in the canvas menu when the selected block was deleted.
- Engine/Android: Fixed HE-AAC (SBR/PS) audio playback and duration calculation on Android by correctly accounting for Spectral Band Replication doubling the frame length.
Version v1.72.2 Changelog April 9, 2026
Breaking Changes
Non Breaking Changes
- Engine: Fixed a crash when loading scene files saved with engine versions prior to 1.72.0 that contain text blocks.
Version v1.72.1 Changelog April 2, 2026
Breaking Changes
Non Breaking Changes
- Editor/Web: Add
builder.Select()support to navigation bar, inspector bar and canvas bar withsearchableandsearchPlaceholderoptions. - Engine: Local asset sources now resolve labels and tags using a fallback chain (requested locale → “en” → first available) instead of returning empty values when the exact locale is not found.
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).
Version v1.71.0 Changelog March 19, 2026
Breaking Changes
- Engine: Added async URI resolving via
setURIResolverAsync, enabling asynchronous resolution (e.g. token fetching) and proper error reporting. - Engine: breaking change
getAbsoluteURIis now async (callback-based) to support async resolvers.getAbsoluteURImust be used asynchronously on all platforms. - Engine/Web:
EditorAPI.getAbsoluteURInow returnsPromise<string>andEditorAPI.setURIResolverAsyncwas added.unstable_getURIResolveris renamed togetURIResolver. - Engine/Swift + Engine/Android:
getAbsoluteURIis now async (async/suspend) and async URI resolver APIs were added. - Engine/Swift: Export APIs now apply
onPreLoadand support auriResolverfor configuring the background export worker before loading the exported scene. - Engine/Android: Export APIs support a
uriResolverfor configuring the background export worker before loading the exported scene.
Non Breaking Changes
- Editor/Web: Added component order API support for the video clip context menu. The clip context menu can now be fully customized per clip type (clip, overlay, caption) using
setComponentOrder,insertOrderComponent,updateOrderComponent, andremoveOrderComponentwith thely.img.video.clip.menuarea. Custom actions can be added via thely.img.video.clip.menu.actioncomponent. - Engine: Added
scene/extendedPanningAreaproperty to control whether the canvas workspace extends far beyond the content bounds. Defaults tofalse. - Editor/Web: Added free layout mode for pages with single-gesture drag, page snapping, auto-positioning of new, pasted, and duplicated pages, and persistent page positions across layout switches.
- Editor/Web: Add granular child feature keys for fill, stroke, shadow, shape options, position, group, combine, scene layout, and page clipping, enabling fine-grained control over individual UI sub-controls.
- Editor/Web: Fix
feature.enable/feature.disableto propagate to child features via parent keys. - Editor/Web: Rename
ly.img.page.freeLayouttoly.img.scene.layout.freewith new parently.img.scene.layout. - Editor/Web: Add
ly.img.page.clipContentfeature key for clip content toggle. - Editor/Web: Remove duplicate
ly.img.audio.replacefeature key. Usely.img.replace.audioinstead. Rename inspector bar component toly.img.replace.audio.inspectorBar. - Editor/Web: Improved position dropdown with grid layout and layer fixing dropdown
- Editor/iOS: Added new inspector bar button
InspectorBar.Buttons.animation()that opens the animations sheet in the video editor. - Editor/iOS: Added support for animations in the video editor.
- Engine/Swift: Added
AssetPropertytype andAssetAPI.applyAssetSourcePropertyfor applying property changes to asset sources. - Engine: Added support for non-rectangular page shapes. Pages now support all shape types (ellipse, polygon, star, etc.) via the existing
setShape/getShape/createShapeAPIs. Content clipping, selection outlines, bleed margins, and export all respect the page shape. - Engine: Added
page/marginScaleproperty for shape-based bleed margins. Set a value greater than 1.0 (e.g., 1.1 for 10% bleed) to scale the page shape outward, creating a uniform bleed area that follows the shape contour. Per-side margins (page/margin/*) continue to work for rectangular pages. - Engine: Added
page/allowShapeChangesetting (default:true). When set tofalse,supportsShapereturnsfalsefor pages, preventing shape changes via the API. Non-page blocks are unaffected. - Engine: Added a new “Scale” loop animation with configurable start/end scale, start delay, hold duration, easing duration, and direction.
- Engine: Added
text/useLigaturesproperty to control font ligature rendering on text blocks. Set tofalseto disable standard and contextual ligatures. Enabled by default. - Editor/Web: Added
timeline/trackVisibilitysetting to control which timeline tracks are visible. Set to'all'(default) to show every track, or'active'to show only the track containing the active block. - Engine: Added variable font support. A single font file can now represent multiple weight and style variants.
- Engine/Web: Added
createVariableFontCombinations()utility to generate allFont[]entries for a variable font from its URI and supported axes. - Engine/Android: Fixed an
IndexOutOfBoundsExceptionin text input during IME composition. - Engine: Improved audio export performance significantly.
- Engine: Added support for exporting audio from group blocks.
- Engine: Fixed pages with emoji characters in their title being stuck in a loading state.
- Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Documentation: Updated all browser guide code examples to replace deprecated v1.69 APIs (
addDefaultAssetSources,addDemoAssetSources) with the new plugin-based asset source approach. - Documentation: Removed obsolete get-started pages and deprecated asset source API references.
- Documentation: Replaced deprecated
ly.img.templateasset source ID withly.img.templatesacross guide examples. - Editor/Web: Migrated smoketest configurations from deprecated
callbacksconfig to the actions API and Order API. - Plugins/Web: Updated plugin examples to use the new plugin-based asset sources and Order API instead of deprecated
callbacksconfig andaddDefaultAssetSources. - Editor/Web: Added support for multiple page sizes within one scene. Pages can now have individual dimensions when the
differentPageFormatsfeature flag is enabled. The resize panel dynamically adjusts between per-page and all-pages mode based on selection. - Editor/Web: Fixed page jumps and canvas shifts when changing page sizes in free layout mode.
- Editor/Android: Fixed the “Scale” loop animation not being applied or adjustable.
- Engine: Fixed an issue where exporting pages with emoji in the page title could cause an endless export loop.
- Engine: Fixed page positioning in free layout mode when changing aspect ratios via crop presets. Pages now maintain consistent spacing in both horizontal and vertical arrangements.
Version v1.70.1 Changelog March 13, 2026
Breaking Changes
Non Breaking Changes
- Documentation: Updated all browser guide code examples to replace deprecated v1.69 APIs (
addDefaultAssetSources,addDemoAssetSources) with the new plugin-based asset source approach. - Documentation: Removed obsolete get-started pages and deprecated asset source API references.
- Documentation: Replaced deprecated
ly.img.templateasset source ID withly.img.templatesacross guide examples. - Editor/Web: Migrated smoketest configurations from deprecated
callbacksconfig to the actions API and Order API. - Plugins/Web: Updated plugin examples to use the new plugin-based asset sources and Order API instead of deprecated
callbacksconfig andaddDefaultAssetSources.