Skip to content

docs: add Native Compatibility page for live updates#741

Merged
WcaleNieWolny merged 5 commits into
mainfrom
wolny/docs-native-compatibility
Jun 1, 2026
Merged

docs: add Native Compatibility page for live updates#741
WcaleNieWolny merged 5 commits into
mainfrom
wolny/docs-native-compatibility

Conversation

@WcaleNieWolny
Copy link
Copy Markdown
Contributor

@WcaleNieWolny WcaleNieWolny commented May 31, 2026

Summary (AI generated)

Adds a new Native Compatibility page to the Live Updates docs: /docs/live-updates/compatibility/.

There was no dedicated page explaining native compatibility for OTA updates — the concept behind "this bundle is live but can crash older installs." The closest existing page (Version Targeting) is framed around AppFlow migration, so this page explains the concept directly and fills the previously‑404'ing /docs/live-updates/compatibility/ URL.

The page covers:

  • Why a live (JS) update can't change native code — the two‑layer model (native binary vs. JS bundle).
  • How Capgo detects itbundle compatibility (local‑vs‑live native‑package table) and bundle releaseType (native/OTA, for CI gating).
  • What a live‑but‑incompatible bundle means for users — it ships and can crash old native builds; it is not auto‑blocked.
  • How to ship safely — publish a new native build (the real fix), roll back if one is already live, or prevent delivery automatically with --auto-min-update-version on a metadata channel.

Accuracy notes (AI generated)

  • Recommends only the mechanism that actually inspects native packages (--auto-min-update-version). Explicitly notes that semver strategies (--disable-auto-update major) are not a substitute — they only block version‑number jumps and never inspect native code.
  • Deliberately avoids the --native-version upload flag: it does not exist in the current CLI (verified against the auto‑generated CLI reference and the CLI source — only --min-update-version / --auto-min-update-version exist).

Sidebar

Auto‑generated — the Live Updates section is autogenerated, so the page appears automatically via sidebar.order: 3. No sidebar.mjs change needed.

Test plan (AI generated)

  • bun run check (astro check) in apps/docs0 errors / 0 warnings / 0 hints
  • Renders locally at /docs/live-updates/compatibility/ (HTTP 200); internal links resolve
  • Reviewer: confirm tone/placement fits the Live Updates section

Follow‑up (out of scope) (AI generated)

version-targeting.mdx and upgrade/from-appflow-to-capgo.mdx still reference the non‑existent --native-version flag and present semver as a native‑compatibility guarantee. Flagged for a separate fix.

Summary by CodeRabbit

  • Documentation
    • Added new documentation page explaining native compatibility in live updates, covering how native binary changes are handled, compatibility detection methods, CLI workflows for checking compatibility, and recommended strategies for safely shipping native changes including version targeting and rollback options.

Explains why OTA bundles can't change native code, how Capgo detects native-incompatible bundles (bundle compatibility / releaseType), what a live-but-incompatible bundle means for users, and how to ship safely (publish a native build, roll back, or use --auto-min-update-version on a metadata channel). Fills the previously-404 /docs/live-updates/compatibility/ URL.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 31, 2026

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 3344bc1f-2fdd-4b70-b4bf-ecc82ba7bcc7

📥 Commits

Reviewing files that changed from the base of the PR and between b9f9fc6 and 3076ba8.

📒 Files selected for processing (1)
  • apps/docs/src/content/docs/docs/live-updates/compatibility.mdx

📝 Walkthrough

Walkthrough

This PR adds a new documentation page explaining native compatibility constraints for Capgo live updates. The page describes how updates are limited to JavaScript bundles, documents Capgo's detection mechanism for native package changes, illustrates CLI compatibility checking workflows, and outlines mitigation strategies including --fail-on-incompatible and the metadata update strategy with --auto-min-update-version.

Changes

Native Compatibility Documentation

Layer / File(s) Summary
Core concept and compatibility detection
apps/docs/src/content/docs/docs/live-updates/compatibility.mdx
Frontmatter and introduction explaining that live updates replace only JavaScript bundles; describes how Capgo detects compatibility by comparing native packages and documents CLI workflows for checking compatibility (human-readable table and CI-friendly bundle releaseType verdicts).
Incompatibility handling and prevention strategies
apps/docs/src/content/docs/docs/live-updates/compatibility.mdx
Explains user impact of incompatible deliveries on existing installations, rollback behavior for active incompatible bundles, and two prevention mechanisms: --fail-on-incompatible flag and the metadata update strategy with --auto-min-update-version to enforce delivery constraints.
Related topics and further reading
apps/docs/src/content/docs/docs/live-updates/compatibility.mdx
Navigation cards linking to Version Targeting, Rollbacks, Update Types, and CLI bundle reference, plus concluding text connecting the topic to the surrounding live-updates documentation.

🎯 1 (Trivial) | ⏱️ ~3 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adding a new documentation page about native compatibility for live updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c263b89249

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/docs/src/content/docs/docs/live-updates/compatibility.mdx Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/docs/src/content/docs/docs/live-updates/compatibility.mdx`:
- Line 91: The command string "npx `@capgo/cli` channel set production
com.example.app --disable-auto-update metadata" omits the version tag; update it
to use the same pattern as other commands by adding "`@latest`" to the package
(i.e., change "`@capgo/cli`" to "`@capgo/cli`@latest") so the line matches the other
examples such as the entries on lines referencing "npx `@capgo/cli`@latest".
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 67fd12a5-c554-4fb7-b825-2caae98350e8

📥 Commits

Reviewing files that changed from the base of the PR and between 6597b67 and c263b89.

📒 Files selected for processing (1)
  • apps/docs/src/content/docs/docs/live-updates/compatibility.mdx

Comment thread apps/docs/src/content/docs/docs/live-updates/compatibility.mdx Outdated
crate-ci/typos@v1.46.3 splits "PNGs" into "PN" and flags it as a typo of "ON", failing the Spell Check job. Pre-existing false positive in apps/web/src/content/blog/en/how-to-change-the-app-icon-on-iphone.md, unrelated to this PR. Verified clean with typos 1.46.3.
@WcaleNieWolny
Copy link
Copy Markdown
Contributor Author

Added a second commit (chore: allowlist "PNGs") to unblock the Spell Check with Typos job — it was failing on a pre-existing false positive unrelated to this page:

  • crate-ci/typos@v1.46.3 splits the acronym-plural PNGs into PN and flags it as a typo of ON.
  • Source: apps/web/src/content/blog/en/how-to-change-the-app-icon-on-iphone.md:106 ("your own PNGs") — not part of this PR's diff; it fails on main too with the pinned action version.
  • Fix: one targeted [default.extend-identifiers] entry in _typos.toml.
  • Verified by running the exact CI version (typos 1.46.3) over the whole repo → 0 errors.

Happy to split this into its own PR if you'd rather keep this one docs-only. (AI generated)

Switch all @capgo/cli examples on the Native Compatibility page from npx to bunx (AGENTS.md package-manager rule), and add the missing @latest tag to the channel set command for version consistency.
Cap-go/capgo#2383 adds bundle upload --fail-on-incompatible, a hard CI gate that fails the upload when the bundle's native packages don't match the channel's live version. Lead the prevention section with it; keep metadata/--auto-min-update-version as the delivery-gating option; note the default non-blocking behavior can be hardened.
@sonarqubecloud
Copy link
Copy Markdown

@WcaleNieWolny WcaleNieWolny merged commit a83fbc1 into main Jun 1, 2026
11 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.

1 participant