Create Design

The Create Design workflow lets users start something new: they can browse a curated set of templates (or begin from a blank canvas), pick one, and design from it in a focused editor. It pairs a Template Browser with a Design Editor—choose a template, then remix it into a finished asset.

Create Design workflow

How Create Design works

Launch the workflow from the module object:

module.createDesign(
  appConfig?: FDECreateDesignAppConfig,
  exportConfig?: ExportConfig,
  containerConfig?: ContainerConfig,
): void;

All parameters are optional and positional—to skip one, pass undefined in its place. exportConfig and containerConfig are covered in Shared configuration; the rest of this page is about what's specific to Create Design, configured through appConfig (of type FDECreateDesignAppConfig).

Browsing and choosing content

The heart of Create Design is contentBrowseConfig—it defines the Template Browser experience: for example, categoriesConfig specifies which collection users browse, templateFilters controls how templates are filtered, and showCreateNew determines whether to show a CTA that allows users to start from a blank document of the provided size.

const appConfig = {
  contentBrowseConfig: {
    // The curated collection to browse
    categoriesConfig: [
      { category: "templates", collectionId: "urn:aaid:sc:VA6C2:..." },
    ],
    // Additional filtering based on number of pages, dimensions, template type
    templateFilters: {
      behaviors: ["still"],
      dimensions: { width: 3.5, height: 2, unit: "in" },
      templateType: "business-card",
    },
    // Offer a "start from a blank canvas" option
    showCreateNew: true,
    // Title shown above the browser
    headerText: "Choose a template",
    // UI configuration options for the Template Browser
    hideSearchBar: true,
    hideFilters: true,
    disablePremiumContent: true,
    // Keep users within the curated set (suppress "more like this")
    hideMoreLikeThis: true,
  },
  // Specify the list of file types that the user can publish
  allowedFileTypes: ["application/pdf", "image/jpeg", "image/png"],
  // EDE variant to tailor the editor experience
  variant: "print",
  callbacks: {
    /* ... */
  },
};

module.createDesign(appConfig, exportConfig, containerConfig);

Embedded browsing is deliberately curated, not open-ended discovery: standalone Express recommends templates broadly to help users explore, but inside your app the host already supplies the product and intent, so the browser stays within the collection you configure—and a 1-up preview lets users confirm a template before a new document is created. hideMoreLikeThis reinforces that boundary by suppressing "more like this" recommendations. Content browsing is a capability in its own right, with its own collection, filtering, and layout options—see the Template Browser concept guide; Create Design surfaces that same experience as the entry point to designing.

Tailoring the experience with variants

Create Design honors the shared variant option (see Experience variants). Setting variant: "print", for example, gives users a print-oriented toolset and enables print-friendly defaults automatically, so the experience matches a print workflow end to end; for instance, the Express editor won't surface timeline-dependent tools that are relevant only for video.

data-slots=header, text
data-variant=warning

In active development

Variants are still being actively developed and improved; expect new tools and refinements to be introduced over time.

Output configuration today

There's an asymmetry between the two workflows worth understanding. Edit Design lets you pass explicit output controls. For example, including PDF settings such as CMYK color mode and an ICC color profile (its pdfPrintConfig) is possible for the print variant. Create Design does not accept those output configs yet.

Create Design falls back to sensible defaults—CMYK color with a standard coated ICC profile (Coated GRACoL 2006 (ISO 12647-2:2004)) and bleed enabled—so output is correct out of the box even though you can't set it explicitly here.

This gap is expected to close in the future through the onIntentChange callback: as a user moves from browsing a template into editing it, onIntentChange will let you pass configuration—including output settings—into that next step. Until then, if you need precise output control at creation time, plan around these defaults, or route users into Edit Design, where the output controls are available today.

Handling the result

When the user finishes and exports, EDE behaves like a standard Embed SDK module: the onPublish callback fires with the exported asset and its metadata; return a publish status to confirm or deny. See Shared configuration.