Lightweight design viewing for your web app—pan, zoom, and navigate multi-page designs. Runs entirely in the browser with no server dependencies.

Pre-requisites#
This guide assumes basic familiarity with JavaScript or TypeScript.
- Node.js v20+ with npm – Download
- Supported browsers – Chrome 114+, Edge 114+, Firefox 115+, Safari 15.6+
See Browser Support for the full list
Get Started#
Start fresh with a standalone Design Viewer project. This creates a complete, ready-to-run application.
Step 1: Clone the Repository#
git clone https://github.com/imgly/starterkit-design-viewer-ts-web.gitgit clone https://github.com/imgly/starterkit-design-viewer-ts-web.gitnpx degit imgly/starterkit-design-viewer-ts-web starterkit-design-viewer-ts-webnpx degit imgly/starterkit-design-viewer-ts-web starterkit-design-viewer-ts-webThe src/ folder contains the viewer code:
src/├── index.ts # Application entry point└── imgly/ ├── index.ts # Viewer initialization function └── config/ ├── plugin.ts # Main configuration plugin ├── features.ts # Feature toggles ├── i18n.ts # Translations ├── settings.ts # Engine settings └── ui/ # UI customization ├── index.ts # Combines UI customization exports ├── canvas.ts # Canvas configuration └── navigationBar.ts # Navigation bar layoutStep 2: Install Dependencies#
cd starterkit-design-viewer-ts-web
npm installcd starterkit-design-viewer-ts-web
npm installcd starterkit-design-viewer-ts-web
pnpm installcd starterkit-design-viewer-ts-web
pnpm installcd starterkit-design-viewer-ts-web
yarncd starterkit-design-viewer-ts-web
yarnStep 3: Download Assets#
CE.SDK requires engine assets (fonts, icons, UI elements) to function. These must be served as static files from your project’s public/ directory.
curl -O https://cdn.img.ly/packages/imgly/cesdk-js/1.69.0/imgly-assets.zip
unzip imgly-assets.zip -d public/
rm imgly-assets.zipcurl -O https://cdn.img.ly/packages/imgly/cesdk-js/1.69.0/imgly-assets.zip
unzip imgly-assets.zip -d public/
rm imgly-assets.zipThe baseURL in your configuration should point to this location:
const config = { // ... baseURL: '/assets'};Step 4: Run the Development Server#
npm run devnpm run devpnpm run devpnpm run devyarn devyarn devOpen http://localhost:5173 in your browser.
Get Started#
Integrate the Design Viewer into an existing web application. This adds the viewer configuration to your current project structure.
Step 1: Copy Viewer Configuration#
cd your-projectcd your-projectClone the starter kit and copy the viewer configuration to your project:
git clone https://github.com/imgly/starterkit-design-viewer-ts-web.git
cp -r starterkit-design-viewer-ts-web/src/imgly ./src/imgly
rm -rf starterkit-design-viewer-ts-webgit clone https://github.com/imgly/starterkit-design-viewer-ts-web.git
cp -r starterkit-design-viewer-ts-web/src/imgly ./src/imgly
rm -rf starterkit-design-viewer-ts-webnpx degit imgly/starterkit-design-viewer-ts-web/src/imgly ./src/imglynpx degit imgly/starterkit-design-viewer-ts-web/src/imgly ./src/imglyThe imgly/ folder contains the viewer configuration:
imgly/├── index.ts # Viewer initialization function└── config/ ├── plugin.ts # Main configuration plugin ├── features.ts # Feature toggles ├── i18n.ts # Translations ├── settings.ts # Engine settings └── ui/ # UI customization ├── index.ts # Combines UI customization exports ├── canvas.ts # Canvas configuration └── navigationBar.ts # Navigation bar layoutStep 2: Install Dependencies#
The Design Viewer requires one core package:
Core Editor#
The Creative Editor SDK package provides all viewing functionality.
npm install @cesdk/cesdk-jsnpm install @cesdk/cesdk-jspnpm add @cesdk/cesdk-jspnpm add @cesdk/cesdk-jsyarn add @cesdk/cesdk-jsyarn add @cesdk/cesdk-jsStep 3: Download Assets#
CE.SDK requires engine assets (fonts, icons, UI elements) to function. These must be served as static files from your project’s public/ directory.
curl -O https://cdn.img.ly/packages/imgly/cesdk-js/1.69.0/imgly-assets.zip
unzip imgly-assets.zip -d public/
rm imgly-assets.zipcurl -O https://cdn.img.ly/packages/imgly/cesdk-js/1.69.0/imgly-assets.zip
unzip imgly-assets.zip -d public/
rm imgly-assets.zipThe baseURL in your configuration should point to this location:
const config = { // ... baseURL: '/assets'};Step 4: Add a Container Element#
Add a container element to your HTML where the viewer will be mounted:
<div id="cesdk_container" style="width: 100%; height: 100vh;"></div>Step 5: Initialize the Viewer#
Import and call the initialization function from your application’s entry point:
import CreativeEditorSDK from '@cesdk/cesdk-js';
import { initDesignViewer } from './imgly';
const config = { userId: 'your-user-id', baseURL: '/assets' // license: 'YOUR_LICENSE_KEY',};
CreativeEditorSDK.create('#cesdk_container', config) .then(async (cesdk) => { await initDesignViewer(cesdk); }) .catch((error) => { console.error('Failed to initialize CE.SDK:', error); });Set Up a Scene#
CE.SDK offers multiple ways to load content into the viewer. Choose the method that matches your use case:
// Load from a template archive - loads a previously saved projectawait cesdk.loadFromArchiveURL('https://example.com/design.zip');
// Load from a scene file - restores a scene from JSONawait cesdk.loadFromURL('https://example.com/scene.json');
// Zoom to fit the contentawait cesdk.actions.run('zoom.toPage', { page: 'first', autoFit: true, padding: 24});Customize (Optional)#
Theming#
CE.SDK supports light and dark themes out of the box, plus automatic system preference detection. Switch between themes programmatically:
// 'light' | 'dark' | 'system' | (() => 'light' | 'dark')cesdk.ui.setTheme('dark');See Theming for custom color schemes, CSS variables, and advanced styling options.
Localization#
Customize UI labels and add support for multiple languages. The i18n system supports translation keys for all UI elements:
// Override specific labelscesdk.i18n.setTranslations({ en: { 'common.zoomIn': 'Zoom In', 'common.zoomOut': 'Zoom Out' }});
// Add a new languagecesdk.i18n.setTranslations({ de: { 'common.zoomIn': 'Vergrößern' }});
// Set the active localecesdk.i18n.setLocale('de');See Localization for supported languages, translation key reference, and right-to-left language support.
Key Capabilities#
The Design Viewer includes everything needed for design viewing.
Pan & Zoom
Navigate designs with intuitive pan and zoom controls.
Page Navigation
Navigate between pages in multi-page designs and presentations.
Zoom Controls
Zoom in and out of the canvas with fit-to-screen options.
Read-Only Mode
Display design content without editing capabilities for preview and approval workflows.
Approval Workflows
Review and approve designs without the risk of accidental modifications.
Lightweight Interface
Minimal UI focused on viewing experience without editing distractions.
Troubleshooting#
Viewer doesn’t load#
- Check the container element exists: Ensure your container element is in the DOM before calling
create() - Verify the baseURL: Assets must be accessible from the CDN or your self-hosted location
- Check console errors: Look for CORS or network errors in browser developer tools
Content doesn’t appear#
- Check network requests: Open DevTools Network tab and look for failed requests to
cdn.img.ly - Self-host assets for production: See Serve Assets to host assets on your infrastructure
Watermark appears in production#
- Add your license key: Set the
licenseproperty in your configuration - Sign up for a trial: Get a free trial license at img.ly/forms/free-trial
Next Steps#
- Configuration – Complete list of initialization options
- Serve Assets – Self-host engine assets for production
- Theming – Customize colors and appearance
- Localization – Add translations and language support