apps/signup-form/README.md
Embed a Ghost signup form on any site.
pnpm setup in the Ghost monorepo rootStart Ghost with the public-app watchers enabled:
pnpm dev:public
This starts the standard development environment and the Signup Form watcher.
Run pnpm dev:standalone from this directory to start the standalone
development server with HMR. It serves the demo page at
http://localhost:6173.
pnpm dev on its own (in this package folder) only builds umd/signup-form.min.js and watches for changes — it does not bind a port. The UMD is served by Caddy at http://localhost:2368/ghost/assets/signup-form/signup-form.min.js when you run pnpm dev:public from the monorepo root.
Vite's development server uses an ESM output for HMR. When a script is loaded as
an ESM module (<script type="module" src="...">), document.currentScript is
not available. Signup Form needs it to determine where to inject the iframe, so
development mode uses a workaround that is not suitable for production.
To test the production behavior, open http://localhost:6173/preview.html while
pnpm dev:standalone is running. The page loads the UMD bundle from the
development gateway, so pnpm dev:public must also be running from the monorepo
root.
pnpm lint runs ESLint.pnpm test:acceptance runs acceptance tests on Chromium.pnpm test:acceptance:slowmo runs acceptance tests headed and slowed down on
Chromium.pnpm test:acceptance:full runs acceptance tests on all configured browsers.Patch releases are automatic. When Signup Form changes on main, CI publishes the next patch version to npm and clears the jsDelivr cache. Sites using that major/minor line receive the patch without a Ghost release.
For an intentional minor or major release:
pnpm ship and select a minor or major versionmainpnpm ship updates both the package version and Ghost's default Signup Form version.
Copyright (c) 2013-2026 Ghost Foundation - Released under the MIT license.