Skip to content

Every Onyx PR ships with a linked E/App PR that becomes the bump PR. #91215

Closed

Description

@mountiny

Coming from here

Background:

react-native-onyx is published as a standalone npm package and consumed by Expensify/App as an exact-pinned dependency (e.g. "react-native-onyx": "3.0.68"). Today, the workflow for shipping an Onyx change is:

  1. A developer opens a PR in Expensify/react-native-onyx.
  2. They optionally open a separate E/App PR with the Onyx version swapped (via git+https or a local link) to verify CI and prepare test steps. This is at the author's discretion.
  3. The Onyx PR is reviewed and merged on its own merits.
  4. After npm publish, a separate "bump" PR is opened in E/App pointing to the new published version.
  5. The bump PR is re-tested against E/App's current main — often 1–2 weeks after the original Onyx change — and merged.

Onyx is one of the most important dependencies of E/App, so each change carries meaningful risk. Contributors who ship to Onyx regularly tend to pair their Onyx PR with a linked E/App PR and validate end-to-end before merging. Occasional contributors - less familiar with the workflow and often open the Onyx PR on its own, without an E/App-side PR or testing against E/App at all.

Problem:

When an Onyx PR is merged without being validated against E/App's current main at the time of merge, regressions surface only weeks later during the bump, which prevents E/App from upgrading to the latest Onyx version quickly and confidently.

Solution:

  1. Mandatory linked E/App PR per Onyx PR:
  • Onyx PRs must include a Linked E/App PR: line in the PR body pointing to a corresponding Expensify/App PR. Existing validatePRChecklist action must be updated to parse the linked PR URL from the body and fail the check if the link is missing.
  • The linked E/App PR pins to the Onyx PR HEAD via git+https ("react-native-onyx": "git+https://github.com/Expensify/react-native-onyx.git#<commit_sha>). It's a proven working pattern.
  1. Single review surface for both PRs.
  • The E/App PR runs the full E/App test suite, typecheck, lint, etc. This + manual testing passing is the authoritative signal that the Onyx change is safe.
    - The Onyx PR reviewer reviews and approves both PRs.
  • The Onyx PR checklists gains a "Verified against linked E/App PR" item that must be ticked at approval.
  1. After the Onyx PR is merged and the new version publishes to npm, the Onyx author manually updates the linked E/App PR: swap onyx sha version to the pinned published version (e.g. "react-native-onyx": "3.0.72"), push the commit, and request a final review.
Issue OwnerCurrent Issue Owner: @VickyStash
Issue OwnerCurrent Issue Owner: @VickyStash

Activity

  1. VickyStash commented on May 21, 2026

    @VickyStash
    Contributor

    Haven't had enough time today for this one. I'm going to take it to work tomorrow.

  2. VickyStash commented on May 22, 2026

    @VickyStash
    Contributor

    UPD:

  3. VickyStash commented on May 25, 2026

    @VickyStash
    Contributor

    UPD:

    • Onyx PR was merged!
    • Let's wait till updates reach E/App
  4. melvin-bot commented on May 28, 2026

    @melvin-bot

    @VickyStash Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

  5. VickyStash commented on May 29, 2026

    @VickyStash
    Contributor

    Not overdue, waiting for the bump PR to be unholded.

  6. melvin-bot commented on Jun 1, 2026

    @melvin-bot

    @VickyStash Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

  7. VickyStash commented on Jun 2, 2026

    @VickyStash
    Contributor

    Same, not overdue!

  8. VickyStash commented on Jun 3, 2026

    @VickyStash
    Contributor

    Onyx bump was merged! #92351
    Issue can be closed when it hits prod I think.

    Note: I'll be OOO tomorrow (national holiday in Poland), back on Friday!

  9. VickyStash commented on Jun 5, 2026

    @VickyStash
    Contributor

    Onyx bump was deployed to prod!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions