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.69.0 Changelog February 23, 2026
Breaking Changes
-
Editor/Web: BREAKING: Updated asset source IDs to align with v5 naming conventions. The following asset source IDs have been renamed:
ly.img.captionPresets→ly.img.caption.presetsly.img.colors.defaultPalette→ly.img.color.palettely.img.vectorpath→ly.img.vector.shapely.img.textComponents→ly.img.text.components
The following asset sources have been merged:
ly.img.filter.lut+ly.img.filter.duotone→ly.img.filterly.img.page.presets+ly.img.page.presets.video→ly.img.page.presetsly.img.template+ly.img.video.template→ly.img.templates(note: plural)
Migration Guide: If you are using custom asset configurations or referencing these asset source IDs in your code, you will need to update them to use the new IDs. Translation keys in i18n files have also been updated to match the new asset source naming. CDN URLs have been updated from v4/demo-v2 to v5/demo-v3.
-
Editor/Web: BREAKING Removed
config.ui.elements.libraries.insert.entriesconfiguration option. All default asset libraries (Templates, Uploads, Images, Videos, Audio, Text, Shapes, Stickers) are now automatically available. If you were customizing asset library entries through configuration, use thecesdk.ui.addAssetLibraryEntry()andcesdk.ui.updateAssetLibraryEntry()APIs after SDK initialization instead. -
Editor/Web: BREAKING Removed
config.ui.elements.libraries.replace.entriesconfiguration option. The replace panel continues to work as before, showing relevant asset libraries based on the selected content. If you need to customize which libraries appear in the replace panel, use thecesdk.ui.setReplaceAssetLibraryEntries()API after SDK initialization. -
Editor/Web: BREAKING Removed
config.ui.elements.dock.groupsandconfig.ui.elements.dock.defaultGroupIdconfiguration options. The dock must now be configured programmatically using thecesdk.ui.setDockOrder()API after SDK initialization. If you were using the default dock configuration, you’ll need to explicitly configure it in your code. -
Editor/Web: See our migration guide for step-by-step instructions and code examples.
-
Editor/Web: BREAKING: Introduced Starterkits - pre-configured editor templates that replace the previous built-in editor configuration. 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 Starterkits to get started quickly based on your use case.
- Asset sources can now be loaded using built-in plugins. See the Asset Source Plugins guide for details.
Migration: See the Starterkits Migration Guide for step-by-step instructions.
-
Editor/Web: BREAKING: Removed
ly.img.filter.lutandly.img.filter.duotonefrom the Feature API. Usely.img.filterinstead, which controls all filter types. -
Editor/Web: Moved the placeholder settings panel from the canvas menu into the advanced inspector. The placeholder settings are now accessed via a “Design” / “Placeholder” toggle in the inspector panel when a block is selected, instead of a dedicated canvas action button. The
canvas-action-placeholder-settingsbutton has been removed.
Non Breaking Changes
-
Editor/Web: Deprecated
cesdk.addDefaultAssetSources()andcesdk.addDemoAssetSources()methods. These methods will continue to load v4 assets but will be removed in a future version.Migration options:
- Use the new Asset Source Plugins (recommended)
- Use
engine.asset.addLocalAssetSourceFromJSONURI()orengine.asset.addLocalAssetSourceFromJSONString()for custom asset sources
-
Editor/Android: Allow adjusting speed for audio clips (up to 3x).
-
Editor/Android: Add a clip speed inspector for video clips.
-
Engine: The
basePathsetting now also controls where the engine loads font fallback files and the emoji font from. Previously, these were always loaded fromhttps://cdn.img.ly/assets/v4, making it impossible to fully self-host all CE.SDK assets. WhenbasePathis not set, the engine continues to load these assets from the default CDN URL. If self-hosting, setbasePathviaeditor.setSettingString()to point to your server where you’ve extracted thefonts/andemoji/directories fromimgly-assets.zip. See the Serve Assets guide for details. -
Editor/Web: Added
truncateLabeloption to the Checkbox builder component, allowing long labels to be truncated with an ellipsis. -
Editor/iOS: Add Clip Speed inspector sheet with speed and duration controls for video and audio clips (audio max 3x).
-
Editor/iOS: Improved timeline thumbnails for still content (images, stickers, shapes) by displaying a single representative thumbnail instead of repeating images.
-
Editor/iOS: Added text content display for text clips in the timeline, showing the actual text alongside the clip label.
-
Editor/iOS: Added pinning behavior for clip labels, thumbnails, and text content - elements now stay visible when clips are scrolled off-screen.
-
Editor/iOS: Fixed audio waveform stability during timeline trimming operations.
-
Engine: Added
Autooption totouch/pinchActionsetting. When enabled, pinch gestures will scale the selected element if the center point between the two fingers is inside the element’s bounding box, otherwise the camera zooms. Supports rotation during scaling whentouch/rotateActionis set toRotate. -
Editor/Web: Added ability to replace the shape of graphic blocks via a new “Change Shape” option in the shape inspector controls.
-
Engine: Added support for SVG files containing embedded images.
-
Editor/Web: The video timeline now automatically expands when foreground tracks are added and collapses when they are removed. Manual height adjustment via drag is supported and users can double-click the resize handle to return to automatic height mode.
-
Editor/Web: Added unified component order APIs (
setComponentOrder,getComponentOrder,insertOrderComponent,updateOrderComponent,removeOrderComponent) providing a cleaner, type-safe interface for customizing UI component ordering across all areas. The 30 area-specific methods (e.g.,setDockOrder,insertInspectorBarOrderComponent) are now deprecated in favor of the new unified API. -
Editor/Web: Improved video compatibility UX on unsupported browsers. Added warning dialogs that automatically appear when users attempt to use video features on browsers lacking required codec support. Added
video.decode.checkSupportandvideo.encode.checkSupportactions to trigger these dialogs programmatically, and silent utilitiescesdk.utils.supportsVideoDecode()andcesdk.utils.supportsVideoEncode()for detection without UI. Affected platforms include Linux browsers and Firefox, which lack H.264/AAC encoder support. -
Plugins/Web: Fixed
uploadMiddlewareURLs being ignored in image quick actions, causingFILE_FETCH_FAILEDerrors during export when using custom storage backends. -
Plugins/Web: Image quick actions no longer automatically re-upload generated images. Users who need to persist AI-generated images should configure
uploadMiddlewareto handle storage. This aligns quick action behavior with the panel flow. -
Editor/Android: Updated Coil to 2.6.0, fixing a crash in Lazy Lists when pausable composition during prefetch is enabled.
-
Engine: Fixed a use-after-free in async resource callbacks when loading an archive from an invalid URL.
-
Engine/Web: Fixed static noise when playing audio files with low sample rates (e.g., 16kHz AAC audio).
-
Engine: Prevent audio from other pages mixing into export when exporting from a specific page in a multi-page scene.
-
Engine: Allow export duration to exceed page duration, producing silence after page content ends instead of truncating or repeating audio.
-
Editor/Web: Fixed dock buttons not showing tooltips when
dock/hideLabelsis enabled. Labels now appear as tooltips when hidden. -
Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
-
Engine: Fixed incorrect rotation of grouped page children when flipping via crop changes with
page.moveChildrenWhenCroppingFillenabled (Photo Editor UI). -
Editor/Web: Improved group behavior in video mode - children now preserve their original durations and time offsets when grouped, and groups can no longer be trimmed
-
Editor/Web: Enabled groups by default in video mode
-
Engine/Web: Fixed archival in NodeJS environments.
-
Editor/Web: Removed the old drop layer overlay that displayed “Drag File Here” text with an icon when dragging files onto the canvas.
-
Engine: Fixed an issue where calling
setTypefacemultiple times would accumulate fonts in the document typefaces instead of replacing them. This caused text blocks to become unusable (displaying ‘x’ characters) after several archive save/load cycles with font changes. -
Editor/Web: Fixed the timeline drop zone indicator moving out of view when scrolling the timeline.
-
Engine: Fixed an issue where unused document typefaces were incorrectly included in saved archives, causing missing font file references when the archive was loaded.
-
Engine: Fixed video export getting stuck at 99% when
PendingStatewas not properly cleared for video fills after the resource finished loading. -
Editor/Web: Added a unified
scene.createaction (cesdk.actions.run('scene.create', options?)) that replaces the deprecatedcesdk.createDesignScene()andcesdk.createVideoScene()methods. The new action provides a single entry point for scene creation across all modes with flexible page configuration.Key features:
- Supports both Design and Video modes via the
modeoption (defaults to'Design'). - Pages can be configured with inline dimensions (
{ width, height, unit }), asset source references ({ sourceId, assetId }), or full asset objects. - Multiple pages can be created at once via the
pagesarray or viapage+pageCount. - Automatically configures scene DPI (72 for Pixel, 300 for print units) and design units.
Migration:
// Beforeawait cesdk.createDesignScene();await cesdk.createVideoScene();// Afterawait cesdk.actions.run('scene.create');await cesdk.actions.run('scene.create', { mode: 'Video' });// With page dimensionsawait cesdk.actions.run('scene.create', {page: { width: 1080, height: 1920, unit: 'Pixel' }});// With page presets from an asset sourceawait cesdk.actions.run('scene.create', {page: {sourceId: 'ly.img.page.presets',assetId: 'ly.img.page.presets.instagram.story'}}); - Supports both Design and Video modes via the
-
Editor/Web: Deprecated
cesdk.createDesignScene()andcesdk.createVideoScene(). Both methods continue to work but log a deprecation warning. Usecesdk.actions.run('scene.create', ...)instead. -
Editor/Android: Fixed a crash when launching a media picker on devices without an app to handle the intent.
-
Editor/Android: Fixed an
IllegalStateExceptioncrash that could occur after process restoration when an activity result contract was pending. -
Docs: Remove React Native platform flag from guide pages that have no React Native content, preventing empty pages from being rendered
-
Engine: Fixed
basePathsetting not being serialized. -
Editor/Web: Fixed dropdown menu items not filling width and having broken spacing between icons, labels, and keyboard shortcuts.
-
Engine: Added
clampTextBlockWidthToPageDimensionsDuringEditingfeature flag that wraps auto-sized text at page edges instead of overflowing during editing.
Version v1.68.0 Changelog February 6, 2026
Breaking Changes
- Engine/Swift, Editor/Swift: Packages for Apple platforms are now built with Xcode 26.0.1 and Swift 6.2, which is the new minimum requirement for using them.
Non Breaking Changes
- Engine/Android: Bumped Kotlin to 1.9.10 and Coroutines to 1.7.3.
- Engine: Updated entt from v3.13.1 to v3.16.
- Engine: Removed unused
black_and_white_color_mixerandhsp_selective_adjustmentseffects. These effects were never publicly documented or supported. Existing scenes containing these effects will still load correctly, but the effects will no longer be applied. - Engine: Removed the
features/hspSelectiveAdjustmentsEnabledsetting as it is no longer needed. - Editor/Android: Change demo assets’ CDN path from https://cdn.img.ly/assets/demo/v2 to https://cdn.img.ly/assets/demo/v3
- Engine/Swift: Change demo assets’ CDN path from https://cdn.img.ly/assets/demo/v2 to https://cdn.img.ly/assets/demo/v3
- Editor/Web: Change demo assets’ CDN path from https://cdn.img.ly/assets/demo/v2 to https://cdn.img.ly/assets/demo/v3
- Engine: Enhanced the Grow animation with new corner-based direction options (
TopLeft,TopRight,BottomLeft,BottomRight) and ascaleFactorproperty for controlling the initial/final scale. - Docs: Improved markdown versions of documentation for AI agents. Pages are now served directly as markdown when accessed with
Accept: text/markdownheader or via.mdURLs. - Engine: Added
setModeAPI to change the scene mode betweenDesignandVideomodes. - Plugins/Web: Plugin versions are now aligned with CE.SDK releases, starting from version 1.68.0. This is a versioning change only with no breaking API changes.
- Editor/Android: Use custom FileProvider class to avoid manifest merger conflicts.
- Editor/Web: Fixed the drop overlay being shown when dragging files onto the canvas even when no upload asset sources are available.
- Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Editor/iOS: Fixed editor cleanup being triggered incorrectly when pushing another screen on top of the editor in a navigation stack. The editor now correctly stays alive when covered by another view and only cleans up when truly dismissed (popped or closed).
- Engine/iOS: Fixed text selection handles not being hidden when switching from text to transform edit mode on iOS 17+.
- Engine: Prevent zoom auto-fit from producing negative or zero zoom levels.
- Editor/Web: Added
showIndicatoroption tobuilder.Dropdown()to control visibility of the expand indicator icons. - Engine: Fixed vector outline not resizing with shape during transform operations
- Engine: Fixed video playback stopping unexpectedly when pressing play before videos finish loading.
- Editor/Web: Showcases app now displays iOS/Android demos in an interactive carousel layout on desktop, allowing users to navigate between the emulator and screenshots with smooth animations and intuitive controls.
- Plugins/Web: Fixed Runware NanoBanana2Pro API errors when using non-square aspect ratios (16:9, 9:16, 4:3, 3:4). The model requires specific dimension combinations that differ from the generic aspect ratio map.
- Plugins/Web: Fixed Runware Seedream 4.0 API errors when using non-square aspect ratios. At 1K resolution only 1:1 is supported; now using 2K dimensions for all aspect ratios.
- Plugins/Web: Improved Runware image generation reliability by switching from synchronous requests to async delivery with polling, avoiding timeouts on slower models.
- Plugins/Web: Added resolution parameter to Runware NanoBanana2Pro image-to-image generation for automatic aspect ratio detection from reference images.
- Editor/Android: Fixed media replacement not working when using camera capture
- Engine: Added
Autooption to horizontal text alignment that automatically aligns text based on the first logical run’s script direction (right for RTL scripts, left for LTR scripts). - Engine: Added
block.getTextEffectiveHorizontalAlignment(block)API to retrieve the resolved alignment when usingAutomode. - Editor/Web: Added “Match Language Direction” option to text alignment controls that automatically adjusts alignment based on the text’s script direction.
- Editor/iOS: Fixed LUT filter not being highlighted as selected on first click when the engine has not yet downloaded the LUT file.
- Editor/Android: Fixed LUT filter not being highlighted as selected on first click when the engine has not yet downloaded the LUT file.
- Renderer: Fixed buzzy or distorted audio in rendered videos when using open-source codecs on Linux.
- Renderer: Fixed a crash during video rendering when source videos contain non-standard frame timing.
- Engine: Fixed audio duration calculation for some MP4 files preventing a divide-by-zero crash when the videos are played.
- Editor/iOS: Added “Match Language Direction” option to text alignment controls that automatically adjusts alignment based on the text’s script direction.
- Editor/iOS: Text blocks now use “Auto” alignment by default, automatically matching the text’s script direction.
- Editor/Android: Added “Match Language Direction” option to text alignment controls that automatically adjusts alignment based on the text’s script direction.
- Editor/Android: Text blocks now use “Auto” alignment by default, automatically matching the text’s script direction.
Version v1.67.0 Changelog January 22, 2026
Breaking Changes
Non Breaking Changes
- Engine/Swift: Deprecated
addLocalAssetSourceFromJSONStringandaddLocalAssetSourceFromJSONURIin favor of overloadedaddLocalAssetSourceFromJSON(_:)methods that accept eitherURLorStringparameters. - Engine: Added the
block.loadFromURL(url)API, including Swift (block.load(from: URL)) and Kotlin (block.loadFromURL(url)) bindings, to make component creation and loading more easy. - Engine/Android: Fixed StrictMode violations.
- Editor/iOS: Changed the default Apparel Editor navigation bar layout to place undo, redo, and preview mode buttons in the center (principal placement) instead of the trailing edge. This aligns with the Postcard Editor layout and fixes empty slots appearing in iOS 26’s Liquid Glass navigation bar during preview mode.
- Editor/Android: Changed the default Apparel Editor navigation bar layout to place undo, redo, and preview mode buttons in the center instead of the end. This aligns with the Postcard Editor layout for cross-platform consistency.
- Engine/Swift: Fixed a potential crash due to a race condition during engine shutdown with active network requests.
- Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Camera/iOS: Fix Camera cleanup when dismissed programmatically in both SwiftUI and UIKit environments - the Camera view now properly invokes cleanup and onDismiss callback when dismissed via code (e.g.,
isPresented = falsein SwiftUI ordismiss(animated:)in UIKit) rather than user interaction - Engine: Fixed missing scaling of outline and drop shadow properties while resizing elements.
- Engine: Fixed an issue where block events triggered during event callbacks were not being delivered to subscribers.
- Editor/RN: Auto-configure Compose Compiler based upon the Kotlin version specified in the Gradle extras.
- Camera/RN: Auto-configure Compose Compiler based upon the Kotlin version specified in the Gradle extras.
- Engine: Fixed deserialization of scenes exported before the
textEditModeTransformHandlesEnabledsetting was introduced. - Engine: Fixed certain malformed WAV files throwing an error on load.
- Engine: Fix video source sets not being updated correctly.
- Editor/Flutter: Fixed empty demo asset source sections in the asset library. Demo asset sources are now added by default.
- Editor/RN: Fixed empty demo asset source sections in the asset library. Demo asset sources are now added by default.
- Editor/Web: Fix zoom control incorrectly showing percentage instead of “Auto” when switching pages
- Editor/iOS: Improved editor startup performance by loading font data on demand when the font selection UI is displayed instead of loading all font data at startup.
- Editor/Web: Fixed a crash that occurred when clicking Undo after applying the Recolor or Green Screen effects.
- Editor/iOS: Fixed filter selection not being displayed correctly in the UI after loading scene archive.
- Editor/Android: Fixed filter selection not being displayed correctly in the UI after loading scene archive.
- Renderer: Fix blank audio for some AAC-LC streams when decoded by the AV-Licensed codec pack
- Editor/Android: Fixed IllegalArgumentException crash in inspector bar FillStroke and TextBackground buttons.
- Editor/Android: Fixed scene restoration after process death
- Renderer: Significantly reduced memory usage during video exports.
- Editor/Android: Restrict system gallery sources to image/video MIME types to avoid surfacing audio files.
- Renderer: Improved mp4 video support using open-source codecs.
Version v1.66.1 Changelog December 19, 2025
Breaking Changes
Non Breaking Changes
- Engine/Android: Fixed crash when archiving scene on Android 12 and below.
- Engine: Fixed video export hanging when the audio track of a video starts later than the video.
- Engine: Fixed audio delay as set in media-time not being handled during playback and export for videos.
Version v1.66.0 Changelog December 17, 2025
Breaking Changes
- Editor/iOS: Photo Roll now defaults to privacy-friendly photos picker mode (no permissions required). The
PhotoRollAssetSourceis automatically registered. To enable full photo library access, overrideloadAssetSourcesin youronCreatecallback and usePhotoRollAssetSource(engine: engine, mode: .fullLibraryAccess). - Editor/iOS: The separate dock buttons
systemPhotoRoll()andimglyPhotoRoll(), and the eventsaddFromSystemPhotoRoll()andaddFromIMGLYPhotoRollare now deprecated in favor of the unifiedphotoRoll()button andaddFromPhotoRoll()event.
Non Breaking Changes
- Engine/Web: Added support for transparent WebM videos.
- Engine: Fixed applying of scene archive assets in asset sources.
- Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Editor/Web: Fixed TypeScript compilation error when using
skipLibCheck: false. - Editor/React-Native: Fixed iOS crash with New Architecture when optional parameters are undefined.
- Camera/React-Native: Fixed iOS crash with New Architecture when optional settings are undefined.
- Editor/Android: Fix camera crash by checking IMG.LY camera availability before initialization
- Editor/Web: All media HTML elements now include a
crossoriginHTML attribute, making them compatible with strictCross-Origin-Embedder-Policyenvironments without the need to inject new headers into cross-origin asset sources. - Editor/Android: Fixed a crash when selecting Free crop in PhotoEditor.
- Engine: Scene loading APIs now have an additional option to defer their completion callbacks until all resources are loaded
- Engine/Android: Fixed ANR in
Engine.start()during scene recovery. - Engine: Added RTL text support and bidirectional navigation for Text blocks with automatic direction detection.
Version v1.65.0 Changelog December 5, 2025
Breaking Changes
Non Breaking Changes
- Editor: Improved the visisbility of the page boundaries by adding a slight outline to it, can be changed with setting
pageHighlightColor. - Editor/Web: Add
isSearchablefield toAssetLibraryEntryto indicate if an entry supports searching. The search field in asset library panels is now only shown when at least one currently rendered entry is searchable - Engine: Text blocks are now automatically deleted when exiting text edit mode if they are completely empty and the
lifecycle/destroyscope permits deletion - Engine: Add
removeUndoStepAPI to remove the last history state from the undo stack - Engine: Option+Backspace and Command+Backspace text editing shortcuts.
- Engine: Add
getLayoutandsetLayoutAPIs to dynamically change scene layouts after scene creation: supports transitions between Free, VerticalStack, HorizontalStack, and DepthStack layouts. When transitioning from stack to Free layout, page visual positions are preserved to maintain the existing layout appearance. - Engine: Added
setTextCursorRangeAPI to set text cursor position and selection range in text blocks. Supports cursor positioning (from == to), range selection (from < to), and select-all (from: -1, to: -1). The API validates inputs and returns errors for invalid ranges (e.g.,from > to). If the range exceeds text length, it is automatically clamped to valid bounds. - Engine/Android: Fixed race condition where audio/video decoders could access freed AVContainer memory causing segmentation faults when replacing media with uploaded files.
- Editor/Flutter: Improved error messaging when Kotlin Compose compiler plugin is unavailable, providing clearer diagnostics for build configuration issues
- Editor/RN: Improved error messaging when Kotlin Compose compiler plugin is unavailable, providing clearer diagnostics for build configuration issues
- Engine: Fixed look up of LUT filter effect from an archived scene.
- Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Engine: Add undo step support for keyboard-based block nudging. When moving blocks with arrow keys (or Shift+Arrow for faster movement), undo/redo now works correctly.
- Engine: Fixed pixelation of image fills when adjustment effects are applied by selectively disabling mipmaps only for effects that manipulate UV coordinates
- Engine: Added
allowTextOverhangflag toExportOptionsto optionally include text glyph overhangs during export, preventing clipping of decorative fonts (defaults to false) - Engine: It is now possible to resize and rotate text blocks while editing text by enabling the new
textEditModeTransformHandlesEnabledfeature flag (off by default). - Engine: Scene loading APIs (
loadSceneFromString,loadSceneFromURL,loadSceneFromArchiveURL) now defer their completion callbacks until layout is complete - Engine: Fixed
saveToArchivecrashing when scene resources contain template variables (e.g.,{{appearanceId}}) in their URLs. Template variables are now resolved before archiving. - Engine: Text styling operations (color, font size, bold, italic, typeface, etc.) now apply to the entire text when called in edit mode with no selection. Previously, these operations only affected the cursor position style for future typed characters.
- Engine: Scene loading APIs now have an additional option to defer their completion callbacks until all resources are loaded
Version v1.64.0 Changelog November 21, 2025
New platform
Added a new platform for CE.SDK: the CE.SDK Renderer can be used on Linux servers inside a Docker container to render CE.SDK scene and archive files. GPU acceleration and video codecs are supported, allowing for simpler and faster server-side exporting workflows.
Breaking Changes
- Editor/Web: Number inputs and text inputs now require Enter key or blur to confirm changes by default. This prevents accidental changes while typing and provides a more intentional editing experience.
- Engine: Video files that only contain unsupported audio tracks are now reported in error state when adding them instead of automatically removing all audio. This prevents exports with missing audio. Happens, for example, for videos with PCM audio. The audio needs to be removed manually to get these files loaded.
- Editor/Android: Replaced the
EngineConfiguration.systemGalleryflag with the explicitSystemGalleryPermission.setModeopt-in, so projects enable the gallery inside theironCreatescope and can update it at runtime. - Editor/Android: Simplified the opt-in flow –
SystemGalleryPermission.setModecontrols the GalleryPermissionManager, and the editor registers the gallery asset sources inline, so no extra engine helpers are required. - Editor/Android: Cleared persisted gallery selections so gallery content is session based, matching the manual opt-in workflow.
Non Breaking Changes
- Editor/Web: Add canvas menu options customization support. The canvas menu “more options” button now supports customization via the builder API, allowing integrators to add, remove, or reorder menu items. Individual action components (flip horizontal, flip vertical, copy, paste) are now available as separate registered components for maximum flexibility.
- Editor/iOS: Add support for custom crop sheets with automatic edit mode association through the new optional
associatedEditModeparameter inopenSheetevent. - Editor/Web: Enhanced
AssetLibraryDockComponentwith optionalonClick,selected,disabled,size,variant, andcolourproperties for greater customization and control over asset library dock buttons - Editor/iOS: Add
OnLoaded.Callbackto execute custom logic when the editor finishes loading - Editor/iOS: Add Force Crop feature via
EditorEvents.ApplyForceCropevent usingcontext.eventHandler.send(.applyForceCrop(to:with:mode:)) - Editor/Web: Added 33 granular feature flags for placeholder settings control. Customers can now individually enable/disable placeholder options (opacity, blend mode, arrange, fill, stroke, text, appearance) using hierarchical feature IDs like
ly.img.placeholder.general.opacityor disable entire sections withly.img.placeholder.general. All features are enabled by default for backward compatibility. - Engine/Web: Add public zoom utility methods (
cesdk.utils.zoom.toLevel(),cesdk.utils.zoom.in(),cesdk.utils.zoom.out()) for controlling canvas zoom programmatically - Editor/Web: Refactor internal zoom handling to use centralized actions API instead of facade methods
- Editor/Web: Improve zoom behavior consistency across UI components (NavigationBar, Canvas shortcuts, ActionsStore)
- Editor/Web: Add automatic page zoom with padding on scene load and page focus operations
- Editor/Android: The
licenseparameter inEngineConfigurationis now nullable. Passnullto run the SDK in evaluation mode with a watermark. - Editor/iOS: The
licenseparameter inEngineSettingsis now nullable. Passnilto run the SDK in evaluation mode with a watermark. - Editor/Flutter: The
licenseparameter inEditorSettingsis now nullable. Passnullto run the SDK in evaluation mode with a watermark. - Editor/React Native: The
licenseparameter inEditorSettingsis now nullable. Passnullto run the SDK in evaluation mode with a watermark. - Camera/Android: The
licenseparameter inEngineConfigurationis now nullable. Passnullto run the SDK in evaluation mode with a watermark. - Camera/iOS: The
licenseparameter inEngineSettingsis now nullable. Passnilto run the SDK in evaluation mode with a watermark. - Camera/Flutter: The
licenseparameter inCameraSettingsis now nullable. Passnullto run the SDK in evaluation mode with a watermark. - Camera/React Native: The
licenseparameter inCameraSettingsis now nullable. Passnullto run the SDK in evaluation mode with a watermark. - Engine: Introduce Safe Area Insets API to automatically adjust viewport rendering for UI overlays (toolbars, navigation bars, etc.). Configure insets via
editor.setSafeAreaInsets()to ensure scene content remains visible and properly framed within the effective viewport. All camera operations (zoom, pan, clamp) automatically respect these insets. Defaults to zero insets (no adjustment) - Editor/Web: Added comprehensive speed and duration controls to the inspector for video and audio blocks. Speed can be adjusted from 0.25x to 3x with quick-access presets (0.25x, 0.5x, 1.0x, 2.0x, 3.0x) or custom values. Duration can be set using time format (HH:MM:SS) for precise clip timing.
- Editor/Web: Implemented automatic collision detection and track management. When a clip grows due to speed or duration changes and would overlap with adjacent clips, it automatically moves to a newly created track above its current position, preventing unwanted content overwriting.
- Engine: Lifted the 3x playback-speed cap for video fills while keeping the existing limit for audio blocks. Videos running faster than 3x are muted automatically until their speed is lowered again, ensuring consistent audio behaviour across platforms.
- Editor/Web: Add new loading animation for the editor.
- Editor/Android: Fixed crashes and UI state issues when changing scenes at runtime by ensuring all components properly subscribe to active scene changes and reinitialize their state.
- Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Editor/iOS: Fixed
NavigationLabelappearance on iOS 26 when compiled with Xcode 16. - Editor/iOS: Fixed keyboard not dismissing when interacting with pickers in the resize sheet on iOS 18+.
- Editor/iOS: Fix potential localization lookup performance issue for large app bundles.
- Engine/Web: Added support for VP9 videos with dynamic resolution.
- Engine: Improved caption property synchronization performance by batching property changes and processing them in a single pass.
- Engine/Android: Fixed race condition where audio/video decoders could access freed AVContainer memory causing segmentation faults when replacing media with uploaded files.
- Editor/Android: Improved visual hierarchy of asset library “See All” button by using smaller text style and flexible width layout to accommodate longer translations
Version v1.63.1 Changelog November 13, 2025
Breaking Changes
Non Breaking Changes
- Updated asset archives with the full asset tree for self-hosting
Version v1.62.1 Changelog November 7, 2025
Non Breaking Changes
- Engine: Fixed an issue where
exportcalls failed with aScene contains disallowed schemes…error.
Version v1.63.0 Changelog November 7, 2025
Breaking Changes
- Editor/Web: Migrated document colors to use engine-native
ly.img.scene.colorsasset source, removing the frontend implementation entirely. The oldly.img.colors.documentColorssource ID is no longer available. Custom integrations explicitly referencing the old source ID must update configurations to usely.img.scene.colorsinstead. The migration is automatic for users relying on default configurations. - Editor/iOS: Add support for groups in video editor timeline
- Editor/Android: Add support for groups in video editor timeline
- Editor/iOS: Removed
DefaultAssetLibrary.textAndTextComponentsproperty. UseDefaultAssetLibrary.textinstead, which now includes text components by default. - Editor/iOS: Removed
DefaultAssetLibrary.text(_: SceneMode?)function. Use theDefaultAssetLibrary.textproperty instead. - Editor/Android: Removed
LibraryContent.TextAndTextComponentsproperty. UseLibraryContent.Textinstead, which now includes text components by default. - Editor/Android: Removed
LibraryCategory.TextAndTextComponentsproperty. UseLibraryCategory.Textinstead, which now includes text components by default. - Engine: The
createAudioFromVideoandcreateAudiosFromVideoAPIs now have anAudioFromVideoOptionsparameter consisting of:keepTrimSettings(default:true): When enabled, the extracted audio block will have the same duration as the video’s effective (trimmed) duration. When disabled, the full audio track is extracted.muteOriginalVideo(default:false): When enabled, the original video’s audio track is muted after extraction.
- Editor/Web: Add new “modern” UI scaling option
Non Breaking Changes
- Engine: Added
isCropAspectRatioLocked()andsetCropAspectRatioLocked()APIs to query and control crop aspect ratio locking. When enabled, crop handles maintain the current aspect ratio during resize operations. - Editor/Web: Improved crop panel aspect ratio lock button to control both text inputs and crop handles, with automatic synchronization when selecting crop presets (1:1, Free, etc.).
- Editor/iOS: Added
assetSourceIDsparameter toSheetType.cropallowing to specify asset sources for the crop sheet used byInspectorBar.Buttons.cropandDock.Buttons.cropactions. - Editor/Web: Add native eye dropper tool for color sampling in color inspector and color preview boxes (Chrome, Edge, Opera)
- Engine: Added
findAllMediaURIsAPI that retrieves all valid media file URIs (http://, https://, file://) referenced by blocks in a scene - Engine/Web: Licenses are now optional. Without a license, a watermark is shown on exports. Licenses remove the watermark and are required for production use.
- Editor/Web: Updated all examples to demonstrate the SDK works without a license.
- Engine/Web: Added video support for Safari 26.0 and newer.
- Engine: Added editor APIs to enable or disable selection for a block and query its current selection state via
setSelectionEnabledandisSelectionEnabled. - Engine: Fixed possible empty audio samples in video exports if the audio decoder could not provide the decoded audio data in time.
- Engine/Android: Fixed empty audio in exported videos for some video files especially on the Samsung Galaxy S24 and S25 devices.
- Editor/Android: Fixed a jump of the video preview playback position if the video is paused and set to playing again.
- Editor/iOS: Fixed crop rectangle not expanding back to full size after multiple rotations with fixed aspect ratios
- Editor/Web: Fixed broken ligatures in ElsieSwashCaps font
- Editor/Android: Fixed broken ligatures in ElsieSwashCaps font
- Editor/iOS: Fixed broken ligatures in ElsieSwashCaps font
- Editor: Improve selection frame handle visibility for text blocks with fixed frame widths by prioritizing right side handle over corner handles when overlapping
- Editor/Web: Fixed video playback being stopped by selection changes when using the API to programmatically start playback. A 300ms grace period now allows initialization sequences to complete without interference while preserving the UI behavior of stopping playback when users manually click on clips.
- Editor/Web: Add feature flag
ly.img.crop.panel.autoOpento control automatic opening of crop panel when entering crop edit mode (defaults totruefor backward compatibility) - Editor/Web: Importing scenes from archives is now more memory efficient. Blob URLs are now used instead of Data URLs avoiding base64 encoding overhead.
- fix(Engine): Fix Document Color showing multiple highlights (default and selected color) after changing text color
- Engine/Web: Add
objectURLreturn type toutils.loadFile()API for efficient blob URL creation without manual conversion. This avoids base64 encoding overhead when loading large archive files. - Editor/iOS: Fixed potential voiceover crashes
- Editor/Web: Fix document color selection state not updating properly when selected element changes