<?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>Plugin – IMG.LY Blog</title><description>Posts tagged Plugin on the IMG.LY blog.</description><link>https://img.ly/blog/tag/plugin/</link><language>en-us</language><image><url>https://img.ly/apple-touch-icon.png</url><title>Plugin – IMG.LY Blog</title><link>https://img.ly/blog/tag/plugin/</link></image><atom:link href="https://img.ly/blog/tag/plugin/rss.xml" rel="self" type="application/rss+xml"/><generator>Astro</generator><lastBuildDate>Wed, 10 Jun 2026 12:22:22 GMT</lastBuildDate><ttl>60</ttl><item><title>Plugins Part 2: Custom Panels</title><link>https://img.ly/blog/plugins-part-2-customizable-panels/</link><guid isPermaLink="true">https://img.ly/blog/plugins-part-2-customizable-panels/</guid><description>Part 2 of our plugin release gives you the ability to add panels to the CE.SDK UI allowing you to extend the SDK with more complex functionality.</description><pubDate>Wed, 23 Oct 2024 12:53:27 GMT</pubDate><content:encoded>&lt;p&gt;In &lt;a href=&quot;https://img.ly/blog/plugin-release-part-1-customizing-the-ui-quick-actions/&quot;&gt;Part 1 of our series&lt;/a&gt;, we introduced a plugin system for customizing UI elements and quick actions within the CreativeEditor SDK.&lt;/p&gt;
&lt;p&gt;Now, in Part 2, we’re introducing Customizable Panels, a new feature that gives developers even more control over the editor. These panels can handle tasks like guiding users through complex workflows, interacting with external APIs or gathering detailed user input—allowing for anything from simple tweaks to fully custom workflows.&lt;/p&gt;
&lt;p&gt;Let’s take a quick look at where panel plugins fit within the CE.SDK Web UI. To dive in instead, consult the &lt;a href=&quot;https://img.ly/docs/cesdk/js/user-interface/ui-extensions/create-custom-panel-d87b83/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=plugins2&quot;&gt;documentation&lt;/a&gt; or explore one of the examples below.&lt;/p&gt;
&lt;h2 id=&quot;extension-points-in-the-ui&quot;&gt;Extension Points in the UI&lt;/h2&gt;
&lt;p&gt;Before customizing the UI, it’s important to understand the user experience that makes the editor intuitive for creating and editing designs. Below are the key areas of the editor UI where your plugins can be integrated:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&amp;#39;Extension points&amp;#39; refer to the highlighted areas, where developers can add custom actions and panels.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1928px) 1928px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1928&quot; height=&quot;1098&quot; src=&quot;https://img.ly/_astro/CESDK-Editor-UI_2ly9o.webp&quot; srcset=&quot;/_astro/CESDK-Editor-UI_tCzFs.webp 640w, /_astro/CESDK-Editor-UI_zSL1G.webp 750w, /_astro/CESDK-Editor-UI_ZCee4h.webp 828w, /_astro/CESDK-Editor-UI_Z1RGjpB.webp 1080w, /_astro/CESDK-Editor-UI_Z1dvbl2.webp 1280w, /_astro/CESDK-Editor-UI_Z2fggz3.webp 1668w, /_astro/CESDK-Editor-UI_2ly9o.webp 1928w&quot;&gt;&lt;/p&gt;
&lt;p&gt;The quick actions we introduced in part one are used to implement simple one-click actions to edit canvas elements, primarily inside the inspector bar and canvas menus. This release opens up the panel as additional UI element to facilitate more involved features requiring UI interactions beyond a simple click.&lt;/p&gt;
&lt;h2 id=&quot;new-possibilities-with-panels&quot;&gt;New Possibilities with Panels&lt;/h2&gt;
&lt;p&gt;Panels serve as customizable UI elements that provide plenty of room for your plugin’s unique requirements. Here’s how developers can utilize them:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Guide Users Through Workflows&lt;/strong&gt;&lt;br&gt;
Implement panels to assist users in navigating workflows or controlling specific plugin settings, tailoring the editor experience to meet individual needs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Complex Interaction with External AI or Services&lt;/strong&gt;&lt;br&gt;
While it’s possible to connect to third-party service using quick actions, some use cases require more user interaction. To support these cases you can now create panel UIs that connect with third-party APIs to gather data or trigger processes, such as AI-driven design tools or content generation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Collect Detailed User Input&lt;/strong&gt;&lt;br&gt;
Use panels to collect more complex input from users, such as advanced export options, template customization, theming or batching design adjustments.&lt;/p&gt;
&lt;p&gt;These new capabilities round out our goal of empowering developers to shape CE.SDK themselves, tailoring the user experience to fit perfectly with their particular use case.&lt;/p&gt;
&lt;h2 id=&quot;example-plugins&quot;&gt;Example Plugins&lt;/h2&gt;
&lt;p&gt;To demonstrate the potential of panels, we’ve developed three example plugins that showcase different approaches to extending the CreativeEditor SDK’s functionality.&lt;/p&gt;
&lt;p&gt;Plugins can be grouped into two categories:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Functionality-Enhancing Plugins:&lt;/strong&gt; These integrate external services, assets, or custom code. For example, the QR embed plugin adds a feature by interacting with a third-party API.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Custom Editor Behavior Plugins:&lt;/strong&gt; These plugins interact directly with the CE.SDK Engine API, enhancing the SDK’s &lt;em&gt;existing&lt;/em&gt; functionality by introducing new modes of interaction or extending the user interface.&lt;/p&gt;
&lt;h3 id=&quot;qr-code-embed-plugin&quot;&gt;&lt;a href=&quot;https://img.ly/showcases/cesdk/qr-code-plugin/web?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=plugins2&quot;&gt;QR Code Embed Plugin&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The first category of plugins is exemplified by &lt;a href=&quot;https://img.ly/showcases/cesdk/qr-code-plugin/web?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=plugins2&quot;&gt;this QR plugin&lt;/a&gt;, which add the ability to embed a QR code directly in the canvas. The plugin interacts with a third-party QR code generator API and displays a panel where users can enter a URL and customize the color of the QR code.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/plugins-ii/qr-plugin.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;The next two examples illustrate plugins from the second category, which interface with the Engine API to enhance CE.SDK functionality:&lt;/p&gt;
&lt;h3 id=&quot;export-options-panel&quot;&gt;&lt;a href=&quot;https://img.ly/showcases/cesdk/export-options/web?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=plugins2&quot;&gt;Export Options Panel&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://img.ly/showcases/cesdk/export-options/web?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=plugins2&quot;&gt;This showcase&lt;/a&gt; provides a reference implementation for a panel that allows users to configure export options including export formats and file types, such as PNG, JPEG, or PDF, which pages to export and at what quality and resolution. A corresponding showcase is also available for &lt;a href=&quot;https://img.ly/showcases/cesdk/video-export-options/web?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=plugins2&quot;&gt;video scenes&lt;/a&gt;, allowing users to control resolution and quality of the exported video file.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/plugins-ii/export.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h3 id=&quot;template-adaptation-ui&quot;&gt;&lt;a href=&quot;https://img.ly/showcases/cesdk/form-based-template-adoption/web?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=plugins2&quot;&gt;Template Adaptation UI&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://img.ly/showcases/cesdk/form-based-template-adoption/web?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=plugins2&quot;&gt;In this example&lt;/a&gt;, we add a panel that collects user input via a form, which is then used to dynamically adapt a design template. Users can input text, select colors, or upload images, and the template is modified based on these choices. This demonstrates how panels can streamline workflows, making it easier for users to customize templates to fit their specific needs.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/plugins-ii/Form-templates.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h2 id=&quot;outlook&quot;&gt;Outlook&lt;/h2&gt;
&lt;p&gt;With the release of panels, we are advancing our mission to empower developers to fully customize and extend the CreativeEditor SDK. These new features for creating sophisticated, interactive plugins will unlock exciting opportunities for innovation, whether integrating external services, designing dynamic user interfaces, or automating complex workflows.&lt;/p&gt;
&lt;p&gt;We encourage you to explore the power of panels in your own projects. Visit our &lt;a href=&quot;https://img.ly/docs/cesdk/js/user-interface/ui-extensions-d194d1/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=plugins2&quot;&gt;plugin documentation&lt;/a&gt; to get started, and let us know what you’re building! As always, we’re here to support your journey in redefining creative editing.&lt;/p&gt;
&lt;p&gt;Stay tuned for more updates, and feel free to &lt;a href=&quot;https://img.ly/forms/contact-sales?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=plugins2&quot;&gt;contact us&lt;/a&gt; if you have any questions or need assistance.&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/plugins_part2.jpg" medium="image"/><category>SDK</category><category>CE.SDK</category><category>Plugin</category><category>Templating</category></item><item><title>Plugin Release Part 1: Customizing the UI &amp; Quick Actions</title><link>https://img.ly/blog/plugin-release-part-1-customizing-the-ui-quick-actions/</link><guid isPermaLink="true">https://img.ly/blog/plugin-release-part-1-customizing-the-ui-quick-actions/</guid><description>Customize UI elements, add quick actions like background removal, and create unique features to enhance your creative editor.</description><pubDate>Tue, 13 Aug 2024 07:16:36 GMT</pubDate><content:encoded>&lt;p&gt;At IMG.LY we are driven by a commitment to empower creativity for end users worldwide, we do so by giving our customers the tools to build the ideal creative experience for their customers. For this reason, we are shaping our CreativeEditor SDK to be built for modification and extension. IMG.LY’s customers are not limited by our roadmap. To the contrary, plugins allow customers to not only extend editor functionality, but to also benefit from third-party plugins and open source development based on IMG.LY’s CE.SDK. This new plugin system is designed to give our customers unparalleled autonomy, allowing them to tailor the user experience to their specific needs and accelerate product innovation.&lt;/p&gt;
&lt;p&gt;This first release of CE.SDK’s plugin API enables you to &lt;a href=&quot;https://img.ly/docs/cesdk/js/user-interface/overview-41101a/&quot;&gt;customize the UI&lt;/a&gt; at certain extension points and locations, as well as change the order and location of UI elements. At these points you will not only be able to change the appearance of existing features but add entirely custom features in the form of quick actions - simple one-click actions to edit canvas elements like removing an image background or vectorizing a graphic.&lt;/p&gt;
&lt;h2 id=&quot;extension-points-in-the-ui&quot;&gt;Extension Points in the UI&lt;/h2&gt;
&lt;p&gt;Before customizing the UI, it is crucial to understand the user experience we have designed to facilitate intuitive manipulation and creation of a range of designs. The following key locations in the editor UI are extension points for your plugins. We provide a visual example for the type of customization possible at each location:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1886px) 1886px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1886&quot; height=&quot;1289&quot; src=&quot;https://img.ly/_astro/plugins-customize-UI-1_1WwEQx.webp&quot; srcset=&quot;/_astro/plugins-customize-UI-1_Z1I0MaW.webp 640w, /_astro/plugins-customize-UI-1_Z2DaS7.webp 750w, /_astro/plugins-customize-UI-1_1CWmE7.webp 828w, /_astro/plugins-customize-UI-1_Z20e6zz.webp 1080w, /_astro/plugins-customize-UI-1_2hEL6k.webp 1280w, /_astro/plugins-customize-UI-1_1ufiCa.webp 1668w, /_astro/plugins-customize-UI-1_1WwEQx.webp 1886w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Canvas&lt;/em&gt;: The core interaction area for design content, controlled by the Creative Engine.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dock&lt;/em&gt;: The primary entry point for user interactions not directly related to the selected block. It is primarily, though not exclusively, used to open panels with asset libraries or add elements to the canvas. This release allows you to customize the buttons in the dock. The customization of panels will be possible following the next release.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Dock&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 258px) 258px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;258&quot; height=&quot;676&quot; src=&quot;https://img.ly/_astro/Dock_Z1ORYKF.webp&quot; srcset=&quot;/_astro/Dock_Z1ORYKF.webp 258w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Canvas Menu&lt;/em&gt;: Provides block-specific settings and actions such as deletion or duplication. Here, we customized the menu by adding a background removal action and actions for layer management.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Canvas Menu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 960px) 960px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;960&quot; height=&quot;280&quot; src=&quot;https://img.ly/_astro/Oncanvas-Menu_Zzogkv.webp&quot; srcset=&quot;/_astro/Oncanvas-Menu_Z23CDqt.webp 640w, /_astro/Oncanvas-Menu_Z2gB3NA.webp 750w, /_astro/Oncanvas-Menu_Z1MfTtJ.webp 828w, /_astro/Oncanvas-Menu_Zzogkv.webp 960w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Inspector Bar&lt;/em&gt;: Main location for block-specific functionality. Any action or setting available for the currently selected block that does not appear in the canvas menu will be shown here.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Inspector Bar&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 960px) 960px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;960&quot; height=&quot;400&quot; src=&quot;https://img.ly/_astro/Inspector-Bar_ZsBtdF.webp&quot; srcset=&quot;/_astro/Inspector-Bar_Z1TsDJC.webp 640w, /_astro/Inspector-Bar_23JCT5.webp 750w, /_astro/Inspector-Bar_7L8od.webp 828w, /_astro/Inspector-Bar_ZsBtdF.webp 960w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Navigation Bar&lt;/em&gt;: For actions affecting browser navigation and global scene effects such as zoom or undo/redo. The customization below shows more advanced navigation patterns for multi-steps designs that can be implemented via plugins.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 960px) 960px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;960&quot; height=&quot;274&quot; src=&quot;https://img.ly/_astro/Navigation-Bar-6_Z14NSI7.webp&quot; srcset=&quot;/_astro/Navigation-Bar-6_jX5Su.webp 640w, /_astro/Navigation-Bar-6_ZqpneW.webp 750w, /_astro/Navigation-Bar-6_ZtGPrh.webp 828w, /_astro/Navigation-Bar-6_Z14NSI7.webp 960w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Canvas Bar&lt;/em&gt;: For actions affecting the canvas or scene as a whole, such as adding pages. This is an alternative place for actions such as zoom or redo/undo.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Canvas Bar&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 960px) 960px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;960&quot; height=&quot;280&quot; src=&quot;https://img.ly/_astro/Canvas-Bar_NlMqf.webp&quot; srcset=&quot;/_astro/Canvas-Bar_iYQAK.webp 640w, /_astro/Canvas-Bar_2wVIrU.webp 750w, /_astro/Canvas-Bar_28L6Yh.webp 828w, /_astro/Canvas-Bar_NlMqf.webp 960w&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;customizing-ui-components&quot;&gt;Customizing UI Components&lt;/h3&gt;
&lt;p&gt;You can control the order and layout of components within these locations using Order APIs, which allow you to add, remove, or reorder components. We also provide special layout components like separators and spacers to help organize your custom components effectively.&lt;/p&gt;
&lt;h3 id=&quot;registering-new-components&quot;&gt;Registering New Components&lt;/h3&gt;
&lt;p&gt;Beyond predefined components, you can register your own custom components using builder elements such as buttons, dropdowns, and inputs. This enables you to integrate unique behaviors and logic into the web editor seamlessly. This is how you would implement custom “quick actions” such as background removal&lt;/p&gt;
&lt;h3 id=&quot;feature-level-control&quot;&gt;Feature-level Control&lt;/h3&gt;
&lt;p&gt;In addition to defining custom components, you can use the new &lt;a href=&quot;https://img.ly/docs/cesdk/js/user-interface/customization/disable-or-enable-f058e2/&quot;&gt;feature API&lt;/a&gt; to control components on the feature level based on the current context. For instance, you might want to hide the duplicate and delete button for a new “Avatar” block type, you can use the Feature API to selectively disable these components for that specific block.&lt;/p&gt;
&lt;h2 id=&quot;examples-background-removal-and-cut-out-lines&quot;&gt;Examples: Background Removal and Cut-out lines&lt;/h2&gt;
&lt;p&gt;A straightforward example of a plugin that extends the default editor UI with a quick action that acts on an element is our &lt;a href=&quot;https://img.ly/showcases/cesdk/background-removal/web?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=plugins1&quot;&gt;image background removal plugin.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here, we customized the canvas menu of image elements to prominently display a “BG Removal” button acting on the currently selected block. To not place so much emphasis on background removal, this feature could have been placed in the inspector bar instead.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/plugin-release/background-removal-plugin-editor.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;The next example is an outlook on what is to come.&lt;/p&gt;
&lt;p&gt;Sometimes a plugin manipulates an element but requires additional inputs from the users so that a single button click does not suffice. Such is the case for our &lt;a href=&quot;https://img.ly/showcases/cesdk/cutout-lines/web?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=plugins1&quot;&gt;cut-out lines plugin&lt;/a&gt;, allowing users to create custom cut-out or perforated line shapes on the canvas. The button is placed in the dock and a panel opens on click where the user can select shapes for the cut-out or opt for a dynamic shape that is generated from the selection.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/plugin-release/cutout-lines-dock.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h3 id=&quot;get-started&quot;&gt;Get Started&lt;/h3&gt;
&lt;p&gt;Start developing your own plugins by visiting our &lt;a href=&quot;https://img.ly/docs/cesdk/js/user-interface/ui-extensions-d194d1/&quot;&gt;plugin documentation&lt;/a&gt;. We’re excited to see what you’ll build!&lt;/p&gt;
&lt;h2 id=&quot;whats-next&quot;&gt;What’s Next&lt;/h2&gt;
&lt;p&gt;The next plugin release will allow you to customize the UI with panels, enabling the extension of increasingly complex behaviors that require additional user input or interaction with external services.&lt;/p&gt;
&lt;p&gt;Stay tuned for more updates, and don’t hesitate to &lt;a href=&quot;https://img.ly/forms/contact-sales?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=plugins1&quot;&gt;reach out&lt;/a&gt; if you have any questions or need assistance. Together, we are redefining the future of creative editing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thank you for reading. Join 3,000+ creative professionals—&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 for updates on new features, plugins, and early access.&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Jan</dc:creator><media:content url="https://blog.img.ly/2024/08/plugins-design-editor-integrate-m.jpg" medium="image"/><category>Plugin</category><category>CE.SDK</category><category>Background Removal</category><category>Company</category></item><item><title>Background Removal in the Browser Using ONNX Runtime with WebGPU</title><link>https://img.ly/blog/browser-background-removal-using-onnx-runtime-webgpu/</link><guid isPermaLink="true">https://img.ly/blog/browser-background-removal-using-onnx-runtime-webgpu/</guid><description>Achieve 20x Faster Background Removal in the Browser</description><pubDate>Tue, 11 Jun 2024 16:26:17 GMT</pubDate><content:encoded>&lt;p&gt;TL;DR: Using ONNX Runtime with WebGPU and WebAssembly leads to 20x speedup over multi-threaded and 550x speedup over single-threaded CPU performance. Thus achieving interactive speeds for state-of-the-art background removal directly in the browser.&lt;/p&gt;
&lt;p&gt;Removing background from an image is a typical job to be done in creative editing. We have come a long way from manually knocking out the background from an image to full automation with Neural Networks.&lt;/p&gt;
&lt;p&gt;Most state-of-the-art background removal solutions work by offloading the task to the server with a GPU as it was simply infeasible to run the NN on the client.&lt;/p&gt;
&lt;p&gt;However, running background removal directly in the browser offers several advantages over server-side processing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reduced server load and infrastructure costs by offloading heavy lifting to the client.&lt;/li&gt;
&lt;li&gt;Enhanced scalability by distributing the workload across client devices.&lt;/li&gt;
&lt;li&gt;Easier compliance with data protection and security policies by not transferring data across a network to a server.&lt;/li&gt;
&lt;li&gt;Offline processing without needing a reliable internet connection.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It caters to a wide range of use cases, including but not limited to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;E-commerce applications&lt;/em&gt; that need to remove backgrounds from product images in real time.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Image editing applications&lt;/em&gt; that require background removal capabilities for enhancing user experience.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Web-based graphic design tools&lt;/em&gt; that aim to simplify the creative process with in-browser background removal.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In general, two factors influence the feasibility of running background removal directly on the client.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The execution performance, and&lt;/li&gt;
&lt;li&gt;the download size of the Neural Network.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The performance or overall runtime is the major factor to be useful in interactive applications, if a user has to wait several minutes or hours for a neural network to execute, this is in many cases far too long in terms of good user experience. From experience, there are three factors to consider.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The initial first-time execution. The major factor is that neural networks come with the drawback of generally being several MB to GB in size, thus the time to download the neural network into the browser cache is considerable. In subsequent browser page reloads this has no impact anymore.&lt;/li&gt;
&lt;li&gt;The neural network or session initialization time, cannot be cached and has to run with every reload of the page in the browser.&lt;/li&gt;
&lt;li&gt;The neural network or session inference time, largely depends on the longest path inside the neural network and most importantly the execution time of each operator in the neural network.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;towards-real-time-background-removal-in-the-browser&quot;&gt;Towards Real-time Background Removal in the Browser&lt;/h3&gt;
&lt;p&gt;Neural networks are commonly trained in frameworks like PyTorch, which is a neural network library for Python, as such not usable directly in the browser. The best option to run neural networks directly in the browser is converting the neural network into the &lt;strong&gt;Open Neural Network Exchange (ONNX)&lt;/strong&gt; format, which is a widely supported standardized format by Microsoft used extensively in the industry.&lt;/p&gt;
&lt;p&gt;These ONNX-formatted neural networks can then be reconverted into a platform-specific format or directly executed by a supported runtime.&lt;/p&gt;
&lt;p&gt;The ONNX Runtime by Microsoft is a high-performance inference engine designed to run ONNX models across various platforms and languages. One notable feature is &lt;a href=&quot;https://onnxruntime.ai/docs/tutorials/web/build-web-app.html&quot;&gt;ONNX Runtime Web&lt;/a&gt;, which allows JavaScript developers to execute ONNX models directly in the browser. ONNX Runtime Web offers several execution providers for hardware acceleration. For instance, its WebAssembly execution provider enhances CPU execution performance using multiple Web Workers and SIMD instructions.&lt;/p&gt;
&lt;p&gt;More importantly, starting from version 1.7.0, ONNX Runtime Web includes official support for the WebGPU execution provider. WebGPU is a modern web API that enables developers to utilize GPU power for high-performance computations, offering a significant performance boost over CPU-based in-browser machine learning. WebGPU support has been available by default since Chrome 113 and Edge 113 on Mac, Windows, and ChromeOS, and Chrome 121 on Android. For the latest browser support updates, you can track them &lt;a href=&quot;https://github.com/gpuweb/gpuweb/wiki/Implementation-Status&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;implementation-details&quot;&gt;Implementation Details&lt;/h3&gt;
&lt;p&gt;For the implementation of the open-source package &lt;a href=&quot;https://github.com/imgly/background-removal-js&quot;&gt;@imgly/background-removal-js&lt;/a&gt;, we started the journey with a neural network implementation in PyTorch written in Python. The network was then converted to ONNX. You can see our &lt;a href=&quot;https://img.ly/showcases/cesdk/background-removal/web&quot;&gt;live showcase&lt;/a&gt; here.&lt;/p&gt;
&lt;p&gt;The original model was using 32-bit floating point (fp32) precision, which is fine, but results in a file size of 168 MB after converting it to ONNX. As mentioned earlier, the size of the network has a large impact on perceived first-time execution performance as the download time tends to be longer than the execution time, but more to that later.&lt;/p&gt;
&lt;p&gt;To reduce the size of the model, we converted the model to use fp16 (16-bit floating point) and QUINT8 (Quantized 8-bit) datatypes. Thus, effectively reducing the size to half (84MB) and a fourth (42MB) of the original size. Additionally to the download size, the operators used will be converted corresponding to the datatype and different data types and depending on the hardware may lead to speed improvements or even deteriorating due to specialized hardware being used or not being present.&lt;/p&gt;
&lt;p&gt;Note, that while that sounds great, the conversion has a potential negative impact on the quality of the output as we are removing information in the neural networks and since we are working with images, artifacts might become visible and the quality of the resulting background mask is reduced.&lt;/p&gt;
&lt;h2 id=&quot;evaluation&quot;&gt;Evaluation&lt;/h2&gt;
&lt;p&gt;When dealing with neural networks in the browser we can identify three different scenarios&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;First Use&lt;/li&gt;
&lt;li&gt;First Run&lt;/li&gt;
&lt;li&gt;Consecutive Runs&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first-use scenario occurs when the web application is started the first time. The neural network has to be downloaded from the server into the browser sandbox, as neural networks are several 10-1000 MB in size this is not neglectable.&lt;/p&gt;
&lt;p&gt;The first run assumes that the neural network is already present in the browser cache, however, when the neural network ought to be used, the network has to initialize before execution.&lt;/p&gt;
&lt;p&gt;In consecutive runs, the neural network is already in memory and the execution time is largely determined by the neural network depth and operators only.&lt;/p&gt;
&lt;h3 id=&quot;first-use--neural-network-download&quot;&gt;First Use – Neural Network Download&lt;/h3&gt;
&lt;p&gt;While download or time is a large factor in the first-time execution time, this is largely dependent on the available network bandwidth, as such it is not part of the evaluation but in order to get an idea here are the expected download times for the fp32 (168MB) and fp16 (84MB) neural network subject to various common network bandwidth:&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Network Bandwidth&lt;/th&gt;&lt;th&gt;Filesize&lt;/th&gt;&lt;th&gt;Download Time&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;10 Mbps&lt;/td&gt;&lt;td&gt;84 MB&lt;/td&gt;&lt;td&gt;67s s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;100 Mbps&lt;/td&gt;&lt;td&gt;84 MB&lt;/td&gt;&lt;td&gt;6.7 s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1 Gbps&lt;/td&gt;&lt;td&gt;84 MB&lt;/td&gt;&lt;td&gt;0.67 s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10 Gbps&lt;/td&gt;&lt;td&gt;84 MB&lt;/td&gt;&lt;td&gt;0.067&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Network Bandwidth&lt;/th&gt;&lt;th&gt;Filesize&lt;/th&gt;&lt;th&gt;Download Time&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;10 Mbps&lt;/td&gt;&lt;td&gt;168 MB&lt;/td&gt;&lt;td&gt;134.4 s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;100 Mbps&lt;/td&gt;&lt;td&gt;168 MB&lt;/td&gt;&lt;td&gt;13.4 s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1 Gbps&lt;/td&gt;&lt;td&gt;168 MB&lt;/td&gt;&lt;td&gt;1.34 s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10 Gbps&lt;/td&gt;&lt;td&gt;168 MB&lt;/td&gt;&lt;td&gt;0.13 s&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Based on the assumption that the median download bandwidth is ~100 Mbps, we see that it’s in the 5-15 second range.&lt;/p&gt;
&lt;h3 id=&quot;first-run--neural-network-initialization--compilation&quot;&gt;First Run – Neural Network Initialization / Compilation&lt;/h3&gt;
&lt;p&gt;Before the neural network can be executed it has to be initialized. Initialization includes several execution provider-specific steps. Most prominent are the time to upload or convert the data to the execution provider and execution provider-specific ONNX graph optimization passes. This all adds to the first run experience. We have evaluated the average session initialization time for the CPU (WASM) and WebGPU provider on a MacBook Pro 13” from 2024 with an Apple M3 Max 16 cores to get an idea of the general impact on first run execution time:&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Device&lt;/th&gt;&lt;th&gt;Datatype&lt;/th&gt;&lt;th&gt;Session Initialization Time&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;CPU (WASM)&lt;/td&gt;&lt;td&gt;fp32&lt;/td&gt;&lt;td&gt;~320ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CPU (WASM)&lt;/td&gt;&lt;td&gt;fp16&lt;/td&gt;&lt;td&gt;~320ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;WebGPU&lt;/td&gt;&lt;td&gt;fp32&lt;/td&gt;&lt;td&gt;~400ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;WebGPU&lt;/td&gt;&lt;td&gt;fp16&lt;/td&gt;&lt;td&gt;~200ms&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Note, that session initialization is not negligible and adds significant runtime overhead and might be subject to additional optimization possibilities like caching the optimized model.&lt;/p&gt;
&lt;h3 id=&quot;consecutive-runs--neural-network-execution&quot;&gt;Consecutive Runs – Neural Network Execution&lt;/h3&gt;
&lt;p&gt;Independent of the download and initialization time, we evaluated different execution providers on a MacBook Pro 13” from 2024 with an Apple M3 Max 16 cores. While this is top-end consumer hardware, the general trends will probably apply to various hardware configurations. As a reference, we choose the single thread performance with the neural network running on the CPU with 1 worker thread and SIMD disabled.&lt;/p&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Device&lt;/th&gt;&lt;th&gt;SIMD&lt;/th&gt;&lt;th&gt;Threads&lt;/th&gt;&lt;th&gt;Datatype&lt;/th&gt;&lt;th&gt;Session Runtime&lt;/th&gt;&lt;th&gt;Speedup&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;CPU (WASM)&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;fp32&lt;/td&gt;&lt;td&gt;~53000 ms&lt;/td&gt;&lt;td&gt;1.0 x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CPU (WASM)&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;fp32&lt;/td&gt;&lt;td&gt;~6300 ms&lt;/td&gt;&lt;td&gt;8.4 x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CPU (WASM)&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;fp32&lt;/td&gt;&lt;td&gt;~15000 ms&lt;/td&gt;&lt;td&gt;3.5 x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CPU (WASM)&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;fp32&lt;/td&gt;&lt;td&gt;~2000 ms&lt;/td&gt;&lt;td&gt;26.5 x&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The data above reveals that running the neural network without any acceleration such as SIMD and threading in the browser results in almost 53s runtime, and as such is for most interactive use cases too slow to use. Due to the optimizations of the ONNX Runtime that uses SIMD and threads, we can achieve an overall speedup of roughly ~26 times compared to the baseline performance. Thus decreasing the session runtime to around 2s and making it usable for interactive applications.&lt;/p&gt;
&lt;p&gt;As mentioned before, we neglected the download time and size of the network. Leveraging the fp16 model compression, we re-ran the benchmarks and got similar results as before, but with half the bandwidth required to download the network for the first time application. The general visual performance of the fp16 and fp32 is similar or visually not perceivable. The quint8 model led to artifacts and as such unusable for visual processing, thus we excluded from the following benchmark.&lt;/p&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Device&lt;/th&gt;&lt;th&gt;SIMD&lt;/th&gt;&lt;th&gt;Threads&lt;/th&gt;&lt;th&gt;Datatype&lt;/th&gt;&lt;th&gt;Session Runtime&lt;/th&gt;&lt;th&gt;Speedup&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;CPU (WASM)&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;fp16&lt;/td&gt;&lt;td&gt;~55000 ms&lt;/td&gt;&lt;td&gt;1.0 x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CPU (WASM)&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;fp16&lt;/td&gt;&lt;td&gt;~7300 ms&lt;/td&gt;&lt;td&gt;7.2 x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CPU (WASM)&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;fp16&lt;/td&gt;&lt;td&gt;~15000 ms&lt;/td&gt;&lt;td&gt;3.5 x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CPU (WASM)&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;fp16&lt;/td&gt;&lt;td&gt;~2300 ms&lt;/td&gt;&lt;td&gt;23.9 x&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The results are a little worse than the fp32 version, which might be because the fp16 datatype has no direct specialized hardware in modern CPUs like the M3 Max CPU, and as such additional fp16 to fp32 conversion operations have to be performed.&lt;/p&gt;
&lt;p&gt;Our final benchmark measures the WebGPU performance, which led to the following impressive results. To have a fair comparison and understanding of the impact of the WebGPU technology, we compare it with the best CPU version with 16 threads and SIMD enabled with the fp32 model, which was around ~2 s.&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Device&lt;/th&gt;&lt;th&gt;SIMD&lt;/th&gt;&lt;th&gt;Threads&lt;/th&gt;&lt;th&gt;Datatype&lt;/th&gt;&lt;th&gt;Session Runtime&lt;/th&gt;&lt;th&gt;Speedup&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;WebGPU&lt;/td&gt;&lt;td&gt;Not applicable&lt;/td&gt;&lt;td&gt;Not applicable&lt;/td&gt;&lt;td&gt;fp32&lt;/td&gt;&lt;td&gt;~120ms&lt;/td&gt;&lt;td&gt;16.6 x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;WebGPU&lt;/td&gt;&lt;td&gt;Not applicable&lt;/td&gt;&lt;td&gt;Not applicable&lt;/td&gt;&lt;td&gt;fp16&lt;/td&gt;&lt;td&gt;~100ms&lt;/td&gt;&lt;td&gt;20.0 x&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The WebGPU performance varies around &lt;strong&gt;16 to 20 x&lt;/strong&gt; improvements over the best CPU execution time. The GPU has specialized hardware for fp16 instructions, as such the model performs better than the fp32 model. Also, note that the session initialization time is also reduced due to half the required bandwidth to upload the network data to the GPU.&lt;/p&gt;
&lt;p&gt;Therefore, the first run of the network will take ~300 ms and consecutive runs will be ~100 ms, leading to near real-time performance in the browser.&lt;/p&gt;
&lt;p&gt;Note, that the WebGPU performance is an astonishing &lt;strong&gt;550 times faster&lt;/strong&gt; than the single thread, with no SIMD performance.&lt;/p&gt;
&lt;p&gt;Try the live implementation in our &lt;a href=&quot;https://img.ly/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=background-removal-onnx&quot;&gt;background removal showcase&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;WebGPU is a major leap in establishing the browser as a factor to be reckoned with as a true Application platform. With &lt;a href=&quot;https://IMG.LY/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=background-removal-onnx&quot;&gt;IMG.LY&lt;/a&gt;, we are striving to leverage modern technology to make design tools accessible, this includes on-device execution, on-premise, but also on-cloud execution of design tools leveraging neural networks.&lt;/p&gt;
&lt;p&gt;As a next step, we will port background removal to all our supported platforms, ONNX Runtime seems the best choice, as it is already available for all the potential platforms we support.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/onnx/bg-removal.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Furthermore, we are evaluating the feasibility of in-browser background removal for videos to be included with our video-editing suits.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://img.ly/showcases/cesdk/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=background-removal-onnx&quot;&gt;Try our tools today&lt;/a&gt; to see how we help bring unique creative editing experiences to any application. Or &lt;a href=&quot;https://img.ly/forms/contact-sales/?utm_source=imgly&amp;#x26;utm_medium=blog&amp;#x26;utm_campaign=background-removal-onnx&quot;&gt;contact us&lt;/a&gt; to discuss your project.&lt;/p&gt;</content:encoded><dc:creator>Daniel</dc:creator><dc:creator>Emma</dc:creator><media:content url="https://blog.img.ly/2024/06/onnx-runtime-imgly.jpg" medium="image"/><category>Plugin</category><category>App Development</category><category>Image Processing</category><category>Insights</category></item><item><title>Unleash Creativity with CE.SDK’s New Plugin System</title><link>https://img.ly/blog/img-ly-sdk-plugin-system/</link><guid isPermaLink="true">https://img.ly/blog/img-ly-sdk-plugin-system/</guid><description>Teaser: Our new Plugin System empowers customization and creativity with one-click features, smart design tools, and generative AI.</description><pubDate>Mon, 03 Jun 2024 08:42:25 GMT</pubDate><content:encoded>&lt;p&gt;At IMG.LY, we have always believed that a superb design editor should be effortlessly customizable and extensible. We are thrilled to roll out a brand-new Plugin system for CE.SDK in the upcoming months—to take creative editing and feature development to the next level.&lt;/p&gt;
&lt;p&gt;Starting with one-click features like background removal or vectorizers, smart design tools like QR codes or subtitle generators, and deeply interactive features like generative AI for text and images; all these tools can be used or built by customers soon.&lt;/p&gt;
&lt;p&gt;Additionally, our upcoming Plugin system will bring you unparalleled autonomy by making feature development for our SDK accessible and offering extensive options to reconfigure our editor’s UI.&lt;/p&gt;
&lt;p&gt;Start exploring our Plugin System rollout now to immediately benefit from upcoming features.&lt;/p&gt;
&lt;h2 id=&quot;built-for-modification&quot;&gt;Built for Modification&lt;/h2&gt;
&lt;p&gt;Let’s dive deep into some of the opportunities CE.SDK plugins help unlock.&lt;/p&gt;
&lt;h3 id=&quot;unlocking-the-ai-revolution&quot;&gt;Unlocking the AI Revolution&lt;/h3&gt;
&lt;p&gt;While the AI transformation is already fully underway, much of the tech is still not very accessible to product builders, often requiring deep technical knowledge to get started. At the same time, AI features become significantly more valuable when integrated with other editing functionalities in workflows or automation. With our plugins, we aim to make it effortless to leverage innovation and put it to use.&lt;/p&gt;
&lt;h3 id=&quot;boosting-customer-autonomy&quot;&gt;Boosting Customer Autonomy&lt;/h3&gt;
&lt;p&gt;Key to our success is providing maximum flexibility and autonomy to our customers about product decisions. Ultimately, you shouldn’t depend on our product roadmap; rather, you should be able to add features when you like. While our SDKs are already highly configurable, plugins allow tailoring the whole user experience not only on a look &amp;#x26; feel level but through custom functionalities and editing experiences.&lt;/p&gt;
&lt;h3 id=&quot;accelerate-product-expansion&quot;&gt;Accelerate Product Expansion&lt;/h3&gt;
&lt;p&gt;Many ecosystems witnessed explosive growth in added value to the user after releasing plugin mechanisms. Currently, only IMG.LY core developers can contribute to the SDK. We have started to extend this to solution engineers and even designers on our team who don’t have much knowledge of the inner workings of the SDK. Ultimately, we will push this more and more into a community of contributors, making the community’s innovation accessible to everyone.&lt;/p&gt;
&lt;h2 id=&quot;key-concepts&quot;&gt;Key Concepts&lt;/h2&gt;
&lt;p&gt;Three important concepts have driven the development of our Plugins:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Customizable Menu Bars&lt;/strong&gt;&lt;br&gt;
We are extending our API so that it allows easy hooking into various parts of the UI. Our editor has key components like the inspector, toolbar, and on-canvas menu. These are now all accessible through an API, so you can hook your feature anywhere in the editor.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Easily hook your features anywhere in the editor.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1920px) 1920px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1920&quot; height=&quot;1080&quot; src=&quot;https://img.ly/_astro/key-concept-plugins-sdk-1_Z7C57k.webp&quot; srcset=&quot;/_astro/key-concept-plugins-sdk-1_Z1cMp6H.webp 640w, /_astro/key-concept-plugins-sdk-1_1mLpHS.webp 750w, /_astro/key-concept-plugins-sdk-1_1vy6cU.webp 828w, /_astro/key-concept-plugins-sdk-1_Z2cAeFG.webp 1080w, /_astro/key-concept-plugins-sdk-1_Z13AeBp.webp 1280w, /_astro/key-concept-plugins-sdk-1_2dEjpa.webp 1668w, /_astro/key-concept-plugins-sdk-1_Z7C57k.webp 1920w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UI Building Blocks to Provide Consistency&lt;/strong&gt;&lt;br&gt;
To reach a high level of consistency and speed up time for development, we will be providing out-of-the-box UI components such as buttons, sliders, text inputs, etc.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Escape Hatches&lt;/strong&gt;&lt;br&gt;
From experience, we know that sometimes unique functionality needs unique solutions, so we have added escape hatches to add custom elements via HTML whenever needed.&lt;/p&gt;
&lt;h2 id=&quot;what-can-you-build-with-our-plugin-system&quot;&gt;What Can You Build with our Plugin System?&lt;/h2&gt;
&lt;p&gt;Let’s explore some potential use cases of the plugin system.&lt;/p&gt;
&lt;h3 id=&quot;custom-actions&quot;&gt;Custom Actions&lt;/h3&gt;
&lt;p&gt;Adding custom actions is a great option to make simple third-party APIs accessible within the editor. This can be &lt;strong&gt;one-click edits&lt;/strong&gt; such as background removal, vectorizers, or auto-enhancement for images. You can also add custom actions for text in combination with Large Language Models (LLM) to provide features like autocorrection and improved writing, etc.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/plugin-release/background-removal-plugin-sdk.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h3 id=&quot;custom-tools&quot;&gt;Custom Tools&lt;/h3&gt;
&lt;p&gt;Some custom functionality will require more than just a single button, e.g., to &lt;strong&gt;generate AI images&lt;/strong&gt;, background patterns, QR codes, or maps. In these cases, you’ll require sliders, text input, drop-downs, and many other UI elements. With plugins, you can easily create panels with your own UI to bring any custom tool to life.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/plugin-release/ai-generator-plugin-sdk.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h3 id=&quot;custom-assets--presets&quot;&gt;Custom Assets &amp;#x26; Presets&lt;/h3&gt;
&lt;p&gt;Apart from building custom tools, you can also bundle and group effects into presets and make them accessible in a custom panel. This is especially useful to simplify the design process or create standard design components: for example, providing beautiful text presets will enable your users to create instantly great text designs without any design knowledge.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Bundle presets or sticker packs for a stylish, simple design process.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1920px) 1920px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1920&quot; height=&quot;1080&quot; src=&quot;https://img.ly/_astro/custom-bundles-sdk-s_Z2eX5Wk.webp&quot; srcset=&quot;/_astro/custom-bundles-sdk-s_wWPTG.webp 640w, /_astro/custom-bundles-sdk-s_WbFjy.webp 750w, /_astro/custom-bundles-sdk-s_Zx5C9.webp 828w, /_astro/custom-bundles-sdk-s_Z1MpguG.webp 1080w, /_astro/custom-bundles-sdk-s_1RCU0T.webp 1280w, /_astro/custom-bundles-sdk-s_Z1MVQn1.webp 1668w, /_astro/custom-bundles-sdk-s_Z2eX5Wk.webp 1920w&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;custom-libraries&quot;&gt;&lt;strong&gt;Custom Libraries&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Integrate third-party libraries, such as Unsplash, Getty Images, Pexels, or your own.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/plugin-release/photo-library-sdk-unsplash.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h3 id=&quot;custom-editor-behavior&quot;&gt;Custom Editor Behavior&lt;/h3&gt;
&lt;p&gt;Some of our customers asked us how they could move a functionality from one place in the editor to another. Let’s say you wish to move the function ‘move to front’ from the inspector to the canvas menu. This is not a problem! You can do this by using the internal API endpoints of our editor.&lt;/p&gt;
&lt;p&gt;As for custom editor behavior, you can do far more than just move functionality. Here is a demo of layer lists we built as a plugin.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;https://storage.googleapis.com/imgly-static-assets/static/blog/videos/plugin-release/layer-list-editor-sdk.mp4&quot; controls autoplay muted loop playsinline&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h3 id=&quot;custom-user-feedback&quot;&gt;Custom User Feedback&lt;/h3&gt;
&lt;p&gt;Additionally, you can enhance the canvas with overlays, which are useful for providing alerts, instructions, or feedback directly on the canvas.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Provide instant design feedback to users, such as cut-off text or images.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1920px) 1920px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1920&quot; height=&quot;1080&quot; src=&quot;https://img.ly/_astro/custom-user-notification-design-feedback-1_Z1dtpGM.webp&quot; srcset=&quot;/_astro/custom-user-notification-design-feedback-1_1qQrVb.webp 640w, /_astro/custom-user-notification-design-feedback-1_yfu3B.webp 750w, /_astro/custom-user-notification-design-feedback-1_Z2ctvGd.webp 828w, /_astro/custom-user-notification-design-feedback-1_1CxUVl.webp 1080w, /_astro/custom-user-notification-design-feedback-1_29zsPe.webp 1280w, /_astro/custom-user-notification-design-feedback-1_Z81FNb.webp 1668w, /_astro/custom-user-notification-design-feedback-1_Z1dtpGM.webp 1920w&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;whats-next&quot;&gt;What’s Next&lt;/h2&gt;
&lt;p&gt;We are now rolling out Plugins and building an initial set of features through Plugins ourselves—available for the web first, and mobile SDKs will follow. Keep your eyes peeled for our next releases and don’t hesitate to &lt;a href=&quot;https://img.ly/forms/contact-sales&quot;&gt;get in touch&lt;/a&gt; with us to learn more about plugins, and how your product benefits from integration without losing time and resources.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thank you for reading. Join 3,000+ creative professionals—&lt;a href=&quot;https://share.hsforms.com/1IgAOV1wASXGPnFG4ZPLejg1hk3i&quot;&gt;subscribe&lt;/a&gt; to our newsletter for updates on new features, plugins, early access, and more!&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Daniel</dc:creator><dc:creator>Eray</dc:creator><media:content url="https://blog.img.ly/2024/05/plugin-sdk-design-img-ly-s.jpg" medium="image"/><category>Plugin</category><category>App Development</category><category>Design Editor</category><category>Company</category></item></channel></rss>