Swiftpack.co - imgly/IMGLYEngine-swift as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by imgly.
imgly/IMGLYEngine-swift 1.25.0
Fully customizable, simple-to-use design editor
⭐️ 7
🕓 16 hours ago
iOS macOS
.package(url: "https://github.com/imgly/IMGLYEngine-swift.git", from: "1.25.0")

Hero image showing the configuration abilities of IMGLYEngine

IMGLY Creative Engine

This package contains the Swift version of the IMG.LY Creative Engine, the core of CE.SDK. The Creative Engine enables you to build any design editing UI, automation and creative workflow in Swift. It offers performant and robust graphics processing capabilities combining the best of layout, typography and image processing with advanced workflows centered around templating and adaptation.

The Creative Engine seamlessly integrates into any iOS app whether you are building a photo editor, template-based design tool or scalable automation of content creation for your app.

Visit our documentation for more tutorials on how to integrate and customize the engine for your specific use case.


The CreativeEditor SDK is a commercial product. To use it and get access you need to unlock the SDK with a license file. You can purchase a license at https://img.ly/pricing.



import IMGLYEngine
import SwiftUI

struct IntegrateWithSwiftUI: View {
  @State private var engine: Engine?

  var body: some View {
    Group {
      if let engine {
        ContentView(engine: engine)
      } else {
    .onAppear {
      Task {
        engine = try await Engine(license: secrets.licenseKey, userID: "<your unique user id>")

struct ContentView: View {
  @StateObject private var engine: Engine

  init(engine: Engine) {
    _engine = .init(wrappedValue: engine)

  var body: some View {
    ZStack {
      Canvas(engine: engine)
      Button("Use the Engine") {
        // do something with the instance of Engine


import IMGLYEngine
import MetalKit
import UIKit

class IntegrateWithUIKit: UIViewController {
  private var engine: Engine?
  private lazy var canvas = MTKView(frame: .zero, device: MTLCreateSystemDefaultDevice())
  private lazy var spinner = UIActivityIndicatorView()
  private lazy var button = UIButton(type: .system, primaryAction: UIAction(title: "Use the engine", handler: { [unowned self] _ in
      guard let engine else { return }
      // do something with the instance of Engine

  override func viewDidLoad() {

    // setup constraints

    spinner.hidesWhenStopped = true
    button.isHidden = true

  // pass lifecycle events
  override func viewDidAppear(_ animated: Bool) {
     Task {
        engine = try await Engine(context: .metalView(view: canvas), license: secrets.licenseKey, userID: "<your unique user id>")
        button.isHidden = false

  override func viewWillDisappear(_ animated: Bool) {


The full documentation of IMGLYEngine can be found at here. There you will learn what configuration options are available and find a list and description of all API methods.


To keep up-to-date with the latest changes, visit CHANGELOG.


Stars: 7
Last commit: Yesterday
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics