Search Docs
Loading...
Skip to content

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 getAbsoluteURI is now async (callback-based) to support async resolvers. getAbsoluteURI must be used asynchronously on all platforms.
  • Engine/Web: EditorAPI.getAbsoluteURI now returns Promise<string> and EditorAPI.setURIResolverAsync was added. unstable_getURIResolver is renamed to getURIResolver.
  • Engine/Swift + Engine/Android: getAbsoluteURI is now async (async/suspend) and async URI resolver APIs were added.
  • Engine/Swift: Export APIs now apply onPreLoad and support a uriResolver for configuring the background export worker before loading the exported scene.
  • Engine/Android: Export APIs support a uriResolver for 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, and removeOrderComponent with the ly.img.video.clip.menu area. Custom actions can be added via the ly.img.video.clip.menu.action component.
  • Engine: Added scene/extendedPanningArea property to control whether the canvas workspace extends far beyond the content bounds. Defaults to false.
  • 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.disable to propagate to child features via parent keys.
  • Editor/Web: Rename ly.img.page.freeLayout to ly.img.scene.layout.free with new parent ly.img.scene.layout.
  • Editor/Web: Add ly.img.page.clipContent feature key for clip content toggle.
  • Editor/Web: Remove duplicate ly.img.audio.replace feature key. Use ly.img.replace.audio instead. Rename inspector bar component to ly.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 AssetProperty type and AssetAPI.applyAssetSourceProperty for 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/createShape APIs. Content clipping, selection outlines, bleed margins, and export all respect the page shape.
  • Engine: Added page/marginScale property 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/allowShapeChange setting (default: true). When set to false, supportsShape returns false for 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/useLigatures property to control font ligature rendering on text blocks. Set to false to disable standard and contextual ligatures. Enabled by default.
  • Editor/Web: Added timeline/trackVisibility setting 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 all Font[] entries for a variable font from its URI and supported axes.
  • Engine/Android: Fixed an IndexOutOfBoundsException in 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.template asset source ID with ly.img.templates across guide examples.
  • Editor/Web: Migrated smoketest configurations from deprecated callbacks config 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 callbacks config and addDefaultAssetSources.
  • Editor/Web: Added support for multiple page sizes within one scene. Pages can now have individual dimensions when the differentPageFormats feature 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.