Skip to content

Add Sentry for error tracking and performance monitoring#644

Open
wyne wants to merge 4 commits into
mainfrom
feat/add-sentry
Open

Add Sentry for error tracking and performance monitoring#644
wyne wants to merge 4 commits into
mainfrom
feat/add-sentry

Conversation

@wyne

@wyne wyne commented Jun 12, 2026

Copy link
Copy Markdown
Owner

Why

The v3.0.0 release shipped with UI lag (fixed in v3.0.1) and a usage drop that was invisible to existing telemetry: Crashlytics only sees crashes, and GA4 only shows fewer events after the fact. Sentry fills that gap with release health (crash-free session rate per version), navigation performance tracing (slow/frozen frames per screen), and capture of non-fatal JS errors and unhandled promise rejections.

What

  • src/sentry.tsSentry.init with navigation integration, native frames tracking, session tracking, and 100% trace sampling (low event volume app). The SDK is fully disabled unless EXPO_PUBLIC_SENTRY_DSN is set, and never runs in dev.
  • App.tsx — Sentry module imported first (so init precedes store/firebase side effects); root component wrapped in Sentry.wrap for touch breadcrumbs and app-start tracing.
  • src/Navigation.tsx — registers the NavigationContainer with Sentry's React Navigation integration for screen-load transactions and time-to-initial-display.
  • metro.config.js — switched to getSentryExpoConfig (wraps Expo's default config) for debug ID injection so stack traces symbolicate.
  • app.config.js@sentry/react-native/expo config plugin for source map upload during EAS builds; skipped with a warning when SENTRY_AUTH_TOKEN isn't present, so builds don't break before the Sentry project exists.
  • jest.config.ts — added @sentry/.* to the transform allowlist.

Setup required after merge

  1. Create a Sentry org/project (suggested slugs: wyne / scorepad-react-native, or adjust via SENTRY_ORG/SENTRY_PROJECT build env).
  2. In EAS environment variables, set EXPO_PUBLIC_SENTRY_DSN (plain text, not a secret) and SENTRY_AUTH_TOKEN (secret, for source map upload).
  3. Until then the SDK is inert — merging this is safe with no Sentry account.

Verification

  • eslint and tsc pass
  • Full jest suite: 38 suites, 365 tests pass
  • npx expo config --type prebuild resolves the config plugin cleanly

🤖 Generated with Claude Code

Adds @sentry/react-native with release health, navigation tracing,
and slow/frozen frame tracking to catch non-crash regressions
(JS errors, perf degradation) that Crashlytics misses.

- Sentry.init in src/sentry.ts, imported first in App.tsx and wrapped
  with Sentry.wrap for touch breadcrumbs and profiling
- React Navigation integration registered on the NavigationContainer
  for screen-load transactions and time-to-initial-display
- Metro config switched to getSentryExpoConfig for debug ID injection
  and symbolicated stack traces
- Expo config plugin for source map upload during EAS builds
- SDK disabled unless EXPO_PUBLIC_SENTRY_DSN is set (and never in dev)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Coverage after merging feat/add-sentry into main will be

60.47%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
redux
   GamesSlice.ts54.09%27.50%56.52%64.58%101, 109, 131–133, 148, 167, 178, 185, 187, 190–192, 242, 256, 269, 278–279, 279, 279, 285, 285, 285–286, 288, 29, 290–291, 294, 294, 294, 294, 294–295, 298–299, 301, 303, 303, 303, 303, 303–304, 306, 306, 306, 308–309, 312, 312, 312, 314, 52, 63, 80, 85–86, 86, 86, 98–99, 99, 99
   PlayersSlice.ts89.90%100%87.50%85.11%103, 105, 33, 50–51, 68–69
   SettingsSlice.ts46.81%25%42.11%54.17%101, 104, 54, 57, 63, 66, 72, 75, 84, 84, 84, 90, 93, 98
   backup.ts0%0%0%0%11, 27–29, 31, 45–49, 51, 51, 51–52, 57, 60, 64–66, 71, 71, 71, 73–75, 78–79, 81–82, 85, 85, 85, 85, 85–87, 90–93, 95, 97
   hooks.ts100%100%100%100%
   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, 28, 54, 61, 68, 75, 92
   testStore.ts0%100%0%0%11–15, 20–23, 25, 42–44, 5
src
   Analytics.ts100%100%100%100%
   ColorPalette.ts100%100%100%100%
   Logger.ts91.23%87.50%81.82%94.74%14–15, 22
   Navigation.tsx72.50%72.73%55.56%80%46, 50, 63, 73, 76, 82–83
   constants.ts100%100%100%100%
   sentry.ts80%50%100%100%15
   theme.ts93.75%85.71%100%100%79
src/components
   EditGame.tsx81.40%70%71.43%88.46%25, 39, 64, 64, 64–65
   FloatingActionButton.tsx67.86%100%42.86%73.68%38, 41–42, 55–56
   GameListItem.tsx64.41%45.83%100%72.41%19, 22–23, 23, 23–25, 25, 25–27, 27, 27–29, 29, 29–30, 48, 52, 80
   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.tsx92.59%82.35%100%96.15%50, 52, 54, 54
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.51%69.77%83.33%98.46%169–170, 183, 186, 188, 228, 29, 33, 55, 59, 59, 63, 68, 99
   PlayerTile.tsx0%0%0%0%26, 36, 36, 36, 36, 36–37, 37, 37, 37, 37, 39–46, 46, 46, 48–49, 52–53, 55, 65, 65, 82
   TileBoard.tsx97.47%93.10%100%100%75, 89
src/components/Buttons
   AppSettingsButton.tsx100%100%100%100%
   BackButton.tsx0%100%0%0%16–18, 20–21
   GameOptionsButton.tsx53.40%45%75%54.90%100, 118, 118, 118, 118, 118, 118, 118, 120–122, 124–126, 128–130, 132–135, 137–139, 141–143, 150, 156–157, 168, 170, 170, 176, 176, 176, 176, 38, 44, 46, 56, 63, 71, 92, 96
   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, 18, 18, 18, 20–21, 21, 21–22, 22, 22, 24–25, 27–28, 28, 28, 28, 28, 30–31, 31, 34–35, 44–45, 45, 45, 47–49, 57, 59, 62, 62, 62, 62, 64, 64, 70, 70, 70, 70, 73, 73, 73, 73, 73, 75, 75, 75, 75, 84
src/components/Icons
   RematchIcon.tsx100%100%100%100%
src/components/Interactions
   InteractionComponents.ts0%100%100%0%6
   InteractionType.ts100%100%100%100%
   interactionConstants.ts100%100%100%100%
src/components/Interactions/Dial
   Dial.tsx100%100%100%100%
   DialControl.tsx54.49%48.72%59.52%55.80%117–118, 124, 142, 218, 225–226, 226, 226–229, 231, 242, 242, 242–243, 264,

DSN presence is now the sole on/off switch so local dev clients can
test reporting via a gitignored .env. Events are tagged with
development/preview/production derived from the bundle id suffix.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Coverage after merging feat/add-sentry into main will be

60.51%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
redux
   GamesSlice.ts54.09%27.50%56.52%64.58%101, 109, 131–133, 148, 167, 178, 185, 187, 190–192, 242, 256, 269, 278–279, 279, 279, 285, 285, 285–286, 288, 29, 290–291, 294, 294, 294, 294, 294–295, 298–299, 301, 303, 303, 303, 303, 303–304, 306, 306, 306, 308–309, 312, 312, 312, 314, 52, 63, 80, 85–86, 86, 86, 98–99, 99, 99
   PlayersSlice.ts89.90%100%87.50%85.11%103, 105, 33, 50–51, 68–69
   SettingsSlice.ts46.81%25%42.11%54.17%101, 104, 54, 57, 63, 66, 72, 75, 84, 84, 84, 90, 93, 98
   backup.ts0%0%0%0%11, 27–29, 31, 45–49, 51, 51, 51–52, 57, 60, 64–66, 71, 71, 71, 73–75, 78–79, 81–82, 85, 85, 85, 85, 85–87, 90–93, 95, 97
   hooks.ts100%100%100%100%
   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, 28, 54, 61, 68, 75, 92
   testStore.ts0%100%0%0%11–15, 20–23, 25, 42–44, 5
src
   Analytics.ts100%100%100%100%
   ColorPalette.ts100%100%100%100%
   Logger.ts91.23%87.50%81.82%94.74%14–15, 22
   Navigation.tsx72.50%72.73%55.56%80%46, 50, 63, 73, 76, 82–83
   constants.ts100%100%100%100%
   sentry.ts69.23%50%100%100%14, 14, 16, 16
   theme.ts93.75%85.71%100%100%79
src/components
   EditGame.tsx81.40%70%71.43%88.46%25, 39, 64, 64, 64–65
   FloatingActionButton.tsx67.86%100%42.86%73.68%38, 41–42, 55–56
   GameListItem.tsx64.41%45.83%100%72.41%19, 22–23, 23, 23–25, 25, 25–27, 27, 27–29, 29, 29–30, 48, 52, 80
   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.tsx92.59%82.35%100%96.15%50, 52, 54, 54
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.51%69.77%83.33%98.46%169–170, 183, 186, 188, 228, 29, 33, 55, 59, 59, 63, 68, 99
   PlayerTile.tsx0%0%0%0%26, 36, 36, 36, 36, 36–37, 37, 37, 37, 37, 39–46, 46, 46, 48–49, 52–53, 55, 65, 65, 82
   TileBoard.tsx97.47%93.10%100%100%75, 89
src/components/Buttons
   AppSettingsButton.tsx100%100%100%100%
   BackButton.tsx0%100%0%0%16–18, 20–21
   GameOptionsButton.tsx53.40%45%75%54.90%100, 118, 118, 118, 118, 118, 118, 118, 120–122, 124–126, 128–130, 132–135, 137–139, 141–143, 150, 156–157, 168, 170, 170, 176, 176, 176, 176, 38, 44, 46, 56, 63, 71, 92, 96
   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, 18, 18, 18, 20–21, 21, 21–22, 22, 22, 24–25, 27–28, 28, 28, 28, 28, 30–31, 31, 34–35, 44–45, 45, 45, 47–49, 57, 59, 62, 62, 62, 62, 64, 64, 70, 70, 70, 70, 73, 73, 73, 73, 73, 75, 75, 75, 75, 84
src/components/Icons
   RematchIcon.tsx100%100%100%100%
src/components/Interactions
   InteractionComponents.ts0%100%100%0%6
   InteractionType.ts100%100%100%100%
   interactionConstants.ts100%100%100%100%
src/components/Interactions/Dial
   Dial.tsx100%100%100%100%
   DialControl.tsx54.49%48.72%59.52%55.80%117–118, 124, 142, 218, 225–226, 226, 226–229, 231, 242,

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Coverage after merging feat/add-sentry into main will be

60.51%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
redux
   GamesSlice.ts54.09%27.50%56.52%64.58%101, 109, 131–133, 148, 167, 178, 185, 187, 190–192, 242, 256, 269, 278–279, 279, 279, 285, 285, 285–286, 288, 29, 290–291, 294, 294, 294, 294, 294–295, 298–299, 301, 303, 303, 303, 303, 303–304, 306, 306, 306, 308–309, 312, 312, 312, 314, 52, 63, 80, 85–86, 86, 86, 98–99, 99, 99
   PlayersSlice.ts89.90%100%87.50%85.11%103, 105, 33, 50–51, 68–69
   SettingsSlice.ts46.81%25%42.11%54.17%101, 104, 54, 57, 63, 66, 72, 75, 84, 84, 84, 90, 93, 98
   backup.ts0%0%0%0%11, 27–29, 31, 45–49, 51, 51, 51–52, 57, 60, 64–66, 71, 71, 71, 73–75, 78–79, 81–82, 85, 85, 85, 85, 85–87, 90–93, 95, 97
   hooks.ts100%100%100%100%
   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, 28, 54, 61, 68, 75, 92
   testStore.ts0%100%0%0%11–15, 20–23, 25, 42–44, 5
src
   Analytics.ts100%100%100%100%
   ColorPalette.ts100%100%100%100%
   Logger.ts91.23%87.50%81.82%94.74%14–15, 22
   Navigation.tsx72.50%72.73%55.56%80%46, 50, 63, 73, 76, 82–83
   constants.ts100%100%100%100%
   sentry.ts69.23%50%100%100%14, 14, 16, 16
   theme.ts93.75%85.71%100%100%79
src/components
   EditGame.tsx81.40%70%71.43%88.46%25, 39, 64, 64, 64–65
   FloatingActionButton.tsx67.86%100%42.86%73.68%38, 41–42, 55–56
   GameListItem.tsx64.41%45.83%100%72.41%19, 22–23, 23, 23–25, 25, 25–27, 27, 27–29, 29, 29–30, 48, 52, 80
   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.tsx92.59%82.35%100%96.15%50, 52, 54, 54
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.51%69.77%83.33%98.46%169–170, 183, 186, 188, 228, 29, 33, 55, 59, 59, 63, 68, 99
   PlayerTile.tsx0%0%0%0%26, 36, 36, 36, 36, 36–37, 37, 37, 37, 37, 39–46, 46, 46, 48–49, 52–53, 55, 65, 65, 82
   TileBoard.tsx97.47%93.10%100%100%75, 89
src/components/Buttons
   AppSettingsButton.tsx100%100%100%100%
   BackButton.tsx0%100%0%0%16–18, 20–21
   GameOptionsButton.tsx53.40%45%75%54.90%100, 118, 118, 118, 118, 118, 118, 118, 120–122, 124–126, 128–130, 132–135, 137–139, 141–143, 150, 156–157, 168, 170, 170, 176, 176, 176, 176, 38, 44, 46, 56, 63, 71, 92, 96
   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, 18, 18, 18, 20–21, 21, 21–22, 22, 22, 24–25, 27–28, 28, 28, 28, 28, 30–31, 31, 34–35, 44–45, 45, 45, 47–49, 57, 59, 62, 62, 62, 62, 64, 64, 70, 70, 70, 70, 73, 73, 73, 73, 73, 75, 75, 75, 75, 84
src/components/Icons
   RematchIcon.tsx100%100%100%100%
src/components/Interactions
   InteractionComponents.ts0%100%100%0%6
   InteractionType.ts100%100%100%100%
   interactionConstants.ts100%100%100%100%
src/components/Interactions/Dial
   Dial.tsx100%100%100%100%
   DialControl.tsx54.49%48.72%59.52%55.80%117–118, 124, 142, 218, 225–226, 226, 226–229, 231, 242,

The DSN is a public ingestion identifier, not a secret. Production
gets it via EAS environment variables once preview is validated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Coverage after merging feat/add-sentry into main will be

60.51%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
redux
   GamesSlice.ts54.09%27.50%56.52%64.58%101, 109, 131–133, 148, 167, 178, 185, 187, 190–192, 242, 256, 269, 278–279, 279, 279, 285, 285, 285–286, 288, 29, 290–291, 294, 294, 294, 294, 294–295, 298–299, 301, 303, 303, 303, 303, 303–304, 306, 306, 306, 308–309, 312, 312, 312, 314, 52, 63, 80, 85–86, 86, 86, 98–99, 99, 99
   PlayersSlice.ts89.90%100%87.50%85.11%103, 105, 33, 50–51, 68–69
   SettingsSlice.ts46.81%25%42.11%54.17%101, 104, 54, 57, 63, 66, 72, 75, 84, 84, 84, 90, 93, 98
   backup.ts0%0%0%0%11, 27–29, 31, 45–49, 51, 51, 51–52, 57, 60, 64–66, 71, 71, 71, 73–75, 78–79, 81–82, 85, 85, 85, 85, 85–87, 90–93, 95, 97
   hooks.ts100%100%100%100%
   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, 28, 54, 61, 68, 75, 92
   testStore.ts0%100%0%0%11–15, 20–23, 25, 42–44, 5
src
   Analytics.ts100%100%100%100%
   ColorPalette.ts100%100%100%100%
   Logger.ts91.23%87.50%81.82%94.74%14–15, 22
   Navigation.tsx72.50%72.73%55.56%80%46, 50, 63, 73, 76, 82–83
   constants.ts100%100%100%100%
   sentry.ts69.23%50%100%100%14, 14, 16, 16
   theme.ts93.75%85.71%100%100%79
src/components
   EditGame.tsx81.40%70%71.43%88.46%25, 39, 64, 64, 64–65
   FloatingActionButton.tsx67.86%100%42.86%73.68%38, 41–42, 55–56
   GameListItem.tsx64.41%45.83%100%72.41%19, 22–23, 23, 23–25, 25, 25–27, 27, 27–29, 29, 29–30, 48, 52, 80
   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.tsx92.59%82.35%100%96.15%50, 52, 54, 54
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.51%69.77%83.33%98.46%169–170, 183, 186, 188, 228, 29, 33, 55, 59, 59, 63, 68, 99
   PlayerTile.tsx0%0%0%0%26, 36, 36, 36, 36, 36–37, 37, 37, 37, 37, 39–46, 46, 46, 48–49, 52–53, 55, 65, 65, 82
   TileBoard.tsx97.47%93.10%100%100%75, 89
src/components/Buttons
   AppSettingsButton.tsx100%100%100%100%
   BackButton.tsx0%100%0%0%16–18, 20–21
   GameOptionsButton.tsx53.40%45%75%54.90%100, 118, 118, 118, 118, 118, 118, 118, 120–122, 124–126, 128–130, 132–135, 137–139, 141–143, 150, 156–157, 168, 170, 170, 176, 176, 176, 176, 38, 44, 46, 56, 63, 71, 92, 96
   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, 18, 18, 18, 20–21, 21, 21–22, 22, 22, 24–25, 27–28, 28, 28, 28, 28, 30–31, 31, 34–35, 44–45, 45, 45, 47–49, 57, 59, 62, 62, 62, 62, 64, 64, 70, 70, 70, 70, 73, 73, 73, 73, 73, 75, 75, 75, 75, 84
src/components/Icons
   RematchIcon.tsx100%100%100%100%
src/components/Interactions
   InteractionComponents.ts0%100%100%0%6
   InteractionType.ts100%100%100%100%
   interactionConstants.ts100%100%100%100%
src/components/Interactions/Dial
   Dial.tsx100%100%100%100%
   DialControl.tsx54.49%48.72%59.52%55.80%117–118, 124, 142, 218, 225–226, 226, 226–229, 231, 242,

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