Search Docs
Loading...
Skip to content

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 returns null for scenes created with scene.create(). Previously returned 'Design'. The return type changed from SceneMode to SceneMode | null.
  • Engine/Web: Deprecated scene.getMode(), scene.setMode(), and scene.createVideo(). These APIs still work but will be removed in a future version.
  • Engine/Web: block.addVideo(), block.getBackgroundTrack(), block.addImage(), and block.getThumbnailAt() no longer throw errors on Design-mode scenes.
  • Editor/Web: Breaking: Deprecated cesdk.createDesignScene(), cesdk.createVideoScene(), and the mode option on the scene.create action. Use cesdk.actions.run('scene.create') instead.
  • Editor/Web: Breaking: Browser support checks (editor.checkBrowserSupport action) 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/mode via engine.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() to addVoiceoverRecording() and InspectorBar.Buttons.ID.editVoiceover to .addVoiceoverRecording. Removed Image.imgly.editVoiceover; use Image.imgly.addVoiceover instead. Voiceover clips now support duplicate, split, and replace actions in the inspector bar.

Non Breaking Changes

  • Engine: Added .wav to 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.rulers feature 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:) and PresentationDetent.imgly.micro. The default style for SheetType.voiceover() changed to a floating micro sheet.
  • Engine: Added maxPreviewResolution setting 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/canEdit setting to enable renaming pages by double-clicking the page title on the canvas. Pressing Enter confirms the new name.
  • Editor/Web: When page/title/canEdit is enabled, double-clicking the page title opens an inline text editor to rename the page.
  • Engine: Added page/reparentBlocksToSceneWhenOutOfPage setting 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/highlightDropTarget setting that highlights the page under a dragged element as a drop target. Defaults to false.
  • Engine: Added text decoration support with setTextDecoration, getTextDecorations, toggleTextDecorationUnderline, toggleTextDecorationStrikethrough, and toggleTextDecorationOverline APIs.
    • 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?), and block.toggleTextDecorationOverline(id, from?, to?). New types TextDecorationLine, TextDecorationStyle, and TextDecorationConfig are 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), and block.toggleTextDecorationOverline(block, from, to) with TextDecorationLine, TextDecorationStyle, and TextDecorationConfig data class.
  • Engine/Swift: Added block.setTextDecoration(id, config:, in:), block.getTextDecorations(id, in:), block.toggleTextDecorationUnderline(id, in:), block.toggleTextDecorationStrikethrough(id, in:), and block.toggleTextDecorationOverline(id, in:) with TextDecorationLine OptionSet, TextDecorationStyle enum, and TextDecorationConfig struct.
  • 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, and getTextParagraphIndices allow 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/wave MIME type.
  • Editor/Android: Fixed image placeholder tapping immediately opening the replace sheet when dragStartCanSelect is 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/fetchCredentials setting not being respected on asset thumbnails and audio preview elements. When set to 'include', the crossOrigin attribute 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 dragStartCanSelect is 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 setTextColor applied 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. Use relocateResource() 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 with searchable and searchPlaceholder options.
  • 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 getAbsoluteURI is now async (callback-based) to support async resolvers. getAbsoluteURI must be used asynchronously on all platforms.
  • Engine/Web: EditorAPI.getAbsoluteURI now returns Promise<string> and EditorAPI.setURIResolverAsync was added. unstable_getURIResolver is renamed to getURIResolver.
  • Engine/Swift + Engine/Android: getAbsoluteURI is now async (async/suspend) and async URI resolver APIs were added.
  • Engine/Swift: Export APIs now apply onPreLoad and support a uriResolver for configuring the background export worker before loading the exported scene.
  • Engine/Android: Export APIs support a uriResolver for 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, and removeOrderComponent with the ly.img.video.clip.menu area. Custom actions can be added via the ly.img.video.clip.menu.action component.
  • Engine: Added scene/extendedPanningArea property to control whether the canvas workspace extends far beyond the content bounds. Defaults to false.
  • 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.disable to propagate to child features via parent keys.
  • Editor/Web: Rename ly.img.page.freeLayout to ly.img.scene.layout.free with new parent ly.img.scene.layout.
  • Editor/Web: Add ly.img.page.clipContent feature key for clip content toggle.
  • Editor/Web: Remove duplicate ly.img.audio.replace feature key. Use ly.img.replace.audio instead. Rename inspector bar component to ly.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 AssetProperty type and AssetAPI.applyAssetSourceProperty for 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/createShape APIs. Content clipping, selection outlines, bleed margins, and export all respect the page shape.
  • Engine: Added page/marginScale property 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/allowShapeChange setting (default: true). When set to false, supportsShape returns false for 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/useLigatures property to control font ligature rendering on text blocks. Set to false to disable standard and contextual ligatures. Enabled by default.
  • Editor/Web: Added timeline/trackVisibility setting 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 all Font[] entries for a variable font from its URI and supported axes.
  • Engine/Android: Fixed an IndexOutOfBoundsException in 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.template asset source ID with ly.img.templates across guide examples.
  • Editor/Web: Migrated smoketest configurations from deprecated callbacks config 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 callbacks config and addDefaultAssetSources.
  • Editor/Web: Added support for multiple page sizes within one scene. Pages can now have individual dimensions when the differentPageFormats feature 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.template asset source ID with ly.img.templates across guide examples.
  • Editor/Web: Migrated smoketest configurations from deprecated callbacks config 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 callbacks config and addDefaultAssetSources.

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 VerticalStack the 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 sceneBaseUri and assetBaseUri and unified them into a single baseUri property. Assets are now loaded from https://cdn.img.ly/packages/imgly/cesdk-flutter/<version>/assets by default. To migrate, replace EditorSettings(sceneBaseUri: ..., assetBaseUri: ...) with EditorSettings(baseUri: ...).
  • Editor/React Native: Removed sceneBaseUri and assetBaseUri and unified them into a single baseUri property. Assets are now loaded from https://cdn.img.ly/packages/imgly/cesdk-react-native/<version>/assets by default. To migrate, replace sceneBaseUri and assetBaseUri with a single baseUri in your EditorSettings.

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/colorMode setting 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 BlockAPI export methods (export, exportWithColorMask, exportVideo, exportVideoPublisher, exportAudio, exportAudioPublisher) for memory-efficient batch exports.
  • Engine/Swift: Added exportAudioPublisher methods for Combine-based audio export with progress tracking.
  • Engine/Android: Added List overloads to BlockApi export methods (export, exportWithColorMask, exportVideo) for memory-efficient batch exports.
  • Engine: Added optional ZSTD compression for scene serialization via CompressionOptions.format and CompressionOptions.level parameters. Compression formats include None and Zstd, with compression levels Fastest, Default, and Best.
  • Engine/Web: Added compression option to scene.saveToString() and scene.saveToArchive() methods accepting { format: 'None' | 'Zstd', level: 'Fastest' | 'Default' | 'Best' }.
  • Engine/Swift: Added compressionFormat and compressionLevel parameters to scene.saveToString() and scene.saveToArchive() methods.
  • Engine/Android: Added compressionFormat and compressionLevel parameters to scene.saveToString() and scene.saveToArchive() methods.
  • Editor/Android: Fixed an IllegalArgumentException: EditorEventHandler is not initialized yet crash caused by a swallowed CancellationException during engine startup.
  • Editor/Android: Fixed an IllegalArgumentException: Activity is not initialized yet crash 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 baseUri of addDefaultAssetSources and addDemoAssetSources from legacy CDN paths to https://cdn.img.ly/packages/imgly/cesdk-android/<version>/assets.
  • Editor/Android: Changed EngineConfiguration.defaultBaseUri from cesdk-engine to cesdk-android CDN path.
  • Engine/Swift: Changed Engine.assetBaseURL from https://cdn.img.ly/assets/v4 to https://cdn.img.ly/packages/imgly/cesdk-swift/<version>/assets.
  • Engine/Swift: Added baseURL parameter to addDemoAssetSources to allow customizing the asset source location.
  • Editor/iOS: Changed the default baseURL of EngineSettings from cesdk-engine to cesdk-swift CDN paths, aligning with Engine.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-picker v16+) in React Native apps using useFrameworks: "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-picker v16+) in React Native apps using useFrameworks: "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 getPages crashing 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.createFromImage failing 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.captionPresetsly.img.caption.presets
    • ly.img.colors.defaultPalettely.img.color.palette
    • ly.img.vectorpathly.img.vector.shape
    • ly.img.textComponentsly.img.text.components

    The following asset sources have been merged:

    • ly.img.filter.lut + ly.img.filter.duotonely.img.filter
    • ly.img.page.presets + ly.img.page.presets.videoly.img.page.presets
    • ly.img.template + ly.img.video.templately.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.entries configuration 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 the cesdk.ui.addAssetLibraryEntry() and cesdk.ui.updateAssetLibraryEntry() APIs after SDK initialization instead.

  • Editor/Web: BREAKING Removed config.ui.elements.libraries.replace.entries configuration 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 the cesdk.ui.setReplaceAssetLibraryEntries() API after SDK initialization.

  • Editor/Web: BREAKING Removed config.ui.elements.dock.groups and config.ui.elements.dock.defaultGroupId configuration options. The dock must now be configured programmatically using the cesdk.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.lut and ly.img.filter.duotone from the Feature API. Use ly.img.filter instead, 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-settings button has been removed.

