v1.54.0 Changelog
June 26, 2025
Breaking Changes
- Editor/Web: Removed the “more” options menu from the inspector bar.
- Editor/Web: Removed the
ly.img.options
feature key that was used to enable the “more” options menu in the inspector bar. - Engine/Swift: Fixed
DesignUnit
raw values not being aligned with the C++ enum. - Engine/Swift: Updated default asset sources configuration to include new crop and size preset sources. The sources ly.img.crop.presets and ly.img.page.presets are now part of the default assets served through the CDN. You must update your CDN configuration to include these new sources.
Non Breaking Changes
- Engine: Added new
getTextVisibleLineContent
API to retrieve the text content of the visible lines in text blocks. - Editor/Android: Added “Select Group” button in canvas menu for design blocks that are in a group design block.
- Engine: Skia is now used to parse SVG data instead of NanoSVG
- Editor/Web: Introduced new feature keys to configure the transform controls via the feature API.
- Editor/Web: Introduced the following UX improvements:
- Centered the controls in the inspector bar.
- Moved the stroke settings into a dropdown in the inspector bar.
- Introduced the text style dropdown in the inspector bar.
- Introduced the advanced text controls in the inspector bar.
- Introduced a new dropdown in the canvas bar that contains the following actions:
- Copy
- Paste
- Flip Horizontally
- Flip Vertically
- Moved the inspector toggle into the top level inspector.
- Camera/Android: Fixed an issue where the permission request flow could break under certain conditions when the same permission was being requested elsewhere in the app.
- Engine: The dashed outline of groups are now independent of zoom level.
- Engine/Web: Deprecated the old export API signatures in favor of a new improved signatures to follow better API design practices. The following changes were made:
- Simplified the
exportVideo
,export
andexportWithColorMask
APIs by making all parameters optional except for the page handle - Moved all optional parameters (including
mimeType
) into a singleoptions
object, which removes the requirement to passundefined
or empty objects for unused parameters - Removed enum usage for mime types in favor of string literals to align with the rest of our type definitions
- These changes make the APIs more intuitive and easier to use, especially when only specific options need to be configured
// Beforeengine.block.export(page, MimeType.Jpeg, {jpegQuality: 0.8,targetWidth: 1080,targetHeight: 1080});engine.block.export(page, undefined, {targetWidth: 1080,targetHeight: 1080});// Afterengine.block.export(page, {mimeType: 'image/jpeg',jpegQuality: 0.8,targetWidth: 1080,targetHeight: 1080});engine.block.export(page, {targetWidth: 1080,targetHeight: 1080});// Beforeengine.block.exportWithColorMask(page, MimeType.Png, 0.5, 0, 0, {pngCompressionLevel: 6});engine.block.exportWithColorMask(page, undefined, 0.5, 0, 0);// Afterengine.block.exportWithColorMask(page, 0.5, 0, 0, {mimeType: 'image/png',pngCompressionLevel: 6});engine.block.exportWithColorMask(page, 0.5, 0, 0);// Beforeengine.block.exportVideo(page,MimeType.Mp4,(numberOfRenderedFrames,numberOfEncodedFrames,totalNumberOfFrames: number) => {console.log(`Rendered ${numberOfRenderedFrames} frames, encoded ${numberOfEncodedFrames} frames out of ${totalNumberOfFrames}`);},{targetWidth: 1080,targetHeight: 1080});engine.block.exportVideo(page, undefined, undefined, {targetWidth: 1080,targetHeight: 1080});// Afterengine.block.exportVideo(page, {mimeType: 'video/mp4',onProgress: (numberOfRenderedFrames,numberOfEncodedFrames,totalNumberOfFrames: number) => {console.log(`Rendered ${numberOfRenderedFrames} frames, encoded ${numberOfEncodedFrames} frames out of ${totalNumberOfFrames}`);},targetWidth: 1080,targetHeight: 1080});engine.block.exportVideo(page, {targetWidth: 1080,targetHeight: 1080}); - Simplified the
- Engine/iOS: Fixed export not continuing after app was returned from the background.
- Engine: Use magic bytes primarily for determining the MIME type of a file during import.
- Editor/iOS: Added a new dock button to open the page resize sheet, supporting both manual adjustments and predefined size presets.
- Editor/iOS: Added predefined crop presets to the crop sheet.
- Editor/iOS: Changed default of
SheetType.crop.style
toSheetStyle/only(detent:)
. - Editor/iOS: Fixed OS system photo camera permission handling to prevent black screen.
- Editor/iOS: Fixed sheet dismissal behavior to ensure the sheet closes correctly when the event is triggered.