Docs

Upgrading

Move between Proa versions and find what broke.

Open Markdown

Proa is pre-1.0. Minor versions carry breaking changes. Each is listed in CHANGELOG.md, with larger ones under a Breaking marker and a guide under docs/migrations/ (0.3 standalone, shared WebContext).

Read the changelog first, then upgrade one minor version at a time:

cargo update -p proa_core -p proa_framework_axum -p proa_macros
cargo proa check

cargo proa check runs the template lints and the RSJS linker together, which is where most upgrade breakage surfaces. A plain cargo check will miss link-time errors.

Upgrading to 0.3

0.3 was a consolidation release. Six surfaces were removed and one buffer became the standard.

ChangeWhat to do
Standard render bufferReplace bespoke writers with RenderBuffer. See WriteBuf
Component-tree ownership movedComponents take ownership of children rather than borrowing
Native-mobile surface removedNo replacement. The crate no longer targets it
Runtime-template and Vm* surface removedTemplates are compile-time only. Move dynamic templates to data-driven components
Documentation-build adapters removedUse proa_docs_build. See Proa Docs
Product-specific route codegen removedAuthor routes directly. See Routes and layouts

Upgrading past 0.3

Breaking changes since 0.3 affect how components are authored and linked, how fonts are declared, and how Markdown components receive their context:

Good to know: The linked-pipeline change is the one most likely to surprise CI. If your pipeline runs cargo build, switch it to cargo proa build. See CI / GitHub Actions.

When an upgrade breaks the build

Work in this order, because each step rules out the next:

  1. Read the changelog entry for every version you crossed. Breaking changes are marked.
  2. Run cargo proa check, not cargo check. Template lints and linker errors only appear in the former.
  3. Check the RSJS boundary. Most post-0.3 breakage is a component that used to be implicitly analysed and now needs an explicit #[rsjs(component)] or #[rsjs(component, client)].
  4. Check your buffer. If a custom writer stopped compiling, move to RenderBuffer.
  5. Search Troubleshooting for the exact diagnostic text.

Next steps

Search

Type at least 2 characters