<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Creative Editor – IMG.LY Blog</title><description>Posts tagged Creative Editor on the IMG.LY blog.</description><link>https://img.ly/blog/tag/creative-editor/</link><language>en-us</language><image><url>https://img.ly/apple-touch-icon.png</url><title>Creative Editor – IMG.LY Blog</title><link>https://img.ly/blog/tag/creative-editor/</link></image><atom:link href="https://img.ly/blog/tag/creative-editor/rss.xml" rel="self" type="application/rss+xml"/><generator>Astro</generator><lastBuildDate>Tue, 09 Jun 2026 09:48:34 GMT</lastBuildDate><ttl>60</ttl><item><title>CE.SDK v1.43 Release Notes</title><link>https://img.ly/blog/creative-editor-sdk-v-1-43-0-release-notes/</link><guid isPermaLink="true">https://img.ly/blog/creative-editor-sdk-v-1-43-0-release-notes/</guid><description>Customize your Android Editor to fit your workflow! Easily rearrange the dock and inspector for a more efficient, responsive editing experience.</description><pubDate>Mon, 03 Feb 2025 12:20:13 GMT</pubDate><content:encoded>&lt;p&gt;Welcome to CE.SDK v1.43! This update brings you enhanced customization tools, allowing you to tailor the interface of your Android Editor to fit your workflow. With new possibilities for mobile configurations, you’ll enjoy a more flexible and responsive user experience. Let’s dive into what’s new!&lt;/p&gt;
&lt;h2 id=&quot;shape-your-interface-around-your-workflow&quot;&gt;Shape Your Interface Around Your Workflow&lt;/h2&gt;
&lt;p&gt;We’re excited to introduce powerful new ways to customize your &lt;strong&gt;Editor on Android&lt;/strong&gt;. Easily configure your dock and inspector—giving you the flexibility to design a more personalized, responsive user experience!&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1980px) 1980px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1980&quot; height=&quot;960&quot; src=&quot;https://img.ly/_astro/docks-inspector_JwYvg.webp&quot; srcset=&quot;/_astro/docks-inspector_bEJv8.webp 640w, /_astro/docks-inspector_27DgES.webp 750w, /_astro/docks-inspector_Z1vXPFr.webp 828w, /_astro/docks-inspector_Zo5jBk.webp 1080w, /_astro/docks-inspector_Z1vEFrp.webp 1280w, /_astro/docks-inspector_Z1MA4Ia.webp 1668w, /_astro/docks-inspector_JwYvg.webp 1980w&quot;&gt;&lt;/p&gt;
&lt;p&gt;💡 The &lt;strong&gt;dock&lt;/strong&gt; is where you keep essential tools for quick access, while the &lt;strong&gt;inspector&lt;/strong&gt; provides detailed controls and settings for the selected item. What’s New:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rearrange Your Dock&lt;/strong&gt;&lt;br&gt;
Move and remove dock items freely while keeping your custom settings intact, like button height.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Smart Custom Buttons&lt;/strong&gt;&lt;br&gt;
For a more responsive workflow, add buttons that dynamically appear, change, or disappear based on your workflow—adapting to selected tools or active tasks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Real-Time Updates&lt;/strong&gt;&lt;br&gt;
The dock updates in real-time, instantly reflecting changes to icons or visibility and adapting seamlessly to your workflow.&lt;/p&gt;
&lt;p&gt;More customization options are coming soon! This update will be available on iOS shortly. Get started with our docs for &lt;a href=&quot;https://img.ly/docs/cesdk/android/user-interface/customization/inspector-bar-8ca1cd/?ref=img.ly#inspectorbaritem-configuration/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=releasenotes&quot;&gt;Inspector&lt;/a&gt; and &lt;a href=&quot;https://img.ly/docs/cesdk/android/user-interface/customization/dock-cb916c/?ref=img.ly#dock-configuration/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=releasenotes&quot;&gt;Dock Configuration&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;control-how-images-fit-into-blocks&quot;&gt;Control How Images Fit into Blocks&lt;/h2&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/1-43/image-fill.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;This web feature is perfect for customizing how images appear in designs and templates, allowing for more precise control. With &lt;strong&gt;Fill&lt;/strong&gt; &lt;strong&gt;Mode&lt;/strong&gt; for images, you can choose from three options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Crop&lt;/strong&gt;: Resizes and may crop the image to fill the block.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cover&lt;/strong&gt;: The image fully covers the block while remaining centered both vertically and horizontally.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fit&lt;/strong&gt;: Scales the image to fit within the block without cropping, leaving space if necessary.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Control this via API, with details in our &lt;a href=&quot;https://img.ly/docs/cesdk/js/edit-image/transform/crop-f67a47/&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;upcoming&quot;&gt;Upcoming&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Streamline Your Video Editing Workflow&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/1-43/multiclips.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Our next release makes web video creation smoother than ever! You will be able to add &lt;strong&gt;multiple video clips&lt;/strong&gt; within a single track on your timeline, keeping your workspace organized and efficient. No more juggling extra tracks—just a clean, intuitive editing experience that lets you focus on bringing your vision to life.&lt;/p&gt;
&lt;p&gt;View the &lt;a href=&quot;https://img.ly/docs/cesdk/changelog/#v1430--january-21st-2025/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=releasenotes&quot;&gt;Changelog&lt;/a&gt;. Thanks for reading!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3,000+ creative professionals gain early access to new features and updates—don’t miss out, and&lt;/strong&gt; &lt;a href=&quot;https://share.hsforms.com/1IgAOV1wASXGPnFG4ZPLejg1hk3i?ref=img.ly&quot;&gt;&lt;strong&gt;subscribe&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;to our newsletter.&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Neslihan</dc:creator><media:content url="https://blog.img.ly/2025/02/creative-editor-sdk-1-43.jpg" medium="image"/><category>Release Notes</category><category>Creative Editor</category><category>Android App Development</category></item><item><title>CreativeEditor SDK Now Supports React Native on iOS &amp; Android</title><link>https://img.ly/blog/creative-sdk-react-native-support/</link><guid isPermaLink="true">https://img.ly/blog/creative-sdk-react-native-support/</guid><description>Integrate video, design, and photo editing capabilities with our new React Native package for CE.SDK.</description><pubDate>Thu, 19 Dec 2024 11:57:22 GMT</pubDate><content:encoded>&lt;p&gt;We’re thrilled to announce the release of our official &lt;strong&gt;&lt;code&gt;@imgly/editor-react-native&lt;/code&gt;&lt;/strong&gt; package, bringing the power of CreativeEditor SDK to the React Native ecosystem for iOS and Android!&lt;/p&gt;
&lt;p&gt;CreativeEditor SDK enables developers to seamlessly integrate design, video, and photo editing features into their applications. Over the past few months, we’ve been focused on enhancing mobile editor solutions—refining features and expanding to new use cases, including the Video Editor.&lt;/p&gt;
&lt;p&gt;To make CreativeEditor SDK accessible to even more developers, we’re expanding our support to include mobile cross-platform frameworks. We started with Flutter and are now adding React Native as another highly popular frameworks for building truly cross-platform apps.&lt;/p&gt;
&lt;h2 id=&quot;getting-started&quot;&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;Getting started with CreativeEditor SDK in React Native is simple! First, make sure you meet the following minimum requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;React Native:&lt;/strong&gt; 0.73+&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;iOS:&lt;/strong&gt; 16+&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Swift:&lt;/strong&gt; 5.10 (Xcode 15.4)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Android:&lt;/strong&gt; 7+&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then, add the &lt;strong&gt;&lt;code&gt;@imgly/editor-react-native&lt;/code&gt;&lt;/strong&gt; package to your project using your favorite package manager.&lt;/p&gt;
&lt;p&gt;To launch the editor, you’ll need an instance of &lt;code&gt;EditorSettings&lt;/code&gt; - you can use &lt;code&gt;EditorSettingsModel&lt;/code&gt; for convenience. All you need to get started is a license key, which you can obtain from your IMG.LY dashboard.&lt;/p&gt;
&lt;p&gt;Here’s an example of opening the Design Editor:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; IMGLYEditor, { EditorSettingsModel } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;@imgly/editor-react-native&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; const&lt;/span&gt;&lt;span&gt; openEditor&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; async&lt;/span&gt;&lt;span&gt; ()&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; Promise&lt;/span&gt;&lt;span&gt;&amp;#x3C;&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;&gt; &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; settings&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; EditorSettingsModel&lt;/span&gt;&lt;span&gt;({ license: &lt;/span&gt;&lt;span&gt;&apos;YOUR_LICENSE_KEY&apos;&lt;/span&gt;&lt;span&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; result&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; await&lt;/span&gt;&lt;span&gt; IMGLYEditor.&lt;/span&gt;&lt;span&gt;openEditor&lt;/span&gt;&lt;span&gt;(settings);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;editor-ui-presets&quot;&gt;Editor UI Presets&lt;/h2&gt;
&lt;p&gt;The React Native plugin builds on our native editor solutions, allowing you to leverage the existing editor UI variants. At launch, you can choose from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://img.ly/docs/cesdk/react-native/prebuilt-solutions/design-editor-9bf041/&quot;&gt;Design Editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://img.ly/docs/cesdk/react-native/prebuilt-solutions/photo-editor-42ccb2/&quot;&gt;Photo Editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://img.ly/docs/cesdk/react-native/prebuilt-solutions/camera-editor-5c6d08/&quot;&gt;Camera UI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://img.ly/docs/cesdk/react-native/prebuilt-solutions/t-shirt-designer-02b48f/&quot;&gt;Apparel Editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://img.ly/docs/cesdk/react-native/prebuilt-solutions/postcard-editor-61e1f6/&quot;&gt;Postcard Editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://img.ly/docs/cesdk/react-native/prebuilt-solutions/video-editor-9e533a/&quot;&gt;Video Editor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Simply choose the editor solution that best suits your use case. By default, the &lt;strong&gt;Design Editor&lt;/strong&gt; opens, but &lt;a href=&quot;https://img.ly/docs/cesdk/react-native/prebuilt-solutions-d0ed07/&quot;&gt;switching to other solutions&lt;/a&gt; is straightforward.&lt;/p&gt;
&lt;h2 id=&quot;android-and-ios-setup&quot;&gt;Android and iOS Setup&lt;/h2&gt;
&lt;p&gt;To setup our module in your application, you’ll need to add the &lt;a href=&quot;https://www.npmjs.com/package/expo-build-properties&quot;&gt;expo-build-properties&lt;/a&gt; dependency which handles the necessary adjustments to your native folders.&lt;/p&gt;
&lt;h3 id=&quot;android&quot;&gt;Android&lt;/h3&gt;
&lt;p&gt;For Android, you’ll need to make a few adjustments to your &lt;code&gt;app.json&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set the &lt;code&gt;minSdkVersion&lt;/code&gt; to 24 (Android 7) or later.&lt;/li&gt;
&lt;li&gt;Add the IMG.LY Maven repository.&lt;/li&gt;
&lt;li&gt;Ensure your Kotlin version is compatible (e.g., 1.9.10).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here’s an example configuration:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &quot;expo&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &quot;android&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      &quot;minSdkVersion&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      &quot;extraMavenRepos&quot;&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;&quot;&amp;#x3C;https://artifactory.img.ly/artifactory/maven&gt;&quot;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      &quot;kotlinVersion&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;1.9.10&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ios&quot;&gt;iOS&lt;/h3&gt;
&lt;p&gt;On iOS, ensure your deployment target is set to &lt;strong&gt;16.0&lt;/strong&gt;. You can configure this in your &lt;code&gt;app.json&lt;/code&gt; file:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &quot;expo&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &quot;ios&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      &quot;deploymentTarget&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;16.0&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://img.ly/docs/cesdk/react-native/get-started/overview-e18f40/&quot;&gt;Getting Started Guides&lt;/a&gt; or the examples on &lt;a href=&quot;https://github.com/imgly/cesdk-react-native-examples/tree/v1.41.1&quot;&gt;GitHub&lt;/a&gt; for a complete reference.&lt;/p&gt;
&lt;h2 id=&quot;the-only-truly-cross-platform-sdk&quot;&gt;The Only Truly Cross-Platform SDK&lt;/h2&gt;
&lt;p&gt;If you’re working with React Native, you’re likely focused on faster time to market, reduced development complexity, and feature consistency across platforms. The CreativeEditor SDK shares these goals, using a single, unified creative engine that ensures:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Consistent APIs:&lt;/strong&gt; iOS and Android share the same underlying API.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feature Parity:&lt;/strong&gt; Core functionality is implemented at the engine level, guaranteeing feature availability across platforms.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interoperable Designs:&lt;/strong&gt; Export and import designs seamlessly across platforms with consistent rendering.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;fully-customizable-ui&quot;&gt;Fully Customizable UI&lt;/h2&gt;
&lt;p&gt;The React Native plugin offers flexibility for theming, styling, and integrating callbacks into your editor’s workflow. Soon, we’ll introduce more advanced customization options, such as enabling or disabling features by default.&lt;/p&gt;
&lt;p&gt;Refer to our documentation for &lt;a href=&quot;https://img.ly/docs/cesdk/react-native/configuration-2c1c3d/&quot;&gt;detailed instructions on customizing the editor to match your branding and use case&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;whats-next&quot;&gt;What’s Next?&lt;/h2&gt;
&lt;p&gt;To showcase the capabilities of our React Native plugin, we’ve prepared a dedicated example application available on &lt;a href=&quot;https://github.com/imgly&quot;&gt;GitHub&lt;/a&gt;. You can explore it to see the editor in action.&lt;/p&gt;
&lt;p&gt;Additionally, our documentation provides all the details needed to get started, and you can visit the &lt;a href=&quot;https://www.npmjs.com/package/@imgly/editor-react-native&quot;&gt;@imgly/editor-react-native npm page&lt;/a&gt; to begin your integration.&lt;/p&gt;
&lt;p&gt;Remember to grab your license from your dashboard after starting a &lt;a href=&quot;https://img.ly/forms/free-trial&quot;&gt;free trial&lt;/a&gt;, and let the CreativeEditor SDK unlock your users’ creative potential.&lt;/p&gt;
&lt;p&gt;Thanks for reading!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3,000+ creative professionals gain early access to new features and updates—don’t miss out, and&lt;/strong&gt; &lt;a href=&quot;https://share.hsforms.com/1IgAOV1wASXGPnFG4ZPLejg1hk3i?ref=img.ly&quot;&gt;&lt;strong&gt;subscribe&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;to our newsletter.&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Jan</dc:creator><media:content url="https://blog.img.ly/2024/12/react-photo-video-design-editor-sdk-l.jpg" medium="image"/><category>React Native</category><category>Creative Editor</category><category>CE.SDK</category><category>Expo</category></item><item><title>CE.SDK Video Editor Now Available on Android</title><link>https://img.ly/blog/ce-sdk-video-editor-now-available-on-android/</link><guid isPermaLink="true">https://img.ly/blog/ce-sdk-video-editor-now-available-on-android/</guid><description>Integrate a fully-customizable Video Editor into your Android App with CE.SDK.</description><pubDate>Tue, 22 Oct 2024 11:44:02 GMT</pubDate><content:encoded>&lt;p&gt;We are excited to announce the release of CE.SDK’s video editing and video content creation tools for Android!&lt;/p&gt;
&lt;p&gt;After the successful iOS launch, CE.SDK’s professional video editing capabilities are now available for Android. Whether your app focuses on social media, e-commerce, or marketing technology, CE.SDK enables users to create high-quality videos directly within your app.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/1-36/uncompressed/Android-crop-split-trim.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h2 id=&quot;getting-started&quot;&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;Getting up and running with an instance of the CE.SDK video editor for Android is easy.&lt;/p&gt;
&lt;p&gt;After downloading your license (get your trial license here) from your dashboard, simply &lt;a href=&quot;https://img.ly/docs/cesdk/android/prebuilt-solutions/video-editor-9e533a/&quot;&gt;invoke &lt;code&gt;VideoEditor&lt;/code&gt; as composable function, Activity or Fragment.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;our-video-editing-backstory&quot;&gt;Our Video Editing Backstory&lt;/h2&gt;
&lt;p&gt;Since we launched VideoEditor SDK almost ten years ago, we have seen an astounding range of creative and unique use cases of our SDK in customer projects. From Cameo connecting celebrities and their fans in new ways, over Multibrain supercharging their users marketing campaigns with editable video content, to &lt;a href=&quot;https://zigazoo.com/&quot;&gt;Zigazoo&lt;/a&gt; powering video content within their social network for kids while putting safety and parental control first.&lt;/p&gt;
&lt;p&gt;Since then, millions of users have experienced IMG.LY’s VideoEditor SDK through our customers’ products, shaping how they expect to interact with and modify videos. Continuous feedback from both our customers and their users has also influenced the way we approach video interface design, helping us refine and innovate along the way.&lt;/p&gt;
&lt;p&gt;Our goal was to combine the reliability and robustness of the VideoEditor SDK with true cross-platform compatibility and the flexibility to meet diverse needs. By applying the lessons we’ve learned, we aimed to deliver an exceptional video editing user experience straight out of the box. We described how those learnings shaped the &lt;a href=&quot;https://img.ly/blog/designing-a-timeline-for-mobile-video-editing/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=androidvideo&quot;&gt;design of the mobile video editing interface.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;key-capabilities&quot;&gt;Key Capabilities&lt;/h2&gt;
&lt;p&gt;With CE.SDK’s sleek timeline interface, your Android users can now take their video editing from simple transforms and adjustments to complex composition and multi-track editing:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Timeline-Based Editing&lt;/strong&gt;&lt;br&gt;
Split, trim, arrange video and audio tracks. Position elements such as images and stickers on the timeline and control their duration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Multi-Track Editing&lt;/strong&gt;&lt;br&gt;
Work with multiple video and audio tracks, allowing for complex composition.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Transform &amp;#x26; Enhance&lt;/strong&gt;&lt;br&gt;
Crop, flip, rotate, and use presets for common video formats. Add filters, effects, blur and essential adjustments.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Customizable Templates&lt;/strong&gt;&lt;br&gt;
Create and import templates using our web video editor, to jumpstart your users’ video composition and designs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Asset Integration&lt;/strong&gt;&lt;br&gt;
Integrate your own asset libraries for audio tracks, sound effects, images, and more.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cross-platform Interoperability&lt;/strong&gt;&lt;br&gt;
CE.SDK’s video capabilities extends across iOS, Android and the Web, enabling cross-platform applications to offer seamless video editing capabilities. Users can edit and save work in progress and pick up on any device.&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://img.ly/showcases/cesdk/video-ui/android?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=androidvideo&quot;&gt;showcase app for an interactive demo&lt;/a&gt; of these features.&lt;/p&gt;
&lt;h2 id=&quot;customization&quot;&gt;Customization&lt;/h2&gt;
&lt;p&gt;The ability to tailor the video editor to your app’s particular use case has been a front and center concern in its development.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://img.ly/docs/cesdk/android/configuration-2c1c3d/&quot;&gt;&lt;strong&gt;UI Customization&lt;/strong&gt;&lt;/a&gt;: While theming is currently limited to &lt;code&gt;dark&lt;/code&gt; and &lt;code&gt;light&lt;/code&gt; model, future releases will introduce more flexible theming, allowing you to modify the look and feel of the editor to match your app’s branding. Furthermore, we expose &lt;strong&gt;callbacks&lt;/strong&gt; that make it possible to hook into editor events and &lt;strong&gt;overlays&lt;/strong&gt; for custom dialogues.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://img.ly/docs/cesdk/android/create-video-c41a08/&quot;&gt;&lt;strong&gt;Configure Video Presets&lt;/strong&gt;&lt;/a&gt;: You can configure the editor to create video presets based on your users’ needs. For instance, you may want to fix the video’s aspect ratio or optimize for certain resolutions, depending on the target platform.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://img.ly/docs/cesdk/android/use-templates/apply-template-35c73e/&quot;&gt;&lt;strong&gt;Video Templates&lt;/strong&gt;&lt;/a&gt;: With the CE.SDK video editor web UI, you can create an unlimited number of video templates, such as collages, text designs, and animations, providing your users with professional-quality starting points for their video designs.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://img.ly/docs/cesdk/android/import-media/asset-panel/customize-c9a4de/&quot;&gt;&lt;strong&gt;Assets&lt;/strong&gt;&lt;/a&gt;: Provide custom filters, fonts, and stickers to enhance the user experience. For niche apps, this can be an excellent way to engage users by offering content that feels unique to your community.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;ideal-for-social-media-ecommerce-and-marketing-tech-apps&quot;&gt;Ideal for Social Media, Ecommerce, and Marketing Tech Apps&lt;/h2&gt;
&lt;p&gt;CE.SDK’s new Android video editing capabilities are perfect for a variety of use cases, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://img.ly/use-cases/story-reels-short-video-creation&quot;&gt;&lt;strong&gt;Social Media Applications&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;:&lt;/strong&gt; The CE.SDK video editor for Android excels at short-form video, ideal for social media applications, whether your users are publishing to other networks or you run a network yourself.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://img.ly/industries/e-commerce&quot;&gt;&lt;strong&gt;Ecommerce&lt;/strong&gt;&lt;/a&gt;: Allow your users to create engaging product showcases, ads, and promotional videos, testimonials or reviews.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://img.ly/industries/marketing-tech&quot;&gt;&lt;strong&gt;Marketing Tech Platforms&lt;/strong&gt;&lt;/a&gt;: Users can leverage our versatile templating to easily create polished social media and marketing graphics from within your app.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;whats-next&quot;&gt;What’s Next?&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&quot;Camera UI: Record videos on Android.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;988&quot; src=&quot;https://img.ly/_astro/camera-UI-Android-1_1FyMRS.webp&quot; srcset=&quot;/_astro/camera-UI-Android-1_ZjEi38.webp 640w, /_astro/camera-UI-Android-1_Z743FA.webp 750w, /_astro/camera-UI-Android-1_ZYwhh4.webp 828w, /_astro/camera-UI-Android-1_8a3zG.webp 1080w, /_astro/camera-UI-Android-1_19mjIs.webp 1280w, /_astro/camera-UI-Android-1_1FyMRS.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;This Android release is just the beginning! We are about to launch a &lt;strong&gt;Camera UI&lt;/strong&gt; for Android and are working on more advanced template creation features. So stay tuned.&lt;br&gt;
To see some of these features in action, check out our iOS demo, where the next phase of innovation is unfolding.&lt;/p&gt;
&lt;h2 id=&quot;get-started&quot;&gt;Get Started&lt;/h2&gt;
&lt;p&gt;Explore our &lt;a href=&quot;https://img.ly/showcases/cesdk/video-ui/android?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=androidvideo&quot;&gt;Video UI Showcase&lt;/a&gt; and &lt;a href=&quot;https://img.ly/docs/cesdk/android/prebuilt-solutions/video-editor-9e533a/&quot;&gt;Documentation for Android&lt;/a&gt; to discover how CE.SDK can streamline your content creation projects and make Android video editing easier than ever.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Over 3,000 creative professionals gain early access to new features and updates—don’t miss out, and&lt;/strong&gt; &lt;a href=&quot;https://share.hsforms.com/1IgAOV1wASXGPnFG4ZPLejg1hk3i&quot;&gt;&lt;strong&gt;subscribe&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;to our newsletter.&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Jan</dc:creator><media:content url="https://blog.img.ly/2024/10/android-video-editor-sdk-imgly-creative-editor_s.jpg" medium="image"/><category>Android</category><category>Android App Development</category><category>Creative Editor</category><category>Video Editing</category><category>Video Editor</category></item><item><title>CE.SDK v1.15 Release Notes</title><link>https://img.ly/blog/creative-editor-sdk-v_1_15_0-release-notes/</link><guid isPermaLink="true">https://img.ly/blog/creative-editor-sdk-v_1_15_0-release-notes/</guid><description>Generate cutout lines from selections, edit across all screen sizes, and more! </description><pubDate>Tue, 26 Sep 2023 08:14:20 GMT</pubDate><content:encoded>&lt;p&gt;Since &lt;a href=&quot;https://img.ly/blog/creative-editor-sdk-v_1_14_0-release-notes/&quot;&gt;our last release&lt;/a&gt;, we’ve been busy crafting new features and enhancements to empower your creative editing journey. We are thrilled to release CE.SDK v1.15!&lt;/p&gt;
&lt;p&gt;With this release, you can:&lt;/p&gt;
&lt;h2 id=&quot;create-accurate-cutouts-and-vectors&quot;&gt;Create Accurate Cutouts and Vectors&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Interfaces&lt;/strong&gt;: Engine, Editor&lt;br&gt;
&lt;strong&gt;Platforms:&lt;/strong&gt; All&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/1-15/cutoutlines-generate-from-selection.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Picture this: Your users are deep into a design project, and need to isolate an object from an image. Our latest feature simplifies this process. Whether it’s a logo, text, or a complex shape in an SVG - by clicking “Generate from Selection”, our system precisely detects object contours and effortlessly converts them into cutout lines. This means you can breeze through your design tasks without the hassle of manual tracing.&lt;br&gt;
Learn more about Cutouts in our &lt;a href=&quot;https://img.ly/docs/cesdk/js/stickers-and-shapes/create-cutout-384be3/&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;effortlessly-edit-across-all-screen-sizes&quot;&gt;E&lt;strong&gt;ffortlessly Edit Across All Screen Sizes&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Interfaces:&lt;/strong&gt; Editor&lt;br&gt;
&lt;strong&gt;Platforms:&lt;/strong&gt; Web&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/1-15/responsive.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;We’re excited to introduce a suite of responsive UI enhancements that ensure effortless editing on all devices, including smaller screens and mobile devices. Our editor adapts to limited screen space, automatically fits content to avoid cutoffs, hides button labels when space is tight, and ensures panels remain easy to use, even on small screens. Plus, you have complete control over when and where labels appear, allowing you to customize the interface to your liking.&lt;/p&gt;
&lt;h2 id=&quot;improved-android-video--audio-experience&quot;&gt;&lt;strong&gt;Improved Android Video &amp;#x26; Audio Experience&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Interfaces:&lt;/strong&gt; Editor, Engine&lt;br&gt;
&lt;strong&gt;Platforms:&lt;/strong&gt; Android&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Ensure smooth audio and video playback in your Android App.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/androidplayback_Z103jkD.webp&quot; srcset=&quot;/_astro/androidplayback_wFBav.webp 640w, /_astro/androidplayback_Z1h88WN.webp 750w, /_astro/androidplayback_RQAL1.webp 828w, /_astro/androidplayback_20VRmS.webp 1080w, /_astro/androidplayback_Z229hSl.webp 1280w, /_astro/androidplayback_Z103jkD.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;Experience an enhanced video and audio experience on Android with our latest update. With our optimized codec performance, we’ve fine-tuned our tools to ensure your videos and audio play flawlessly. Enjoy &lt;strong&gt;smoother playback&lt;/strong&gt;, especially when navigating through your content. Also, no more delays or interruptions when seeking in your videos or audio files. Now, you can &lt;strong&gt;effortlessly skip to your desired moments&lt;/strong&gt; for uninterrupted enjoyment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thank you for reading! Never miss out on updates and&lt;/strong&gt; &lt;a href=&quot;https://share.hsforms.com/1IgAOV1wASXGPnFG4ZPLejg1hk3i&quot;&gt;&lt;strong&gt;subscribe&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;to our newsletter.&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Neslihan</dc:creator><media:content url="https://blog.img.ly/2023/09/ce-sdk-1-15.jpg" medium="image"/><category>Release Notes</category><category>Print</category><category>Web-to-print</category><category>Cutouts</category><category>Android App Development</category><category>Web Application</category><category>Creative Editor</category></item><item><title>CE.SDK v1.14 Release Notes</title><link>https://img.ly/blog/creative-editor-sdk-v_1_14_0-release-notes/</link><guid isPermaLink="true">https://img.ly/blog/creative-editor-sdk-v_1_14_0-release-notes/</guid><description>Experience faster thumbnails for video, enhanced placeholders, macOS support, and more! </description><pubDate>Fri, 25 Aug 2023 15:37:00 GMT</pubDate><content:encoded>&lt;p&gt;Since &lt;a href=&quot;https://img.ly/blog/creative-editor-sdk-v_1_13_0-release-notes/&quot;&gt;our last release&lt;/a&gt;, we’ve been hard at work developing new features and improvements to enhance your creative editing experience. We are excited to announce that CE.SDK v1.14 is now available!&lt;/p&gt;
&lt;p&gt;With this release, you can:&lt;/p&gt;
&lt;h2 id=&quot;generate-thumbnails-fast-for-smooth-performance&quot;&gt;Generate Thumbnails Fast for Smooth Performance&lt;/h2&gt;
&lt;p&gt;Interfaces: Engine&lt;br&gt;
Platforms: All&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/1-14/thumbnail-improved.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;We have made significant enhancements to the way video thumbnails are generated, resulting in a smoother and more efficient workflow. Our intelligent engine now renders thumbnails seamlessly across multiple frames, ensuring there are no delays or interruptions while you work. Instead of slow JPEG compression, we have implemented a faster method using raw pixel buffers that maintain high-quality results.&lt;/p&gt;
&lt;p&gt;If you’re using web applications, the thumbnail width adapts to fit your screen, providing a seamless and enjoyable user experience. Additionally, our dynamic thumbnail generation adjusts based on the size of your clips and zoom level, optimizing resources and improving overall performance.&lt;/p&gt;
&lt;h2 id=&quot;enhance-templating-with-improved-placeholders&quot;&gt;Enhance Templating with Improved Placeholders&lt;/h2&gt;
&lt;p&gt;Interfaces: Engine, Editor&lt;br&gt;
Platforms: All&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/placeholder-images.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Introducing an enhanced placeholder behavior for text and image content, allowing for seamless editing and replacement. With the new &lt;code&gt;PlaceholderBehavior&lt;/code&gt; concept, you can define whether a block should initially look and behave as a placeholder or allow editing/replacement. This feature provides a smooth editing experience for users and offers flexibility for template designers to differentiate between placeholder and desired content.&lt;/p&gt;
&lt;h2 id=&quot;bring-creative-editing-to-your-macos-app&quot;&gt;Bring Creative Editing to Your macOS App&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&quot;Bring creative editing to your macOS app with CE.SDK.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/macOS_Z2iunHV.webp&quot; srcset=&quot;/_astro/macOS_2uXTJb.webp 640w, /_astro/macOS_Rmfii.webp 750w, /_astro/macOS_Z2okYll.webp 828w, /_astro/macOS_1QoMw8.webp 1080w, /_astro/macOS_Zdxi5T.webp 1280w, /_astro/macOS_Z2iunHV.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;We’re excited to announce the addition of macOS platform support to our lineup. Extend your application’s reach to macOS users and provide a seamless editing experience across different platforms. Get started, and &lt;strong&gt;initialize our engine in your macOS app&lt;/strong&gt; with our &lt;a href=&quot;https://img.ly/docs/cesdk/macos/overview-8cc730/&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;expand-editing-capabilities-macos--catalyst-binding&quot;&gt;Expand Editing Capabilities: macOS &amp;#x26; Catalyst Binding&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&quot;Initialize CE.SDK&amp;#39;s engine in your iOS app, and bring creative editing to your users.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/catalyst_Z1zzDyb.webp&quot; srcset=&quot;/_astro/catalyst_Z16zs6Q.webp 640w, /_astro/catalyst_1SieDm.webp 750w, /_astro/catalyst_20b6IL.webp 828w, /_astro/catalyst_1izTD3.webp 1080w, /_astro/catalyst_2oAGVT.webp 1280w, /_astro/catalyst_Z1zzDyb.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;With this new feature, we provide a comprehensive solution for developers looking to enhance their iOS applications with our CE.SDK’s editing capabilities. Learn how to initialize our creative engine in your iOS app in our &lt;a href=&quot;https://img.ly/docs/cesdk/mac-catalyst/overview-8cc730/&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thank you for reading! Never miss out on updates and&lt;/strong&gt; &lt;a href=&quot;https://share.hsforms.com/1IgAOV1wASXGPnFG4ZPLejg1hk3i&quot;&gt;&lt;strong&gt;subscribe&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;to our newsletter.&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Neslihan</dc:creator><media:content url="https://blog.img.ly/2023/09/ce-sdk_1-14-2.jpg" medium="image"/><category>Release Notes</category><category>Video Editing</category><category>Creative Editor</category><category>CE.SDK</category><category>macOS</category><category>App Development</category></item><item><title>CE.SDK v1.12 Release</title><link>https://img.ly/blog/creative-editor-sdk-v_1_12_0-release-notes/</link><guid isPermaLink="true">https://img.ly/blog/creative-editor-sdk-v_1_12_0-release-notes/</guid><description>Effortlessly auto-resize designs, enhance readability, achieve perfect alignment, and more! With CE.SDK v1.12.</description><pubDate>Thu, 15 Jun 2023 12:19:24 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://img.ly/blog/creative-editor-sdk-v_1_11_0-release-notes/&quot;&gt;In our last release&lt;/a&gt;, we introduced exciting features such as cutout stickers and shapes, letter case options, effortless layouting, and more.&lt;br&gt;
Now, get ready for CE.SDK v1.12, packed with more features and essential fixes to enhance your creative editing experience. Let’s explore what’s included:&lt;/p&gt;
&lt;h3 id=&quot;auto-resize-designs&quot;&gt;Auto-Resize Designs&lt;/h3&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/1-12/template-page-resize.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interfaces:&lt;/strong&gt; Advanced UI, API&lt;br&gt;
&lt;strong&gt;Platforms:&lt;/strong&gt; All&lt;br&gt;
Easily auto-resize or adapt your designs to different page sizes without the need for separate templates. Our intelligent solution adjusts the elements of your design while preserving full-size elements and optimizing image fill modes. This time-saving feature empowers you to reuse templates with ease, ensuring consistent and professional results. Whether it’s creating graphics for social media, presentations, or printed materials, our auto-resize feature simplifies the process.&lt;br&gt;
Learn more in our &lt;a href=&quot;https://img.ly/docs/cesdk/js/use-templates/apply-template-35c73e/&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;enhance-readability-with-paragraphs&quot;&gt;Enhance Readability with Paragraphs&lt;/h3&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/1-12/paragraph.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interfaces:&lt;/strong&gt; Default UI, Advanced UI, API&lt;br&gt;
&lt;strong&gt;Platforms:&lt;/strong&gt; All&lt;br&gt;
Achieve better text readability and design aesthetics by modifying the &lt;strong&gt;spacing between paragraphs&lt;/strong&gt;. This feature seamlessly integrates with our advanced text styling options, providing a comprehensive toolkit for creating visually stunning text-centric products, such as postcards and more. Learn more about paragraph spacing in our &lt;a href=&quot;https://img.ly/docs/cesdk/js/concepts/blocks-90241e/&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;avoid-cut-off-text&quot;&gt;Avoid Cut Off Text&lt;/h3&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/1-12/cutoff.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interfaces:&lt;/strong&gt; Default UI, Advanced UI, API&lt;br&gt;
&lt;strong&gt;Platforms:&lt;/strong&gt; All&lt;br&gt;
We’ve made a significant improvement related to &lt;strong&gt;text clipping&lt;/strong&gt; that ensures the top of the text is no longer cut off. This enhancement greatly improves the visual presentation and communication of your content, providing a seamless user experience.&lt;/p&gt;
&lt;h3 id=&quot;achieve-perfect-design-alignment&quot;&gt;Achieve Perfect Design Alignment&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;Move and snap elements for easy alignment.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/Snapping_1DFItd.webp&quot; srcset=&quot;/_astro/Snapping_2qTVjb.webp 640w, /_astro/Snapping_lAufs.webp 750w, /_astro/Snapping_stmkR.webp 828w, /_astro/Snapping_ZxkQ8u.webp 1080w, /_astro/Snapping_xEVam.webp 1280w, /_astro/Snapping_1DFItd.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interfaces:&lt;/strong&gt; Default UI, Advanced UI, Touch UI&lt;br&gt;
&lt;strong&gt;Platforms:&lt;/strong&gt; All&lt;br&gt;
We’ve addressed the problem of &lt;strong&gt;snapping&lt;/strong&gt; to the wrong elements, ensuring a more accurate and reliable snapping experience. Precise alignment is crucial in design, and our continuous improvement efforts will further enhance snapping capabilities in future updates. Enjoy a seamless and frustration-free design process with our enhanced snapping precision.&lt;/p&gt;
&lt;h3 id=&quot;take-control-of-text-editing-with-precision&quot;&gt;Take Control of Text Editing with Precision&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;Retrieve the cursor range, and precisely insert content exactly where you need it.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/CursorRange-mouse_B8Js2.webp&quot; srcset=&quot;/_astro/CursorRange-mouse_1VKirs.webp 640w, /_astro/CursorRange-mouse_1x119s.webp 750w, /_astro/CursorRange-mouse_22qYUt.webp 828w, /_astro/CursorRange-mouse_Z1Kt3up.webp 1080w, /_astro/CursorRange-mouse_1WUTSh.webp 1280w, /_astro/CursorRange-mouse_B8Js2.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interfaces:&lt;/strong&gt; API&lt;br&gt;
&lt;strong&gt;Platforms:&lt;/strong&gt; All&lt;br&gt;
&lt;code&gt;getTextCursorRange&lt;/code&gt; empowers you to access the current cursor range within the text editor. This feature opens up a world of possibilities, whether you’re building a custom user interface or implementing text-related automation. You can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Query the text cursor offset and the current selected text range.&lt;/li&gt;
&lt;li&gt;Automate text generation and insertion with precision.&lt;/li&gt;
&lt;li&gt;Seamlessly integrate this functionality into your workflow and unlock new possibilities for your text-centric projects.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Say goodbye to guesswork and welcome a more accurate and efficient text editing experience. Retrieve the current cursor range effortlessly, and precisely insert content exactly where you need it. Learn more in our &lt;a href=&quot;https://img.ly/docs/cesdk/js/text/edit-c5106b/&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;manage-templates-from-multiple-sources&quot;&gt;Manage Templates from Multiple Sources&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;Effortlessly browse and query a vast database of templates.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/templates_Z1pGJeP.webp&quot; srcset=&quot;/_astro/templates_Z1veuU9.webp 640w, /_astro/templates_Z28ksIf.webp 750w, /_astro/templates_Z1VPAwi.webp 828w, /_astro/templates_CaLDG.webp 1080w, /_astro/templates_28P5Bo.webp 1280w, /_astro/templates_Z1pGJeP.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interfaces:&lt;/strong&gt; API&lt;br&gt;
&lt;strong&gt;Platforms:&lt;/strong&gt; All&lt;br&gt;
Introducing an improved template configuration feature that allows you to &lt;strong&gt;define asset sources for templates&lt;/strong&gt;. Now, you can effortlessly browse and query a vast database of templates, opening up a world of possibilities for your projects.&lt;/p&gt;
&lt;p&gt;By aligning the template configuration process with the existing asset management workflow, we’ve streamlined the experience, saving you time and effort. Moreover, you have the flexibility to define remote asset sources directly from &lt;strong&gt;databases&lt;/strong&gt;, expanding your template options even further.&lt;/p&gt;
&lt;p&gt;Enjoy a more streamlined workflow with CE.SDK v1.12, enhanced visual presentation, and the freedom to customize your designs with ease.&lt;br&gt;
&lt;a href=&quot;https://img.ly/forms/free-trial&quot;&gt;Get started for free&lt;/a&gt; and bring creativity to your users!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://share.hsforms.com/1IgAOV1wASXGPnFG4ZPLejg1hk3i&quot;&gt;&lt;strong&gt;Subscribe to our Newsletter&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;to stay in the loop with the latest news and updates. Thank you for choosing IMG.LY&lt;/strong&gt;.&lt;/p&gt;</content:encoded><dc:creator>Neslihan</dc:creator><media:content url="https://blog.img.ly/2023/06/cesdk-imgly.jpg" medium="image"/><category>Release Notes</category><category>Creative Editor</category><category>Web Application</category><category>Mobile App Development</category></item><item><title>How Printers Can Leverage Creative Automation</title><link>https://img.ly/blog/how-printers-can-leverage-creative-automation/</link><guid isPermaLink="true">https://img.ly/blog/how-printers-can-leverage-creative-automation/</guid><description>Discover how creative automation can revolutionize print production and transform the print industry.</description><pubDate>Tue, 04 Apr 2023 09:58:54 GMT</pubDate><content:encoded>&lt;p&gt;The emergence of print as a service and print-on-demand has changed the traditional way we think about printing, creating many possibilities for customized products, such as personalized photo books and bespoke t-shirts. However, to meet the ever-evolving needs of customers, printers must constantly innovate and streamline their operations. This is where &lt;strong&gt;creative automation&lt;/strong&gt; wins.&lt;/p&gt;
&lt;p&gt;According to &lt;a href=&quot;https://beta3.infotrends.com/news/editors-desk/2020/august/how-to-leverage-automation-for-print-production-in-hard-times/&quot;&gt;Keypoint Intelligence&lt;/a&gt;, only a mere 7% of Print Service Providers in North America had adopted a fully or mostly automated approach across their departments in 2020. This underscores the crucial role that creative automation can play in transforming the print industry. But what exactly does creative automation mean, and how can it revolutionize print production? Let’s find out!&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1200px) 1200px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1200&quot; height=&quot;742&quot; src=&quot;https://img.ly/_astro/automation-statistics_1KcImB.webp&quot; srcset=&quot;/_astro/automation-statistics_Z2sVV8u.webp 640w, /_astro/automation-statistics_Z1x4snL.webp 750w, /_astro/automation-statistics_Z1rFMM3.webp 828w, /_astro/automation-statistics_365jk.webp 1080w, /_astro/automation-statistics_1KcImB.webp 1200w&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;what-is-creative-automation&quot;&gt;What is Creative Automation?&lt;/h2&gt;
&lt;p&gt;To understand the power of creative automation, it’s critical to draw a line between the &lt;strong&gt;production of creative assets&lt;/strong&gt; and &lt;strong&gt;ad units&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Although many creative assets may eventually turn into ads, they first need to be integrated into a broader ad unit that incorporates other non-graphical elements like &lt;em&gt;headlines, text&lt;/em&gt;, and &lt;em&gt;landing pages&lt;/em&gt;. This ad unit is then assigned to a specific campaign.&lt;/p&gt;
&lt;p&gt;By leveraging creative automation, each stage of the creative asset production process can be automated, enabling the entire ad production process across all placements to be streamlined.&lt;/p&gt;
&lt;p&gt;To clarify, dynamic creative automates media buying, while creative automation utilizes advanced software to produce stunning designs quickly. This approach offers several benefits, including improved efficiency, reduced costs, and higher product quality.&lt;/p&gt;
&lt;h2 id=&quot;creative-automation-for-print-service-providers-and-print-on-demand&quot;&gt;Creative Automation for Print Service Providers and Print-on-Demand&lt;/h2&gt;
&lt;p&gt;The potential advantages of creative automation for &lt;strong&gt;Print Service Providers&lt;/strong&gt; are significant, particularly in terms of streamlining the design process.&lt;/p&gt;
&lt;p&gt;With tools like CE.SDK, printers can rapidly create bespoke designs for t-shirts, business cards, and other products, while also taking advantage of a wide range of templates, styles, and layouts that can be easily customized to suit any project. This not only saves time, but also ensures that each design is unique and of outstanding quality.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Print-on-Demand companies&lt;/strong&gt;, on the other hand, can also leverage the power of creative automation to offer personalized products to customers in a rapid and efficient manner.&lt;/p&gt;
&lt;p&gt;By utilizing creative automation tools, print-on-demand companies can develop high-quality designs for photo books, t-shirts, and mugs, without the need for manual intervention in the design process.  This evolves into significant time savings, cost reductions, and increased profitability, allowing print-on-demand companies to stay ahead of the competition.&lt;/p&gt;
&lt;h2 id=&quot;how-to-apply-creative-automation-in-print&quot;&gt;How to Apply Creative Automation in Print&lt;/h2&gt;
&lt;p&gt;So, how can printers apply creative automation in print? There are several key elements to consider, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Variable Data Printing&lt;/strong&gt; is a printing technique that allows the personalization of each print piece, based on specific customer data. By automating this process, Print Service Providers can increase efficiency and accuracy, while reducing costs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Constraints&lt;/strong&gt; might seem like a limitation, but they’re actually a key factor in ensuring that designs are consistent during the creation process and meet industry standards. By automating the constraint process, printers can ensure that designs are consistent and meet expectations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Templates&lt;/strong&gt; are pre-designed layouts that can be used for specific products, such as business cards or brochures. Automation of the template process allows the quickly creating of high-quality designs, without having to start from scratch each time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Styles&lt;/strong&gt; are a set of design elements, such as colors, fonts, and images, that can be used to create a consistent look and feel across all designs. The style automation process brings the possibility to create a cohesive brand image, increasing brand recognition and customer loyalty.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Layouts&lt;/strong&gt; refer to the arrangement of design elements on a page, such as images, text, and graphics. Their automation provides fast creation of stunning designs, without having to manually arrange each element.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design Validation&lt;/strong&gt; is like having an eagle eye that spots mistakes (such as incorrect dimensions) before they become costly printing errors. Automating the design validation process allows printers to quickly identify and correct errors, reducing the risk of printing errors and increasing customer satisfaction.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;creative-automation-in-print-with-cesdk&quot;&gt;Creative Automation in Print with CE.SDK&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://img.ly/creative-sdk&quot;&gt;&lt;strong&gt;CE.SDK&lt;/strong&gt;&lt;/a&gt; is a powerful tool for creative automation in print, taking care of the entire design process, from layout to validation.&lt;/p&gt;
&lt;p&gt;With CE.SDK, you can easily create brilliant designs for various products, without having to spend time on manual design processes. The platform also offers a range of templates, styles, and layouts that can be easily customized to meet the needs of each project.&lt;/p&gt;
&lt;p&gt;For instance, let’s say you want to create a gorgeous photo book for a client. With CE.SDK, all you have to do is upload your images, select a template, and customize the design elements.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Let your users cherish their favorite memories by uploading their photos to a photo book template. Try this custom UI yourself in our showcases.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1395px) 1395px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1395&quot; height=&quot;865&quot; src=&quot;https://img.ly/_astro/image-0-min_Z28lC66.webp&quot; srcset=&quot;/_astro/image-0-min_rOyS8.webp 640w, /_astro/image-0-min_24VFzY.webp 750w, /_astro/image-0-min_Z26BOug.webp 828w, /_astro/image-0-min_Z1KICQ3.webp 1080w, /_astro/image-0-min_ZwC5Hb.webp 1280w, /_astro/image-0-min_Z28lC66.webp 1395w&quot;&gt;&lt;/p&gt;
&lt;p&gt;CE.SDK will take care of the rest, automatically arranging the images into a beautifully designed photo book that includes text, graphics, and other design elements. This not only saves time, but also ensures that each photo book is unique and of high quality.&lt;/p&gt;
&lt;p&gt;Here are some easy steps to follow when creating a &lt;a href=&quot;https://img.ly/showcases/cesdk/web/photo-book-ui/index.html&quot;&gt;photo book&lt;/a&gt;:&lt;/p&gt;
&lt;h4 id=&quot;step-1-organize-your-photos&quot;&gt;Step 1: Organize your Photos&lt;/h4&gt;
&lt;p&gt;Choose the photos you want to include in your photo book and organize them in a way that tells a story. For instance, you can arrange them chronologically or by theme.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Storytelling is everything – allow users to organize their photos to pick and choose from.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1351px) 1351px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1351&quot; height=&quot;810&quot; src=&quot;https://img.ly/_astro/photo-book-SDK-template-for-web_1t67rX.webp&quot; srcset=&quot;/_astro/photo-book-SDK-template-for-web_MdgNn.webp 640w, /_astro/photo-book-SDK-template-for-web_Z2dbxzd.webp 750w, /_astro/photo-book-SDK-template-for-web_Z1Rj0aW.webp 828w, /_astro/photo-book-SDK-template-for-web_Z1eahNS.webp 1080w, /_astro/photo-book-SDK-template-for-web_Z1FNhkJ.webp 1280w, /_astro/photo-book-SDK-template-for-web_1t67rX.webp 1351w&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;step-2-customize-your-photo-book&quot;&gt;Step 2: Customize your Photo Book&lt;/h4&gt;
&lt;p&gt;Then, add a personal touch to your photo book by customizing the text, adding captions, or changing the font style and color.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Users might expect custom text options to give their memories a final touch.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1007px) 1007px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1007&quot; height=&quot;109&quot; src=&quot;https://img.ly/_astro/photo-book-SDK-template-for-web_2_NADSD.webp&quot; srcset=&quot;/_astro/photo-book-SDK-template-for-web_2_ZpDR6j.webp 640w, /_astro/photo-book-SDK-template-for-web_2_ZXVJkj.webp 750w, /_astro/photo-book-SDK-template-for-web_2_K4mom.webp 828w, /_astro/photo-book-SDK-template-for-web_2_NADSD.webp 1007w&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;step-3&quot;&gt;Step 3&lt;/h4&gt;
&lt;p&gt;Once you’ve finished customizing your template, you can preview the final result, and send it out for printing.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A memory ready for print!&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1066px) 1066px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1066&quot; height=&quot;755&quot; src=&quot;https://img.ly/_astro/photo-book-SDK-template-for-web_3_ZnPlWR.webp&quot; srcset=&quot;/_astro/photo-book-SDK-template-for-web_3_Z15cjv0.webp 640w, /_astro/photo-book-SDK-template-for-web_3_Z155fNY.webp 750w, /_astro/photo-book-SDK-template-for-web_3_Z132YqD.webp 828w, /_astro/photo-book-SDK-template-for-web_3_ZnPlWR.webp 1066w&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In today’s ever-changing printing industry, printers need to be efficient, innovative, and creative to remain competitive. Creative automation provides an excellent solution, enabling printers to streamline their design process, reduce costs, and improve profitability while delivering exceptional, personalized products to their customers.&lt;/p&gt;
&lt;p&gt;CE.SDK is a powerful tool for creative automation in print, offering a wide range of customizable templates, styles, and layouts that can be tailored to meet the unique requirements of each project. With CE.SDK, printers can create stunning designs for a range of products, from personalized t-shirts to exquisite photo books, all while saving time and money.  &lt;a href=&quot;https://img.ly/free-trial&quot;&gt;Try CE.SDK for free&lt;/a&gt; and see the benefits of creative automation for yourself.&lt;/p&gt;</content:encoded><dc:creator>Natalia</dc:creator><media:content url="https://blog.img.ly/2023/04/design_automation_SDK-min.jpg" medium="image"/><category>How-To</category><category>Automation</category><category>Print</category><category>Creative Editor</category><category>Learning</category></item><item><title>CE.SDK v1.10 Release</title><link>https://img.ly/blog/creative-editor-sdk-v_1_10_0-release-notes/</link><guid isPermaLink="true">https://img.ly/blog/creative-editor-sdk-v_1_10_0-release-notes/</guid><description>Elevate your app development game with Android Platform Support, and discover more updates with CE.SDK v.1.10.</description><pubDate>Tue, 14 Mar 2023 15:30:46 GMT</pubDate><content:encoded>&lt;p&gt;We are pleased to announce the latest release of CE.SDK v1.10 and excited to share the newest features and updates with you. For those not yet familiar with our engine, CreativeEditor SDK is a powerful design editor that enables customizable workflows and automations for brands, agencies, and printers, all with just a few lines of code. In this release, we have introduced several new features and updates that are set to elevate the functionality and usability of the SDK, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Android Platform Support, making native Android application development seamless&lt;/li&gt;
&lt;li&gt;Library Improvements, including Create, Update &amp;#x26; Delete for Asset Libraries and Asset Libraries Generalization&lt;/li&gt;
&lt;li&gt;Zoom Improvements, providing greater precision and accuracy when zooming to 100% and fitting specific pages&lt;/li&gt;
&lt;li&gt;Arrange API, simplifying the visual order of items and providing common arrange methods for easier use&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;android-platform-support&quot;&gt;Android Platform Support&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/Android_Platform_Support_rtfB1.webp&quot; srcset=&quot;/_astro/Android_Platform_Support_ZuFl9r.webp 640w, /_astro/Android_Platform_Support_vFF2J.webp 750w, /_astro/Android_Platform_Support_1r0E1d.webp 828w, /_astro/Android_Platform_Support_1YPco7.webp 1080w, /_astro/Android_Platform_Support_Z1jqPoT.webp 1280w, /_astro/Android_Platform_Support_rtfB1.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://img.ly/blog/creative-editor-sdk-v_1_9_0-release-notes/&quot;&gt;Our last release&lt;/a&gt; included iOS Native Support. So now we are thrilled to share that CE.SDK has expanded its capabilities to include full support for developing native Android applications. With this latest feature, you can seamlessly integrate the power and versatility of CE.SDK into your Android app development projects, enhancing the user experience and boosting customer engagement. Our team has worked tirelessly to make it incredibly easy for you to get started, with full Kotlin API support and plenty of integration examples to help you hit the ground running.&lt;/p&gt;
&lt;p&gt;In today’s ever-evolving digital landscape, cross-platform app development has become essential for businesses to stay competitive. By leveraging CE.SDK’s cross-platform capabilities, you can develop and deploy apps across multiple platforms with ease, saving time and resources. This not only increases your reach, but it also allows you to provide a consistent experience to your customers, regardless of their device of choice.&lt;/p&gt;
&lt;p&gt;Whether you’re a seasoned developer or new to the game, our &lt;a href=&quot;https://img.ly/docs/cesdk/android/get-started/overview-e18f40/&quot;&gt;Get Started Guide&lt;/a&gt; will equip you with the knowledge and tools necessary to begin your Android app development journey with CE.SDK.&lt;/p&gt;
&lt;h2 id=&quot;library-improvements&quot;&gt;Library Improvements&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&quot;Stay organized: You can create, upload, and delete your uploaded media.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/Delete-Images-fromuploads_17oW4x.webp&quot; srcset=&quot;/_astro/Delete-Images-fromuploads_Z1AW0En.webp 640w, /_astro/Delete-Images-fromuploads_Z2rKlVh.webp 750w, /_astro/Delete-Images-fromuploads_2vHqrX.webp 828w, /_astro/Delete-Images-fromuploads_2gEBJt.webp 1080w, /_astro/Delete-Images-fromuploads_ZPyhus.webp 1280w, /_astro/Delete-Images-fromuploads_17oW4x.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;create-update-and-delete-for-asset-libraries&quot;&gt;Create, Update and Delete for Asset Libraries&lt;/h3&gt;
&lt;p&gt;To streamline your workflow and save valuable time, we’ve added a much-requested feature that allows you to delete uploaded images directly from inside the asset libraries, giving you greater control and flexibility over your content.&lt;/p&gt;
&lt;p&gt;We have updated our engine so that uploaded assets are no longer automatically tied to scenes.&lt;/p&gt;
&lt;h3 id=&quot;asset-libraries-generalization&quot;&gt;Asset Libraries Generalization&lt;/h3&gt;
&lt;p&gt;We have migrated all our internal and external asset handling to be based on asset sources, eliminating the need to maintain different paths for adding and displaying assets. All visible assets are now queried from asset sources, which can be modified by adding or removing assets from a source. Additionally, we have introduced convenient helpers to create IMG.LY’s default asset sources, which contain assets that you can use to jumpstart your integration.&lt;/p&gt;
&lt;h2 id=&quot;zoom-improvements&quot;&gt;Zoom Improvements&lt;/h2&gt;
&lt;p&gt;Zooming has always been an integral part of editing, and our latest release makes it even more versatile and precise. With our new zoom feature, users can now zoom to fit specific pages, providing greater control and accuracy when editing complex designs. Additionally, zooming to 100% will now automatically adjust the zoom level to match the accurate export pixel size. This means that the size of pages on the screen will match exactly the size of the printed product, ensuring a seamless transition from editing to the final product. With this latest enhancement, CE.SDK is committed to providing businesses, agencies, and printers with a comprehensive and intuitive design editor.&lt;/p&gt;
&lt;h2 id=&quot;arrange-api&quot;&gt;Arrange API&lt;/h2&gt;
&lt;p&gt;We are introducing enhanced functionality for controlling the visual order of items within blocks. Previously, this could only be achieved by manually rearranging the order of the children of a block. With our latest release, we’ve extended the API with new convenience methods that provide common arrange methods for easier use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thanks for reading! Sign up for our&lt;/strong&gt; &lt;a href=&quot;https://img.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;&lt;strong&gt;Newsletter&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;to receive our latest news straight to your inbox.&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Neslihan</dc:creator><media:content url="https://blog.img.ly/2023/03/cesdk1_1-10.jpg" medium="image"/><category>Release Notes</category><category>Android</category><category>Android App Development</category><category>Creative Editor</category></item><item><title>Variable Data Printing: What Is It &amp; Why Do You Need It</title><link>https://img.ly/blog/variable-data-printing-definition-and-benefits/</link><guid isPermaLink="true">https://img.ly/blog/variable-data-printing-definition-and-benefits/</guid><description>Discover the power of VDP for automating processes, scaling personalization &amp; enhancing intimacy in marketing, advertising &amp; customer management.</description><pubDate>Fri, 03 Mar 2023 09:45:33 GMT</pubDate><content:encoded>&lt;p&gt;Variable data printing (VDP) has been around since the 1980s, helping businesses automate manual processes, scale personalization efforts, and utilize the power of direct mail marketing. While the term “variable data printing” may not be familiar to everyone, we encounter its use regularly in our day-to-day lives through bills, event tickets, or membership cards.&lt;/p&gt;
&lt;p&gt;VDP’s ability to leverage data and create personalized tangible items, such as postcards or brochures, provides a more intimate experience compared to digital communication. Although process automation is a significant advantage of VDP, there are many other ways to use it.&lt;/p&gt;
&lt;p&gt;In this article, we’ll explore the most common applications of VDP and the best practices for working with it.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot;&gt;How It Works&lt;/h2&gt;
&lt;p&gt;To fully understand the advantages of variable data printing (VDP), let’s start with a clear definition. VDP, also referred to as variable data imaging, is a digital printing technique that enables the creation of numerous customized materials in a single print run. This process is powered by software that can generate data-driven designs or templates by pulling variables from databases or files.&lt;/p&gt;
&lt;p&gt;The variables used in VDP can automatically generate unique and personalized materials based on data sources. Anything that can be customized, such as names, addresses, messages, or images, can be utilized as a variable. These elements can be changed on each printed piece without slowing down the printing process.&lt;/p&gt;
&lt;p&gt;To illustrate how VDP works in practice, let’s consider a scenario where a company offers a loyalty program for customers to collect points when they make purchases. To encourage more spending, customers can use their accumulated points to receive discounts or freebies. Although points and bonuses can be accessed through an app or website, the company can create immediate gamification by sending a personalized card with every new purchase.&lt;/p&gt;
&lt;p&gt;To personalize that card, we are looking at three separate variables: name, number of points, and type of discount that can be applied. To manually generate all variations of the same template would be counterproductive, but with variables connected to a database it’s an automated process. A name is connected to a number of points, which in turn are connected to discounts. The software does all the heavy lifting, while marketers and designers can focus on other tasks.&lt;/p&gt;
&lt;h2 id=&quot;common-applications-of-vdp&quot;&gt;Common Applications of VDP&lt;/h2&gt;
&lt;p&gt;Although VDP was originally used to automate manual mail processes, its usefulness extends beyond that. Its ability to personalize marketing and advertising materials quickly and efficiently has made it widely appreciated and used in various industries.&lt;/p&gt;
&lt;p&gt;While there are many ways to use VDP, we’ll focus on its most common applications in marketing, advertising, and customer relationship management. These areas benefit greatly from the ability to tailor messages to specific audiences and create unique, personalized experiences.&lt;/p&gt;
&lt;h3 id=&quot;marketing&quot;&gt;Marketing&lt;/h3&gt;
&lt;p&gt;From quickly generating business cards to creating custom QR codes, variable data printing is a big part of marketing efforts for most businesses. Apart from handling internal processes, VPD also has a hand in scaling personalized marketing campaigns. The growing preference for personalized messaging and products goes alongside increased usage of VDP.&lt;/p&gt;
&lt;p&gt;Production of personalized labels, packaging, or brochures is one of the best ways to leverage VDP in marketing. It can be used as a step in a broader personalization campaign, like generating custom QR codes to bring users to personalized landing pages. Or be a venture on its own, like &lt;a href=&quot;https://us.coca-cola.com/store/personalized-bottle&quot;&gt;“Share a Coke”&lt;/a&gt; by Coca-Cola and its widely successful personalization of labels.&lt;/p&gt;
&lt;h3 id=&quot;advertising&quot;&gt;Advertising&lt;/h3&gt;
&lt;p&gt;Variable data printing brought new life to direct mail, moving away from what once was perceived as junk and irrelevant advertising, and bringing about a new age of valuable and relatable mail. A &lt;a href=&quot;https://www.fundera.com/resources/direct-mail-statistics&quot;&gt;recent study&lt;/a&gt; reported that 70% of consumers see direct mail as more personal than online interactions, with 54% claiming they want direct mail from brands that interest them. Moreover, direct mail has the highest response rate among all advertising channels being five to nine times higher than other forms, with a simple act of adding a name to a direct mail piece that can increase response rates by 135%.&lt;/p&gt;
&lt;p&gt;Taking advantage of VPD in advertising usually includes customized leaflets or coupons with images and content based on age or demographics. One of the personalization examples is including custom maps with steps on how to reach an advertised location, making it much more relatable and easy to act on.&lt;/p&gt;
&lt;h3 id=&quot;customer-relationship-management&quot;&gt;Customer Relationship Management&lt;/h3&gt;
&lt;p&gt;While VDP helps marketing and advertising drive acquisition, it’s also a great way to help with customer retention. Small and yet important gestures of appreciation like custom-made thank you and birthday cards can go a long way. As mentioned before, VDP can also be used to generate membership cards or personalized bonuses and discounts based on shopping preferences. Tapping into the power of variables, every printed material sent to a customer can be created in a way that will feel personal and appreciative, in turn helping sustain loyal customers.&lt;/p&gt;
&lt;h2 id=&quot;why-use-vdp&quot;&gt;Why Use VDP&lt;/h2&gt;
&lt;p&gt;Variable data printing is not reserved for a single industry or business type. It can be leveraged across multiple customer touchpoints, from the awareness stage via direct mail advertising, to a personalized label and thank you card shipped with a purchased product. VDP can also be used internally to show gratitude and appreciation to employees with custom-made cards and packaging. In fact, variable data printing can be used on any piece of printed content or design that can be personalized.&lt;/p&gt;
&lt;h3 id=&quot;benefits&quot;&gt;Benefits&lt;/h3&gt;
&lt;p&gt;The advantages of variable data printing go hand-in-hand with the advantages of personalization. &lt;a href=&quot;https://www.twilio.com/blog/announcing-the-state-of-personalization-2021&quot;&gt;Studies show&lt;/a&gt; that customers respond much better to marketing materials they can connect to, with 60% of consumers saying they will likely become repeat buyers after a personalized shopping experience with a retailer.&lt;/p&gt;
&lt;p&gt;VDP can help create a valuable experience from start to finish and facilitate a meaningful connection between a brand and a customer. Some of the most prominent benefits are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Providing personalized shopping experience in the form of custom labels, packaging &amp;#x26; cards&lt;/li&gt;
&lt;li&gt;Building strong customer relationships with personalized thank you &amp;#x26; birthday cards, custom messaging, and discounts&lt;/li&gt;
&lt;li&gt;Delivering meaningful direct mail advertising with higher conversion rates&lt;/li&gt;
&lt;li&gt;Generating personalized marketing campaigns &amp;#x26; materials that customers can connect with&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bringing variable data printing to your workflows, whether it concerts marketing, advertising, HR, or sales, is a great way to tap into &lt;a href=&quot;https://img.ly/blog/why-companies-need-to-go-personal/&quot;&gt;powerful benefits of personalization&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;challenges&quot;&gt;Challenges&lt;/h3&gt;
&lt;p&gt;The main challenge of VDP is having software that can efficiently work with variables and generate print-ready designs, while also providing advanced design editing features.&lt;/p&gt;
&lt;p&gt;Since the popularization of personalization, variables can be leveraged in many different types of marketing materials. However, the design of those materials is equally important, and so it’s an automated print validation process.&lt;/p&gt;
&lt;p&gt;This challenge applies to companies that use variable data to generate designs, as well as Print Service Providers (PSP) working with VDP. For the PSP, another challenge is file format submission, especially if they don’t have a web-to-print editor their customers can use to submit their orders. Flawed print validation, incompatible format, low resolution, or insufficient quality could be costly mistakes to make. Hence, the best option for print service providers is to develop their own web-to-print editor with variable data printing that will take care of those problems and limit manual work to a minimum.&lt;/p&gt;
&lt;h2 id=&quot;example-of-leveraging-variable-data-printing-with-cesdk&quot;&gt;Example of Leveraging Variable Data Printing with CE.SDK&lt;/h2&gt;
&lt;p&gt;IMG.LY has developed CreativeEditor SDK to help integrate &lt;a href=&quot;https://img.ly/use-cases/variable-data-printing&quot;&gt;VDP&lt;/a&gt; into all designs in an easy and intuitive way. &lt;a href=&quot;https://img.ly/products/creative-sdk&quot;&gt;CE.SDK&lt;/a&gt; is fully customizable and can be integrated into a customer-facing web-to-print editor, providing powerful editing features, or an in-house design editor for all creative needs. Here’s an example of how you can leverage variables with our editor.&lt;/p&gt;
&lt;h3 id=&quot;creating-custom-thank-you-card&quot;&gt;Creating Custom Thank-You Card&lt;/h3&gt;
&lt;p&gt;As mentioned before, thank you cards are a great way to show appreciation and build stronger connections with both customers and employees. Creation of a custom thank-you card is pretty straightforward, here are the necessary steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Creating a Smart Template&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To create a personalized card, we begin by designing a template with variable fields. The front design remains consistent, while the back features unique personalized messages.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Design a template by adding images, text, or fun shapes and stickers.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1120px) 1120px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1120&quot; height=&quot;598&quot; src=&quot;https://img.ly/_astro/01_create_template-1_f1nPB.webp&quot; srcset=&quot;/_astro/01_create_template-1_DshRl.webp 640w, /_astro/01_create_template-1_Z23vRzl.webp 750w, /_astro/01_create_template-1_Z22g4xm.webp 828w, /_astro/01_create_template-1_Z1k7Jmg.webp 1080w, /_astro/01_create_template-1_f1nPB.webp 1120w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Assigning Placeholders&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The next step is to choose the elements that will be personalized. For example, we may select a personalized greeting, such as “Hello {{name}}”, and address information. To insert a variable, we use double curly brackets {{}} and a placeholder name, such as {{firstname}} or {{address}}.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Take advantage of variables that serve as placeholders for information, such as customer names.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1120px) 1120px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1120&quot; height=&quot;527&quot; src=&quot;https://img.ly/_astro/02_assigning_placeholders_1MctnI.webp&quot; srcset=&quot;/_astro/02_assigning_placeholders_Z1dqOUT.webp 640w, /_astro/02_assigning_placeholders_i4vNS.webp 750w, /_astro/02_assigning_placeholders_Z1g3EsX.webp 828w, /_astro/02_assigning_placeholders_ZQmM65.webp 1080w, /_astro/02_assigning_placeholders_1MctnI.webp 1120w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Connecting Template to a Data Source&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The last step is connecting your template to a data source with list of variables. This can be done by using the &lt;a href=&quot;https://img.ly/docs/cesdk/js/create-templates/add-dynamic-content/text-variables-7ecb50/&quot;&gt;Creative Engine variable API&lt;/a&gt; to programmatically set values for the variables and render the final personalized card.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Design Validation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the example above, there shouldn’t be any issue with text exceeding beyond bleed line or other common print errors, however, design validation is an important feature of CE.SDK. It will automatically detect any issues that might cause a print error, cause trademark infringement or generate harmful content.&lt;/p&gt;
&lt;p&gt;And that’s it! We have created a template for custom thank-you card in three easy steps. Here is what a card would look like.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A personalized hello: Create a custom card yourself with CE.SDK.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 621px) 621px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;621&quot; height=&quot;896&quot; src=&quot;https://img.ly/_astro/03_design_validation_Z2gOUY2.webp&quot; srcset=&quot;/_astro/03_design_validation_Z2gOUY2.webp 621w&quot;&gt;&lt;/p&gt;
&lt;p&gt;Try creating a custom card with CE.SDK yourself on our &lt;a href=&quot;https://img.ly/showcases/cesdk/web/post-greeting-cards/web&quot;&gt;showcase&lt;/a&gt; page!&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://img.ly/use-cases/variable-data-printing&quot;&gt;Variable data printing&lt;/a&gt; can be a valuable tool to boost performance and take initiatives to the next level. It can help scale personalization efforts, acquire new customers, add value to the final product, and make employees feel appreciated. By using VDP, businesses can efficiently grow and reap numerous benefits, with only a few obstacles that can be easily overcome with the right solution.&lt;/p&gt;
&lt;p&gt;To take advantage of the benefits of VDP and overcome its challenges, consider using &lt;a href=&quot;https://img.ly/products/creative-sdk&quot;&gt;CreativeEditor SDK&lt;/a&gt; and see how it can help you scale personalization and bring variable data printing to your company and customers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thanks for reading! To stay in the loop, subscribe to our&lt;/strong&gt; &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;&lt;strong&gt;Newsletter&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Klaudia</dc:creator><media:content url="https://blog.img.ly/2023/03/VDP-print-product-web2print-web-application.jpg" medium="image"/><category>How-To</category><category>VDP</category><category>Automation</category><category>Creative Editor</category><category>Personlization</category><category>Web-to-print</category><category>Design Editor</category><category>Design Systems</category><category>Learning</category></item><item><title>Why Mobile-First is the Future of Print</title><link>https://img.ly/blog/why-mobile-first-is-the-future-of-print/</link><guid isPermaLink="true">https://img.ly/blog/why-mobile-first-is-the-future-of-print/</guid><description>A seamless mobile experience is not the only crucial aspect to consider. Investing in app development is the key to staying ahead.</description><pubDate>Thu, 23 Feb 2023 13:11:09 GMT</pubDate><content:encoded>&lt;p&gt;Over the last 30 years, mobile phones have heavily influenced lifestyles across the globe. They have changed the way we communicate, spend leisure time, look for information, and shop.&lt;/p&gt;
&lt;p&gt;Thanks to its accessibility and powerful capabilities, mobile has eclipsed the desktop. Statista reported last year, &lt;strong&gt;59% of all global web traffic came from mobile&lt;/strong&gt;, with almost five billion people accessing the internet through mobile devices. Moreover, since 2018, app usage has exceeded browser usage on mobile devices, with &lt;strong&gt;shopping apps noting 49% year-over-year usage increase&lt;/strong&gt; between 2020 &amp;#x26; 2021.&lt;/p&gt;
&lt;p&gt;This means companies have to not only provide a seamless mobile experience if they wish to attract and convert users, but also invest in app development to stay ahead of the curve.&lt;/p&gt;
&lt;h2 id=&quot;market-trends&quot;&gt;Market Trends&lt;/h2&gt;
&lt;p&gt;The printing industry is showing no signs of slowing down. In 2021, the global print-on-demand market was valued at $4.90 billion, and it’s projected to generate $39.40 billion in revenue by 2030, according to industry reports from &lt;a href=&quot;https://www.grandviewresearch.com/industry-analysis/print-on-demand-market-report&quot;&gt;Grand View Research&lt;/a&gt;. The report also suggests that print-on-demand is expected to grow at a compound annual growth rate of 26.1% from 2022 to 2030, indicating significant potential for further expansion.&lt;/p&gt;
&lt;p&gt;However, print-on-demand is not the only promising sector to watch. The Print Advertising segment is projected to have ad spending worth $46.87 billion in 2023. This sector has remained resilient to the global decline in the print industry during the Covid-19 pandemic, registering an 18% revenue increase in the US between 2019 and 2020.&lt;/p&gt;
&lt;p&gt;With the printing industry’s rapid growth, competition is likely to increase, making it essential for companies to prioritize excellence in order to attract and retain customers.&lt;/p&gt;
&lt;h2 id=&quot;user-preference&quot;&gt;User Preference&lt;/h2&gt;
&lt;p&gt;It’s undeniable that mobile is becoming increasingly dominant in e-commerce. According to &lt;a href=&quot;https://www.shopify.com/blog/mobile-commerce&quot;&gt;Shopify&lt;/a&gt;, &lt;strong&gt;almost 50% of all e-commerce transactions are predicted to occur via mobile devices by 2024, with an expected revenue of $620.97 billion&lt;/strong&gt;. Being able to quickly and effectively serve customers on mobile is now essential for businesses looking to thrive. In 2022, Shopify launched &lt;a href=&quot;https://shop.app/&quot;&gt;shop.app&lt;/a&gt;, a mobile-only e-commerce platform, raising the bar for the industry. To stay competitive, other e-commerce businesses will need to develop similarly sophisticated solutions for mobile users.&lt;/p&gt;
&lt;p&gt;Having a seamless mobile experience is also an important factor for B2B companies. Although most interactions still occur on desktop, modern working arrangements allow people to work on the go, without being limited to one device. Providing customers with flexible options is a significant advantage. For example, a web-to-print editor for print advertising should be cross-platform, providing the same experience across all devices during design creation and print validation processes. Offering agile solutions ahead of industry standards can position a company as a go-to service provider. However, an excellent editor alone is not enough; covering the basics of a good mobile experience is crucial.&lt;/p&gt;
&lt;h2 id=&quot;game-changing-mobile-factors&quot;&gt;Game-Changing Mobile Factors&lt;/h2&gt;
&lt;p&gt;Customers are becoming more unforgiving when it comes to poor user experience. According to Google, &lt;strong&gt;61% of mobile users won’t return to a site they had trouble accessing&lt;/strong&gt;, with 40% turning to a competitor’s site instead. For print companies relying almost exclusively on online purchases, this poses a substantial threat, hence, the need to fulfill a long list of expectations to satisfy users.&lt;/p&gt;
&lt;p&gt;While the ultimate recommendation is to build a mobile app, customers will most likely want to check out the web page first, hence, the importance of providing a spotless web experience.&lt;/p&gt;
&lt;p&gt;Here are some of the most prominent factors of mobile UX to optimize.&lt;/p&gt;
&lt;h3 id=&quot;design-editing&quot;&gt;Design Editing&lt;/h3&gt;
&lt;p&gt;While for most e-commerce stores developing a smooth purchase experience is rather straightforward, many printing companies have an added layer of complication - catering to custom-made products. Once a rarity, personalization of products has proven to be a constantly growing trend many companies choose to embrace, and rightly so. The global Custom T-shirt Printing market alone was &lt;a href=&quot;https://www.credenceresearch.com/report/custom-t-shirt-printing-market&quot;&gt;valued at $3.7 billion&lt;/a&gt; in 2021 and is projected to reach $6.98 billion by 2028.&lt;/p&gt;
&lt;p&gt;With a growing demand for custom prints, follows a necessity for a web-to-print editor that will provide a seamless design process - on both desktop and mobile. Web-to-print editor simplifies artwork supply, jumpstarts the creative process, and takes care of print validation. The ideal tool should be intuitive to navigate and have a quick load time while providing a quality design experience. The same approach should be adopted by print service providers, breaching a gap between multiple software and communication channels clients have to endure.&lt;/p&gt;
&lt;p&gt;A powerful web-to-print editor doesn’t just enhance the user experience on your website - it can also open new doors for your business, such as scaling to native mobile apps, print kiosks, and terminals. Developing separate tools for each platform can be time-consuming and costly. With ready-made solutions (as we will discover below), you can speed up the development process and achieve a seamless editing experience across all devices without starting from scratch each time.&lt;/p&gt;
&lt;h3 id=&quot;site-speed&quot;&gt;Site Speed&lt;/h3&gt;
&lt;p&gt;In a study conducted by &lt;a href=&quot;https://www2.deloitte.com/content/dam/Deloitte/ie/Documents/Consulting/Milliseconds_Make_Millions_report.pdf&quot;&gt;Deloitte&lt;/a&gt;, they observed that a &lt;strong&gt;difference of 0.1 seconds has improved conversion rate by 8% and increased purchase value by 10% in the retail sector&lt;/strong&gt;. The highest conversion rate occurs on pages with a load time of 0-2 seconds, and as reported by Google, 53% of users abandon the page if the load time takes more than 3 seconds. Moreover, it has been estimated that slow-loading websites cost retailers &lt;a href=&quot;https://www.thinkwithgoogle.com/consumer-insights/consumer-trends/mobile-site-load-time-statistics/&quot;&gt;$2.6 billion in lost sales&lt;/a&gt; every year.&lt;/p&gt;
&lt;p&gt;It’s also worth mentioning that Core Web Vitals monitoring page speed is a Google ranking factor. Poor page speed performance will in turn take a hit on rankings - and with a loss of each position on the Search Engine Result Page, the click-through rate falls significantly.&lt;/p&gt;
&lt;p&gt;Investing in optimizing page speed and providing a smooth user experience is a win-win on every front.&lt;/p&gt;
&lt;h3 id=&quot;mobile-first-design&quot;&gt;Mobile-First Design&lt;/h3&gt;
&lt;p&gt;Responsive web design is not enough anymore. Websites have to be built with a mobile-first approach in mind. What’s the difference? Responsive design ensures that a page can be viewed on all devices, changing its dimensions to fit different screen sizes. The content and the layout of the page, however, remain unchanged.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Responsive design adapts to screens, but native mobile-first considers content &amp;amp;#x26; layout for optimal mobile experience, as seen in the image — CE.SDK Apparel UI for Android, iOS, and web.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1280px) 1280px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1280&quot; height=&quot;720&quot; src=&quot;https://img.ly/_astro/mobile-optimization-print-app-creative-editor-for-print-app-FORMATS_ZnW1bb.webp&quot; srcset=&quot;/_astro/mobile-optimization-print-app-creative-editor-for-print-app-FORMATS_Z1BiYyN.webp 640w, /_astro/mobile-optimization-print-app-creative-editor-for-print-app-FORMATS_15uue8.webp 750w, /_astro/mobile-optimization-print-app-creative-editor-for-print-app-FORMATS_Z9nM8I.webp 828w, /_astro/mobile-optimization-print-app-creative-editor-for-print-app-FORMATS_Z1YshHq.webp 1080w, /_astro/mobile-optimization-print-app-creative-editor-for-print-app-FORMATS_ZnW1bb.webp 1280w&quot;&gt;&lt;/p&gt;
&lt;p&gt;While responsive web design is just a part of the design workflow making sure a website is accessible for mobile, mobile-first &lt;em&gt;defines&lt;/em&gt; the design approach and focuses on creating a website that is intended for mobile users. It means that every aspect of mobile interaction is taken into account when designing a page.&lt;/p&gt;
&lt;p&gt;While the general layout of a page is important for both desktop and mobile, clickable elements of design such as buttons and navigation menus can have larger importance for mobile users. Navigating with a thumb or a finger poses more challenges than a neat computer cursor. The mobile-first design makes sure that every part of the page - content, media, navigation, and calls-to-action, feels intuitive to navigate and use. However, even the best mobile-first web design can’t compare to native mobile apps, which usability and performance are far superior.&lt;br&gt;
Hence, mobile-first should be a necessity embraced by all, those who want to go a step further and provide a fully optimized user experience should turn their eyes to app development.&lt;/p&gt;
&lt;h3 id=&quot;payments&quot;&gt;Payments&lt;/h3&gt;
&lt;p&gt;The simplicity of mobile payments is yet another reason why mobile purchases are on the rise. Mobile wallet solutions like Google Pay, Apple Pay, and Samsung Pay allow users to complete a transaction with just one click, removing the need for credit card input.&lt;/p&gt;
&lt;p&gt;Nowadays, providing an easy and quick checkout experience is more important than ever. Over the last few years, the cart abandonment rate significantly increased, from 59.80% back in 2006 to 88.05% in 2020. Focusing on optimizing the checkout and payment processes could reduce the risk of not completing a purchase. A great example of a seamless payment experience is  Shopify’s Shop.app with a one-tap checkout, making it as easy as possible for users to convert.&lt;/p&gt;
&lt;p&gt;The checkout funnel is also a great space to utilize personalization hacks and recommend similar products. &lt;a href=&quot;https://instapage.com/blog/personalization-statistics&quot;&gt;Instapage&lt;/a&gt; reported that &lt;strong&gt;shopping cart recommendations influence 92% of users&lt;/strong&gt;, making it a great tool to increase basket size.&lt;/p&gt;
&lt;h2 id=&quot;beyond-browser---investing-in-mobile-apps&quot;&gt;Beyond Browser - Investing in Mobile Apps&lt;/h2&gt;
&lt;p&gt;Mobile app downloads increased by over 80% since 2016, reaching a mighty 255 billion in 2022. The growing popularity of mobile apps is quite understandable, apps provide a better native experience, are easier to navigate, and usually provide personalized recommendations and remember users’ last activity (&lt;a href=&quot;https://firstsiteguide.com/mobile-traffic-stats/&quot;&gt;58% of users consider this important&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;In-app shopping, when correctly optimized, is quick and easy, with enhanced product presentation, intuitive navigation, and no unnecessary hassle of filling in forms and adding credit card details.&lt;/p&gt;
&lt;p&gt;Print is once again one of the industries that could leverage all advantages mobile apps have to offer. An example of a company that did it right is IMG.LY’s customer &lt;a href=&quot;https://www.shutterfly.com/mobile/&quot;&gt;Shutterfly&lt;/a&gt;, which combined the emerging trends of personalization and going mobile. The company developed an app that automatically creates personalized items users can purchase. They simply ask for permission to access user’s photo gallery, identify pictures with faces and apply them to product templates. This way, customers can be presented with unique products with zero effort of creating an actual design.&lt;/p&gt;
&lt;p&gt;Even without automatically generated custom products, an app-to-print editor provides a much smoother editing experience and interface, with native hardware acceleration, local storage, and easier access to photos or even a camera. Moreover, apps present the possibility to provide more accurate recommendations and personalized content, like in-app notifications, reminders, and activity-based discounts. Hence, developing a quality mobile app could not only boost sales, but also increase brand loyalty and customer satisfaction.&lt;/p&gt;
&lt;h2 id=&quot;streamlining-mobile-web-to-print-editing-with-cesdk&quot;&gt;Streamlining Mobile Web-to-Print Editing with CE.SDK&lt;/h2&gt;
&lt;p&gt;With the undeniable advantages of &lt;a href=&quot;https://img.ly/industries/print&quot;&gt;web-to-print design tools&lt;/a&gt; come significant challenges in their development. However, &lt;a href=&quot;https://img.ly/creative-sdk&quot;&gt;CreativeEditor SDK&lt;/a&gt; offers a powerful design editor that delivers consistent experiences across all platforms. Our cross-platform engine can power any editor UI, ensuring 100% consistency in the rendered designs across different devices.&lt;/p&gt;
&lt;p&gt;Discover how CE.SDK can streamline your mobile web-to-print process with the following capabilities:&lt;/p&gt;
&lt;h3 id=&quot;efficient-client-side-encoding&quot;&gt;Efficient Client-Side Encoding&lt;/h3&gt;
&lt;p&gt;Our client-side encoding ensures a smooth and fast design process, as the editor runs directly on the user’s mobile device or web browser. This not only reduces upload time and bandwidth costs, but also allows for easy scalability without incurring additional server costs.&lt;/p&gt;
&lt;h3 id=&quot;seamless-cross-platform-integration&quot;&gt;Seamless Cross-Platform Integration&lt;/h3&gt;
&lt;p&gt;CE.SDK simplifies the process of building an application for the web, iOS, Android, and server by providing a creative engine that’s portable across all platforms. This means that you can easily integrate our solution into your existing systems, saving valuable time and resources. And with consistent design and functionality across all devices, your users can switch between platforms with ease.&lt;/p&gt;
&lt;h3 id=&quot;powerful-editing-features&quot;&gt;Powerful Editing Features&lt;/h3&gt;
&lt;p&gt;With CE.SDK, your users can unleash their creativity and design high-quality prints effortlessly. Take advantage of our powerful editing features, including the ability to capture and edit photos. CE.SDK also allows you to predefine the design process with adjustable placeholders and constraints, making sure that your final product meets all of the necessary print criteria.&lt;/p&gt;
&lt;h3 id=&quot;preview--design-validation&quot;&gt;Preview &amp;#x26; Design Validation&lt;/h3&gt;
&lt;p&gt;Imagine being able to preview your design in real-time, ensuring your product expectations are exceeded every time. Plus, with automatic design validation, you can rest easy knowing that no element will extend beyond the bleed margins, minimizing the risk of misprints. Don’t just take our word for it, check out our &lt;a href=&quot;https://img.ly/showcases/cesdk/web/design-validation&quot;&gt;showcases&lt;/a&gt; and see for yourself how CE.SDK can transform your design process.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;As we navigate the ever-changing landscape of technology, it’s important to stay ahead of the curve and keep up with emerging trends. With mobile devices becoming increasingly essential in our lives, it’s an crucial time to invest in creating a delightful mobile experience for your customers. By designing an intuitive website, prioritizing fast page load times, and providing a smooth checkout process, you can create a seamless experience for your users. And for print companies, taking it a step further with an exceptional in-app custom-print design tool is a must to help users bring their dream creations to life. These investments can not only enhance customer satisfaction but also give your business a competitive edge in the market.&lt;/p&gt;
&lt;p&gt;However, building a cross-platform editor from scratch can be a time-consuming and costly venture with numerous technical challenges. Fortunately, IMG.LY has developed a solution for those who want a quicker and more efficient option. Check out our &lt;a href=&quot;https://img.ly/creative-sdk&quot;&gt;CreativeEditor SDK&lt;/a&gt;, which enables seamless integration of a robust editor for &lt;a href=&quot;https://img.ly/industries/print&quot;&gt;web-to-print&lt;/a&gt; across desktop, mobile, and server.&lt;/p&gt;
&lt;p&gt;If you’re interested in integrating CE.SDK, our documentation provides detailed information on how to get started, or you can &lt;a href=&quot;https://img.ly/free-trial&quot;&gt;try it out for free&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thanks for reading. To stay in the loop, subscribe to our &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Klaudia</dc:creator><media:content url="https://blog.img.ly/2023/02/mobile-optimization-print-app-creative-editor-for-print-app.jpg" medium="image"/><category>Web-to-print</category><category>Print</category><category>CE.SDK</category><category>Creative Editor</category><category>Mobile App Development</category><category>Learning</category></item><item><title>Creative Workflows - the Future of Digital Asset Management</title><link>https://img.ly/blog/creative-workflow-the-future-of-dam/</link><guid isPermaLink="true">https://img.ly/blog/creative-workflow-the-future-of-dam/</guid><description>The proliferation of marketing channels, shrinking customer segments, and personalized messaging increase the volume and variations of creatives and require ever-shorter iteration cycles. DAMs must evolve by incorporating creative workflows into their solution. </description><pubDate>Tue, 14 Feb 2023 08:44:42 GMT</pubDate><content:encoded>&lt;p&gt;Traditionally creative assets used to follow a clear lifecycle of conception, creation and use.&lt;/p&gt;
&lt;p&gt;Designers and marketers have been thinking in terms of campaigns, timelines spanned months and the types of media to produce content for could be counted on one hand.&lt;/p&gt;
&lt;p&gt;In this paradigm, digital asset management filled an important yet clearly circumscribed role; storing, sharing, and managing assets during the use phase of this lifecycle.&lt;/p&gt;
&lt;p&gt;However, the rapid proliferation of digital publishing channels as well as the fast-moving nature of modern marketing campaigns means that the creation and adaptation of assets by stakeholders other than designers are becoming prevalent requirements across organizations. In the process, creative assets are increasingly becoming ‘living’ artifacts subject to frequent iterations involving many stakeholders.&lt;/p&gt;
&lt;h2 id=&quot;growing-market-need-for-integrated-creative-workflows&quot;&gt;Growing Market Need for Integrated Creative Workflows&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://business.adobe.com/resources/digital-trends-report.html&quot;&gt;Adobe’s most recent report on digital trends&lt;/a&gt; shows the full extent of this shift, according to the report 79% of survey respondents identified as leaders of their industries agreed with the statement that customer expectations are constantly resetting to match their best omni-channel experience, 85% concurred that the demand for content has significantly increased.&lt;br&gt;
The report goes on to underline that creative workflow challenges continue to pose the greatest challenge affecting organizations’ ability to keep up with and adequately serve customers’ needs.&lt;/p&gt;
&lt;h3 id=&quot;common-challenges&quot;&gt;Common Challenges&lt;/h3&gt;
&lt;p&gt;About half of the respondents consider &lt;strong&gt;workflow issues&lt;/strong&gt; to be a critical internal barrier holding back their marketing organization.&lt;/p&gt;
&lt;p&gt;Paul Nicholson, Senior Vice President of Production and Technology at Showtime Networks, states that his marketing team can be working on 600 to 800 pieces of promotional content at any given time, optimizing the workflow between design and marketing involving decision makers in a seamless and timely fashion and giving enough autonomy to non-designers make design changes themselves.&lt;/p&gt;
&lt;p&gt;Success now requires hundreds of variations of images and videos for different ad networks, social networks, market segments and localizations. Every one of these variations in turn requires versions for creative optimizations and testing,&lt;/p&gt;
&lt;h3 id=&quot;the-need-for-change&quot;&gt;The Need for Change&lt;/h3&gt;
&lt;p&gt;This increased need for agility, shorter iteration cycles, and timelines means that content creation and distribution are becoming intertwined requiring a unified creative workflow.&lt;/p&gt;
&lt;p&gt;In tandem with an increasing amount of publishing channels, the addressable customer segments within those channels are becoming smaller.&lt;/p&gt;
&lt;p&gt;Digital advertising platforms are offering ever more granular targeting options on the basis of both demographic and behavioral data.&lt;/p&gt;
&lt;p&gt;In order to take advantage of these focused targeting abilities, the creative content served to audiences needs to be customized accordingly.&lt;/p&gt;
&lt;p&gt;For reference, the D2C pet food retailer Pets Deli saw its online conversion rates &lt;a href=&quot;https://www.contentful.com/blog/ninetailed-pets-deli-personalization/&quot;&gt;increase by 51%&lt;/a&gt; as soon as its marketing started tailoring materials to smaller segments as well as personalizing messaging.&lt;/p&gt;
&lt;h2 id=&quot;threats-and-opportunities-for-the-dam-industry&quot;&gt;Threats and Opportunities for the DAM Industry&lt;/h2&gt;
&lt;p&gt;These trends present the DAM space with great opportunities as well as threats from adjacent industries.&lt;/p&gt;
&lt;h3 id=&quot;the-opportunity&quot;&gt;The Opportunity&lt;/h3&gt;
&lt;p&gt;As a result of the above mention market pressures, marketing teams need to scale up content creation with the use of tools that are specifically designed to iterate sets of related creatives using data and templates.&lt;br&gt;
The natural evolution of a digital asset management system is then to become a 360 content hub empowering the marketing team and other stakeholders while freeing up the design team for more valuable work. A great example of a DAM company doing that is Bynder, &lt;a href=&quot;https://www.bynder.com/en/products/studio/&quot;&gt;its Studio solution&lt;/a&gt; supports both images and videos and allows designers to create templates and define constraints so they are easily adaptable by marketers and other stakeholders.&lt;/p&gt;
&lt;h3 id=&quot;the-threat&quot;&gt;The Threat&lt;/h3&gt;
&lt;p&gt;Just as DAMs need to expand their value proposition towards becoming tools for creating and managing change rather than static assets, design tools might expand to encompass traditional DAM functionality.&lt;br&gt;
As these two domains merge both types of businesses will have to make a play for becoming the 360 content solution that meets the growing market demand described above. As such DAM companies will face competitive pressures from design-centered products.&lt;/p&gt;
&lt;p&gt;Adobe’s &lt;a href=&quot;https://business.adobe.com/products/experience-manager/assets/aem-assets.html&quot;&gt;Cloud Experience DAM&lt;/a&gt; for instance seamlessly fits with other Creative Cloud products such as Illustrator. The obvious advantage is that designers are already working with the tools and won’t have to make the shift to a different way of working.&lt;/p&gt;
&lt;p&gt;The obstacle these companies face, however, is a classic &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Innovator%27s_Dilemma&quot;&gt;Innovators Dilemma&lt;/a&gt;; it’s hard to add innovative, disruptive features to a mature product with a large customer base that might be unlikely to value those changes. It is easier for DAMs to secure early adopters for a new product line than for a design tool to move its established user base to use novel and substantially different features.&lt;/p&gt;
&lt;h2 id=&quot;implementing-a-creative-workflow-with-imglys-cesdk&quot;&gt;Implementing a Creative Workflow with IMG.LY’s CE.SDK&lt;/h2&gt;
&lt;p&gt;Technical viability poses the biggest challenge for implementing a creative workflow, apart from a great UX the complexities of building graphics processing on the web or mobile are immense.&lt;/p&gt;
&lt;p&gt;Fortunately, you do not have to commit valuable engineering resources, time, and money to add creative editing to your &lt;a href=&quot;https://img.ly/industries/digital-asset-management&quot;&gt;DAM solution&lt;/a&gt;.&lt;br&gt;
&lt;a href=&quot;https://img.ly/products/creative-sdk&quot;&gt;IMG.LY’s CreativeEditor SDK&lt;/a&gt; is a cross-platform design editing and automation solution you can integrate with ease into any web, mobile, or desktop app and customize to fit your use case perfectly.&lt;/p&gt;
&lt;h3 id=&quot;creative-workflow-for-dams-example&quot;&gt;Creative Workflow for DAMs Example&lt;/h3&gt;
&lt;p&gt;Let’s look at an example workflow of an imaginary DAM Carpeta.&lt;/p&gt;
&lt;p&gt;Carpeta’s customer OGNX is a skincare brand part of a large consumer brand conglomerate. Until now they have used Carpeta to distribute product designs and marketing material to the marketing and communications team, there are a host of files in different formats originating in various design tools.&lt;br&gt;
OGNX is planning a large campaign for their new product line, but marketers are worried that design resources will present a bottleneck as they are planning to test different variations of CTA and color schemes in a large number of formats for different channels.&lt;/p&gt;
&lt;p&gt;Luckily, Carpeta has just rolled out its new Creative Studio powered by CE.SDK.&lt;/p&gt;
&lt;p&gt;OGNX’s design team can now import files from tools such as InDesign and start creating templates for marketers and A/B testers to work with.&lt;/p&gt;
&lt;h3 id=&quot;creating-smart-templates&quot;&gt;Creating Smart Templates&lt;/h3&gt;
&lt;p&gt;In the example below, a designer is creating a template setting a constraint that the logo cannot be changed or rearranged.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://lh5.googleusercontent.com/AsfKfvFe6z77tYbZhwhB2ybZI0vjea12RMNjXaZaQOafX1QemYbEpOU9BUTzfpe56HoBEP0JT02HgBMRrW272MIFPz5vikD_Sm1QQsg5yVauClqmWIngIMiSXqjcpYSJ-vbtW8NmuhWuBkjitVcmb9Q&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;defining-dynamic-elements-using-variables&quot;&gt;Defining dynamic elements using variables&lt;/h3&gt;
&lt;p&gt;The text used as CTA is defined as a &lt;strong&gt;text variable&lt;/strong&gt; to allow populating the template programmatically for each customer segment or personalized campaigns. Thereby ensuring that all designs are consistent with regard to branding while users adopting it have enough leeway to create unique variations.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://lh6.googleusercontent.com/vDr6y5zVAVvN1Xj-HibjGPYjVH6hFcbnuz6brvp36F04P2DaP01sVeJqQcXQ4FGsQ3ZlpbU3Pk-ybExqeYXfpt6sYT0ZLG6cKQeeml63RLfxPFnresEXlZ7FCLaghYxyqSPotq9vipNfUudWq9Op42E&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;template-delivery-and-adaptation&quot;&gt;Template delivery and adaptation&lt;/h3&gt;
&lt;p&gt;Now, the template can be centrally stored in Carpeta’s DAM, and a marketing team preparing a campaign on social media can make changes to it using the CE.SDK design UI. In our example, they are testing different color schemes and CTAs which they provide from a central data store.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://lh4.googleusercontent.com/FGfrbk55s9MjxNBHuRMt-KO8w05lmdkjDUDlK25EycRcP-jp3usM-Y4GCI5C45TDvfGule_2ItkwDUR1yeMa0Kh4lqZg9kOoM2296s_JH0YO3ykqR2h7Q7615kvS5Ho85xvLLoiXGLucoYNvhvs-UmA&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;automatically-generating-variation-using-the-cesdk-api&quot;&gt;Automatically generating variation using the CE.SDK API&lt;/h3&gt;
&lt;p&gt;In addition, Carpeta uses the &lt;a href=&quot;https://img.ly/docs/cesdk/js/what-is-cesdk-2e7acd/&quot;&gt;CE.SDK’s headless API&lt;/a&gt; to generate designs in different user-defined formats for each social media channel.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://lh3.googleusercontent.com/zlRxM5Ut3NQT7LZZ8-VLKlOUPazziXwdn3aZ27fNWvfWLdPJmt6xM9kUaycmYjIpIi1zjoFI-H1tiJQbyCBzDVK5YAFi215GYn14qe4z_I3_xJFvW4Jxsv3xs02s4tY7ujuQbduidfu7OY_T0lolL4A&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The way organizations work with their assets is evolving quickly, the proliferation of marketing channels, shrinking customer segments, and personalized messaging increase the volume and variations of creatives and require ever-shorter timelines and iteration cycles.&lt;br&gt;
This presents a unique opportunity for &lt;a href=&quot;https://img.ly/industries/digital-asset-management&quot;&gt;digital asset management systems&lt;/a&gt; to incorporate creative workflows into their solution and grow to become 360 content management and creation hubs meeting this demand.&lt;br&gt;
IMG.LY’s CE.SDK allows DAM companies to focus entirely on delivering the optimal solution to their users while relying on battle-tested tech and category-leading UX to build optimal creative experiences.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://img.ly/forms/contact-sales&quot;&gt;Schedule a demo today&lt;/a&gt; to explore how you can integrate creative editing into your DAM product.&lt;/p&gt;</content:encoded><dc:creator>Jan</dc:creator><media:content url="https://blog.img.ly/2023/02/DAM.png" medium="image"/><category>Digital Asset Management</category><category>Creative Editor</category><category>CE.SDK</category><category>Design Process</category><category>Design</category><category>Learning</category></item><item><title>CE.SDK v1.7.0 Release and Roadmap</title><link>https://img.ly/blog/creative-editor-sdk-v_1_7_0-release-notes/</link><guid isPermaLink="true">https://img.ly/blog/creative-editor-sdk-v_1_7_0-release-notes/</guid><description>Enjoy powerful Blur and Effects APIs, Shadows, Rotation of Groups and Hierarchies, and more. Our Product Roadmap will keep you up-to-date.</description><pubDate>Mon, 08 Aug 2022 12:07:47 GMT</pubDate><content:encoded>&lt;p&gt;Today, we are thrilled to highlight the best new features and changes in CE.SDK since our &lt;a href=&quot;https://img.ly/blog/creative-editor-sdk-v_1_6_0-release-notes/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=releasenotes&quot;&gt;v1.6.0 Release&lt;/a&gt;. We have also published our &lt;a href=&quot;https://roadmap.img.ly/&quot;&gt;&lt;strong&gt;Product Roadmap for CE.SDK&lt;/strong&gt;&lt;/a&gt; to share our vision and direction for upcoming releases. This roadmap will let you know ahead of time what features you can expect from us and accelerate your product planning and development. We are excited to hear your feedback and suggestions to build more powerful features for your application!&lt;/p&gt;
&lt;h2 id=&quot;cesdk-v170&quot;&gt;CE.SDK v1.7.0&lt;/h2&gt;
&lt;p&gt;This release includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Auto Close Option in Web UI Configuration for Asset Libraries&lt;/li&gt;
&lt;li&gt;Custom URI Resolver&lt;/li&gt;
&lt;li&gt;Improving Mobile Touch Support&lt;/li&gt;
&lt;li&gt;Rotation of Groups and Hierarchies&lt;/li&gt;
&lt;li&gt;Custom Asset Source UI&lt;/li&gt;
&lt;li&gt;Disconnecting UI Variants from Roles&lt;/li&gt;
&lt;li&gt;Asset Source ApplyAsset API&lt;/li&gt;
&lt;li&gt;Blur API&lt;/li&gt;
&lt;li&gt;Effects API&lt;/li&gt;
&lt;li&gt;Image Fills API&lt;/li&gt;
&lt;li&gt;Image Straighten API&lt;/li&gt;
&lt;li&gt;Improved Group Selection and API&lt;/li&gt;
&lt;li&gt;Scopes API&lt;/li&gt;
&lt;li&gt;Shadows API&lt;/li&gt;
&lt;li&gt;Zoom API&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;auto-close-option-in-web-ui-configuration-for-asset-libraries&quot;&gt;Auto Close Option in Web UI Configuration for Asset Libraries&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;Should it stay or should it go? Have control over your library behavior with this update.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 740px) 740px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;740&quot; height=&quot;321&quot; src=&quot;https://img.ly/_astro/auto_close_lib_1W98pV.webp&quot; srcset=&quot;/_astro/auto_close_lib_1Jj7hj.webp 640w, /_astro/auto_close_lib_1W98pV.webp 740w&quot;&gt;&lt;/p&gt;
&lt;p&gt;There are no one-size-fits-all solutions for the behavior of asset library panels after an action was triggered. It depends on the use case and might vary between the panels and the available screen space. Thus, this is now configurable.&lt;/p&gt;
&lt;h3 id=&quot;custom-uri-resolver&quot;&gt;Custom URI Resolver&lt;/h3&gt;
&lt;p&gt;Custom URI Resolvers give you full control over how URIs should be resolved. You can create custom storage backends and even resolve different resolution images in different instances. Find more information in our &lt;a href=&quot;https://img.ly/docs/cesdk/js/open-the-editor/uri-resolver-36b624/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=releasenotes&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;improving-mobile-touch-support&quot;&gt;Improving Mobile Touch Support&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;Great design-to-go: improved mobile touch support.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/mobile_touch_Z2g42pt.webp&quot; srcset=&quot;/_astro/mobile_touch_ZJKt2L.webp 640w, /_astro/mobile_touch_Z1AgDJY.webp 750w, /_astro/mobile_touch_ZGdINX.webp 828w, /_astro/mobile_touch_Z2doG6d.webp 1080w, /_astro/mobile_touch_imcDC.webp 1280w, /_astro/mobile_touch_Z2g42pt.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;Input handling was streamlined to handle both touch and mouse input efficiently. On touch devices, all handles maintain the recommended minimum size for touch input and are intelligently hidden to minimize overlap. Thanks to this mechanism, resizing and rotating are always a breeze.&lt;/p&gt;
&lt;h3 id=&quot;rotation-of-groups-and-hierarchies&quot;&gt;Rotation of Groups and Hierarchies&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;Simplify your design process by grouping elements and edit them altogether.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/rotation_of_groups_oxAW4.webp&quot; srcset=&quot;/_astro/rotation_of_groups_1NFy6r.webp 640w, /_astro/rotation_of_groups_2ss6Qm.webp 750w, /_astro/rotation_of_groups_ZCO3fG.webp 828w, /_astro/rotation_of_groups_29du7E.webp 1080w, /_astro/rotation_of_groups_Z1gd1mB.webp 1280w, /_astro/rotation_of_groups_oxAW4.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;The engine and user interface add options for rotating groups and design blocks with children. This allows changing the rotation of multiple elements at once quickly.&lt;/p&gt;
&lt;h3 id=&quot;custom-asset-source-ui&quot;&gt;Custom Asset Source UI&lt;/h3&gt;
&lt;p&gt;Instead of fixed entry points such as “Images,” “Stickers,” or “Shapes,” we want to enable custom and flexible entry points. Until today, we tied them to a block type, which is currently only relevant when users add an asset to the scene.&lt;/p&gt;
&lt;h3 id=&quot;moving-from-roles-to-abilities-disconnecting-ui-variants-from-roles&quot;&gt;Moving from Roles to Abilities: Disconnecting UI Variants from Roles&lt;/h3&gt;
&lt;p&gt;Before the change, the Advanced UI was tied to the creator role and the Default UI was tied to the Adopter Role. This is now no longer the case. The scopes and editing options are still controlled by the abilities of the current role.&lt;/p&gt;
&lt;h3 id=&quot;shadows-in-advanced-ui&quot;&gt;Shadows in Advanced UI&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/shadows_in_advanced_API_Z1FOoi7.webp&quot; srcset=&quot;/_astro/shadows_in_advanced_API_Z45be.webp 640w, /_astro/shadows_in_advanced_API_Zy5jRz.webp 750w, /_astro/shadows_in_advanced_API_egkMm.webp 828w, /_astro/shadows_in_advanced_API_Qlk0w.webp 1080w, /_astro/shadows_in_advanced_API_27QwKF.webp 1280w, /_astro/shadows_in_advanced_API_Z1FOoi7.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;With this update, we roll out the long-awaited ability to apply shadows to elements in our Advanced UI. Realistic drop shadow effects add more depth to your designs with a few clicks – no other editor is needed.&lt;/p&gt;
&lt;h3 id=&quot;blur-api&quot;&gt;Blur API&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/blur_API_Zfrq6A.webp&quot; srcset=&quot;/_astro/blur_API_1o848m.webp 640w, /_astro/blur_API_ZGbmUm.webp 750w, /_astro/blur_API_ZziuOW.webp 828w, /_astro/blur_API_Z2rt0Ii.webp 1080w, /_astro/blur_API_Z1lsdpr.webp 1280w, /_astro/blur_API_Zfrq6A.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;We introduce new APIs to modify the blur for images and other blocks. This change allows programmatic access to add blur effects in automation cases and when building your own UI.&lt;/p&gt;
&lt;h3 id=&quot;effects-api&quot;&gt;Effects API&lt;/h3&gt;
&lt;p&gt;We introduce new APIs to modify the effect stack for shapes and other blocks. This allows programmatic access to effects like adjustments, LUT filters, and many more.&lt;/p&gt;
&lt;h3 id=&quot;image-fills-api&quot;&gt;Image Fills API&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/image_fill_HmPh2.webp&quot; srcset=&quot;/_astro/image_fill_Z1IbTb.webp 640w, /_astro/image_fill_Z14KA8n.webp 750w, /_astro/image_fill_1rwknl.webp 828w, /_astro/image_fill_274TKn.webp 1080w, /_astro/image_fill_1pdRvH.webp 1280w, /_astro/image_fill_HmPh2.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;Currently, you can only access and use images with the image block. However, pages or vector shapes could use more than just a color or gradient fill. Therefore, we broaden the concept of fills by allowing every block to have an image fill, e.g., pages. This change will enable building a more natural photo- or video-editor experience. &lt;a href=&quot;https://img.ly/docs/cesdk/js/fills/overview-3895ee/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=releasenotes&quot;&gt;Documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;image-straighten-api&quot;&gt;Image Straighten API&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/image_straighten_Z1uLpF1.webp&quot; srcset=&quot;/_astro/image_straighten_Z29KtL5.webp 640w, /_astro/image_straighten_vwHgA.webp 750w, /_astro/image_straighten_Z1O428T.webp 828w, /_astro/image_straighten_ZymsGh.webp 1080w, /_astro/image_straighten_Z124rb9.webp 1280w, /_astro/image_straighten_Z1uLpF1.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;We are extending the Image Crop API to allow straightening, flipping, and rotating images during cropping. This change allows more fine-grained control.&lt;/p&gt;
&lt;h3 id=&quot;improved-group-selection-and-api&quot;&gt;Improved Group Selection and API&lt;/h3&gt;
&lt;p&gt;There are multiple options to select blocks inside a group:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;selecting a group first and with each click select one block deeper in the hierarchy&lt;/li&gt;
&lt;li&gt;selecting an element under the cursor directly, neglecting the hierarchy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Previously, we defaulted to different behaviors depending on the user’s role. Now, this is configurable and also customizable during runtime via APIs. Therefore, it’s up to the implementor how the selection should work.&lt;/p&gt;
&lt;h3 id=&quot;scopes-api&quot;&gt;Scopes API&lt;/h3&gt;
&lt;p&gt;We introduce new APIs to modify the scopes for blocks. This update allows programmatic access to change the scopes for users and allows control over the possible edits a user can make to a scene.&lt;/p&gt;
&lt;h3 id=&quot;shadows-api&quot;&gt;Shadows API&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/shadows_API_jTf6L.webp&quot; srcset=&quot;/_astro/shadows_API_PF3VL.webp 640w, /_astro/shadows_API_1R2ETk.webp 750w, /_astro/shadows_API_Gh7bU.webp 828w, /_astro/shadows_API_2a5X4g.webp 1080w, /_astro/shadows_API_Z1i5WNW.webp 1280w, /_astro/shadows_API_jTf6L.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;We introduce new APIs to modify shadows for images and other blocks. This change allows programmatic access to add shadow effects to be used in automation cases and when you build your UI.&lt;/p&gt;
&lt;h3 id=&quot;zoom-api&quot;&gt;Zoom API&lt;/h3&gt;
&lt;p&gt;We introduce new APIs to modify the current zoom level. This allows programmatic access to change the current zoom easily for automation use-cases or for building your own user interface.&lt;/p&gt;
&lt;h2 id=&quot;product-roadmap&quot;&gt;Product Roadmap&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1480px) 1480px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1480&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/API_general_snkLp.webp&quot; srcset=&quot;/_astro/API_general_Z2gaGAs.webp 640w, /_astro/API_general_Z1eN5CT.webp 750w, /_astro/API_general_Z2pyDlj.webp 828w, /_astro/API_general_2iz3IT.webp 1080w, /_astro/API_general_Z19BR9j.webp 1280w, /_astro/API_general_snkLp.webp 1480w&quot;&gt;&lt;/p&gt;
&lt;p&gt;As mentioned before, we are happy to publish our &lt;a href=&quot;https://roadmap.img.ly&quot;&gt;Product Roadmap&lt;/a&gt; to let you in on our new features and enhancements for CE.SDK. This way, we can elaborate our decisions and plans for the product and how you can benefit while allowing you to give us feedback and indicate the importance of particular features.&lt;br&gt;
Now that you know what’s coming down the pike, you can prepare for the release of significant improvements and new features such as &lt;strong&gt;Video Support for Web&lt;/strong&gt; or &lt;strong&gt;Native iOS Support&lt;/strong&gt; well in advance.&lt;/p&gt;
&lt;h3 id=&quot;thanks-for-reading-let-us-know-what-you-think-on-twitter-to-stay-in-the-loop-subscribe-to-our-newsletter&quot;&gt;Thanks for reading! Let us know what you think on &lt;a href=&quot;https://twitter.com/imgly&quot;&gt;Twitter&lt;/a&gt;! To stay in the loop, subscribe to our &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;Newsletter&lt;/a&gt;.&lt;/h3&gt;</content:encoded><dc:creator>Malte</dc:creator><dc:creator>Daniel</dc:creator><media:content url="https://blog.img.ly/2022/08/creative-editor-sdk-design-photo-editor-javascript.png" medium="image"/><category>Release Notes</category><category>CE.SDK</category><category>Roadmap</category><category>Web Application</category><category>Web Development</category><category>Creative Editor</category><category>Design Editor</category><category>Photo Editor</category><category>SDK</category></item><item><title>How To Build a Canva Clone with CE.SDK</title><link>https://img.ly/blog/how-to-build-a-canva-clone-with-ce-sdk/</link><guid isPermaLink="true">https://img.ly/blog/how-to-build-a-canva-clone-with-ce-sdk/</guid><description>Design invitations, greeting cards, flyers, postcards, and business cards with a Canva clone built with CE.SDK in React in minutes. </description><pubDate>Wed, 27 Jul 2022 06:43:59 GMT</pubDate><content:encoded>&lt;p&gt;Canva has popularized image editing, and user expectations of creative capabilities have increased accordingly. If your web or mobile application includes any design functionality - for book covers, t-shirt designs, or social media content - it has to be on par with the design experience offered by prosumer creation tools such as Canva.&lt;/p&gt;
&lt;p&gt;Allowing users to edit images through an easy user interface, define high-quality templates, and give them the ability to share them with the community is a great way to boost engagement, add virality, and potentially new revenue streams.&lt;/p&gt;
&lt;p&gt;You might think this requires a lot of time and effort, but that is not the case. CreativeEditor SDK makes it dead simple to build a Canva-like design editor in minutes. I’ll show you how!&lt;/p&gt;
&lt;p&gt;Follow this step-by-step tutorial and learn how to implement a Canva clone in React with CE.SDK. At the end of this tutorial, you will achieve the following result:&lt;/p&gt;
&lt;p&gt;Try the final result live on &lt;a href=&quot;https://codesandbox.io/embed/how-to-build-a-canva-clone-with-ce-sdk-forked-nvxz3w&quot;&gt;CodeSandbox&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;what-is-canva&quot;&gt;What is Canva?&lt;/h2&gt;
&lt;p&gt;Canva is a free graphic design tool for image editing featuring a drag-and-drop interface for composing different elements on a canvas. You can easily create flyers, invitations, business cards, and more with professionally designed templates. You can think of it as a basic version of Photoshop that anyone can use.&lt;/p&gt;
&lt;p&gt;You can create Canva templates in a web browser or on the official app for iOS or Android, share them and collaborate easily. Templates make Canva a powerful tool - that is also true for CE.SDK, which makes it a perfect harbor to set sail for new horizons and create an excellent editor. Before we learn how to replicate Canva, let us evaluate the SDK in question.&lt;/p&gt;
&lt;h2 id=&quot;what-is-cesdk&quot;&gt;What is CE.SDK?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://img.ly/products/creative-sdk?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=howtos&quot;&gt;CreativeEditor SDK (CE.SDK)&lt;/a&gt; is a fully customizable, user-friendly design editor tool. You can integrate it easily into your application with just a few lines of code and benefit from the template-based editor in no time.&lt;/p&gt;
&lt;p&gt;The role-specific editing UI focuses heavily on content adaptation. CE.SDK offers two modes: in Creator Mode, you can create a design from scratch or customize existing templates. Once ready, creators can share their templates and decide which elements others can change and to what degree. Then, users can import the template and customize it in Adopter Mode (Default UI).&lt;/p&gt;
&lt;p&gt;Try CE.SDK &lt;a href=&quot;https://img.ly/showcases/cesdk&quot;&gt;live demos&lt;/a&gt; or &lt;a href=&quot;https://img.ly/forms/free-trial&quot;&gt;start a free trial&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;designing-and-sharing-a-template-in-creator-mode&quot;&gt;Designing and Sharing a Template in Creator Mode&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&quot;https://img.ly/docs/cesdk/react/configuration-2c1c3d/&quot;&gt;&lt;code&gt;Creator&lt;/code&gt;&lt;/a&gt; Mode is the most powerful and least restrictive role in CE.SDK. It empowers you to unleash your creativity and create custom templates for every imaginable use case. Add, move, modify, and delete elements as you wish and define constraints. Further elevate your designs with photo editings, such as filters, effects, and background removal.&lt;/p&gt;
&lt;p&gt;The well-rounded text editor also allows you to define variables and programmatically give them a value using the CE.SDK &lt;a href=&quot;https://img.ly/docs/cesdk/react/create-templates/add-dynamic-content/text-variables-7ecb50/&quot;&gt;Variable API&lt;/a&gt;. For example, you may introduce a &lt;code&gt;{{Name}}&lt;/code&gt; Variable and have CESDK import names from a database. This automation is perfect for batch-processing designs, such as greeting cards. Based on this principle, we have built an example &lt;a href=&quot;https://img.ly/blog/how-to-generate-an-nft-art-collection-with-react-using-ce-sdk/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=howtos&quot;&gt;NFT Art Collection Generator in React with CE.SDK&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the Creator Mode, you also can define &lt;a href=&quot;https://img.ly/docs/cesdk/react/create-templates/add-dynamic-content/placeholders-d9ba8a/&quot;&gt;placeholders&lt;/a&gt;. Turning an element into a placeholder will let you determine if it can be deleted, styled, or duplicated by the adopter.&lt;/p&gt;
&lt;p&gt;This is what the CE.SDK Creator Mode looks like:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;creator-mode-cesdk&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1000px) 1000px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1000&quot; height=&quot;506&quot; src=&quot;https://img.ly/_astro/creator-mode-cesdk_Z1H6JCC.webp&quot; srcset=&quot;/_astro/creator-mode-cesdk_Q0z9g.webp 640w, /_astro/creator-mode-cesdk_1WU4FC.webp 750w, /_astro/creator-mode-cesdk_Z1Ww1nc.webp 828w, /_astro/creator-mode-cesdk_Z1H6JCC.webp 1000w&quot;&gt;&lt;/p&gt;
&lt;p&gt;As you can see, you can use CE.SDK to easily create a wedding invitation card template. This is just an example, and you can find other cool sample templates for greeting cards, flyers, postcards, and business cards on &lt;a href=&quot;https://img.ly/showcases/cesdk?tags=custom-build-uis&quot;&gt;showcase page&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;what-adopter-mode-offers-you&quot;&gt;What Adopter Mode Offers You&lt;/h3&gt;
&lt;p&gt;You can test the adopter view of the wedding invitation card template shown above &lt;a href=&quot;https://ubique.img.ly/main/apps/dashboard/#/template/Hoc0dPRe5l9BfJaqwCI3&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is what the Adopter Mode looks like:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;adopter-mode&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 999px) 999px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;999&quot; height=&quot;485&quot; src=&quot;https://img.ly/_astro/adopter-mode_Z1qq5LI.webp&quot; srcset=&quot;/_astro/adopter-mode_gAVDi.webp 640w, /_astro/adopter-mode_Z1ThvMI.webp 750w, /_astro/adopter-mode_Z22GG6v.webp 828w, /_astro/adopter-mode_Z1qq5LI.webp 999w&quot;&gt;&lt;/p&gt;
&lt;p&gt;As shown above, CE.SDK’s Adopter Mode enables you to add and modify colors, text, and images based on the constraints enabled by the creator of the template. This mode provides the &lt;a href=&quot;https://img.ly/docs/cesdk/js/configuration-2c1c3d/?ref=img.ly#adopter?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=howtos&quot;&gt;&lt;code&gt;Adopter&lt;/code&gt;&lt;/a&gt; users with a simple interface, narrowed down to the properties that they are allowed to change. This prevents adopters from accidentally changing or deleting parts of a design that should not be modified.&lt;/p&gt;
&lt;h2 id=&quot;implement-a-canva-clone-with-cesdk&quot;&gt;Implement a Canva Clone with CE.SDK&lt;/h2&gt;
&lt;p&gt;Let’s now learn how to use CE.SDK to build a Canva clone in React.&lt;/p&gt;
&lt;h3 id=&quot;prerequisites&quot;&gt;Prerequisites&lt;/h3&gt;
&lt;p&gt;This is the list of all the prerequisites for the Canva clone application you are going to build:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.npmjs.com/getting-started/&quot;&gt;Node.js and npm 8.0+ and higher&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://react.dev/&quot;&gt;React&lt;/a&gt; &gt;= 18&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.npmjs.com/package/@cesdk/cesdk-js&quot;&gt;&lt;code&gt;@cesdk/cesdk-js&lt;/code&gt;&lt;/a&gt; &gt; 1.6.3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Add &lt;code&gt;@cesdk/cesdk-js&lt;/code&gt; to your project’s dependencies with the following command:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;npm install @cesdk/cesdk-js&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;initialize-a-react-project&quot;&gt;Initialize a React Project&lt;/h3&gt;
&lt;p&gt;You can try out the Canva clone by cloning the &lt;a href=&quot;https://github.com/imgly/canva-clone-react-cesdk&quot;&gt;GitHub repository supporting the article&lt;/a&gt; and running the demo web application with the following commands:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;git clone https://github.com/Tonel/canva-clone-cesdk-imgly&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;cd canva-clone-cesdk-imgly&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;npm i&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;npm start&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Otherwise, follow this step-by-step tutorial and learn how to build the Canva clone with CE.SDK by yourself.&lt;/p&gt;
&lt;p&gt;First, you need to initialize a &lt;code&gt;canva-clone-cesdk-imgly&lt;/code&gt; React project. You can do it with &lt;a href=&quot;https://create-react-app.dev/docs/getting-started/&quot;&gt;Create React App&lt;/a&gt; by launching the command below:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;npx create-react-app canva-clone-cesdk-imgly&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, the &lt;code&gt;canva-clone-cesdk-imgly&lt;/code&gt; folder will have the following file structure:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;canva-clone-cesdk-imgly&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── README.md&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── node_modules&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── package.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── .gitignore&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── public&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── favicon.ico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── index.html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── logo192.png&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── logo512.png&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── manifest.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   └── robots.txt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── src&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── App.css&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── App.js&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── App.test.js&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── index.css&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── index.js&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── logo.svg&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── reportWebVitals.js&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    └── setupTests.js&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Move into the &lt;code&gt;canva-clone-cesdk-imgly&lt;/code&gt; folder and start a local development server with:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;cd canva-clone-cesdk-imgly&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;npm start&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reach &lt;a href=&quot;http://localhost:3000/&quot;&gt;http://localhost:3000/&lt;/a&gt; in your browser and make sure you see the default Create React App screen below:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;react&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 983px) 983px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;983&quot; height=&quot;728&quot; src=&quot;https://img.ly/_astro/react_1REyVa.webp&quot; srcset=&quot;/_astro/react_2lRYbq.webp 640w, /_astro/react_Z21FBPj.webp 750w, /_astro/react_OLsOd.webp 828w, /_astro/react_1REyVa.webp 983w&quot;&gt;&lt;/p&gt;
&lt;p&gt;You are now ready to code!&lt;/p&gt;
&lt;h3 id=&quot;build-the-canva-clone-component-with-cesdk&quot;&gt;Build the Canva Clone Component with CE.SDK&lt;/h3&gt;
&lt;p&gt;If you want your image editing component to provide a Canva-like experience, it must include key features, such as template and custom resource management. Let’s see how to implement them all with CE.SDK.&lt;/p&gt;
&lt;h4 id=&quot;configure-cesdk-to-use-templates&quot;&gt;Configure CE.SDK to use templates&lt;/h4&gt;
&lt;p&gt;Managing templates in CE.SDK is easy. All you have to do is configure the set of predefined templates loaded by CE.SDK on initialization, as explained in the &lt;a href=&quot;https://img.ly/docs/cesdk/react/use-templates/library-b3c704/&quot;&gt;official documentation on adding templates&lt;/a&gt;. You can achieve this as below:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;useEffect&lt;/span&gt;&lt;span&gt;(() &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  let&lt;/span&gt;&lt;span&gt; cesdk;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  let&lt;/span&gt;&lt;span&gt; config &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    // initializing CE.SDK with a few templates&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    presets: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      templates: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        postcard_1: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          label: &lt;/span&gt;&lt;span&gt;&apos;Postcard Design&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_postcard_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_postcard_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        postcard_2: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          label: &lt;/span&gt;&lt;span&gt;&apos;Postcard Tropical&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_postcard_2.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_postcard_2.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        business_card_1: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          label: &lt;/span&gt;&lt;span&gt;&apos;Business card&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_business_card_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_business_card_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        instagram_photo_1: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          label: &lt;/span&gt;&lt;span&gt;&apos;Instagram photo&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_instagram_photo_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_instagram_photo_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        instagram_story_1: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          label: &lt;/span&gt;&lt;span&gt;&apos;Instagram story&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_instagram_story_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_instagram_story_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        poster_1: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          label: &lt;/span&gt;&lt;span&gt;&apos;Poster&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_poster_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_poster_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        presentation_4: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          label: &lt;/span&gt;&lt;span&gt;&apos;Presentation&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_presentation_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_presentation_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        collage_1: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          label: &lt;/span&gt;&lt;span&gt;&apos;Collage&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_collage_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_collage_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  if&lt;/span&gt;&lt;span&gt; (cesdkContainer.current) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    CreativeEditorSDK.&lt;/span&gt;&lt;span&gt;init&lt;/span&gt;&lt;span&gt;(cesdkContainer.current, config).&lt;/span&gt;&lt;span&gt;then&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;instance&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      cesdk &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; instance;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  return&lt;/span&gt;&lt;span&gt; () &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    if&lt;/span&gt;&lt;span&gt; (cesdk) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      cesdk.&lt;/span&gt;&lt;span&gt;dispose&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;}, [cesdkContainer]);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Thanks to the &lt;code&gt;presets.templates&lt;/code&gt;, you can specify all the CE.SDK templates to be made available to users.&lt;br&gt;
Note that the &lt;code&gt;cesdkContainer&lt;/code&gt; variable stores the &lt;a href=&quot;https://legacy.reactjs.org/docs/refs-and-the-dom.html&quot;&gt;React reference&lt;/a&gt; to the div where to mount CE.SDK.&lt;/p&gt;
&lt;p&gt;This is what the CE.SDK template section will look like:&lt;br&gt;
&lt;img alt=&quot;mount&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1866px) 1866px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1866&quot; height=&quot;893&quot; src=&quot;https://img.ly/_astro/mount_iSSUR.webp&quot; srcset=&quot;/_astro/mount_2jvRJt.webp 640w, /_astro/mount_Zh1IIF.webp 750w, /_astro/mount_aEtiJ.webp 828w, /_astro/mount_Z2irfxL.webp 1080w, /_astro/mount_1YRGvg.webp 1280w, /_astro/mount_CvNzu.webp 1668w, /_astro/mount_iSSUR.webp 1866w&quot;&gt;&lt;/p&gt;
&lt;p&gt;As you can see, all eight templates loaded with &lt;code&gt;presets.templates&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&quot;integrate-external-asset-sources-into-cesdk&quot;&gt;Integrate External Asset Sources Into CE.SDK&lt;/h4&gt;
&lt;p&gt;CE.SDK supports external asset sources, meaning you can give your users a vast library of resources to supercharge their creative workflows. Instead of spending time building a repository of images manually, you can provide your users with image resources retrieved dynamically by connecting to services like Unsplash and Airtable. Learn &lt;a href=&quot;https://img.ly/docs/cesdk/react/import-media/asset-panel/customize-c9a4de/&quot;&gt;how to integrate external asset sources in CE.SDK&lt;/a&gt;, or see a live demo based on the &lt;a href=&quot;https://img.ly/showcases/cesdk/unsplash-image-assets/web?c_asset_library=airtable&quot;&gt;Unsplash and Airtable integration&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&quot;add-custom-images-to-cesdk&quot;&gt;Add Custom Images to CE.SDK&lt;/h4&gt;
&lt;p&gt;You can load custom resources and make them available to users with CE.SDK. For example, you would like to add this &lt;a href=&quot;https://www.flaticon.com/free-icon/programming_1208884&quot;&gt;Flaticon&lt;/a&gt; below to the available images in CE.SDK:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;icon&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 512px) 512px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;512&quot; height=&quot;512&quot; src=&quot;https://img.ly/_astro/icon_7W96.webp&quot; srcset=&quot;/_astro/icon_7W96.webp 512w&quot;&gt;&lt;/p&gt;
&lt;p&gt;All you need to do is define a new asset source as explained in the documentation page on &lt;a href=&quot;https://img.ly/docs/cesdk/react/import-media/asset-panel/customize-c9a4de/&quot;&gt;Integrating Custom Resources into CE.SDK&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can achieve this as follows:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;useEffect&lt;/span&gt;&lt;span&gt;(() &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  // path to the local image to load into CE.SDK&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; customImagePath&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; `${&lt;/span&gt;&lt;span&gt;window&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;location&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;protocol&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; &apos;//&apos;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; window&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;location&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span&gt;}/resources/programming.png`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  let&lt;/span&gt;&lt;span&gt; cesdk;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  let&lt;/span&gt;&lt;span&gt; config &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    // loading the business card template as default template&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    initialSceneURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_business_card_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    // loading the external asset sources&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    assetSources: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      // loading a custom image into CE.SDK&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      custom: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        findAssets&lt;/span&gt;&lt;span&gt;: () &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          return&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            assets: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                id: &lt;/span&gt;&lt;span&gt;&apos;custom-image-1&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                type: &lt;/span&gt;&lt;span&gt;&apos;ly.img.image&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                locale: &lt;/span&gt;&lt;span&gt;&apos;en&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                label: &lt;/span&gt;&lt;span&gt;&apos;Programming&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                thumbUri: customImagePath,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                size: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  width: &lt;/span&gt;&lt;span&gt;512&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  height: &lt;/span&gt;&lt;span&gt;512&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                meta: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  uri: customImagePath,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                context: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  sourceId: &lt;/span&gt;&lt;span&gt;&apos;custom&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                credits: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  name: &lt;/span&gt;&lt;span&gt;&apos;Freepik&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  url: &lt;/span&gt;&lt;span&gt;&apos;https://www.flaticon.com/free-icon/programming_1208884?related_id=1208782&amp;#x26;origin=search&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            currentPage: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            total: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            nextPage: &lt;/span&gt;&lt;span&gt;undefined&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    // translating the labels associates with the external asset sources&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    i18n: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      en: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        &apos;libraries.custom.label&apos;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&apos;Custom&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    // initializing CE.SDK with a few templates&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    presets: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      templates: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        business_card_1: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          label: &lt;/span&gt;&lt;span&gt;&apos;Business card&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_business_card_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_business_card_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  if&lt;/span&gt;&lt;span&gt; (cesdkContainer.current) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    CreativeEditorSDK.&lt;/span&gt;&lt;span&gt;init&lt;/span&gt;&lt;span&gt;(cesdkContainer.current, config).&lt;/span&gt;&lt;span&gt;then&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;instance&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      cesdk &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; instance;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  return&lt;/span&gt;&lt;span&gt; () &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    if&lt;/span&gt;&lt;span&gt; (cesdk) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      cesdk.&lt;/span&gt;&lt;span&gt;dispose&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;}, [cesdkContainer]);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;customImagePath&lt;/code&gt; variable stores the path to the local image file &lt;code&gt;programming.png&lt;/code&gt; located in the &lt;code&gt;public/resources&lt;/code&gt; folder of the React project. This variable is used in the &lt;code&gt;findAssets()&lt;/code&gt; function. This function is important because it defines the complete asset source. In other words, you only need one function to implement the custom asset retrieval logic. Note that providing images with labels is useful to make them searchable through the CE.SDK UI.&lt;/p&gt;
&lt;p&gt;Now, users will be able to use the image in their template.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;icon-template-ce-sdk-create-canva-yourself&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1000px) 1000px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1000&quot; height=&quot;474&quot; src=&quot;https://img.ly/_astro/icon-template-ce-sdk-create-canva-yourself_1F6dsS.webp&quot; srcset=&quot;/_astro/icon-template-ce-sdk-create-canva-yourself_SgMiL.webp 640w, /_astro/icon-template-ce-sdk-create-canva-yourself_Z1zWsKX.webp 750w, /_astro/icon-template-ce-sdk-create-canva-yourself_wOR2.webp 828w, /_astro/icon-template-ce-sdk-create-canva-yourself_1F6dsS.webp 1000w&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;tie-it-together&quot;&gt;Tie it Together&lt;/h4&gt;
&lt;p&gt;This is what the final &lt;code&gt;CanvaClone&lt;/code&gt; component looks like:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; &apos;./CanvaClone.css&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; CreativeEditorSDK &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;@cesdk/cesdk-js&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; React, { useEffect, useRef } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;react&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { findAirtableAssets } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;./airtableAssetLibrary&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { findUnsplashAssets } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;./unsplashAssetLibrary&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; CanvaClone&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  // initializing Airtable as default external asset library&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  assetLibrary&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; &apos;airtable&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;}) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; cesdkContainer&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; useRef&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  useEffect&lt;/span&gt;&lt;span&gt;(() &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    const&lt;/span&gt;&lt;span&gt; externalAssetSources&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      ...&lt;/span&gt;&lt;span&gt;(assetLibrary &lt;/span&gt;&lt;span&gt;===&lt;/span&gt;&lt;span&gt; &apos;airtable&apos;&lt;/span&gt;&lt;span&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        airtable: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          findAssets: findAirtableAssets,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          credits: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            name: &lt;/span&gt;&lt;span&gt;&apos;Airtable&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            url: &lt;/span&gt;&lt;span&gt;&apos;https://airtable.com/shr4x8s9jqaxiJxm5/tblSLR9GBwiVwFS8z?backgroundColor=orange&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      ...&lt;/span&gt;&lt;span&gt;(assetLibrary &lt;/span&gt;&lt;span&gt;===&lt;/span&gt;&lt;span&gt; &apos;unsplash&apos;&lt;/span&gt;&lt;span&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        unsplash: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          findAssets: findUnsplashAssets,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          credits: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            name: &lt;/span&gt;&lt;span&gt;&apos;Unsplash&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            url: &lt;/span&gt;&lt;span&gt;&apos;https://unsplash.com/&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          license: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            name: &lt;/span&gt;&lt;span&gt;&apos;Unsplash license (free)&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            url: &lt;/span&gt;&lt;span&gt;&apos;https://unsplash.com/license&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    // path to the local image to load into CE.SDK&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    const&lt;/span&gt;&lt;span&gt; customImagePath&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; `${&lt;/span&gt;&lt;span&gt;window&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;location&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;protocol&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; &apos;//&apos;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; window&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;location&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span&gt;}/resources/programming.png`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    let&lt;/span&gt;&lt;span&gt; cesdk;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    let&lt;/span&gt;&lt;span&gt; config &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      // loading the business card template as default template&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      initialSceneURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_business_card_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      // loading the external asset sources&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      assetSources: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // loading the AirTable or Unsplash asset library&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ...&lt;/span&gt;&lt;span&gt;externalAssetSources,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // loading a custom image into CE.SDK&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        custom: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          findAssets&lt;/span&gt;&lt;span&gt;: () &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              assets: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  id: &lt;/span&gt;&lt;span&gt;&apos;custom-image-1&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  type: &lt;/span&gt;&lt;span&gt;&apos;ly.img.image&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  locale: &lt;/span&gt;&lt;span&gt;&apos;en&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  label: &lt;/span&gt;&lt;span&gt;&apos;Programming&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  thumbUri: customImagePath,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  size: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                    width: &lt;/span&gt;&lt;span&gt;512&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                    height: &lt;/span&gt;&lt;span&gt;512&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  meta: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                    uri: customImagePath,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  context: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                    sourceId: &lt;/span&gt;&lt;span&gt;&apos;custom&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  credits: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                    name: &lt;/span&gt;&lt;span&gt;&apos;Freepik&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                    url: &lt;/span&gt;&lt;span&gt;&apos;https://www.flaticon.com/free-icon/programming_1208884?related_id=1208782&amp;#x26;origin=search&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              currentPage: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              total: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              nextPage: &lt;/span&gt;&lt;span&gt;undefined&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      // translating the labels associates with the external asset sources&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      i18n: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        en: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          &apos;libraries.airtable.label&apos;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&apos;Airtable&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          &apos;libraries.unsplash.label&apos;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&apos;Unsplash&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          &apos;libraries.custom.label&apos;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&apos;Custom&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      // initializing CE.SDK with a few templates&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      presets: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        templates: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          postcard_1: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            label: &lt;/span&gt;&lt;span&gt;&apos;Postcard Design&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_postcard_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_postcard_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          postcard_2: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            label: &lt;/span&gt;&lt;span&gt;&apos;Postcard Tropical&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_postcard_2.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_postcard_2.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          business_card_1: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            label: &lt;/span&gt;&lt;span&gt;&apos;Business card&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_business_card_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_business_card_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          instagram_photo_1: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            label: &lt;/span&gt;&lt;span&gt;&apos;Instagram photo&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_instagram_photo_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_instagram_photo_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          instagram_story_1: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            label: &lt;/span&gt;&lt;span&gt;&apos;Instagram story&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_instagram_story_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_instagram_story_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          poster_1: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            label: &lt;/span&gt;&lt;span&gt;&apos;Poster&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_poster_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_poster_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          presentation_4: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            label: &lt;/span&gt;&lt;span&gt;&apos;Presentation&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_presentation_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_presentation_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          collage_1: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            label: &lt;/span&gt;&lt;span&gt;&apos;Collage&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            scene: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_collage_1.scene`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            thumbnailURL: &lt;/span&gt;&lt;span&gt;`https://cdn.img.ly/packages/imgly/cesdk-js/latest/assets/templates/cesdk_collage_1.png`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    if&lt;/span&gt;&lt;span&gt; (cesdkContainer.current) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      CreativeEditorSDK.&lt;/span&gt;&lt;span&gt;init&lt;/span&gt;&lt;span&gt;(cesdkContainer.current, config).&lt;/span&gt;&lt;span&gt;then&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        (&lt;/span&gt;&lt;span&gt;instance&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          cesdk &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; instance;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    return&lt;/span&gt;&lt;span&gt; () &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      if&lt;/span&gt;&lt;span&gt; (cesdk) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        cesdk.&lt;/span&gt;&lt;span&gt;dispose&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  }, [cesdkContainer, assetLibrary]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  return&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &amp;#x3C;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; className&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;caseContainer&quot;&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      &amp;#x3C;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; className&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;wrapper&quot;&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        &amp;#x3C;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; ref&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;{cesdkContainer} &lt;/span&gt;&lt;span&gt;className&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;cesdk&quot;&lt;/span&gt;&lt;span&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      &amp;#x3C;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; default&lt;/span&gt;&lt;span&gt; CanvaClone;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;findAirtableAssets()&lt;/code&gt; and &lt;code&gt;findUnsplashAssets()&lt;/code&gt; functions come from the &lt;a href=&quot;https://github.com/imgly/cesdk-web-examples/tree/showcases/showcase-custom-asset-libraries&quot;&gt;GitHub repo&lt;/a&gt; associated with the &lt;a href=&quot;https://img.ly/showcases/cesdk/unsplash-image-assets/web?c_asset_library=airtable&quot;&gt;Unsplash and Airtable integration showcase page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;These functions allow CE.SDK to dynamically retrieve resources from online services. A search for images in the CE.SDK UI will perform a query on Airtable or Unsplash and provides them to your users. With just a few lines of code, you are making massive resources available to your users.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Canva has rapidly become one of the most popular graphic design tools. It is so prevalent that users expect similar features in your web and mobile applications. Building a Canva clone from scratch would take months, but with CreativeEditor SDK, it only takes minutes.&lt;/p&gt;
&lt;p&gt;In this article, we used CE.SDK to initialize an advanced design editor in React. We adopted its API to configure and customize a design editor to build a Canva clone. This would not be possible without the intuitive UI offered by CE.SDK and its advanced features, such as &lt;a href=&quot;https://img.ly/showcases/cesdk/placeholders/web?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=howtos&quot;&gt;placeholders&lt;/a&gt; and the possibility to define &lt;a href=&quot;https://img.ly/showcases/cesdk/design-validation/web?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=howtos&quot;&gt;validation rules&lt;/a&gt; to guide your users’ creation process.&lt;/p&gt;
&lt;p&gt;Here we only scratched the surface of what is possible with CE.SDK – you can use its powerful image processing API to implement many more features and make your Canva clone more and more complex. This is only the beginning!&lt;/p&gt;
&lt;p&gt;See how &lt;a href=&quot;https://img.ly/canva-alternative&quot;&gt;IMG.LY compares to Canva Connect API&lt;/a&gt; and check out all the use cases of &lt;a href=&quot;https://img.ly/products/creative-sdk&quot;&gt;CreativeEditor SDK&lt;/a&gt; or &lt;a href=&quot;https://img.ly/forms/contact-sales&quot;&gt;contact sales&lt;/a&gt; to learn more!&lt;/p&gt;</content:encoded><dc:creator>Antonello</dc:creator><media:content url="https://blog.img.ly/2022/07/create-an-app-like-canva.png" medium="image"/><category>How-To</category><category>Canva</category><category>Design Editor</category><category>Creative Editor</category><category>Web Application</category><category>Web Development</category><category>React</category><category>Tutorial</category><category>Learning</category></item></channel></rss>