Changelog
Explore the recent changes made to CreativeEditor SDK.
Our release notes contain more details on features and changes.
Download the full changelog as a plain text file.
Recent Releases
Version v1.75.1 Changelog May 21, 2026
Breaking Changes
Non Breaking Changes
- Maintenance release. No SDK changes.
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.
Version v1.74.2 Changelog May 15, 2026
Breaking Changes
Non Breaking Changes
- Editor/iOS: Engine-provided animation asset labels can now be localized through the platform localization system. Apps can override labels per locale by declaring the matching string keys.
- Editor/Android: Engine-provided animation asset labels can now be localized through the platform localization system. Apps can override labels per locale by declaring the matching string keys in their
strings.xml
Version v1.74.1 Changelog May 7, 2026
Breaking Changes
Non Breaking Changes
- Editor/Web: Fixed dependency declarations and import resolution causing some starterkits to fail on startup.
- Camera/iOS: Fixed a crash that could occur when the camera failed to start.
Version v1.74.0 Changelog May 5, 2026
Breaking Changes
- Editor/Web: BREAKING: The video editor starter kit now defaults to a simplified timeline.
timeline/trackVisibilityis set to'active'so only the selected track is shown in the foreground, and thely.img.video.timeline.rulerfeature is disabled so the time scale is hidden.
Non Breaking Changes
- Editor/Web: Add
builder.Spinner()to render an indeterminate loading spinner in registered panels, with an optionallabelrendered beneath the spinner. - Engine: Improved corner rounding on polygon and vector path shapes to produce smooth bezier arcs at curved segment junctions
- Engine: Added
Dynamicoption totouch/pinchActionsetting. Pinch gestures scale the block at the center point between fingers, or zoom the camera if no block is found. - Engine/Web: Added
exportPdfWithDeviceCMYKexport option. When enabled, direct CMYK colors are written as DeviceCMYK (k/Koperators) and spot colors with CMYK values are written as DeviceN with process CMYK components in exported PDFs. Disabled by default for backward compatibility. - Engine: Added
page/flipDimensionsOn90DegreeCropRotationsetting. When enabled, rotating the crop by 90 degrees automatically swaps the block’s width and height, causing the page aspect ratio to rotate with the content. - Editor/Web: Replaced the editor loading indicator with a theme-aware beacon ring that adapts to light and dark surfaces using the host’s design tokens.
- Editor/Web: Added UI controls to add and delete gradient color stops from the color picker.
- Editor/Web: Added UI controls for switching between linear, radial and conical gradient fill types.
- Editor/Web: Added a mirror button to reverse gradient stops.
- Engine/Editor: Added
page/marqueeSelectOnBodyDragsetting (default:false). When enabled, a click+drag that starts on the page body marquee-selects the blocks inside the page instead of moving the page. The page can still be moved by dragging its title, or by holding Cmd (macOS) / Ctrl (Windows/Linux) while clicking+dragging on the page body, on any block inside the page, or on a page whose body is fully covered by content. In free layout the Cmd/Ctrl+drag translates the page; in horizontal/vertical stack layouts it reorders the page within the stack. - Plugins/Web: Added
embedICCProfileoption to the Print-Ready PDF plugin’sconvertToPDFX3. When set tofalse, the resulting PDF is converted to device CMYK (or RGB, depending on the selectedoutputProfile) without embedding an ICC profile or the PDF/X-3 OutputIntent, enabling integration with downstream prepress pipelines such as ZePrA or PitStop that assign their own ICC profile and apply color normalization. Defaults totruefor backward compatibility. - Engine/Editor: Added
page/restrictPageSelectionToBorderAndTitlesetting (default:false). When enabled, clicking inside a page body no longer selects the page; the page can only be selected by clicking on its border or title. - Engine: Auto-width text blocks now shrink back to fit the remaining text when content is deleted to a single line while the page-edge clamping feature is active.
- Engine: Snap guide lines are now finite and bounded to the edges of the involved elements. Element boundaries are shown with a dashed pattern, while connecting lines and gaps between elements are solid.
- Engine: Vector anchor handles in vector edit mode now snap to page edges, centers, siblings, grid lines, and to other anchors’ horizontal/vertical alignment.
- Engine: Added
hasSelectedVectorControlPoint()anddeleteSelectedVectorControlPoints()APIs for managing bezier control point handles during vector editing. - Engine: Added
shape/star/cornerRadiusproperty for rounding star shape corners. - Engine: Improved vector editing: corner radius is now preserved as a live property when converting parametric shapes to vector paths, bend mode no longer overwrites existing control handles, and segment splits produce smooth nodes by default.
- Plugins/Web: Fixed background removal failing on GPUs without WebGPU
shader-f16support by falling back to CPU-based inference. - Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Engine: Fixed
getTypeface()andgetTypefaces()returning an error for text blocks without an explicitly set typeface. They now resolve the default font from settings when no typeface has been assigned. - Editor/Web: Fixed an issue where the hex color input did not update when pasting a color value.
- Engine/Swift: Dispatch async
onXChangedstream unsubscribes to the main thread, fixing a race in the engine’s subscription map when multiple streams terminate concurrently. - Engine: Thumbnail generation now caps the effective render resolution at 512 px on each dimension. The returned thumbnail still matches the requested output size.
- Engine: Fixed the
cesdk-rendererLinux CLI exporting only the first page when writing a scene to PDF. PDF exports now include every page of the scene by default; pass--page <index>to export a single page. - Engine: Fixed PDF export wrapping spot-colour text in a transparency group.
- Engine: Fix underlayer shape being offset by the page margin in PDF export when
page/marginEnabledis enabled. - Editor/Web: Added 46 new Starter Kits covering video editing, plugins, custom built UIs, customization, assets, templating, creative automation, and extensibility.
- Engine: Fixed an issue where text blocks with pending font resources (e.g., system font fallback) would show a gray background overlay in exported images.
- Engine: Fixed a rare crash that could occur when moving, resizing, or rotating an element if the selection changed during the gesture.
- Editor/Web: Fixed the canvas view jumping to the page center on undo/redo when zoomed in.
- Engine: Star shapes now use the smooth corner rounding introduced for polygons and vector paths, so a star’s
cornerRadiuslooks identical whether or not it is in vector edit mode. - Engine: Entering vector edit mode on a circle or ellipse now mirrors its control handles in both angle and length by default, keeping the shape symmetric while dragging a single handle.
- Editor/Web: Updated the design of gradient color stop handles.
- Editor/Web: Fixed gradient bar preview to reflect actual stop positions while dragging.
- Editor/Web: Replaced the color mode label with a dropdown to switch between RGB and CMYK.
- Editor/Web: Hide the Position control in the inspector bar when a page block is selected. Previously a disabled Position button was shown because the
ly.img.positionfeature was implicitly kept enabled by its always-truearrange,align, anddistributechild predicates; the child predicates now mirror the parent and returnfalsefor pages. - Engine: Fixed
page/title/colorsetting not being applied while editing a page title; the editing text no longer inherits the selection-highlight color from the displayed title. - Plugins/Web: Added
middlewarestoGatewayProviderConfiguration, bringing AI gateway providers in line with every other AI provider. Use it to hook logging, rate limiting, custom error handling, oruploadMiddlewareto re-upload generated assets to your own storage — the recommended fix for the gateway’s short-lived presigned URLs. - Engine: Added
ExportOptions.underlayerRenderRatioandExportOptions.underlayerMaxErrorto allow tuning the fidelity of the PDF underlayer contour. - Editor/Web: Fixed canvas being greyed out by the ruler overlay on Firefox in advanced mode.
- Editor/ReactNative: Fixed
IMGLYEditor.openEditorandIMGLYCamera.openCamerahanging on iOS when the host app already had a view controller presented modally (e.g.react-native-screensmodal routes, Expo Router modal screens, RN<Modal>, system sheets). The editor is now presented from the topmost view controller, so the returnedPromisesettles correctly in all hosting scenarios. - Editor/Android: Introduced the
addToBackgroundTrackparameter forEditorEvent.AddUriToScenewhen adding URI assets to the scene. - Editor/Android: Fixed the “Select Group” canvas menu button being rendered as a plain text label instead of the filled tonal chip-style button.
Version v1.73.1 Changelog April 23, 2026
Non Breaking Changes
- Editor/iOS: Engine-provided animation asset labels can now be localized through the platform localization system. Apps can override labels per locale by declaring the matching string keys.
- Editor/Android: Engine-provided animation asset labels can now be localized through the platform localization system. Apps can override
labels per locale by declaring the matching string keys in their
strings.xml
Version v1.73.0 Changelog April 20, 2026
Breaking Changes
-
Editor/Android: BREAKING: Introduced Starter Kits - pre-configured editor templates that replace the previous built-in editor composables. The editor now initializes with a blank canvas by default.
Key changes:
- The editor initializes a blank canvas with minimal configuration. Use one of our Starter Kits to get started quickly based on your use case.
Migration: See the Starter Kits Migration Guide for step-by-step instructions.
-
Editor/iOS:
OnCreate.defaultandOnCreate.loadSceneno longer load the default and demo asset sources. -
Editor/iOS: Removed
SceneModedependency from UI logic. Editor behavior is now configured explicitly per solution rather than derived from the scene mode. -
Editor/iOS: Added
OnExport.static()andOnExport.video()replacing the removedOnExport.default. -
Editor/iOS: Removed
AssetLibrarySceneModeReader,OnExport.default, andOnCreate.loadAssetSources. -
Editor/iOS: Added
photoRollTabrequirement to theAssetLibraryprotocol. Custom conformances must implement this property. -
Engine/Swift: Removed
sceneModeparameter fromaddDemoAssetSources. Theexcludeparameter now defaults to excluding video and audio sources; passexclude: []to include all.
Non Breaking Changes
- Engine/Android: Bumped compileSdk and targetSdk versions to 36.
- Editor/Android: Bumped compileSdk and targetSdk versions to 36.
- Engine/Editor: Added
controlGizmo/dynamicMoveHandleVisibilitysetting (default:true). Set tofalseto keep the move handle always visible regardless of block size. Default behavior is unchanged. - Editor/Web: Improved keyboard accessibility by returning focus to the trigger button when closing a panel
- Editor/Web: Add
builder.Select()support to navigation bar, inspector bar and canvas bar withsearchableandsearchPlaceholderoptions. - Engine: Added SVG export support using the
image/svg+xmlMIME type. Text is exported as vector paths for consistent rendering across environments. Drop shadows, blur, effects, and raster images are rasterized and embedded as images. - Engine: Fixed importing some camera-recorded MP4/3GP videos whose audio track uses AMR sample entries.
- Engine: Fixed animation duration slider not allowing the full clip length due to rounding.
- Engine: Local asset sources now resolve labels and tags using a fallback chain (requested locale → “en” → first available) instead of returning empty values when the exact locale is not found.
- Editor/Web: Fixed the “Match Language Direction” control incorrectly showing RTL mode when LTR text is right-aligned.
- Editor/Android: Fixed the “Match Language Direction” control incorrectly showing RTL mode when LTR text is right-aligned.
- Editor/iOS: Fixed the “Match Language Direction” control incorrectly showing RTL mode when LTR text is right-aligned.
- Engine: Fixed multiline text rendering for fonts with non-standard line gap metrics (e.g., Coiny). The font’s line gap is now correctly incorporated into line height calculations, fixing incorrect line spacing and cursor height.
- Engine: Fixed document colors missing colors and incorrect active states for text with mixed run colors.
- Editor/Web: Fixed document colors not refreshing when changing partial text colors.
- Engine: Fixed fade animation jumping when combined with element opacity on groups
- Editor/Web: Fixed archive import and
cesdk.utils.loadFileopening file picker twice on Windows when OPFS is not available - Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Engine: Fixed an issue where pages in free layout mode would jump to align with neighboring pages after flipping their orientation.
- Engine:
findAllSettings()no longer returns internal or legacy settings such asdebug/*andfeatures/*. - Engine/Web: Fixed hover frame remaining visible when moving the mouse from a selected block to the canvas menu.
- Engine/Swift: Fixed certain HEVC videos not playing correctly on iOS.
- Engine/Swift: Improved export time for videos.
- Engine: Fixed console errors when mixing RTL and LTR text in a text block with word wrapping enabled.
- Engine: Fixed opacity not being applied correctly to nested groups.
- Engine/Node: Fixed null engine reference on dispose, respect forceCPU on Linux, GPU flush on destruction, and JSON validation for scene deserialization.
- Editor/Web: Fixed a memory leak where switching fill types (solid/gradient) orphaned the previous fill entity
- Editor/Web: Fixed page titles being styleable (font, color, size) during editing.
- Engine: Fixed pinch-to-zoom deselecting the selected element, causing canvas jumps from single-touch scroll, and accidentally triggering handle drags during two-finger gestures.
- Engine: Reduced jittery behavior when starting a pinch-to-zoom gesture by increasing the single-touch pan distance threshold and adding a time delay before single-touch panning activates.
- Engine: Fixed placeholder settings not being adjustable for blocks loaded from older scenes.
- Engine: Fixed a bug where clicking on empty areas within a non-rectangular shape’s bounding box caused the selection to flicker.
- Engine: Fixed system font fallback rendering producing incorrect results in thumbnails.
- Engine: Fixed applying a template overwriting the scene layout mode, causing inconsistent state when the previous layout differed from the template’s layout.
- Engine: Fixed text variables being duplicated when entering text edit mode after applying a text color range that intersected a variable placeholder. Variables are now treated as a single grapheme unit in all text formatting APIs (consistent with inline text editing), so formatting ranges are always snapped to variable boundaries rather than splitting inside them.
- Engine: Fixed an issue where
payload.sourceSetwas not applied to video fills when usingdefaultApplyAsset - Engine/Android: Fixed audio playing back at ~2x speed for videos with HE-AAC (SBR) or HE-AACv2 (PS) audio tracks.
- Engine: Fixed audio duration being reported as half the actual value for HE-AAC/HE-AACv2 audio.
- Editor/Web: Fixed incorrect translations.
- Editor/iOS: Added new
Editorstruct providing a unified core editor. - Editor/iOS: Added
OnChangedcallback to be notified when state changes occur in the editor. - Editor/Web: Added 10 new floral stickers to the
StickerAssetSourceplugin, available under thely.img.sticker.floralscategory. - Editor/Web: Added new
PremiumTemplatesAssetSourceplugin for premium template assets (ly.img.templates.premium). - Engine: Fixed a crash when loading scene files saved with engine versions prior to 1.72.0 that contain text blocks.
- Engine/Android: Fixed a crash in pan gesture handling during multi-touch interactions.
- Editor/Android: Fixed a crash where zooming to a selected block could fail if the block was deleted during the zoom debounce window.
- Editor/Android: Fixed a rare crash in the canvas menu when the selected block was deleted.
- Editor/Web: Fixed double-click page title renaming not working on direct load. Page title editing is now enabled by default in every editor config.
- Engine: Fixed audio waveform thumbnail generation for 24-bit WAV files.
- Editor/Web: Fixed shape controls incorrectly appearing for sticker blocks in the inspector.
Version v1.72.3 Changelog April 14, 2026
Breaking Changes
Non Breaking Changes
- Engine/Android: Fixed a crash in pan gesture handling during multi-touch interactions.
- Editor/Android: Fixed a crash caused by stale block IDs in the zoom function when blocks are deleted during debounce delay.
- Editor/Android: Fixed a rare crash in the canvas menu when the selected block was deleted.
- Engine/Android: Fixed HE-AAC (SBR/PS) audio playback and duration calculation on Android by correctly accounting for Spectral Band Replication doubling the frame length.
Version v1.72.2 Changelog April 9, 2026
Breaking Changes
Non Breaking Changes
- Engine: Fixed a crash when loading scene files saved with engine versions prior to 1.72.0 that contain text blocks.
Version v1.72.1 Changelog April 2, 2026
Breaking Changes
Non Breaking Changes
- Editor/Web: Add
builder.Select()support to navigation bar, inspector bar and canvas bar withsearchableandsearchPlaceholderoptions. - Engine: Local asset sources now resolve labels and tags using a fallback chain (requested locale → “en” → first available) instead of returning empty values when the exact locale is not found.