The latest updates to Canva's app development platform.
  • Content extensions can now import video files. To learn more, see Videos.
  • A couple of improvements have been made the JavaScript client for editing extensions:
    • A new toCanvaImageBlob method supersedes the fromCanvas and fromElement methods, while also accepting additional inputs.
    • The toCanvas method has been updated to accept additional inputs.
  • Presets in editing extensions are now handled differently. This is a backwards compatible change that paves the way for significant performance improvement. The documentation has been updated to reflect the new approach. To learn more, see Presets.
  • Content extensions can now include multiple types of content, such as images and embeds, in a single response. This is a backwards-compatible change that makes content extensions a lot more flexible. To learn more, see Content types.
  • When Canva sends requests to the /content/resources/find endpoint, it now includes a types property in the request body. This property contains an array of content types that can appear in the response, which is in preparation for a change that will let content extensions return different types of resources (for example, images and embeds) in a single response. The existing type property, which can only contain a string, is now deprecated.
  • Editing extensions can now resize, reposition, rotate, and crop the user's image. To learn more, see updateLayout. This update also introduces a number of non-breaking changes to the JavaScript client. To brush up on the (new) fundamentals, see Image processing.
  • Apps that support authentication can now let users disconnect (de-authenticate) from the app. To learn more, refer to Authentication.
  • When a user publishes a design via a publish extension, the upload request now includes a designId property. This property contains the ID of the user's design. This ID is obfuscated and does not change between uploads, which allows extensions to detect when a user is re-publishing a design.
  • Improved the Client secret field in the Developer Portal. Previously, the key was provided as a base64url-encoded string and your app needed to convert it into a base64-encoded string. The key is now provided as a base64-encoded string.
  • Editing extensions can now process images on a server, instead of via a browser. This makes it possible to perform CPU or GPU-intensive image manipulation tasks (for example, tasks that rely on machine learning). To learn more, refer to Remote image processing.