Extensions

Make Recast yours.

Cursors, backgrounds, gradients and motion presets, installed right in the editor from an open community registry. Every pack is just a manifest and a few static files. Nothing runs, every asset is checked by hash, and the app stays free, offline and yours.

What a pack adds

It shows up where you already work.

A pack feeds the same pickers you use every day, so there's nothing new to learn. One pack can mix any of these.

Cursors
New pointer styles with rest and click states, plus precise hotspots, right in the cursor picker.
Backgrounds
Wallpapers that drop straight into the canvas background picker.
Gradients
Curated gradient sets, rendered live in both the preview and the export.
Colors
Solid color swatches for the canvas, ready to click.
Caption themes
Ready-made caption looks — font, color, outline and backing — applied in one click to overlay and burned-in captions.
Easing presets
Named motion curves for zoom and cursor animation.
Smoothing presets
Cursor smoothing recipes, strength plus click snap, that you can share as packs.
How it works

Three clicks, not a config file.

Step 1
Browse or paste
Open the Extensions tab in the editor and browse the registry, or paste a pack URL to install one directly.
Step 2
Install in a click
The pack downloads, every asset gets checked against its hash, and it installs to your machine. No account, and nothing phones home to us.
Step 3
Use it everywhere
Its cursors, backgrounds, gradients and presets show up in the pickers you already use. Toggle it off or remove it whenever you like.
Safe by design

Installable, without the install-anything risk.

Plugins usually mean running someone else's code. Recast packs don't run code at all. They only carry assets, so plugin supply-chain attacks don't apply.

No code runs
A pack is a manifest plus static files. Nothing executes, so there's no sandbox to escape because there's nothing to sandbox.
Hash-pinned over HTTPS
Every asset is checked against its SHA-256 on download. A tampered or swapped file fails the install outright.
Zero permissions
Asset packs can't request capabilities. A pack never reaches further than the app already can.
Open and checked
The registry is public on GitHub, and CI checks every submission for schema, hashes and safe filenames before it can ship.
Build & share

Make a pack in an afternoon.

Drop your SVGs or images in a folder, write a small manifest, and open a pull request. CI checks the schema, hashes and filenames for you. Once it's merged, it's in the gallery for everyone, with your name on it.

  • Add your assets Cursors as SVG, backgrounds as PNG, JPG or WebP. Bare files, sitting in your pack's assets folder.
  • Write the manifest A few lines of JSON that say what each file contributes. No URLs or hashes to write by hand.
  • Verify and open a PR Run pnpm verify:extensions, push, and the Verify Extensions workflow takes it from there.
extension.json
{
  "id": "my-cursors",
  "name": "My Cursors",
  "version": "1.0.0",
  "kind": "asset-pack",
  "permissions": [],
  "contributes": {
    "cursors": [
      { "id": "ring", "label": "Ring",
        "rest": "ring",
        "hotspot": { "x": 32, "y": 32 } }
    ]
  },
  "assets": [
    { "id": "ring", "file": "assets/ring.svg" }
  ]
}