Monorepo for CEP auto-reload during ExtendScript development.
The goal is simple: when you save your host-side .jsx file, you should be able to see the new behavior in your CEP extension without closing and reopening the panel.
Today this repo contains a Vite plugin that supports that workflow. In the future, this monorepo may also grow additional integrations, such as a webpack-oriented plugin or other tooling around CEP development.
Developing CEP panels is slower than it needs to be when every ExtendScript change requires reopening the extension window.
This project focuses on the feedback loop:
- save your ExtendScript bundle
- detect the change from the panel
- re-run the host script through
CSInterface.evalScript(...) - keep the panel open while iterating
This is not true HMR for ExtendScript modules. It is a practical reload workflow for CEP development.
packages/vite-plugin-cep-reload: dev-only Vite plugin for reloading CEP ExtendScript bundles on changeexamples/vite-cep-plugin: example app showing the Vite integrationexamples/vite-cep-plugin-built-host: example app showing a CEP host source file transformed into a watcheddist/host/index.jsxbundle before reload
Right now only the Vite plugin exists.
The current workflow has only been tested in After Effects.
I do not currently have a way to verify behavior in other CEP hosts such as Premiere Pro, Photoshop, Illustrator, or Media Encoder. If you try this in another Adobe app and it works, breaks, or needs host-specific handling, please open an issue or send a PR with details.
Useful reports include:
- Adobe host name and version
- operating system
- CEP version if known
- whether reload worked automatically
- any host-specific quirks or required setup
This repo uses Vite+ via the global vp CLI.
Install dependencies:
vp installRun the basic example app in development:
vp run devRun the built-host example in development:
cd examples/vite-cep-plugin-built-host
vp run devThe built-host example demonstrates the generated-bundle workflow directly: edit src/host/index.ts, let the watcher rebuild dist/host/index.jsx, and the CEP reload client will re-evaluate that output file.
Run the full ready/check flow:
vp run readyBuild all workspace packages:
vp run build -rRun tests across the workspace:
vp run test -rContributions are welcome, especially around:
- testing in additional Adobe CEP hosts
- bug fixes in the reload flow
- better example projects
- documentation improvements
- future plugin support beyond Vite
If you want to contribute:
- Install dependencies with
vp install. - Make your change.
- Run
vp run readybefore opening a PR. - Include reproduction steps, host details, and screenshots/logs when relevant.
For host-compatibility fixes, please be explicit about where you tested the change. Cross-host validation is currently the main gap in this project.
- This repo is focused on developer experience for CEP + ExtendScript iteration.
- The current package does not try to solve full production packaging or extension installation.
- If Vite is not the only relevant bundler long term, this monorepo structure leaves room for additional plugins later.