Repository navigation
master has no build/test CI at all #5081
Description
Summary
The default branch (master) currently has no CI beyond docs build and issue/discussion bots. There is no lint, no unit tests, no library build, no Android build, and no iOS build - including no build of the example app on any platform. A build-breaking regression (bad Podfile change, invalid native code, broken JS) can be merged to master today with zero automated feedback.
What's actually running on master
.github/workflows/ on master contains only:
- deploy-docs.yml
- test-docs-build.yml
- stale.yml
- triage-discussion.yml
- validate-issue.yml
None of these touch packages/react-native-video, example/, Android, or iOS.
How it got this way
Until PR #4622 ("docs: upgrade documentation", merged 2025-07-24), there was a single .github/workflows/ci.yml (157 lines) running:
- lint (yarn lint / yarn typecheck)
- test (yarn test --coverage)
- build-library (yarn prepare)
- build-android (yarn turbo run build:android)
- build-ios (CocoaPods install + yarn turbo run build:ios against example/ios)
PR #4622's stated purpose was a documentation overhaul, but its diff also deletes ci.yml entirely, with nothing added in its place - deploy-docs.yml/test-docs-build.yml only cover the docs/ site. This looks like an unintended side effect of that PR rather than a deliberate CI removal, and it's gone unnoticed for over a year.
Note on support/6.x.x
The legacy support/6.x.x maintenance branch still has full CI (build-ios.yml, build-android.yml, check-ios.yml, check-js.yml, check-clang.yml), which is why those workflow IDs still show as "active" in the Actions tab - PRs based on that branch (e.g. #5076) carry the files with them. But that branch targets the old examples/bare/... layout and is unrelated to current master development. For reference, even there build-ios.yml runs on unpinned runs-on: macos-latest with no Xcode version matrix, so there's no existing pattern to copy for pinning specific Xcode versions - that'd need to be added too.
Why this matters
The exact class of regression fixed in #5080 (fmt pod needing C++17 for Xcode 26 in the example app) - or any native build break - could land on master and stay invisible until someone happens to open the example project locally. There's currently no automated signal, not even for the JS library build.
Suggested fix
Restore a master CI workflow (based on the pre-#4622 ci.yml, adapted to the current repo layout) that runs at minimum:
- lint/typecheck
- unit tests
- library build
- example app build for Android and iOS - ideally with an explicit/pinned Xcode version (or a small matrix) instead of unpinned macos-latest, so an Xcode bump is exercised deliberately rather than silently by GitHub's runner image rolling forward
Happy to help put this back together if useful.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
mziolkowskii commentedon Sep 16, 2026
masterhas CI again as of #5096. What runs now:unit.yml—bun lint,bun run build(library),bun typecheck,bun run test; plus a second job that re-runs the library's tests and typecheck against React 19.e2e.yml— Android build + Maestro on an RN0.77/0.82/0.87matrix (assembleDebug, API 36), and an iOS build + Maestro on RN 0.87, pinned tomacos-26/ iOS 26 rather thanmacos-latest.e2e-nightly.yml— wider matrix (iOS 26 onmacos-26and iOS 18 onmacos-15, RN floor included) with flaky-test quarantine.lint-workflows.yml(actionlint),e2e-lockfile-refresh.yml,cache-cleanup.yml.That covers the list in this issue: lint/typecheck, unit tests, library build, and native Android + iOS builds with an explicitly pinned runner.
One gap remains, tracked separately: the native builds compile
test-app/(the E2E harness), notexample/, so a break confined to the example app's Podfile or Gradle setup — the #5080 class of regression — still has no automated signal.