Skip to content

Improve Onyx PRs reviewing process #80097

Closed

Description

@fabioh8010

We are often seeing PRs being merged into Onyx that are not following adequate security and quality practices. The changes are sometimes "innocent" but if we don't maintain a high quality bar of the codebase they can will out of control, we will lose coverage and that's where the tricky bugs start happening. Here are some examples:

I would say that all PRs in Onyx must have manual, automated tests and videos unless specifically written and approved why they don't/can't have.

Let's think into ways to improve this process and not let bugs/uncovered code be shipped into such critical library that is Onyx.

Issue OwnerCurrent Issue Owner: @fabioh8010

Activity

  1. moved this from LOW to HIGH in [#whatsnext] #qualityon Jan 22, 2026
  2. melvin-bot commented on Feb 13, 2026

    @melvin-bot

    This issue has not been updated in over 15 days. @fabioh8010, @mountiny eroding to Monthly issue.

    P.S. Is everyone reading this sure this is really a near-term priority? Be brave: if you disagree, go ahead and close it out. If someone disagrees, they'll reopen it, and if they don't: one less thing to do!

  3. mountiny commented on Feb 15, 2026

    @mountiny
    Contributor

    Havent prioritized this yet, but @fabioh8010 feel free to create PRs for the actions that will require the automated tests

  4. MrMuzyk commented on Feb 26, 2026

    @MrMuzyk
    Contributor

    Hey, I'll take over this one from @fabioh8010 :)

  5. MrMuzyk commented on Feb 26, 2026

    @MrMuzyk
    Contributor

    I've opened a draft PR and will continue tomorrow.

    @mountiny I've added a descirption in the PR describing what I've done so far. I've talked with @fabioh8010 on what was discussed before and went in this direction. Let me know if there is something else you'd like to have for sure.

    One thing I've considered is having an escape hatch mechanism that would allow us skipping the tests if really really necessary. We can punt it right now if you don't think it's needed.

  6. MrMuzyk commented on Feb 26, 2026

    @MrMuzyk
    Contributor

    One more note - I've initially considered adding some coverage metrics and checks related to that but as this a big change I didn't go this way without discussing it.

    If this is something that would interest you let me know :)

  7. mountiny commented on Feb 26, 2026

    @mountiny
    Contributor

    That sounds good, yeah I think we do not need to add the test coverage automation for now

  8. fabioh8010 commented on Mar 2, 2026

    @fabioh8010
    ContributorAuthor
  9. mountiny commented on Mar 2, 2026

    @mountiny
    Contributor

    Both sounds good

  10. MrMuzyk commented on Mar 3, 2026

    @MrMuzyk
    Contributor

    I've updated the PR to include both of these things

  11. MrMuzyk commented on Mar 18, 2026

    @MrMuzyk
    Contributor

    @mountiny PR got merged a while ago and it's doing it's job. Is there something else you'd like to see added on this front or we're good to close here?

  12. mountiny commented on Mar 18, 2026

    @mountiny
    Contributor

    Nice, thanks! I think this is good for now and if anything else arises we can handle that separately

  13. fabioh8010 commented on Mar 20, 2026

    @fabioh8010
    ContributorAuthor

    @mountiny @MrMuzyk Can we re-open this issue?

    In this PR Expensify/react-native-onyx#757 there is no Screenshots/Videos section in the PR description, however the PR Checklist Validation is passing.

  14. MrMuzyk commented on Mar 23, 2026

    @MrMuzyk
    Contributor

    Hmm, so basically what happend is that the contributor:

    • Opened a PR with a proper checklist and it passed
    • Moved PR back to draft
    • Then edited the the description
    • The checklist is not re-validated on edits when PR is in draft state

    I believe once it would be taken out of draft the job we be triggered again and then fail.

    There is room for improvement - we should validate checklist during draft stage as well. I'll prep a PR for that today

  15. fabioh8010 commented on Mar 23, 2026

    @fabioh8010
    ContributorAuthor

    @MrMuzyk

    I believe once it would be taken out of draft the job we be triggered again and then fail.

    If we can confirm that should be enough then, we don't really need to validate on draft state.

  16. MrMuzyk commented on Mar 23, 2026

    @MrMuzyk
    Contributor

    it runs on 'ready_for_review' as well so Im pretty sure it will re-check once it's marked. Let's observe for now then

  17. MrMuzyk commented on Mar 27, 2026

    @MrMuzyk
    Contributor

    Hey @mountiny 👋

    @fabioh8010 gave me the idea that we can have scripts that verify generated API docs in a similar way as we validate actions

    Im not sure whether we need a proposal but since I've already prepared it I'll share it

    Proposal: Validate API docs are up-to-date in CI

    Background: The react-native-onyx library auto-generates two API reference files — API.md and API-INTERNAL.md — from JSDoc annotations in the TypeScript source code. The generation pipeline compiles TypeScript to JavaScript (npm run build), then extracts documentation using jsdoc-to-markdown (npm run build:docs). Both generated markdown files are committed to the repository so consumers can reference them directly on GitHub without building locally. The repository already enforces that compiled GitHub Actions stay in sync with their sources via a CI workflow (validateGithubActions.yml) and a companion shell script (verifyActions.sh) that rebuilds artifacts and fails the check if a diff is detected.

    Problem: When a contributor modifies JSDoc annotations or function signatures in the library source code, if they submit a PR without regenerating the API docs, then the committed documentation silently drifts out of sync with the actual code — misleading consumers who rely on it.

    Solution: Add a new GitHub Actions workflow (validateDocs.yml) and companion shell script (verifyDocs.sh) that mirror the existing validateGithubActions pattern.

    PR is here. I've undrafted it and got some comments so will deal with it shortly

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