chore: replace react-native-background-timer with plain setInterval#7488
Merged
diegolmello merged 1 commit intoJul 13, 2026
Merged
Conversation
Contributor
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (2)
💤 Files with no reviewable changes (1)
🚧 Files skipped from review as they are similar to previous changes (1)
WalkthroughThe video conference timer replaces background timer APIs with standard JavaScript interval APIs and removes the corresponding runtime and type dependencies. ChangesVideo conference timer migration
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested labels: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Warning Review ran into problems🔥 ProblemsErrors were encountered while retrieving linked issues. Errors (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
react-native-background-timer is interop-only and dead since 2020, with no new-arch path. Its sole consumer (videoConfTimer, the classic-Jitsi 10s heartbeat) only needs foreground timers, so rewrite it on plain setInterval/clearInterval and drop the dependency, its @types package and the autolinked iOS pod. Trade-off: background continuation (~30s on iOS) is lost; negligible for the foreground-only legacy Jitsi keep-alive.
8223269 to
9e9f860
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed changes
react-native-background-timeris an interop-only native module, unmaintained since 2020, with no New-Architecture (TurboModule/Fabric) path. On RN 0.83 / Expo 55 it survives only because the default-on interop layer carries it, making it a first-to-break liability on future RN bumps.Its sole consumer is
videoConfTimer— the classic-Jitsi 10s keep-alive heartbeat, which runs only while theJitsiMeetViewis in the foreground. Foreground-only timing needs no native module, so this rewrites it on plainsetInterval/clearIntervaland removes the dependency, its@typespackage and the autolinked iOS pod.Trade-off: the module's background continuation (~30s on iOS after backgrounding) is lost. Negligible here — the legacy Jitsi heartbeat backs a foreground WebView call, and the accepted decision covers it.
Issue(s)
Part of the RN 0.83 / Expo 55 upgrade hardening — https://rocketchat.atlassian.net/browse/NATIVE-1234
How to test or reproduce
JitsiMeetViewmounts.POST video-conference/jitsi.update-timeoutfires immediately, then every ~10s while the call is foregrounded, and stops on call end.Screenshots
n/a — no visible UI change.
Types of changes
Checklist
Further comments
Verified:
pnpm install(−79 pkgs) +pnpm pod-installclean, pod dropped fromPodfile.lock;pnpm lint(eslint + tsc) 0 errors; iOS build succeeds and app boots on the simulator — confirming autolinking is unaffected by removing the native module. The live in-call Jitsi heartbeat (step 3 above) was not exercised, as it needs a server configured with Jitsi as the videoconf provider; the change is a pure JS-builtin timer swap, so build + boot covers the native-removal risk.Targets the RN 0.83 / Expo 55 integration branch (
chore/rn-0.83-expo-55, #7481).Summary by CodeRabbit