Skip to content

docs: add a release guide with a browser smoke test of the published build - #849

Merged
tyler-reitz merged 3 commits into
FirebaseExtended:mainfrom
tyler-reitz:docs/release-guide
Nov 2, 2026
Merged

tyler-reitz merged 3 commits into
FirebaseExtended:mainfrom
tyler-reitz:docs/release-guide

Conversation

@tyler-reitz

@tyler-reitz tyler-reitz commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Closes #848, taking the suggestion there: a release guide an agent or maintainer can follow, instead of another CI pipeline.

What changed

.github/CONTRIBUTING.md gets a "Publishing a release (maintainers)" section with five steps: confirm main is green, bump the version, smoke-test the bump commit's -exp build in a Vite app and a Next.js App Router app, publish a GitHub release, verify.

Verification

The smoke test in step 3 was run as written, against production builds in headless Chromium:

Version Vite Next.js
4.2.4 (#759) Fails: Calling `require` for "react" in an environment that doesn't expose the `require` function Fails: build stops prerendering / (dynamic usage of require is not supported)
4.3.0 Renders, clean console Renders, clean console
4.3.0-exp.d47dad5 (current main) Renders, clean console Renders, clean console

Caveats

  • It informs a release; it does not gate one. Nothing stops a tag without it.
  • The guide describes the flow test.yaml and build.sh implement today. The 4.3.0 release run published from CI.

…build

Adds "Publishing a release" to CONTRIBUTING.md and
scripts/release-smoke/run.sh, which installs a published version into a Vite
app and a Next.js App Router app, production-builds both, renders a hook in
headless Chromium, and fails on any page error, console error or failed
request. It fails on 4.2.4 (FirebaseExtended#759) and passes on 4.3.0.

Refs FirebaseExtended#848

@jhuleatt jhuleatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, approving so you aren't blocked. A few things from cutting 4.3.0 worth folding in if you want:

  1. In step 2, main requires an approved PR (enforce_admins is off), so only repo admins can commit and push the version bump directly to main. Non-admin maintainers need to land the bump through a PR. Might also be worth showing the git commit and git push after npm version --no-git-tag-version.
  2. In step 3, since reactfire@<exp version> is already installed in a scratch folder, a quick one-liner can also cover bare Node ESM (#846), CJS require('reactfire'), and the baked-in version string:
    node -e "import('reactfire').then(m => console.log('ESM:', m.version)); console.log('CJS:', require('reactfire').version)"
  3. In step 4, targeting the bump commit SHA instead of main avoids tagging a newer commit if Dependabot or another PR merges while step 3 is running.
  4. Also in step 4, GitHub's auto-generated release notes pull in dozens of Dependabot bumps from /example, /functions, and devDependencies that don't ship in the package. For 4.3.0 we stripped those out by hand, so it's worth mentioning here (or excluding dependabot[bot] via .github/release.yml in a follow-up).

@tyler-reitz
tyler-reitz merged commit eb3376a into FirebaseExtended:main Nov 2, 2026
17 of 24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release process: smoke render the packed build in CI to catch browser-only regressions

2 participants