Version v1.75.0 Changelog May 19, 2026
Breaking Changes
Editor/Android
- All
ScopedPropertycomponent properties inEditorConfigurationBuildernow return nullable components. For example,ScopedProperty<EditorScope, EditorComponent<*>>?is nowScopedProperty<EditorScope, EditorComponent<*>?>?.
Engine — Text
- Setting block-level
text/horizontalAlignment(viasetEnumorsetTextHorizontalAlignmentwithout aparagraphIndex) 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.
getTextParagraphIndicesnow expects thetoparameter 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
.apngfiles.
Text
- Engine: Added paragraph-level text horizontal alignment APIs (
setTextHorizontalAlignment,getTextHorizontalAlignment) andgetTextEffectiveHorizontalAlignment.
Crop & Aspect Ratio
- Engine: Added a new
ContentAspectRatioasset 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.libraryly.img.stroke.color.picker,ly.img.stroke.color.picker.opacity,ly.img.stroke.color.libraryly.img.shadow.color.picker,ly.img.shadow.color.picker.opacity,ly.img.shadow.color.libraryly.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, andeditor.removeMovementConstraintto 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 = falseto restore the legacy behavior. - Engine: Added
shape/vector_path/fillRuleenum property (EvenOdd|NonZero) so imports from PDF, SVG and other tools that use non-zero winding render correctly. The default staysEvenOdd, preserving existing scene rendering.
PDF Output
- Engine: Added
fill/overprintandstroke/overprintblock properties for controlling the PDF overprint attribute on exported PDFs.
Archival & Block APIs
- Engine: Added
archival/bundleOnlyUsedFontVariantssetting. When enabled,saveSceneToArchiveandsaveBlocksToArchivebundle only the font variants actually referenced by text blocks instead of every variant of each used typeface, significantly reducing archive size. Defaults tofalseto preserve the ability to switch to other weights/styles after re-loading the archive. - Engine: Added
engine.block.findAllUnusedAPI that returns all blocks that are not attached to any scene. - Engine:
forceLoadResourcesnow accepts an empty block list to load resources for every block currently known to the engine.
Editor Configuration & Assets
- Editor/Android: Added
EditorConfiguration.thenandEditorConfigurationBuilder.parentConfigurationto support chaining editor configurations and extending existing callbacks or UI components. - Editor/Web: Added a customizable
asset.deleteaction that is invoked when the user deletes an asset from an asset source via the asset library card. Register a custom implementation withcesdk.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/fontLineGapEnabledsetting (defaulttrue). Set tofalseto restore the pre-1.73 text rendering that ignored the font’sline_gapmetric, 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.allPageswas renamed toscope.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.