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.