Search Docs
Loading...
Skip to content

To v1.69+

Version 1.69 introduces Starter Kits, a new asset source plugin system, and consolidated asset naming conventions. This guide walks you through the breaking changes and migration steps.

TL;DR#

Key changes:

  • Editor now initializes with a blank canvas by default
  • addDefaultAssetSources() and addDemoAssetSources() are deprecated
  • createDesignScene() and createVideoScene() are deprecated
  • Asset source IDs have been renamed and consolidated (v5 naming)
  • UI configuration options moved from create() to runtime APIs
  • New plugin-based system for loading assets
  • Unified scene.create action for scene creation

Migration time: ~15-30 minutes for most projects

What’s New in v1.69#

Starter Kits#

Starter Kits are complete project templates with editable configuration files. Each kit provides a ready-to-run project with a well-defined architecture:

  • A config/ folder containing all editor configuration
  • Separate files for UI layout, features, settings, and translations
  • A configuration plugin class that wires everything together
  • Clean separation between your app code and editor config

Asset Restructuring#

Version 1.69 introduces v5 assets and demo-v4 assets with updated naming conventions. This restructuring consolidates asset sources, establishes consistent naming patterns for asset source and asset IDs, and improves the developer experience when working with assets.

Step-by-Step Migration#

Step 1: Adopt Starter Kit Configuration#

Extract a Starter Kit config folder into your project:

Terminal
npx degit imgly/starterkit-design-editor-ts-web/src/imgly/config ./src/config
npx degit imgly/starterkit-design-editor-ts-web/src/imgly/config ./src/config

Which Starter Kit Should I Use?#

Choose based on your previous editor setup:

  • Design Editor — You used createDesignScene() for multi-page designs (social posts, flyers, presentations)
  • Video Editor — You used createVideoScene() for video timeline editing
  • Advanced Design Editor — You used createDesignScene() with the advanced inspector enabled to author design templates with placeholders for end-users to customize
  • Advanced Video Editor — You used createVideoScene() with the advanced inspector enabled to author video templates with placeholders for end-users to customize

Available Starter Kits#

Starter KitRepositoryUse Case
Design Editorimgly/starterkit-design-editor-ts-webMulti-page design creation
Photo Editorimgly/starterkit-photo-editor-ts-webSingle-image editing
Video Editorimgly/starterkit-video-editor-ts-webVideo timeline editing
Advanced Design Editorimgly/starterkit-advanced-design-editor-ts-webFull-featured design editor
Advanced Video Editorimgly/starterkit-advanced-video-editor-ts-webFull-featured video editor
Design Viewerimgly/starterkit-design-viewer-ts-webRead-only design viewing
Video Playerimgly/starterkit-video-player-ts-webRead-only video playback

Repository Structure#

The config/ folder contains all configuration files you can modify:

config/
├── index.ts # Exports configuration class
├── plugin.ts # Main plugin class, orchestrates all setup
├── features.ts # Feature flags (text, stickers, audio, etc.)
├── settings.ts # Engine settings (page size, margins, etc.)
├── i18n.ts # Custom translations and labels
├── actions.ts # Export, save, and share button handlers
└── ui/
├── index.ts # UI setup entry point
├── canvas.ts # Canvas behavior (zoom, pan, selection)
├── components.ts # Custom UI components
├── dock.ts # Left dock panel order and items
├── inspectorBar.ts # Right inspector panel configuration
├── navigationBar.ts # Top navigation bar buttons
└── panel.ts # Panel settings and behavior

Step 2: Use the Configuration Plugin#

import CreativeEditorSDK from '@cesdk/cesdk-js';
import { DesignEditorConfig } from './config/plugin';
const cesdk = await CreativeEditorSDK.create('#editor', {
license: 'YOUR_CESDK_LICENSE_KEY',
baseURL: `https://cdn.img.ly/packages/imgly/cesdk-js/${CreativeEditorSDK.version}/assets`
});
// Add plugin first (resets configuration to clean slate)
await cesdk.addPlugin(new DesignEditorConfig());
// Apply custom configuration on top
// ...
// Create the scene
await cesdk.actions.run('scene.create');

Step 3: Replace Deprecated Asset Loading Methods#

Replace calls to addDefaultAssetSources() and addDemoAssetSources() with the new plugin-based approach.

Replacing addDefaultAssetSources()#

Before (deprecated):

await cesdk.addDefaultAssetSources();

After (v1.69+):

The snippets below show the asset sources that addDefaultAssetSources() previously loaded by default. Include only the plugins your application requires:

import {
BlurAssetSource,
ColorPaletteAssetSource,
CropPresetsAssetSource,
EffectsAssetSource,
FiltersAssetSource,
PagePresetsAssetSource,
StickerAssetSource,
TextAssetSource,
TextComponentAssetSource,
TypefaceAssetSource,
VectorShapeAssetSource
} from '@cesdk/cesdk-js/plugins';
await cesdk.addPlugin(new ColorPaletteAssetSource());
await cesdk.addPlugin(new TypefaceAssetSource());
await cesdk.addPlugin(new TextAssetSource());
await cesdk.addPlugin(new TextComponentAssetSource());
await cesdk.addPlugin(new VectorShapeAssetSource());
await cesdk.addPlugin(new StickerAssetSource());
await cesdk.addPlugin(new EffectsAssetSource());
await cesdk.addPlugin(new FiltersAssetSource());
await cesdk.addPlugin(new BlurAssetSource());
await cesdk.addPlugin(new PagePresetsAssetSource());
await cesdk.addPlugin(new CropPresetsAssetSource());

Replacing addDemoAssetSources()#

