This Devcember, the team is unwrapping a highly requested enhancement to the SDK’s requestExport API. Developers can now explicitly choose whether export results should be returned zipped or unzipped, giving far more control over file handling and workflow optimisation.
Previously, all multi-file export bundles were automatically zipped. While convenient in some scenarios, it added unnecessary steps in others—particularly for pipelines that prefer direct file access. With this update, developers can now state their preference through the new zipped option.
What’s New
requestExport now accepts a new object type in the input array. Through this object, you can specify if the exported files will be zipped or unzipped for each file type.
The behaviour of zipping the exported files.
- For `png`, `jpg`, and `svg`:
- `auto` (default): Files are zipped together if the design has multiple pages, unzipped if it has one page.
- `always`: Files are always zipped into a single zip file, regardless of page count.
- `never`: Files are never zipped, providing an array of files.
- For `video` and `gif`:
- `auto` or `never` (default): Files are never zipped together, regardless of count.
- `always`: Files are always zipped into a single file.
Example
import { Button, Rows } from "@canva/app-ui-kit";
import React from "react";
import * as styles from "styles/components.css";
import { requestExport } from "@canva/design";
import { useFeatureSupport } from "@canva/app-hooks";
export function App() {
const isSupported = useFeatureSupport();
async function handleClick() {
const result = await requestExport({
acceptedFileTypes: [
"pptx",
{ type: "png", zipped: "auto" },
{ type: "video", zipped: "always" },
{ type: "pdf_standard" },
{ type: "jpg", zipped: "never" },
{ type: "gif" },
],
});
}
return (
<div className={styles.scrollContainer}>
<Rows spacing="1u">
<Button
variant="primary"
onClick={handleClick}
disabled={!isSupported(requestExport)}
>
Export design
</Button>
</Rows>
</div>
);
}
Why this matters
-
Simpler integrations: No need to unzip bundles in pipelines that want direct file access.
-
More flexibility: Tools, plugins, and asset pipelines can choose what’s best for their workflows.
Docs & Resources
- RequestExport SDK docs: requestExport - v2 API reference - Canva Apps SDK Documentation
We’re excited to see how developers use this new flexibility in their export workflows. Happy building—and happy Devcember! ![]()
![]()