> This page is for Developer Documentation.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.benchling.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.benchling.com/_mcp/server.

## Improved App Homepage Canvas

### Homepage Canvas: Reset, Improved Initialization, and New Manifest Schema

We've made significant improvements to the Homepage Canvas to address two longstanding pain points: apps had no reliable way to know when to render the Canvas, and users had no way to recover when a Canvas became stuck or unresponsive.

### What's new

#### Reset capability

Users can now reset a Homepage Canvas directly from the Canvas overflow menu. Resetting clears the current Canvas state and triggers a fresh `canvas.created` webhook, prompting the app to reinitialize, all without requiring any action from the app developer beyond handling that webhook.

The Canvas retains its original `canvas_id` after a reset for auditing continuity.

![](/_fern-img/dae7804ae09958b1f5063d8c6ef2f58ce8d138f3f02a136e5d4b818a0abdfcf3.webp)

#### Platform-managed Canvas creation

The Homepage Canvas now follows the same initialization pattern as other canvas types. When a user clicks "Create," the platform creates the canvas instance and dispatches a `canvas.created` webhook with a pre-generated `canvas_id`. This replaces the previous workaround where developers relied on the unrelated `Activate` feature to trigger initialization.

#### New manifest schema

We're introducing a new way to declare homepage canvases in your app manifest. Instead of `type: APP_HOMEPAGE`, use `type: CANVAS` with `locations: [APP_HOME]`:

```yaml
features:
  - name: Homepage Canvas
    id: homepage_canvas
    type: CANVAS
    locations: [APP_HOME]
```

> **Info**
>
> The `APP_HOME` location cannot be used in combination with another location.

### Upgrade to the new Homepage Canvas

The legacy `APP_HOMEPAGE` feature type continues to be supported during the migration period, but new manifests must use the new schema . Passing `APP_HOMEPAGE` on a new manifest will throw an `InvalidManifestError`.

#### Action required for apps already using `type: CANVAS`

> **Error**
>
> If you update your app to use the new Homepage Canvas, you *must* also update your app code to handle the difference between `APP_HOME` and other existing Canvas locations. We recommend introducing separate handling logic for webhooks triggered from the Homepage. Otherwise, your existing Canvases will break.