Before (deprecated):

await cesdk.addDemoAssetSources();

After (v1.69+):

The snippets below show the demo assets and upload sources that addDemoAssetSources() previously loaded by default. Include only the plugins your application requires:

import { DemoAssetSources, UploadAssetSources } from '@cesdk/cesdk-js/plugins';
await cesdk.addPlugin(
new UploadAssetSources({
include: ['ly.img.image.upload']
})
);
await cesdk.addPlugin(
new DemoAssetSources({
include: [
'ly.img.image.*',
'ly.img.templates.blank.*',
'ly.img.templates.presentation.*',
'ly.img.templates.print.*',
'ly.img.templates.social.*'
]
})
);

Asset Source Plugins Reference#

All plugins are imported from @cesdk/cesdk-js/plugins:

PluginAsset Source IDDescription
BlurAssetSourcely.img.blurBlur effects
CaptionPresetsAssetSourcely.img.caption.presetsCaption text presets (video)
ColorPaletteAssetSourcely.img.color.paletteColor palettes
CropPresetsAssetSourcely.img.crop.presetsCrop aspect ratios
EffectsAssetSourcely.img.effectVisual effects
FiltersAssetSourcely.img.filterLUT and duotone filters
PagePresetsAssetSourcely.img.page.presetsPage size presets
StickerAssetSourcely.img.stickerStickers and decorations
TextAssetSourcely.img.textText presets
TextComponentAssetSourcely.img.text.componentsStyled text components
TypefaceAssetSourcely.img.typefaceFonts and typefaces
VectorShapeAssetSourcely.img.vector.shapeVector shapes
UploadAssetSourcesly.img.*.uploadUser upload sources
DemoAssetSourcesVariousDemo content for testing

Each plugin accepts an optional configuration object with:

  • baseURL: Custom base URL for loading assets
  • include: GLOB patterns to filter which assets to load
  • assetLibraryEntries: Map asset source IDs to UI library entry IDs

Demo Asset Sources#

The DemoAssetSources plugin provides sample content for development and testing:

PatternDescription
ly.img.templates.*All template categories
ly.img.templates.blank.*Blank templates
ly.img.templates.social.*Social media templates
ly.img.templates.print.*Print templates
ly.img.templates.presentation.*Presentation templates
ly.img.templates.video.*Video templates
ly.img.image.*Demo images
ly.img.video.*Demo videos
ly.img.audio.*Demo audio

Upload Asset Sources#

The UploadAssetSources plugin enables file uploads:

IDDefault MIME Types
ly.img.image.uploadimage/jpeg, image/png, image/webp, image/svg+xml, image/bmp, image/gif
ly.img.video.uploadvideo/mp4, video/quicktime, video/webm, video/matroska, image/gif
ly.img.audio.uploadaudio/mpeg, audio/mp3, audio/x-m4a, audio/wav

Breaking Changes#

Asset Source ID Renames#

The following asset source IDs have been renamed to align with v5 naming conventions:

Old ID (deprecated)New ID (v1.69+)
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

Merged Asset Sources#

The following asset sources have been consolidated:

Old IDs (deprecated)New ID (v1.69+)Notes
ly.img.filter.lut + ly.img.filter.duotonely.img.filterSingle source for all filters
ly.img.page.presets + ly.img.page.presets.videoly.img.page.presetsUnified page presets
ly.img.template + ly.img.video.templately.img.templatesUnified template assets

Merged Feature API Identifiers#

The following Feature API identifiers have been consolidated:

Old IDs (deprecated)New ID (v1.69+)Notes
ly.img.filter.lut + ly.img.filter.duotonely.img.filterControls all filter types

Translation Key Updates#

Translation keys have been updated to match the new asset source naming:

  • Keys containing captionPresetscaption.presets
  • Keys containing colors.defaultPalettecolor.palette
  • Keys containing vectorpathvector.shape
  • Keys containing textComponentstext.components
  • Keys containing filter.lut or filter.duotonefilter

Scene Creation Methods#

The createDesignScene() and createVideoScene() methods are deprecated. Use the unified scene.create action instead.

Before (deprecated):

await cesdk.createDesignScene();

After (v1.69+):

await cesdk.actions.run('scene.create');

The new action provides a single entry point for scene creation with flexible configuration:

// Create a scene with specific page dimensions
await cesdk.actions.run('scene.create', {
page: { width: 1080, height: 1920, unit: 'Pixel' }
});
// Create a scene from a page preset asset
await cesdk.actions.run('scene.create', {
page: {
sourceId: 'ly.img.page.presets',
assetId: 'ly.img.page.presets.instagram.story'
}
});
// Create multiple pages at once
await cesdk.actions.run('scene.create', {
page: { width: 1080, height: 1080, unit: 'Pixel' },
pageCount: 3
});
await cesdk.actions.run('scene.create', {
page: {
sourceId: 'ly.img.page.presets',
assetId: 'ly.img.page.presets.instagram.story'
}
});

Migration Checklist#

Use this checklist to ensure a complete migration:

  • Adopt a Starter Kit configuration for your editor type
  • Replace addDefaultAssetSources() and addDemoAssetSources() calls with individual asset source plugins
  • Update any hardcoded asset source IDs to use the new v5 naming conventions (see Breaking Changes)
  • Test asset loading and UI configuration

Want a Complete, Ready-to-Run App?#

Extracting the configuration folder is ideal for existing projects where you need full control over editor setup. If you’re starting fresh and want a complete application scaffold with build tooling, asset management, and framework integration already configured, explore our Starter Kits instead.

Starter Kits provide complete applications with everything wired together—clone, install, and start building.