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.taskmodifier 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 newTask: the view does not cancel that task. This coversgetDominantColorsand a save to an archive too. An asset source with its ownapplyfunction keeps running, and a block that it creates stays. A cancel ofloadCMYKProfileends 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 inwithContext(NonCancellable). This coversgetDominantColorsand a save to an archive too. An asset source with its ownapplyAssetfunction keeps running, and a block that it creates stays. A cancel ofloadCMYKProfileends only the wait, because the document keeps its profile loaded.withTimeoutgives 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 areload,loadFromURL,loadFromString,loadFromArchiveURL,applyTemplateFromURL,createFromImage,createFromVideoandsetCMYKProfile. The block calls areloadFromURL,loadFromArchiveURL,createCaptionsFromURI,addImageFileURIToSourceSet,addVideoFileURIToSourceSet,forceLoadAVResourceandforceLoadResources. The editor calls aregetMimeType,getFontMetricsandloadCMYKProfile, and the asset callsaddLocalAssetSourceFromJSONURI,applyanddefaultApplyAsset. An abort ofloadCMYKProfileends only the wait, because the document keeps its profile loaded.scene.saveToArchiveandblock.saveToArchivetake anabortSignaltoo, which stops the save. - Engine (Web / Node / Node Native):
asset.applyof an asset source with its ownapplyAssetfunction 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.getDominantColorstakes anabortSignal. An analysis waits while a resource of the block loads, so a signal gives it a deadline. - Engine (Web / Node / Node Native):
scene.saveToStringandblock.saveToStringtake anabortSignal, which stops a save that waits foronDisallowedResourceScheme. 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:
exportAudionow accepts anabortSignal. 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
exportorexportWithColorMaskof one block now throwsCancellationError. Before, it threwExportError.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
abortSignalnow 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
Enginethat 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
createCaptionsFromURIwith 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
abortSignalaborted 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.