Non Breaking Changes

  • Editor/Web: Deprecated cesdk.addDefaultAssetSources() and cesdk.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() or engine.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 basePath setting now also controls where the engine loads font fallback files and the emoji font from. Previously, these were always loaded from https://cdn.img.ly/assets/v4, making it impossible to fully self-host all CE.SDK assets. When basePath is not set, the engine continues to load these assets from the default CDN URL. If self-hosting, set basePath via editor.setSettingString() to point to your server where you’ve extracted the fonts/ and emoji/ directories from imgly-assets.zip. See the Serve Assets guide for details.

  • Editor/Web: Added truncateLabel option 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 Auto option to touch/pinchAction setting. 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 when touch/rotateAction is set to Rotate.

  • 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.checkSupport and video.encode.checkSupport actions to trigger these dialogs programmatically, and silent utilities cesdk.utils.supportsVideoDecode() and cesdk.utils.supportsVideoEncode() for detection without UI. Affected platforms include Linux browsers and Firefox, which lack H.264/AAC encoder support.

  • Plugins/Web: Fixed uploadMiddleware URLs being ignored in image quick actions, causing FILE_FETCH_FAILED errors 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 uploadMiddleware to 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/hideLabels is 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.moveChildrenWhenCroppingFill enabled (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 setTypeface multiple 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 PendingState was not properly cleared for video fills after the resource finished loading.

  • Editor/Web: Added a unified scene.create action (cesdk.actions.run('scene.create', options?)) that replaces the deprecated cesdk.createDesignScene() and cesdk.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 mode option (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 pages array or via page + pageCount.
    • Automatically configures scene DPI (72 for Pixel, 300 for print units) and design units.

    Migration:

    // Before
    await cesdk.createDesignScene();
    await cesdk.createVideoScene();
    // After
    await cesdk.actions.run('scene.create');
    await cesdk.actions.run('scene.create', { mode: 'Video' });
    // With page dimensions
    await cesdk.actions.run('scene.create', {
    page: { width: 1080, height: 1920, unit: 'Pixel' }
    });
    // With page presets from an asset source
    await cesdk.actions.run('scene.create', {
    page: {
    sourceId: 'ly.img.page.presets',
    assetId: 'ly.img.page.presets.instagram.story'
    }
    });
  • Editor/Web: Deprecated cesdk.createDesignScene() and cesdk.createVideoScene(). Both methods continue to work but log a deprecation warning. Use cesdk.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 IllegalStateException crash 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 basePath setting not being serialized.

  • Editor/Web: Fixed dropdown menu items not filling width and having broken spacing between icons, labels, and keyboard shortcuts.

  • Engine: Added clampTextBlockWidthToPageDimensionsDuringEditing feature 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_mixer and hsp_selective_adjustments effects. 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/hspSelectiveAdjustmentsEnabled setting 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 a scaleFactor property 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/markdown header or via .md URLs.
  • Engine: Added setMode API to change the scene mode between Design and Video modes.
  • 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 showIndicator option to builder.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 Auto option 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 using Auto mode.
  • 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 addLocalAssetSourceFromJSONString and addLocalAssetSourceFromJSONURI in favor of overloaded addLocalAssetSourceFromJSON(_:) methods that accept either URL or String parameters.
  • 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 = false in SwiftUI or dismiss(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 textEditModeTransformHandlesEnabled setting 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.

All Releases

v1.72.3 Changelog April 14, 2026
v1.72.2 Changelog April 9, 2026
v1.72.0 Changelog April 2, 2026
v1.72.1 Changelog April 2, 2026
v1.71.0 Changelog March 19, 2026
v1.70.1 Changelog March 13, 2026
v1.70.0 Changelog March 9, 2026
v1.69.0 Changelog February 23, 2026
v1.68.0 Changelog February 6, 2026
v1.67.0 Changelog January 22, 2026
v1.66.1 Changelog December 19, 2025
v1.66.0 Changelog December 17, 2025
v1.65.0 Changelog December 5, 2025
v1.64.0 Changelog November 21, 2025
v1.63.1 Changelog November 13, 2025
v1.62.1 Changelog November 7, 2025
v1.63.0 Changelog November 7, 2025
v1.62.0 Changelog October 22, 2025
v1.61.0 Changelog October 8, 2025
v1.60.0 Changelog September 19, 2025
v1.59.2 Changelog September 12, 2025
v1.59.1 Changelog September 8, 2025
v1.59.0 Changelog September 2, 2025
v1.58.0 Changelog August 19, 2025
v1.57.1 Changelog August 15, 2025
v1.57.0 Changelog August 6, 2025
v1.56.0 Changelog July 24, 2025
v1.55.2 Changelog July 18, 2025
v1.55.1 Changelog July 11, 2025
v1.55.0 Changelog July 8, 2025
v1.54.1 Changelog July 2, 2025
v1.54.0 Changelog June 26, 2025
v1.53.0 Changelog June 12, 2025
v1.52.0 Changelog May 29, 2025
v1.51.0 Changelog May 19, 2025
v1.50.2 Changelog May 15, 2025
v1.50.1 Changelog May 9, 2025
v1.50.0 Changelog April 29, 2025
v1.49.1 Changelog April 21, 2025
v1.49.0 Changelog April 16, 2025
v1.48.1 Changelog April 11, 2025
v1.48.0 Changelog April 1, 2025
v1.47.0 Changelog March 20, 2025
v1.46.1 Changelog March 5, 2025
v1.46.0 Changelog March 4, 2025
v1.10.6 Changelog February 19, 2025
v1.45.0 Changelog February 19, 2025
v1.44.0 Changelog February 6, 2025
v1.43.0 Changelog January 21, 2025
v1.42.0 Changelog January 9, 2025
v1.41.1 Changelog December 16, 2024
v1.41.0 Changelog December 11, 2024
v1.40.1 Changelog December 6, 2024
v1.40.0 Changelog November 28, 2024
v1.39.0 Changelog November 12, 2024
v1.38.0 Changelog October 29, 2024
v1.37.0 Changelog October 14, 2024
v1.36.1 Changelog October 4, 2024
v1.36.0 Changelog September 30, 2024
v1.35.1 Changelog September 20, 2024
v1.35.0 Changelog September 16, 2024
v1.34.0 Changelog August 31, 2024
v1.10.5 Changelog August 30, 2024
v1.33.0 Changelog August 23, 2024
v1.10.4 Changelog August 21, 2024
v1.32.0 Changelog August 6, 2024
v1.31.0 Changelog July 18, 2024
v1.30.0 Changelog July 3, 2024
v1.29.0 Changelog June 20, 2024
v1.28.0 Changelog June 6, 2024
v1.27.1 Changelog May 23, 2024
v1.26.1 Changelog May 22, 2024
v1.27.0 Changelog May 21, 2024
v1.26.0 Changelog May 7, 2024
v1.25.0 Changelog April 23, 2024
v1.24.0 Changelog April 5, 2024
v1.23.0 Changelog March 26, 2024
v1.22.0 Changelog March 12, 2024
v1.21.1 Changelog February 27, 2024
v1.21.0 Changelog February 22, 2024
v1.20.0 Changelog January 25, 2024
v1.19.0 Changelog December 13, 2023
v1.18.1 Changelog November 29, 2023
v1.18.0 Changelog November 6, 2023
v1.10.3 Changelog October 26, 2023
v1.10.2 Changelog October 26, 2023
v1.17.0 Changelog October 9, 2023
v1.16.1 Changelog September 14, 2023
v1.16.0 Changelog September 8, 2023
v1.15.0 Changelog September 1, 2023
v1.14.0 Changelog July 21, 2023
v1.13.1 Changelog July 10, 2023
v1.13.0 Changelog July 3, 2023
v1.12.2 Changelog June 30, 2023
v1.12.1 Changelog June 12, 2023
v1.12.0 Changelog June 2, 2023
v1.11.1 Changelog May 17, 2023
v1.11.0 Changelog May 10, 2023
v1.10.1 Changelog March 29, 2023
v1.10.0 Changelog March 14, 2023
v1.9.2 Changelog January 18, 2023
v1.9.1 Changelog December 15, 2022
v1.9.0 Changelog December 12, 2022
v1.8.0 Changelog October 21, 2022
v1.7.0 Changelog August 11, 2022
v1.6.3 Changelog June 13, 2022
v1.6.2 Changelog May 24, 2022
v1.6.1 Changelog May 23, 2022
v1.6.0 Changelog May 16, 2022
v1.5.1 Changelog May 9, 2022
v1.4.7 Changelog May 3, 2022
v1.4.6 Changelog April 14, 2022
v1.5.0 Changelog April 4, 2022
v1.4.5 Changelog April 1, 2022
v1.4.4 Changelog March 9, 2022
v1.4.3 Changelog March 7, 2022
v1.4.2 Changelog February 23, 2022
v1.4.1 Changelog February 22, 2022
v1.4.0 Changelog February 18, 2022
v1.3.0 Changelog January 6, 2022
v1.2.1 Changelog November 30, 2021
v1.2.0 Changelog November 22, 2021
v1.1.1 Changelog October 29, 2021
v1.1.0 Changelog October 28, 2021
v1.0.0 Changelog August 18, 2021