LiveViewReact uses Release Please
as the only release version owner. It maintains the release PR and changelog,
creates the v<version> tag and GitHub release, and then lets the same workflow
validate and publish that exact source to Hex.
Maintainer prerequisites
Configure these GitHub repository settings before the first release:
- set workflow permissions to read and write
- allow GitHub Actions to create and approve pull requests
- set
LIVEVIEW_REACT_RELEASE_REPOSITORYto the exactowner/repository - create the protected
releaseenvironment and store anapi:writeHex key in itsHEX_API_KEYsecret
If you want regular GitHub Actions workflows to run on release PRs created by
Release Please, configure the action with a personal access token instead of
the default GITHUB_TOKEN. The repository can still publish to Hex without
that extra token because the publish job runs in the same workflow invocation
that created the GitHub release.
At least two maintainers should be able to review the release environment and recover its credentials. Do not put tokens in the repository, shell history, or generated files.
Synchronized versions
The source version remains synchronized across:
.release-please-manifest.jsonmix.exspackage.json- the root
package-lock.json - the linked LiveViewReact entry in
liveview_react_examples/assets/package-lock.json
The Node release strategy updates package.json and the root lockfile. A
generic annotation updates mix.exs, and a targeted JSON updater changes the
example lockfile entry. Both the test suite and the publish job reject version
drift before a Hex upload.
The manifest starts from the unpublished 0.1.0 development snapshot. The
automation bootstrap commit carries the one-time Release-As: 1.0.0 footer,
so the first release PR changes every managed version to 1.0.0. Future
release PRs derive their version from conventional commits:
fix:bumps patchfeat:bumps minorfeat!:and other breaking changes bump major
Do not manually edit release versions, keep a persistent release-as setting,
or create release tags. Review the synchronized files in the generated release
PR instead.
Local verification
From the repository root:
mix deps.get
mix quality_full
mix docs --warnings-as-errors --output _build/docs
mix run scripts/check_exdoc_links.exs _build/docs
npm ci
npm run quality:ci
mix hex.build --output _build/liveview_react.tar
These commands install locked dependencies; run formatting, warnings, Credo, ExUnit, Dialyzer, API documentation generation plus HTML/EPUB internal-link validation, JavaScript formatting/lint/types/tests, package assembly, and dependency audits; and then build the exact JS payload that will ship inside the Hex artifact.
Inspect the Hex artifact file list. Generated source maps, private test fixtures, credentials, dependency trees, and development-only sources must not leak into the shipped artifact.
Release path
Merge releasable work into main using conventional commits. release-please
keeps one release PR open and refreshes it as more commits land. When you merge
that release PR, the Release workflow:
- creates the
v<version>Git tag and GitHub release - checks out the exact tagged commit
- reruns the package dry run and browser E2E lanes on that tagged source
- verifies all managed versions, the release tag, and the release commit SHA
- runs
mix hex.publish --yeswithHEX_API_KEYexposed only to that step
The publish step skips upload when the version is already present on Hex, which makes reruns idempotent after a successful publish. If publication fails, fix the external problem and use Re-run failed jobs on the original workflow run; a new manual run will not recreate the already-created release output.
After success, verify the version and README on Hex, install it in a fresh Phoenix application, run the generated demo, and confirm browser and production SSR builds.