# Clone the repo
git clone git@github.com:Shopify/shopify-app-bridge.git
cd shopify-app-bridge
# Install dependencies (requires pnpm ≥ 10)
pnpm install
# Build all packages
pnpm buildThe required Node.js version is specified in .nvmrc.
- Create a branch off
mainfor your changes. - Make your changes in the relevant package(s).
- Run checks locally before pushing:
pnpm format:check # Prettier formatting pnpm build # Build all packages pnpm lint # Lint all packages pnpm type-check # TypeScript type checking pnpm test # Run tests
- Add a changeset describing your changes (see below).
- Open a pull request against
main. CI will run all checks automatically.
This repo uses Changesets to manage versioning and changelogs. Every PR that changes package behavior should include a changeset.
pnpm changesetThis will prompt you to:
- Select which package(s) are affected.
- Choose a semver bump type (
patch,minor, ormajor). - Write a summary of the change (this becomes the changelog entry).
A markdown file will be created in .changeset/. Commit it with your PR.
If your PR doesn't need a changeset (e.g. docs-only, CI config), add the 🤖Skip Changelog label to the PR to bypass the changelog CI check.
Releases are fully automated via the Release workflow.
- When PRs with changesets are merged to
main, the Release workflow runs. - The changesets/action collects all pending changesets and opens a "Version Packages" PR that:
- Bumps package versions in
package.jsonfiles. - Updates
CHANGELOG.mdfiles with the changeset summaries. - Removes the consumed
.changeset/*.mdfiles.
- Bumps package versions in
- When you merge the "Version Packages" PR, the Release workflow runs again and this time publishes the updated packages to npm.
flowchart TD
A["Feature PR<br>(with changeset)"] -->|merge| B[main]
B --> C[Release workflow runs]
C --> D["'Version Packages' PR opened"]
D -->|merge| E[main]
E --> F[Release workflow runs]
F --> G["Published to npm 🚀"]
Important: Do not manually bump versions or edit changelogs. Let Changesets handle it.
Some packages have their own CONTRIBUTING.md with additional details:
packages/app-bridge-types/CONTRIBUTING.md—@shopify/app-bridge-types