InboxSDK is a Yarn 4 monorepo for building Gmail browser extensions. There is no
standalone web app or backend — development centers on building the
@inboxsdk/core SDK and testing via example Chrome MV3 extensions under
examples/.
| Service | Command | Notes |
|---|---|---|
| Dev builder (watch) | yarn start |
Runs gulp default -w --reloader; rebuilds SDK + all examples on file changes |
| One-shot build | yarn gulp |
Builds packages/core/ bundles and all example extensions |
| Unit tests | yarn test |
Jest in jsdom; 384 tests |
| Typecheck | yarn typecheck |
tsc |
| Lint | yarn lint |
ESLint + Prettier |
| CSS lint | yarn lint:stylelint |
Stylelint |
Whenever you make code or style changes, remember to run the relevant checks
before handing off: yarn test, yarn lint (ESLint + Prettier), and
yarn lint:stylelint for CSS changes.
CI (CircleCI) uses Node 20.9.0. .nvmrc specifies lts/*. Node 22 also
works for build/test in this environment.
- Run
yarn startto start the watch builder. - Load an example extension (e.g.
examples/hello-world/orexamples/app-menu/) as an unpacked extension in Chrome viachrome://extensions. - Open Gmail while logged in and refresh after SDK changes.
The hello-world example adds a compose button that inserts "Hello World!" into the email body — a good smoke test for the full extension flow.
Optional: install the
Chrome Extensions Reloader
extension; --reloader auto-triggers it on rebuild (macOS Chrome paths only in
live/extReloader.ts).
To mimic production CDN loading with a local server on port 4567:
yarn gulp --remote server -w --reloaderChrome must be launched with --allow-running-insecure-content because Gmail
(HTTPS) loads http://localhost:4567/platform-implementation.js.
- Peer dependency warnings from Yarn on install are expected and non-blocking.
- After
yarn gulp, verify outputs:packages/core/inboxsdk.js,examples/*/dist/content.js. - Browserslist "caniuse-lite is outdated" warnings during build are harmless.