Skip to content

Replace deprecated analytics screen helper - #685

Merged
wyne merged 1 commit into
mainfrom
codex/fix-analytics-screen-warning
Jul 1, 2026
Merged

Replace deprecated analytics screen helper#685
wyne merged 1 commit into
mainfrom
codex/fix-analytics-screen-warning

Conversation

@wyne

@wyne wyne commented Jul 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • replace React Native Firebase logScreenView(), which is deprecated in v24
  • emit the supported screen_view event through modular logEvent()
  • preserve screen_name and screen_class parameters
  • update analytics and navigation tests to assert the replacement event payload

Validation

  • npm run lint
  • npm run test -- --runInBand --no-watchman
  • 42 suites passed, 414 tests passed

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Coverage after merging codex/fix-analytics-screen-warning into main will be

64.20%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
redux
   GamesSlice.ts59.90%35.42%63.33%69.30%104–105, 105, 105, 107, 115–116, 116, 116, 118, 126, 148, 173–175, 190, 220, 227, 229, 232–234, 298, 311, 320–321, 321, 321, 327, 327, 327–328, 330, 332–333, 336, 336, 336, 336, 336–337, 340–341, 343, 345, 345, 345, 345, 345–346, 348, 348, 348, 350–351, 354, 354, 354, 356, 58, 69, 86, 91–92, 92, 92
   PlayersSlice.ts88.04%95%85.71%86.27%105, 107, 115, 35, 52–53, 70–71
   SettingsSlice.ts57.69%66.67%50%61.54%100, 103, 108, 114, 58, 61, 67, 70, 73, 82, 85, 94
   backup.ts77.78%74.42%88.89%80.21%105, 105, 105, 128–130, 138, 174–175, 177, 191–195, 197, 197, 197–198, 203, 206, 217, 227–228, 244, 58–63, 65, 68, 68–70, 70, 70–71, 71, 71, 73–74, 76–78, 80–81, 81–82, 88–89
   hooks.ts100%100%100%100%
   scoreUtils.ts93.33%87.50%100%100%5
   selectors.ts100%100%100%100%
   store.ts0%0%0%0%10, 12, 12, 12–13, 13, 13–15, 18, 21–23, 23, 23, 23, 23–24, 29, 33, 60, 67, 74, 81, 99
   testStore.ts0%100%0%0%11–15, 20–23, 25, 42–44, 5
src
   Analytics.ts100%100%100%100%
   AnalyticsEvents.ts100%100%100%100%
   ColorPalette.ts100%100%100%100%
   Logger.ts91.23%87.50%81.82%94.74%14–15, 22
   Navigation.tsx82.35%80%66.67%88.89%104–105, 49, 53, 95, 98
   constants.ts100%100%100%100%
   theme.ts93.75%85.71%100%100%79
src/components
   EditGame.tsx79.63%75%66.67%84.85%35, 49, 62–63, 86, 86, 86–87
   FloatingActionButton.tsx93.75%100%88.89%95.24%42
   GameListItem.tsx66.10%47.83%100%73.33%103, 20, 23–24, 24, 24–26, 26, 26–28, 28, 28–30, 30, 30–31, 73
   GameListItemPlayerName.tsx100%100%100%100%
   MenuOpenContext.tsx87.50%100%66.67%100%
   PlayerListItem.tsx0%0%0%0%123, 123, 134, 24, 32–34, 34, 34–38, 40, 40, 40, 40, 40–41, 41, 41–42, 42, 42, 44–45, 56, 63–64, 66, 72–73, 76, 79, 82–83, 90, 93, 93, 96, 96, 96–97, 99
   ScoreLogTable.tsx90.91%80%100%96.67%51, 53, 55, 55, 64, 70
   SplashOverlay.tsx0%0%0%0%22–24, 24, 24, 26–28, 30, 32–33, 35, 37, 40, 40, 40, 43, 49, 53, 58, 74
src/components/AppInfo
   RotatingIcon.tsx0%0%0%0%18–19, 21–24, 26, 28–30, 37–38, 40, 40, 40–41, 44, 44, 44–48, 51, 53–54, 59
   SeedData.ts0%100%0%0%17, 47, 49–50, 52, 54–56, 58–60, 62, 68, 71, 82–85
