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.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.0 Changelog April 2, 2026
Breaking Changes
- Engine: Breaking: Deprecated scene mode. The engine no longer restricts features based on scene mode. All features (video playback, timeline, audio, export, etc.) work on every scene regardless of mode. See the v1.72 migration guide for details.
- Engine/Web: Breaking:
scene.getMode()now returnsnullfor scenes created withscene.create(). Previously returned'Design'. The return type changed fromSceneModetoSceneMode | null. - Engine/Web: Deprecated
scene.getMode(),scene.setMode(), andscene.createVideo(). These APIs still work but will be removed in a future version. - Engine/Web:
block.addVideo(),block.getBackgroundTrack(),block.addImage(), andblock.getThumbnailAt()no longer throw errors on Design-mode scenes. - Editor/Web: Breaking: Deprecated
cesdk.createDesignScene(),cesdk.createVideoScene(), and themodeoption on thescene.createaction. Usecesdk.actions.run('scene.create')instead. - Editor/Web: Breaking: Browser support checks (
editor.checkBrowserSupportaction) are no longer triggered automatically based on scene mode. Config plugins must call the action explicitly with{ videoDecode, videoEncode }parameters. Starter kit configs (video editor, advanced video editor) are already updated. - Editor/Web: Breaking: Code that reads
scene/modeviaengine.block.getEnum(scene, 'scene/mode')will throw on scenes without a mode. Remove mode checks or set a mode explicitly. - Renderer/CLI: Scenes without a mode now default to image export instead of crashing.
- Migration guide: Upgrading to v1.72 covers scene creation changes, removing mode checks, browser support configuration, TypeScript type updates, cross-platform compatibility, and how to keep using legacy mode if needed.
- Editor/iOS: Renamed
InspectorBar.Buttons.editVoiceover()toaddVoiceoverRecording()andInspectorBar.Buttons.ID.editVoiceoverto.addVoiceoverRecording. RemovedImage.imgly.editVoiceover; useImage.imgly.addVoiceoverinstead. Voiceover clips now support duplicate, split, and replace actions in the inspector bar.
Non Breaking Changes
- Engine: Added
.wavto the supported audio import formats in the file format support documentation. - Editor/Android: Added Voiceover recording to the timeline audio flow with multiple voiceover tracks, recording beyond video end, and waveform/trim handling improvements.
- Editor/Web: Added grid and rulers feature with configurable grid spacing, snap-to-grid, grid color customization, and canvas rulers. Controlled via
ly.img.rulersfeature flag — enabled by default in advanced editor and video editor configurations. - Editor/iOS: Voiceover recording now uses a compact floating record sheet with multi-track recording support and lets you add follow-up recordings from selected voiceover clips. Added
SheetStyle.only(isFloating:detent:)andPresentationDetent.imgly.micro. The default style forSheetType.voiceover()changed to a floating micro sheet. - Engine: Added
maxPreviewResolutionsetting that caps the rendering resolution during preview mode. When set to a value greater than 0, the scene is rendered to a smaller offscreen surface and upscaled, improving performance on high-DPI displays. Does not affect exports or thumbnails. Defaults to -1 (disabled). - Engine: Added
page/title/canEditsetting to enable renaming pages by double-clicking the page title on the canvas. Pressing Enter confirms the new name. - Editor/Web: When
page/title/canEditis enabled, double-clicking the page title opens an inline text editor to rename the page. - Engine: Added
page/reparentBlocksToSceneWhenOutOfPagesetting that allows blocks to be automatically reparented to the scene when dragged outside all pages, and back to a page when dragged over one. - Engine: Added
page/highlightDropTargetsetting that highlights the page under a dragged element as a drop target. Defaults tofalse. - Engine: Added text decoration support with
setTextDecoration,getTextDecorations,toggleTextDecorationUnderline,toggleTextDecorationStrikethrough, andtoggleTextDecorationOverlineAPIs.- Line types: Underline, Strikethrough, Overline (combinable per text run).
- Visual styles: Solid, Double, Dotted, Dashed, Wavy.
- Underline-specific options: color override (
underlineColor), thickness multiplier (underlineThickness), position offset (underlineOffset), and skip-ink (skipInk). - Overline and strikethrough always use the text color.
- Decoration state is persisted with scene serialization.
- Engine/Web: Added
block.setTextDecoration(id, config, from?, to?),block.getTextDecorations(id, from?, to?),block.toggleTextDecorationUnderline(id, from?, to?),block.toggleTextDecorationStrikethrough(id, from?, to?), andblock.toggleTextDecorationOverline(id, from?, to?). New typesTextDecorationLine,TextDecorationStyle, andTextDecorationConfigare exported from@cesdk/engine. - Engine/Android: Added
block.setTextDecoration(block, config, from, to),block.getTextDecorations(block, from, to),block.toggleTextDecorationUnderline(block, from, to),block.toggleTextDecorationStrikethrough(block, from, to), andblock.toggleTextDecorationOverline(block, from, to)withTextDecorationLine,TextDecorationStyle, andTextDecorationConfigdata class. - Engine/Swift: Added
block.setTextDecoration(id, config:, in:),block.getTextDecorations(id, in:),block.toggleTextDecorationUnderline(id, in:),block.toggleTextDecorationStrikethrough(id, in:), andblock.toggleTextDecorationOverline(id, in:)withTextDecorationLineOptionSet,TextDecorationStyleenum, andTextDecorationConfigstruct. - Engine: Add keyboard interaction behaviors for text list editing: automatic list creation on trigger sequences (
*,-,+,1.), Tab/Shift+Tab indentation (up to 5 levels), Enter to continue or exit a list, Shift+Enter to add a line break within a list item, and Backspace to decrease indent or remove list structure. - Engine/Android: During text editing Shift+Enter creates a new line instead of a new paragraph.
- Engine: Added text list support with ordered and unordered list styles. New APIs:
setTextListStyle,getTextListStyle,setTextListLevel,getTextListLevel, andgetTextParagraphIndicesallow per-paragraph list formatting with configurable nesting levels. Lists can be nested for a maximum of 5 levels. - Editor/Web: Added UI controls for text list styles in the advanced text inspector and as canvas menu actions.
- Editor/Android: Added UI controls for text list styles in the format options sheet.
- Editor/iOS: Added UI controls for text list styles in the text format options.
- Engine: Added vector path editing mode with vertex add/delete, node selection, segment hover with midpoint handles, and control point manipulation
- Engine: LineShape entities are now automatically converted to VectorPath with stroke on deserialization for proper stroke controls and vector editing
- Engine: Bypassed SVG round-trip for conic-based shapes (circles/ellipses) to preserve smooth curves during vector edit conversion
- Engine: Fixed frame-to-path dimension mismatch for inscribed shapes (polygons, stars) during vector conversion
- Engine: Proportional image fill during vector path refit preserves Cover behavior and user’s zoom/pan position
- Engine/Web: Added vector edit APIs for node manipulation, bend mode, add/delete modes, and mirror mode
- Editor/Web: Added vector edit UI with Move/Bend mode toggle, anchor point add/delete, mirror mode dropdown, and keyboard shortcuts (Backspace/Delete)
- Editor/Web: Deferred vector path conversion — entering vector edit mode is non-destructive until first modification
- Editor/Web: Added corner radius slider for vector_path shapes in shape inspector
- Engine: Improved WAV audio import reliability and added support for the
audio/waveMIME type. - Editor/Android: Fixed image placeholder tapping immediately opening the replace sheet when
dragStartCanSelectis enabled. - Editor/Web: Fixed arrow key movement not working when more than 3 blocks were selected via Cmd/Ctrl+click
- Engine: Fixed bold and italic toggle behavior so that toggling checks whether all runs in the selection are bold/italic. If all are, the style is removed; if any are not, the style is added to all. Previously, the toggle only checked the current editing style rather than the full selection range.
- Editor/Web: Fixed bold and italic toggle buttons to show as active only when all characters in the selection are bold/italic, not when any single character is.
- Engine: Fixed PDF export producing blank pages when the effective rendering size at the scene’s DPI exceeds GPU texture limits.
- Editor/Web: Fixed
web/fetchCredentialssetting not being respected on asset thumbnails and audio preview elements. When set to'include', thecrossOriginattribute on media HTML elements is now correctly set to'use-credentials'instead of always using'anonymous'. - Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Engine: Fixed GStreamer video export failures with HE-AAC and HE-AACv2 audio tracks, and resolved infinite loops during backward seeks.
- Editor/iOS: Fixed image placeholder tapping immediately opening the replace sheet when
dragStartCanSelectis enabled. - Editor/Web: Fixed keyboard shortcuts (e.g., Ctrl+B for bold, Ctrl+I for italic) not toggling off due to a stale closure in the shortcut handler.
- Engine: Fixed loop animation duration not being clamped when reducing a block’s duration.
- Engine: Fixed a crash in MP4 demuxing when reading from a streaming resource with a negative offset.
- Engine: Fixed a crash when entering text editing mode on text blocks that had
setTextColorapplied while containing template variables. - Engine: Fixed text shaping to automatically merge adjacent text runs with identical style properties, preserving cross-run kerning and ligatures.
- Engine: Fixed text cursor placement when clicking in the gap between lines, which previously caused the selection to jump to the end of the text block.
- Engine: Fixed incorrect video duration for iOS-trimmed videos where metadata tracks retained the original untrimmed duration.
- Editor/Web: Added a Document Settings button to the navigation bar that opens a dedicated panel for page size, layout, and document properties.
- Editor/Android: Fixed the “Scale” loop animation not being applied or adjustable.
- Engine: Fixed
relocateResource()not properly invalidating cached resource state after font URI changes, causing fonts to not be re-fetched from the new URL after scene load. UserelocateResource()to migrate font URIs (e.g. after a CDN change).
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.
Version v1.71.0 Changelog March 19, 2026
Breaking Changes
- Engine: Added async URI resolving via
setURIResolverAsync, enabling asynchronous resolution (e.g. token fetching) and proper error reporting. - Engine: breaking change
getAbsoluteURIis now async (callback-based) to support async resolvers.getAbsoluteURImust be used asynchronously on all platforms. - Engine/Web:
EditorAPI.getAbsoluteURInow returnsPromise<string>andEditorAPI.setURIResolverAsyncwas added.unstable_getURIResolveris renamed togetURIResolver. - Engine/Swift + Engine/Android:
getAbsoluteURIis now async (async/suspend) and async URI resolver APIs were added. - Engine/Swift: Export APIs now apply
onPreLoadand support auriResolverfor configuring the background export worker before loading the exported scene. - Engine/Android: Export APIs support a
uriResolverfor configuring the background export worker before loading the exported scene.
Non Breaking Changes
- Editor/Web: Added component order API support for the video clip context menu. The clip context menu can now be fully customized per clip type (clip, overlay, caption) using
setComponentOrder,insertOrderComponent,updateOrderComponent, andremoveOrderComponentwith thely.img.video.clip.menuarea. Custom actions can be added via thely.img.video.clip.menu.actioncomponent. - Engine: Added
scene/extendedPanningAreaproperty to control whether the canvas workspace extends far beyond the content bounds. Defaults tofalse. - Editor/Web: Added free layout mode for pages with single-gesture drag, page snapping, auto-positioning of new, pasted, and duplicated pages, and persistent page positions across layout switches.
- Editor/Web: Add granular child feature keys for fill, stroke, shadow, shape options, position, group, combine, scene layout, and page clipping, enabling fine-grained control over individual UI sub-controls.
- Editor/Web: Fix
feature.enable/feature.disableto propagate to child features via parent keys. - Editor/Web: Rename
ly.img.page.freeLayouttoly.img.scene.layout.freewith new parently.img.scene.layout. - Editor/Web: Add
ly.img.page.clipContentfeature key for clip content toggle. - Editor/Web: Remove duplicate
ly.img.audio.replacefeature key. Usely.img.replace.audioinstead. Rename inspector bar component toly.img.replace.audio.inspectorBar. - Editor/Web: Improved position dropdown with grid layout and layer fixing dropdown
- Editor/iOS: Added new inspector bar button
InspectorBar.Buttons.animation()that opens the animations sheet in the video editor. - Editor/iOS: Added support for animations in the video editor.
- Engine/Swift: Added
AssetPropertytype andAssetAPI.applyAssetSourcePropertyfor applying property changes to asset sources. - Engine: Added support for non-rectangular page shapes. Pages now support all shape types (ellipse, polygon, star, etc.) via the existing
setShape/getShape/createShapeAPIs. Content clipping, selection outlines, bleed margins, and export all respect the page shape. - Engine: Added
page/marginScaleproperty for shape-based bleed margins. Set a value greater than 1.0 (e.g., 1.1 for 10% bleed) to scale the page shape outward, creating a uniform bleed area that follows the shape contour. Per-side margins (page/margin/*) continue to work for rectangular pages. - Engine: Added
page/allowShapeChangesetting (default:true). When set tofalse,supportsShapereturnsfalsefor pages, preventing shape changes via the API. Non-page blocks are unaffected. - Engine: Added a new “Scale” loop animation with configurable start/end scale, start delay, hold duration, easing duration, and direction.
- Engine: Added
text/useLigaturesproperty to control font ligature rendering on text blocks. Set tofalseto disable standard and contextual ligatures. Enabled by default. - Editor/Web: Added
timeline/trackVisibilitysetting to control which timeline tracks are visible. Set to'all'(default) to show every track, or'active'to show only the track containing the active block. - Engine: Added variable font support. A single font file can now represent multiple weight and style variants.
- Engine/Web: Added
createVariableFontCombinations()utility to generate allFont[]entries for a variable font from its URI and supported axes. - Engine/Android: Fixed an
IndexOutOfBoundsExceptionin text input during IME composition. - Engine: Improved audio export performance significantly.
- Engine: Added support for exporting audio from group blocks.
- Engine: Fixed pages with emoji characters in their title being stuck in a loading state.
- Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Documentation: Updated all browser guide code examples to replace deprecated v1.69 APIs (
addDefaultAssetSources,addDemoAssetSources) with the new plugin-based asset source approach. - Documentation: Removed obsolete get-started pages and deprecated asset source API references.
- Documentation: Replaced deprecated
ly.img.templateasset source ID withly.img.templatesacross guide examples. - Editor/Web: Migrated smoketest configurations from deprecated
callbacksconfig to the actions API and Order API. - Plugins/Web: Updated plugin examples to use the new plugin-based asset sources and Order API instead of deprecated
callbacksconfig andaddDefaultAssetSources. - Editor/Web: Added support for multiple page sizes within one scene. Pages can now have individual dimensions when the
differentPageFormatsfeature flag is enabled. The resize panel dynamically adjusts between per-page and all-pages mode based on selection. - Editor/Web: Fixed page jumps and canvas shifts when changing page sizes in free layout mode.
- Editor/Android: Fixed the “Scale” loop animation not being applied or adjustable.
- Engine: Fixed an issue where exporting pages with emoji in the page title could cause an endless export loop.
- Engine: Fixed page positioning in free layout mode when changing aspect ratios via crop presets. Pages now maintain consistent spacing in both horizontal and vertical arrangements.
Version v1.70.1 Changelog March 13, 2026
Breaking Changes
Non Breaking Changes
- Documentation: Updated all browser guide code examples to replace deprecated v1.69 APIs (
addDefaultAssetSources,addDemoAssetSources) with the new plugin-based asset source approach. - Documentation: Removed obsolete get-started pages and deprecated asset source API references.
- Documentation: Replaced deprecated
ly.img.templateasset source ID withly.img.templatesacross guide examples. - Editor/Web: Migrated smoketest configurations from deprecated
callbacksconfig to the actions API and Order API. - Plugins/Web: Updated plugin examples to use the new plugin-based asset sources and Order API instead of deprecated
callbacksconfig andaddDefaultAssetSources.
Version v1.70.0 Changelog March 9, 2026
Breaking Changes
- Engine/Editor: Page title labels no longer have a reserved space above pages but occupy the stack spacing. This allows for consistent spacing independent of page sizes with and without a page label. If a scene is created using
VerticalStackthe page title label can now be pushed into the previous page. The stack should have spacing in screenspace enabled (default)api.block.setBool(stack, 'stack/spacingInScreenspace', true)and spacing should be >= 16, e.g.,api.block.setFloat(stack, 'stack/spacing', 48). - Editor/Flutter: Removed
sceneBaseUriandassetBaseUriand unified them into a singlebaseUriproperty. Assets are now loaded fromhttps://cdn.img.ly/packages/imgly/cesdk-flutter/<version>/assetsby default. To migrate, replaceEditorSettings(sceneBaseUri: ..., assetBaseUri: ...)withEditorSettings(baseUri: ...). - Editor/React Native: Removed
sceneBaseUriandassetBaseUriand unified them into a singlebaseUriproperty. Assets are now loaded fromhttps://cdn.img.ly/packages/imgly/cesdk-react-native/<version>/assetsby default. To migrate, replacesceneBaseUriandassetBaseUriwith a singlebaseUriin yourEditorSettings.
Non Breaking Changes
- Editor/Android: Improved timeline thumbnails for still content (images, stickers, shapes) by displaying a single representative thumbnail instead of repeating images.
- Editor/Android: Added text content display for text clips in the timeline, showing the actual text alongside the clip label.
- Editor/Android: Added pinning behavior for clip labels, thumbnails, and text content - elements now stay visible when clips are scrolled off-screen.
- Editor/Android: Added real audio waveform visualization for audio clips in the timeline, replacing the placeholder background.
- Editor/Web: Added
colorPicker/colorModesetting to restrict the color picker to a specific color mode ('RGB','CMYK', or'Any'). When set to'RGB'or'CMYK', elements using a different color mode show disabled inputs with a convert button. Newly created pages, blocks added from the asset library, and fill type switches automatically convert colors to match the configured color mode. - Editor/Android: Add minimum and maximum video duration constraints with timeline markers and export validation.
- Editor/iOS: Add min/max video duration constraints with timeline indicators and export clamping.
- Engine: Added async
editor.getFontMetrics(fontFileUri)API that returns raw font metrics (ascender, descender, unitsPerEm, lineGap, capHeight, xHeight, underlineOffset, underlineSize, strikeoutOffset, strikeoutSize). See the Edit Text guide for details. - Engine/Swift: Added array overloads to
BlockAPIexport methods (export,exportWithColorMask,exportVideo,exportVideoPublisher,exportAudio,exportAudioPublisher) for memory-efficient batch exports. - Engine/Swift: Added
exportAudioPublishermethods for Combine-based audio export with progress tracking. - Engine/Android: Added
Listoverloads toBlockApiexport methods (export,exportWithColorMask,exportVideo) for memory-efficient batch exports. - Engine: Added optional ZSTD compression for scene serialization via
CompressionOptions.formatandCompressionOptions.levelparameters. Compression formats includeNoneandZstd, with compression levelsFastest,Default, andBest. - Engine/Web: Added
compressionoption toscene.saveToString()andscene.saveToArchive()methods accepting{ format: 'None' | 'Zstd', level: 'Fastest' | 'Default' | 'Best' }. - Engine/Swift: Added
compressionFormatandcompressionLevelparameters toscene.saveToString()andscene.saveToArchive()methods. - Engine/Android: Added
compressionFormatandcompressionLevelparameters toscene.saveToString()andscene.saveToArchive()methods. - Editor/Android: Fixed an
IllegalArgumentException: EditorEventHandler is not initialized yetcrash caused by a swallowedCancellationExceptionduring engine startup. - Editor/Android: Fixed an
IllegalArgumentException: Activity is not initialized yetcrash when a configuration change occurs while the asset library is open. - Engine/Android: Fixed a crash in rotation gesture handling during multi-touch interactions.
- Engine/Android: Fixed video export crash caused by a video decoder restart loop on some devices.
- Engine/Web: Fixed occasional crash during archive import.
- Engine/Android: Changed default
baseUriofaddDefaultAssetSourcesandaddDemoAssetSourcesfrom legacy CDN paths tohttps://cdn.img.ly/packages/imgly/cesdk-android/<version>/assets. - Editor/Android: Changed
EngineConfiguration.defaultBaseUrifromcesdk-enginetocesdk-androidCDN path. - Engine/Swift: Changed
Engine.assetBaseURLfromhttps://cdn.img.ly/assets/v4tohttps://cdn.img.ly/packages/imgly/cesdk-swift/<version>/assets. - Engine/Swift: Added
baseURLparameter toaddDemoAssetSourcesto allow customizing the asset source location. - Editor/iOS: Changed the default
baseURLofEngineSettingsfromcesdk-enginetocesdk-swiftCDN paths, aligning withEngine.assetBaseURL. - Camera/iOS: Fixed crashes during camera and microphone permission requests and video recording when using static framework linking with other Swift concurrency libraries (e.g.,
expo-image-pickerv16+) in React Native apps usinguseFrameworks: "static". - Editor/iOS: Fixed crashes during camera and microphone permission requests when using static framework linking with other Swift concurrency libraries (e.g.,
expo-image-pickerv16+) in React Native apps usinguseFrameworks: "static". - Editor/iOS: Fixed crashes when presenting the limited photo library picker on iOS 16 due to a system bug where the completion handler is called multiple times.
- Editor/iOS: Fixed a crash when closing the editor with an empty text block selected.
- Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
- Engine: Fixed
getPagescrashing when no scene is loaded. It now returns an empty list instead. - Engine: Fixed page alignment in horizontal stack layouts if page titles are shown. Pages with different heights now align correctly at the top.
- Engine: Added support for layouting rotated pages in horizontal and vertical stack layouts.
- Engine: Fixed text selection direction being flipped when selecting across character-wrapped (mid-word) line breaks.
- Engine: Fixed
scene.createFromImagefailing for URLs containing non-ASCII characters such as non-breaking spaces or other Unicode whitespace. - Engine/Web: Fixed video export getting stuck when the trim offset lands on a B-frame near a GOP boundary.
- Editor/Android: Fixed a crash in the canvas menu when a deleted block’s selection was passed to a new scope.
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.