Search Docs
Loading...
Skip to content

Version v1.85.1 Changelog October 29, 2026

Breaking Changes

Cancelling Loads, Downloads and Saves

  • Engine/Swift: Cancelling the task of a call that loads, downloads or saves a file now ends the call at once, stops its download and throws CancellationError. The call changes nothing. Before, the call ran to the end and returned, so a load in a SwiftUI .task modifier finished after its view disappeared. Now that load stops when the view disappears. To finish a load after its view goes, start it in a new Task: the view does not cancel that task. This covers getDominantColors and a save to an archive too. An asset source with its own apply function keeps running, and a block that it creates stays. A cancel of loadCMYKProfile ends only the wait, because the document keeps its profile loaded.
  • Engine/Android: Cancelling the coroutine of a call that loads, downloads or saves a file now ends the call at once and stops its download. The call changes nothing. Before, the call threw CancellationException, but the engine finished the work, so a cancelled scene load still replaced the scene. To finish a load after its screen closes, run it in a scope that outlives the screen, or in withContext(NonCancellable). This covers getDominantColors and a save to an archive too. An asset source with its own applyAsset function keeps running, and a block that it creates stays. A cancel of loadCMYKProfile ends only the wait, because the document keeps its profile loaded. withTimeout gives a call a deadline.

Deprecations

None in this release.


New Features

Abort Signals for Loads, Downloads and Saves

  • Engine (Web / Node / Node Native): The calls that load or download a file now take an abortSignal. An abort ends the call at once and stops its download. The call changes nothing. AbortSignal.timeout() gives a call a deadline. The scene calls are load, loadFromURL, loadFromString, loadFromArchiveURL, applyTemplateFromURL, createFromImage, createFromVideo and setCMYKProfile. The block calls are loadFromURL, loadFromArchiveURL, createCaptionsFromURI, addImageFileURIToSourceSet, addVideoFileURIToSourceSet, forceLoadAVResource and forceLoadResources. The editor calls are getMimeType, getFontMetrics and loadCMYKProfile, and the asset calls addLocalAssetSourceFromJSONURI, apply and defaultApplyAsset. An abort of loadCMYKProfile ends only the wait, because the document keeps its profile loaded. scene.saveToArchive and block.saveToArchive take an abortSignal too, which stops the save.
  • Engine (Web / Node / Node Native): asset.apply of an asset source with its own applyAsset function ends at the abort, but the function keeps running. A block that it creates stays, and the call does not return it.
  • Engine (Web / Node / Node Native): block.getDominantColors takes an abortSignal. An analysis waits while a resource of the block loads, so a signal gives it a deadline.
  • Engine (Web / Node / Node Native): scene.saveToString and block.saveToString take an abortSignal, which stops a save that waits for onDisallowedResourceScheme. Answers of the callback after the abort change nothing.

Abort Signals for Exports

  • Engine/Node Native: Exports now accept an abortSignal. An aborted signal stops the export in the engine.
  • Engine/Node: exportAudio now accepts an abortSignal. An aborted signal stops the export in the engine.

Improvements & Behavior Changes

Cancelling Loads and Downloads

  • Engine: A download that another call still waits for, or that a block uses, goes on when one of its calls is cancelled.

Export Cancellation

  • Engine/Swift: Cancelling the task of an export, or the subscription of its publisher, now stops the export at once. The export releases its memory, the worker engine of a video or image export included. Before, a cancelled video export kept encoding, and kept its memory, until it finished.
  • Engine/Swift: A cancelled export or exportWithColorMask of one block now throws CancellationError. Before, it threw ExportError.noDataReturned.
  • Engine/Android: Cancelling the coroutine of an export now stops the export in the engine before its background engine is released.
  • Engine/Web: Aborting an export through its abortSignal now stops the export in the engine at once.
  • Renderer: An interrupt, such as Ctrl-C, now cancels a running export before the renderer exits, and the renderer says that it wrote no file.

Memory

  • Engine/Swift: An Engine that you release now frees the memory of its engine at once, also while a video transcode runs. Before, the engine stayed for 3 more seconds.

Bug Fixes

Engine

  • createCaptionsFromURI with an empty URI now fails. Before, it never returned.
  • An answer of the persistence callback of a save that comes after the engine was disposed is now ignored. Before, it could crash the app.
  • An audio export now fails at once when it starts from the progress callback of another audio export. Before, the first export never delivered its result.

Engine/Web

  • An export whose abortSignal aborted before the export started now rejects with the abort error. Before, an image export still ran, and a PDF export rejected with a cancellation error.