src/components/BigButtons
   BigButton.tsx0%0%0%0%18, 18–20, 22–23, 23, 25, 25–26, 26, 48
src/components/Boards
   ListBoard.tsx86.81%72.73%84.21%98.57%123, 180, 206–207, 220, 223, 262, 29, 33, 59–61, 84, 84, 88, 92
   PlayerTile.tsx0%0%0%0%29, 38–42, 42, 42–43, 43, 43, 43, 43–44, 44, 44–46, 46, 46, 48–50, 50, 50, 52, 55, 55, 59–60, 63–64, 66, 68, 68, 68, 68, 68–69, 69, 69, 69, 69, 71, 81, 81, 98
   TileBoard.tsx96.43%90.32%100%100%18, 77, 93
src/components/Buttons
   AppSettingsButton.tsx100%100%100%100%
   BackButton.tsx0%100%0%0%16–18, 20–21
   GameOptionsButton.tsx51.85%42.86%69.23%54.72%102, 122, 122, 122–123, 125–126, 130, 130, 130, 130, 130, 130, 130, 132–133, 135–136, 138–139, 141–144, 146–148, 150–152, 159, 165–166, 177, 179, 179, 185, 185, 185, 185, 40, 46, 48, 58, 65, 73, 94, 98
   HeaderButton.tsx100%100%100%100%
src/components/ColorPalettes
   ColorSelector.tsx100%100%100%100%
   PalettePreview.tsx0%0%0%0%10–12, 14, 19, 19, 25
   PaletteSelector.tsx0%0%0%0%13, 15–18, 20, 22, 22, 22, 24–25, 31, 37, 40, 45, 56
src/components/Headers
   RoundHeaderTitle.tsx0%0%0%0%12–14, 16–17, 17, 17–18, 18, 18–19, 19, 19, 21, 21, 21, 23–24, 26–27, 27, 27, 27, 27, 29–30, 30, 33–34, 43–44, 44, 44, 46–48, 56, 58,

@wyne

wyne commented Jul 1, 2026

Copy link
Copy Markdown
Owner Author

@claude code review this

@claude

claude Bot commented Jul 1, 2026

Copy link
Copy Markdown

Claude finished @wyne's task in 1m 40s —— View job


Code Review

  • Gather context (diff, related files)
  • Understand the request
  • Review changed files for correctness, security, style
  • Post final review feedback

Summary

Clean, well-scoped fix. logScreenView() (src/Analytics.ts:50-59) now calls the modular logEvent(analytics, 'screen_view', {...}) instead of the deprecated logScreenView() helper, and the test updates in Analytics.test.ts / Navigation.test.tsx correctly track the new call signature (asserting the 'screen_view' event-name argument and the same screen_name/screen_class payload). This matches the official RNFirebase v24 migration path.

Findings

Nit — leftover dead mock (__mocks__/@react-native-firebase/analytics.ts:5,8,14)
mockLogScreenView / logScreenView are still exported from the manual Firebase mock, but nothing in src/ imports logScreenView from @react-native-firebase/analytics anymore (confirmed via repo-wide grep). Harmless since Jest won't complain about an unused mock export, but it's dead code from the migration that could be removed for clarity.
Fix this →

Nit — screen_view bypasses the typed event catalog (src/Analytics.ts:50-59)
The rest of the codebase routes events through the generic logEvent<K extends keyof AnalyticsEventParams> wrapper so a bad event name or param key is a compile error (per the doc comment at src/Analytics.ts:10-14). logScreenView calls firebaseLogEvent directly with a literal 'screen_view' and an untyped params object, so it doesn't get that compile-time safety, nor the logger.info call / null-stripping that logEvent provides. Not a bug — screen_name/screen_class are always strings here — just an inconsistency worth being aware of if screen_view params ever grow more fields.

No correctness, security, or test-coverage issues found. I wasn't able to run npm run lint / npm test in this session (Bash tool calls were blocked pending approval), so these findings are from static review only — the PR description states both were run locally with 42 suites / 414 tests passing.

@wyne
wyne merged commit e7a7c1e into main Jul 1, 2026
5 checks passed
@wyne
wyne deleted the codex/fix-analytics-screen-warning branch July 1, 2026 04:01
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