Search Docs
Loading...
Skip to content

Version v1.75.0 Changelog May 19, 2026

Breaking Changes

Editor/Android

  • All ScopedProperty component properties in EditorConfigurationBuilder now return nullable components. For example, ScopedProperty<EditorScope, EditorComponent<*>>? is now ScopedProperty<EditorScope, EditorComponent<*>?>?.

Engine — Text

  • Setting block-level text/horizontalAlignment (via setEnum or setTextHorizontalAlignment without a paragraphIndex) now clears all paragraph-level horizontal alignment overrides.
  • Fixed paragraph override retention during text deletion/merge, so list style and paragraph horizontal alignment are preserved correctly.
  • getTextParagraphIndices now expects the to parameter to be exclusive.

New Features

APNG Support

  • Engine: Animated PNG (APNG) files can now be imported. In design scenes they appear as a static image (the first frame); in video scenes they play as a looping animated fill, the same way GIFs do.
  • Editor/Web, iOS, Android: The upload widget accepts .apng files.

Text

  • Engine: Added paragraph-level text horizontal alignment APIs (setTextHorizontalAlignment, getTextHorizontalAlignment) and getTextEffectiveHorizontalAlignment.

Crop & Aspect Ratio

  • Engine: Added a new ContentAspectRatio asset transform preset that snaps a block’s frame to the intrinsic aspect ratio of its image or video content at apply time.
  • Engine/Web: Added block.canRevertToOriginalRatio(block) which reports whether the “Original” crop preset (ContentAspectRatio) can be applied.
  • Editor/Web: Added an “Original” entry to the crop presets palette. Selecting it resizes the block to match its content’s natural aspect ratio.

Color & Image Colors

  • Engine: Added engine.block.getDominantColors() to extract the prominent colors of the rendered appearance of a block.
  • Editor/Web: Added an “Image Colors” section to the color library panel that aggregates the dominant colors of every block in the current scene, split into one sub-section per contributing block. Blocks referencing the same underlying image are collapsed to a single sub-section.
  • Editor/Web: Added Feature API keys to independently toggle sub-controls (color picker, gradient editor, opacity slider, swatch library) across every color panel:
    • ly.img.fill.color.picker, ly.img.fill.color.picker.gradient, ly.img.fill.color.picker.opacity, ly.img.fill.color.library
    • ly.img.stroke.color.picker, ly.img.stroke.color.picker.opacity, ly.img.stroke.color.library
    • ly.img.shadow.color.picker, ly.img.shadow.color.picker.opacity, ly.img.shadow.color.library
    • ly.img.text.background.picker, ly.img.text.background.picker.opacity, ly.img.text.background.library

Grid

  • Engine: Each page can now have its own grid settings.
  • Editor/Web: Grid controls moved to the Page panel as a new “Grid” section. New and duplicated pages inherit the previous / source page’s grid so you don’t have to set it up each time. The Document panel now only has “Show Rulers”.

Movement, Interaction & Vector Paths

  • Engine: Added editor.setMovementConstraint, editor.getMovementConstraint, and editor.removeMovementConstraint to limit how far blocks can be positioned outside their parent page during user interactions. See Movement Constraints guide for details.
  • Engine: Clicks now pass through fully transparent parts of images and stickers to the element behind them. On by default; disable via features/transparentClickThroughEnabled = false to restore the legacy behavior.
  • Engine: Added shape/vector_path/fillRule enum property (EvenOdd | NonZero) so imports from PDF, SVG and other tools that use non-zero winding render correctly. The default stays EvenOdd, preserving existing scene rendering.

PDF Output

  • Engine: Added fill/overprint and stroke/overprint block properties for controlling the PDF overprint attribute on exported PDFs.

Archival & Block APIs

  • Engine: Added archival/bundleOnlyUsedFontVariants setting. When enabled, saveSceneToArchive and saveBlocksToArchive bundle only the font variants actually referenced by text blocks instead of every variant of each used typeface, significantly reducing archive size. Defaults to false to preserve the ability to switch to other weights/styles after re-loading the archive.
  • Engine: Added engine.block.findAllUnused API that returns all blocks that are not attached to any scene.
  • Engine: forceLoadResources now accepts an empty block list to load resources for every block currently known to the engine.

Editor Configuration & Assets

  • Editor/Android: Added EditorConfiguration.then and EditorConfigurationBuilder.parentConfiguration to support chaining editor configurations and extending existing callbacks or UI components.
  • Editor/Web: Added a customizable asset.delete action that is invoked when the user deletes an asset from an asset source via the asset library card. Register a custom implementation with cesdk.actions.register('asset.delete', ({ sourceId, asset }) => { ... }) to replace the confirmation dialog content, swap in a custom dialog, or change the deletion behavior entirely. The default behavior is unchanged.

Text Rendering

  • Engine: Added features/fontLineGapEnabled setting (default true). Set to false to restore the pre-1.73 text rendering that ignored the font’s line_gap metric, for projects whose stored scenes or templates were authored against the older layout.

Improvements & Behavior Changes

Editor

  • Enlarged the clickable area of selection corner handles on mouse input so corners are easier to grab near the frame corner. The corner hit area is now symmetric around the frame corner with a reach of 9 px in every direction.

Editor/Web — Video Editor

  • In the Video Editor caption start/end time reverts to the previous value when cleared or given an invalid time.
  • In the Video Editor caption timing inputs can no longer produce overlapping or out-of-order captions.

Editor/Web — Placeholders

  • The placeholder “Allow to Resize” toggle on pages now applies only to the current page instead of fanning out to every page in the scene. The i18n key scope.layer.resize.allPages was renamed to scope.layer.resize.page.
  • Hide the “Allow to Change Shape” placeholder option for pages, where shape replacement is not exposed by the default editor UI.
  • Correct the “Allow to Change Shape” placeholder tooltip to describe replacing the shape type instead of editing shape options.

Editor/Web — Image Colors

  • Fixed the search bar in the “Image Colors” picker — typing a hex value or image name now filters the swatches.
  • “Image Colors” no longer shows solid-color fills; only colors picked from images appear in this section.

Bug Fixes

Engine

  • Fixed vector path editing where dragging anchor points, adding anchors to segments, and bending segments would not update until the camera moved.

Engine/Swift

  • Fixed Dolby Vision videos not working correctly.
  • Fixed memory leak during video export.

Engine/Android

  • Fixed video MediaCodec, MediaExtractor, and Surface resources not being released when a decoder is destroyed, which could exhaust the platform hardware codec limit across long-running sessions.

Engine/Web

  • Fixed a glitch where some AI-generated videos briefly showed frames from the start of the clip near the end of playback.

Editor

  • Fixed vector path editing segments rendering oversized on monitors with different pixel densities.

Editor/Web

  • Fixed an issue where the editor could load with mobile layout on desktop.
  • Fixed a crash when popover content is hidden via custom CSS.
  • Fixed an issue where hovering the Replace Shape dropdown item did not display a tooltip.
  • Fixed slider being unable to reach its default value in Safari and Edge.
  • Fixed a video timeline issue where height was not re-measured properly when enabling video timeline features after initial render.
  • Fixed an issue where the advanced video editor starterkit would not show all the timeline tracks in some edge cases.

Editor/iOS

  • Fixed “Add Clip” button drifting to the foreground track’s trailing edge after removing all background clips.
  • Fixed a “Could not create View for Canvas Menu / Inspector Bar” error popup that could appear after moving a single clip from the background track to an overlay (and other interactions that destroyed the selection’s parent block).

Editor/Flutter

  • Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.