This guide covers the full release checklist for all packages in the monorepo. Follow the steps that apply to the package you are releasing.
The monorepo contains five packages:
- pdfium_dart - Low-level Dart FFI bindings for PDFium
- pdfium_flutter - Flutter plugin for loading PDFium native libraries
- pdfrx_engine - Platform-agnostic PDF rendering API
- pdfrx - Cross-platform PDF viewer plugin for Flutter
- pdfrx_coregraphics - CoreGraphics-backed renderer for iOS/macOS (experimental)
- Update the version in
packages/pdfrx_engine/pubspec.yaml.- For non-breaking or small breaking changes, bump the patch version (
X.Y.Z -> X.Y.Z+1). - For breaking changes, bump the minor version (
X.Y.Z -> X.Y+1.0). - For major changes, bump the major version (
X.Y.Z -> X+1.0.0).
- For non-breaking or small breaking changes, bump the patch version (
- Update
packages/pdfrx_engine/CHANGELOG.mdwith user-facing changes.- Skip CI/CD updates and meta-doc changes (
CLAUDE.md,AGENTS.md) unless significant.
- Skip CI/CD updates and meta-doc changes (
- Update
packages/pdfrx_engine/README.md(at least, the versions hard-coded on it). - Update the root
README.mdif necessary. - Run
panainsidepackages/pdfrx_engineto validate the package. - Publish with
dart pub publishinsidepackages/pdfrx_engine/.
- Update the version in
packages/pdfrx/pubspec.yaml.- If
pdfrx_enginewas updated, update the dependency version here as well.
- If
- Update
packages/pdfrx/CHANGELOG.mdwith user-facing changes. - Update
packages/pdfrx/README.mdwith the new version.- Update version numbers in sample snippets.
- Note new features or breaking changes when relevant.
- Report any issues found in the example app or documentation to the owner.
- Update the root
README.md(at least, the versions hard-coded on it). - Run
dart pub getto refresh dependencies. - Run tests:
dart testinsidepackages/pdfrx_engine/.flutter testinsidepackages/pdfrx/.
- Validate the example app builds:
flutter build web --wasminpackages/pdfrx/example/viewer. - Run
panainpackages/pdfrx(and other packages being released) to validate code integrity.- Flag any WASM compatibility warnings emitted by
pana.
- Flag any WASM compatibility warnings emitted by
- Commit changes with
Release pdfrx vX.Y.ZorRelease pdfrx_engine vX.Y.Z. - Tag the commit with
git tag pdfrx-vX.Y.Zorgit tag pdfrx_engine-vX.Y.Z. - Push commits and tags.
- Publish with
flutter pub publishinsidepackages/pdfrx/. - Comment on related GitHub issues/PRs once the release is live.
-
Use
gh issue commentorgh pr commentas appropriate. -
If a PR references issues, comment on those issues as well.
-
Template:
The FIX|UPDATE|SOMETHING for this issue has been released in v[x.y.z](https://pub.dev/packages/pdfrx/versions/x.y.z). ...Fix/update summary... Written by [AGENT SIGNATURE]
-
Focus on release notes and what changed; link to the version-specific changelog entry.
-
- Update the version in
packages/pdfium_dart/pubspec.yaml.- Follow semantic versioning based on the scope of changes.
- Update
packages/pdfium_dart/CHANGELOG.mdwith user-facing changes.- Include PDFium version updates if applicable.
- Document any changes to the FFI bindings or
getPdfium()functionality.
- Update
packages/pdfium_dart/README.mdif necessary. - Run tests:
dart testinsidepackages/pdfium_dart/. - Run
panainsidepackages/pdfium_dart/to validate the package. - Commit changes with
Release pdfium_dart vX.Y.Z. - Tag the commit with
git tag pdfium_dart-vX.Y.Z. - Push commits and tags.
- Publish with
dart pub publishinsidepackages/pdfium_dart/.
- Update the version in
packages/pdfium_flutter/pubspec.yaml.- If
pdfium_dartwas updated, update the dependency version here as well.
- If
- Update
packages/pdfium_flutter/CHANGELOG.mdwith user-facing changes.- Include PDFium binary version updates if applicable.
- Document platform-specific changes (iOS, Android, Windows, macOS, Linux).
- Update
packages/pdfium_flutter/README.mdif necessary. - Update platform-specific build configurations if PDFium binaries changed:
darwin/pdfium_flutter.podspecfor iOS/macOS (CocoaPods)darwin/pdfium_flutter/Package.swiftfor Swift Package Managerandroid/CMakeLists.txtfor Androidwindows/CMakeLists.txtfor Windowslinux/CMakeLists.txtfor Linux
- Run tests:
flutter testinsidepackages/pdfium_flutter/. - Run
panainsidepackages/pdfium_flutter/to validate the package. - Commit changes with
Release pdfium_flutter vX.Y.Z. - Tag the commit with
git tag pdfium_flutter-vX.Y.Z. - Push commits and tags.
- Publish with
flutter pub publishinsidepackages/pdfium_flutter/.
- Update the version in
packages/pdfrx_coregraphics/pubspec.yaml. - Update
packages/pdfrx_coregraphics/CHANGELOG.mdwith user-facing changes. - Update
packages/pdfrx_coregraphics/README.mdif necessary. - Run tests on macOS/iOS devices if possible.
- Run
panainsidepackages/pdfrx_coregraphics/to validate the package. - Commit changes with
Release pdfrx_coregraphics vX.Y.Z. - Tag the commit with
git tag pdfrx_coregraphics-vX.Y.Z. - Push commits and tags.
- Publish with
flutter pub publishinsidepackages/pdfrx_coregraphics/.
When releasing multiple packages, follow this order to respect dependencies:
- pdfium_dart (no dependencies on other packages in monorepo)
- pdfium_flutter (depends on pdfium_dart)
- pdfrx_engine (depends on pdfium_dart)
- pdfrx (depends on pdfrx_engine and pdfium_flutter)
- pdfrx_coregraphics (depends on pdfrx_engine, independent of pdfium_flutter)
- Keep
CHANGELOG.mdentries user-focused and concise. - Coordinate with the repository owner if any release blockers appear.
- When releasing multiple packages together, create a single commit with all version changes.
- Tag format:
<package_name>-vX.Y.Z(e.g.,pdfium_dart-v0.1.3,pdfrx-v2.2.11).