Live video on the AT Protocol

sentry works!

authored by

Natalie Bridgers and committed by
Natalie Bridgers
31a40d70 9f33d21d

+168 -107
+2
js/app/.gitignore
··· 58 58 android 59 59 code-signing-dev 60 60 generated 61 + 62 + .env.local
+13
js/app/app.config.ts
··· 84 84 export default function () { 85 85 const isProd = 86 86 process.env["SP_PRODUCTION_RELEASE"] === "true" || !!process.env.CI; 87 + const enableSentry = process.env["SP_ENABLE_SENTRY"] === "true"; 87 88 const pkg = require("./package.json"); 88 89 const name = isProd ? "Streamplace" : "Devplace"; 89 90 let bundle = isProd ? "tv.aquareum" : "tv.aquareum.dev"; ··· 260 261 [withNotificationsIOS, {}], 261 262 ] 262 263 : ["expo-dev-launcher", withoutNotificationsIOS]), 264 + ...(enableSentry 265 + ? [ 266 + [ 267 + "@sentry/react-native/expo", 268 + { 269 + url: "https://sentry.io/", 270 + project: process.env["SP_SENTRY_APP"] || "app", 271 + organization: process.env["SP_SENTRY_ORG"] || "streamplace", 272 + }, 273 + ], 274 + ] 275 + : []), 263 276 ], 264 277 experiments: { 265 278 typedRoutes: true,
+39 -1
js/app/components/provider/provider.shared.tsx
··· 3 3 LinkingOptions, 4 4 NavigationContainer, 5 5 } from "@react-navigation/native"; 6 + import * as Sentry from "@sentry/react-native"; 6 7 import { 7 8 ThemeProvider, 8 9 StreamplaceProvider as ZustandStreamplaceProvider, ··· 16 17 import { Provider as ReduxProvider } from "react-redux"; 17 18 import { useAppSelector } from "store/hooks"; 18 19 import { store } from "store/store"; 20 + import { PortalProvider, TamaguiProvider } from "tamagui"; 21 + import config from "tamagui.config"; 22 + import { CurrentToast } from "./CurrentToast"; 23 + 24 + export default Sentry.wrap(ProviderInner); 19 25 20 - export default function Provider({ 26 + import * as Application from "expo-application"; 27 + import Constants from "expo-constants"; 28 + import * as Updates from "expo-updates"; 29 + Sentry.setExtras({ 30 + manifest: Updates.manifest, 31 + linkingUri: Constants.linkingUri, 32 + }); 33 + Sentry.setTag("expoChannel", Updates.channel); 34 + Sentry.setTag("appVersion", Application.nativeApplicationVersion); 35 + Sentry.setTag("deviceId", Constants.sessionId); 36 + Sentry.setTag("executionEnvironment", Constants.executionEnvironment); 37 + Sentry.setTag("expoGoVersion", Constants.expoVersion); 38 + Sentry.setTag("expoRuntimeVersion", Constants.expoRuntimeVersion); 39 + 40 + function ProviderInner({ 21 41 children, 22 42 linking, 23 43 }: { 24 44 children: React.ReactNode; 25 45 linking: LinkingOptions<ReactNavigation.RootParamList>; 26 46 }) { 47 + Sentry.init({ 48 + dsn: process.env.EXPO_PUBLIC_SENTRY_DSN || undefined, 49 + // Adds more context data to events (IP address, cookies, user, etc.) 50 + // For more information, visit: https://docs.sentry.io/platforms/react-native/data-management/data-collected/ 51 + sendDefaultPii: true, 52 + 53 + // Configure Session Replay 54 + replaysSessionSampleRate: 0.1, 55 + replaysOnErrorSampleRate: 1, 56 + integrations: [ 57 + Sentry.mobileReplayIntegration(), 58 + Sentry.feedbackIntegration(), 59 + ], 60 + 61 + // uncomment the line below to enable Spotlight (https://spotlightjs.com) 62 + spotlight: __DEV__, 63 + }); 64 + 27 65 return ( 28 66 <ThemeProvider forcedTheme="dark"> 29 67 <NavigationContainer theme={DarkTheme} linking={linking}>
+5 -6
js/app/metro.config.js
··· 1 - // Learn more https://docs.expo.io/guides/customizing-metro 2 - /** 3 - * @type {import('expo/metro-config').MetroConfig} 4 - */ 5 - const { getDefaultConfig } = require("expo/metro-config"); 6 1 const { FileStore } = require("metro-cache"); 7 2 const path = require("path"); 3 + // Enable Tamagui and add nice web support with optimizing compiler + CSS extraction 4 + const { withTamagui } = require("@tamagui/metro-plugin"); 5 + 6 + const { getSentryExpoConfig } = require("@sentry/react-native/metro"); 8 7 9 - let config = getDefaultConfig(__dirname, { 8 + let config = getSentryExpoConfig(__dirname, { 10 9 // [Web-only]: Enables CSS support in Metro. 11 10 isCSSEnabled: true, 12 11 });
+1 -1
js/app/package.json
··· 39 39 "@react-navigation/native": "^6.1.18", 40 40 "@react-navigation/native-stack": "^6.11.0", 41 41 "@reduxjs/toolkit": "^2.3.0", 42 - "@sentry/react-native": "^7.0.1", 42 + "@sentry/react-native": "^6.14.0", 43 43 "@streamplace/atproto-oauth-client-react-native": "workspace:*", 44 44 "@streamplace/components": "workspace:*", 45 45 "@tanstack/react-query": "^5.59.19",
+108 -99
pnpm-lock.yaml
··· 94 94 specifier: ^2.3.0 95 95 version: 2.3.0(react-redux@9.1.2(@types/react@18.3.12)(react@19.0.0)(redux@5.0.1))(react@19.0.0) 96 96 '@sentry/react-native': 97 - specifier: ^7.0.1 98 - version: 7.0.1(encoding@0.1.13)(expo@53.0.11(@babel/core@7.26.0)(@expo/metro-runtime@5.0.4(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(react-native-webview@13.15.0(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(utf-8-validate@5.0.10))(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0) 97 + specifier: ^6.14.0 98 + version: 6.14.0(encoding@0.1.13)(expo@53.0.11(@babel/core@7.26.0)(@expo/metro-runtime@5.0.4(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(react-native-webview@13.15.0(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(utf-8-validate@5.0.10))(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0) 99 99 '@streamplace/atproto-oauth-client-react-native': 100 100 specifier: workspace:* 101 101 version: link:../atproto-oauth-client-react-native ··· 3790 3790 '@scure/bip39@1.4.0': 3791 3791 resolution: {integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==} 3792 3792 3793 - '@sentry-internal/browser-utils@10.8.0': 3794 - resolution: {integrity: sha512-FaQX9eefc8sh3h3ZQy16U73KiH0xgDldXnrFiWK6OeWg8X4bJpnYbLqEi96LgHiQhjnnz+UQP1GDzH5oFuu5fA==} 3795 - engines: {node: '>=18'} 3793 + '@sentry-internal/browser-utils@8.54.0': 3794 + resolution: {integrity: sha512-DKWCqb4YQosKn6aD45fhKyzhkdG7N6goGFDeyTaJFREJDFVDXiNDsYZu30nJ6BxMM7uQIaARhPAC5BXfoED3pQ==} 3795 + engines: {node: '>=14.18'} 3796 3796 3797 - '@sentry-internal/feedback@10.8.0': 3798 - resolution: {integrity: sha512-n7SqgFQItq4QSPG7bCjcZcIwK6AatKnnmSDJ/i6e8jXNIyLwkEuY2NyvTXACxVdO/kafGD5VmrwnTo3Ekc1AMg==} 3799 - engines: {node: '>=18'} 3797 + '@sentry-internal/feedback@8.54.0': 3798 + resolution: {integrity: sha512-nQqRacOXoElpE0L0ADxUUII0I3A94niqG9Z4Fmsw6057QvyrV/LvTiMQBop6r5qLjwMqK+T33iR4/NQI5RhsXQ==} 3799 + engines: {node: '>=14.18'} 3800 3800 3801 - '@sentry-internal/replay-canvas@10.8.0': 3802 - resolution: {integrity: sha512-jC4OOwiNgrlIPeXIPMLkaW53BSS1do+toYHoWzzO5AXGpN6jRhanoSj36FpVuH2N3kFnxKVfVxrwh8L+/3vFWg==} 3803 - engines: {node: '>=18'} 3801 + '@sentry-internal/replay-canvas@8.54.0': 3802 + resolution: {integrity: sha512-K/On3OAUBeq/TV2n+1EvObKC+WMV9npVXpVyJqCCyn8HYMm8FUGzuxeajzm0mlW4wDTPCQor6mK9/IgOquUzCw==} 3803 + engines: {node: '>=14.18'} 3804 3804 3805 - '@sentry-internal/replay@10.8.0': 3806 - resolution: {integrity: sha512-9+qDEoEjv4VopLuOzK1zM4LcvcUsvB5N0iJ+FRCM3XzzOCbebJOniXTQbt5HflJc3XLnQNKFdKfTfgj8M/0RKQ==} 3807 - engines: {node: '>=18'} 3805 + '@sentry-internal/replay@8.54.0': 3806 + resolution: {integrity: sha512-8xuBe06IaYIGJec53wUC12tY2q4z2Z0RPS2s1sLtbA00EvK1YDGuXp96IDD+HB9mnDMrQ/jW5f97g9TvPsPQUg==} 3807 + engines: {node: '>=14.18'} 3808 3808 3809 - '@sentry/babel-plugin-component-annotate@4.3.0': 3810 - resolution: {integrity: sha512-OuxqBprXRyhe8Pkfyz/4yHQJc5c3lm+TmYWSSx8u48g5yKewSQDOxkiLU5pAk3WnbLPy8XwU/PN+2BG0YFU9Nw==} 3809 + '@sentry/babel-plugin-component-annotate@3.4.0': 3810 + resolution: {integrity: sha512-tSzfc3aE7m0PM0Aj7HBDet5llH9AB9oc+tBQ8AvOqUSnWodLrNCuWeQszJ7mIBovD3figgCU3h0cvI6U5cDtsg==} 3811 3811 engines: {node: '>= 14'} 3812 3812 3813 - '@sentry/browser@10.8.0': 3814 - resolution: {integrity: sha512-2J7HST8/ixCaboq17yFn/j/OEokXSXoCBMXRrFx4FKJggKWZ90e2Iau5mP/IPPhrW+W9zCptCgNMY0167wS4qA==} 3815 - engines: {node: '>=18'} 3813 + '@sentry/browser@8.54.0': 3814 + resolution: {integrity: sha512-BgUtvxFHin0fS0CmJVKTLXXZcke0Av729IVfi+2fJ4COX8HO7/HAP02RKaSQGmL2HmvWYTfNZ7529AnUtrM4Rg==} 3815 + engines: {node: '>=14.18'} 3816 3816 3817 - '@sentry/cli-darwin@2.53.0': 3818 - resolution: {integrity: sha512-NNPfpILMwKgpHiyJubHHuauMKltkrgLQ5tvMdxNpxY60jBNdo5VJtpESp4XmXlnidzV4j1z61V4ozU6ttDgt5Q==} 3817 + '@sentry/cli-darwin@2.45.0': 3818 + resolution: {integrity: sha512-p4Uxfv/L2fQdP3/wYnKVVz9gzZJf/1Xp9D+6raax/3Bu5y87yHYUqcdt98y/VAXQD4ofp2QgmhGUVPofvQNZmg==} 3819 3819 engines: {node: '>=10'} 3820 3820 os: [darwin] 3821 3821 3822 - '@sentry/cli-linux-arm64@2.53.0': 3823 - resolution: {integrity: sha512-xY/CZ1dVazsSCvTXzKpAgXaRqfljVfdrFaYZRUaRPf1ZJRGa3dcrivoOhSIeG/p5NdYtMvslMPY9Gm2MT0M83A==} 3822 + '@sentry/cli-linux-arm64@2.45.0': 3823 + resolution: {integrity: sha512-gUcLoEjzg7AIc4QQGEZwRHri+EHf3Gcms9zAR1VHiNF3/C/jL4WeDPJF2YiWAQt6EtH84tHiyhw1Ab/R8XFClg==} 3824 3824 engines: {node: '>=10'} 3825 3825 cpu: [arm64] 3826 - os: [linux, freebsd, android] 3826 + os: [linux, freebsd] 3827 3827 3828 - '@sentry/cli-linux-arm@2.53.0': 3829 - resolution: {integrity: sha512-NdRzQ15Ht83qG0/Lyu11ciy/Hu/oXbbtJUgwzACc7bWvHQA8xEwTsehWexqn1529Kfc5EjuZ0Wmj3MHmp+jOWw==} 3828 + '@sentry/cli-linux-arm@2.45.0': 3829 + resolution: {integrity: sha512-6sEskFLlFKJ+e0MOYgIclBTUX5jYMyYhHIxXahEkI/4vx6JO0uvpyRAkUJRpJkRh/lPog0FM+tbP3so+VxB2qQ==} 3830 3830 engines: {node: '>=10'} 3831 3831 cpu: [arm] 3832 - os: [linux, freebsd, android] 3832 + os: [linux, freebsd] 3833 3833 3834 - '@sentry/cli-linux-i686@2.53.0': 3835 - resolution: {integrity: sha512-0REmBibGAB4jtqt9S6JEsFF4QybzcXHPcHtJjgMi5T0ueh952uG9wLzjSxQErCsxTKF+fL8oG0Oz5yKBuCwCCQ==} 3834 + '@sentry/cli-linux-i686@2.45.0': 3835 + resolution: {integrity: sha512-VmmOaEAzSW23YdGNdy/+oQjCNAMY+HmOGA77A25/ep/9AV7PQB6FI7xO5Y1PVvlkxZFJ23e373njSsEeg4uDZw==} 3836 3836 engines: {node: '>=10'} 3837 3837 cpu: [x86, ia32] 3838 - os: [linux, freebsd, android] 3838 + os: [linux, freebsd] 3839 3839 3840 - '@sentry/cli-linux-x64@2.53.0': 3841 - resolution: {integrity: sha512-9UGJL+Vy5N/YL1EWPZ/dyXLkShlNaDNrzxx4G7mTS9ywjg+BIuemo6rnN7w43K1NOjObTVO6zY0FwumJ1pCyLg==} 3840 + '@sentry/cli-linux-x64@2.45.0': 3841 + resolution: {integrity: sha512-a0Oj68mrb25a0WjX/ShZ6AAd4PPiuLcgyzQr7bl2+DvYxIOajwkGbR+CZFEhOVZcfhTnixKy/qIXEzApEPHPQg==} 3842 3842 engines: {node: '>=10'} 3843 3843 cpu: [x64] 3844 - os: [linux, freebsd, android] 3844 + os: [linux, freebsd] 3845 3845 3846 - '@sentry/cli-win32-arm64@2.53.0': 3847 - resolution: {integrity: sha512-G1kjOjrjMBY20rQcJV2GA8KQE74ufmROCDb2GXYRfjvb1fKAsm4Oh8N5+Tqi7xEHdjQoLPkE4CNW0aH68JSUDQ==} 3846 + '@sentry/cli-win32-arm64@2.45.0': 3847 + resolution: {integrity: sha512-vn+CwS4p+52pQSLNPoi20ZOrQmv01ZgAmuMnjkh1oUZfTyBAwWLrAh6Cy4cztcN8DfL5dOWKQBo8DBKURE4ttg==} 3848 3848 engines: {node: '>=10'} 3849 3849 cpu: [arm64] 3850 3850 os: [win32] 3851 3851 3852 - '@sentry/cli-win32-i686@2.53.0': 3853 - resolution: {integrity: sha512-qbGTZUzesuUaPtY9rPXdNfwLqOZKXrJRC1zUFn52hdo6B+Dmv0m/AHwRVFHZP53Tg1NCa8bDei2K/uzRN0dUZw==} 3852 + '@sentry/cli-win32-i686@2.45.0': 3853 + resolution: {integrity: sha512-8mMoDdlwxtcdNIMtteMK7dbi7054jak8wKSHJ5yzMw8UmWxC5thc/gXBc1uPduiaI56VjoJV+phWHBKCD+6I4w==} 3854 3854 engines: {node: '>=10'} 3855 3855 cpu: [x86, ia32] 3856 3856 os: [win32] 3857 3857 3858 - '@sentry/cli-win32-x64@2.53.0': 3859 - resolution: {integrity: sha512-1TXYxYHtwgUq5KAJt3erRzzUtPqg7BlH9T7MdSPHjJatkrr/kwZqnVe2H6Arr/5NH891vOlIeSPHBdgJUAD69g==} 3858 + '@sentry/cli-win32-x64@2.45.0': 3859 + resolution: {integrity: sha512-ZvK9cIqFaq7vZ0jkHJ/xh5au6902Dr+AUxSk6L6vCL7JCe2p93KGL/4d8VFB5PD/P7Y9b+105G/e0QIFKzpeOw==} 3860 3860 engines: {node: '>=10'} 3861 3861 cpu: [x64] 3862 3862 os: [win32] 3863 3863 3864 - '@sentry/cli@2.53.0': 3865 - resolution: {integrity: sha512-n2ZNb+5Z6AZKQSI0SusQ7ZzFL637mfw3Xh4C3PEyVSn9LiF683fX0TTq8OeGmNZQS4maYfS95IFD+XpydU0dEA==} 3864 + '@sentry/cli@2.45.0': 3865 + resolution: {integrity: sha512-4sWu7zgzgHAjIxIjXUA/66qgeEf5ZOlloO+/JaGD5qXNSW0G7KMTR6iYjReNKMgdBCTH6bUUt9qiuA+Ex9Masw==} 3866 3866 engines: {node: '>= 10'} 3867 3867 hasBin: true 3868 3868 3869 - '@sentry/core@10.8.0': 3870 - resolution: {integrity: sha512-scYzM/UOItu4PjEq6CpHLdArpXjIS0laHYxE4YjkIbYIH6VMcXGQbD/FSBClsnCr1wXRnlXfXBzj0hrQAFyw+Q==} 3871 - engines: {node: '>=18'} 3869 + '@sentry/core@8.54.0': 3870 + resolution: {integrity: sha512-03bWf+D1j28unOocY/5FDB6bUHtYlm6m6ollVejhg45ZmK9iPjdtxNWbrLsjT1WRym0Tjzowu+A3p+eebYEv0Q==} 3871 + engines: {node: '>=14.18'} 3872 3872 3873 - '@sentry/react-native@7.0.1': 3874 - resolution: {integrity: sha512-xz8ON51qSDvcHVFkdLo0b7rlrQVXpRVXqzm7e1+nHEZ07TX0o+utxx04akxD1Z4hmGPTWPmsHeMlm7diV9NtTQ==} 3873 + '@sentry/react-native@6.14.0': 3874 + resolution: {integrity: sha512-BBqixN6oV6tCNp1ABXfzvD531zxj1fUAH0HDPvOR/jX0h9f9pYfxCyI64B+DoQbVZKFsg8nte0QIHkZDhRAW9A==} 3875 3875 hasBin: true 3876 3876 peerDependencies: 3877 3877 expo: '>=49.0.0' ··· 3881 3881 expo: 3882 3882 optional: true 3883 3883 3884 - '@sentry/react@10.8.0': 3885 - resolution: {integrity: sha512-w/dGLMCLJG2lp8gKVKX1jjeg2inXewKfPb73+PS1CDi9/ihvqZU2DAXxnaNsBA7YYtGwlWVJe1bLAqguwTEpqw==} 3886 - engines: {node: '>=18'} 3884 + '@sentry/react@8.54.0': 3885 + resolution: {integrity: sha512-42T/fp8snYN19Fy/2P0Mwotu4gcdy+1Lx+uYCNcYP1o7wNGigJ7qb27sW7W34GyCCHjoCCfQgeOqDQsyY8LC9w==} 3886 + engines: {node: '>=14.18'} 3887 3887 peerDependencies: 3888 3888 react: ^16.14.0 || 17.x || 18.x || 19.x 3889 3889 3890 - '@sentry/types@10.8.0': 3891 - resolution: {integrity: sha512-xRe41/KvnNt4o6t5YeB+yBRTWvLUu6FJpft/VBOs4Bfh1/6rz+l78oxSCtpXo3MsfTd5185I0uuggAjEdD4Y6g==} 3892 - engines: {node: '>=18'} 3890 + '@sentry/types@8.54.0': 3891 + resolution: {integrity: sha512-wztdtr7dOXQKi0iRvKc8XJhJ7HaAfOv8lGu0yqFOFwBZucO/SHnu87GOPi8mvrTiy1bentQO5l+zXWAaMvG4uw==} 3892 + engines: {node: '>=14.18'} 3893 + 3894 + '@sentry/utils@8.54.0': 3895 + resolution: {integrity: sha512-JL8UDjrsKxKclTdLXfuHfE7B3KbrAPEYP7tMyN/xiO2vsF6D84fjwYyalO0ZMtuFZE6vpSze8ZOLEh6hLnPYsw==} 3896 + engines: {node: '>=14.18'} 3893 3897 3894 3898 '@shikijs/core@3.3.0': 3895 3899 resolution: {integrity: sha512-CovkFL2WVaHk6PCrwv6ctlmD4SS1qtIfN8yEyDXDYWh4ONvomdM9MaFw20qHuqJOcb8/xrkqoWQRJ//X10phOQ==} ··· 17263 17267 '@noble/hashes': 1.5.0 17264 17268 '@scure/base': 1.1.9 17265 17269 17266 - '@sentry-internal/browser-utils@10.8.0': 17270 + '@sentry-internal/browser-utils@8.54.0': 17267 17271 dependencies: 17268 - '@sentry/core': 10.8.0 17272 + '@sentry/core': 8.54.0 17269 17273 17270 - '@sentry-internal/feedback@10.8.0': 17274 + '@sentry-internal/feedback@8.54.0': 17271 17275 dependencies: 17272 - '@sentry/core': 10.8.0 17276 + '@sentry/core': 8.54.0 17273 17277 17274 - '@sentry-internal/replay-canvas@10.8.0': 17278 + '@sentry-internal/replay-canvas@8.54.0': 17275 17279 dependencies: 17276 - '@sentry-internal/replay': 10.8.0 17277 - '@sentry/core': 10.8.0 17280 + '@sentry-internal/replay': 8.54.0 17281 + '@sentry/core': 8.54.0 17278 17282 17279 - '@sentry-internal/replay@10.8.0': 17283 + '@sentry-internal/replay@8.54.0': 17280 17284 dependencies: 17281 - '@sentry-internal/browser-utils': 10.8.0 17282 - '@sentry/core': 10.8.0 17285 + '@sentry-internal/browser-utils': 8.54.0 17286 + '@sentry/core': 8.54.0 17283 17287 17284 - '@sentry/babel-plugin-component-annotate@4.3.0': {} 17288 + '@sentry/babel-plugin-component-annotate@3.4.0': {} 17285 17289 17286 - '@sentry/browser@10.8.0': 17290 + '@sentry/browser@8.54.0': 17287 17291 dependencies: 17288 - '@sentry-internal/browser-utils': 10.8.0 17289 - '@sentry-internal/feedback': 10.8.0 17290 - '@sentry-internal/replay': 10.8.0 17291 - '@sentry-internal/replay-canvas': 10.8.0 17292 - '@sentry/core': 10.8.0 17292 + '@sentry-internal/browser-utils': 8.54.0 17293 + '@sentry-internal/feedback': 8.54.0 17294 + '@sentry-internal/replay': 8.54.0 17295 + '@sentry-internal/replay-canvas': 8.54.0 17296 + '@sentry/core': 8.54.0 17293 17297 17294 - '@sentry/cli-darwin@2.53.0': 17298 + '@sentry/cli-darwin@2.45.0': 17295 17299 optional: true 17296 17300 17297 - '@sentry/cli-linux-arm64@2.53.0': 17301 + '@sentry/cli-linux-arm64@2.45.0': 17298 17302 optional: true 17299 17303 17300 - '@sentry/cli-linux-arm@2.53.0': 17304 + '@sentry/cli-linux-arm@2.45.0': 17301 17305 optional: true 17302 17306 17303 - '@sentry/cli-linux-i686@2.53.0': 17307 + '@sentry/cli-linux-i686@2.45.0': 17304 17308 optional: true 17305 17309 17306 - '@sentry/cli-linux-x64@2.53.0': 17310 + '@sentry/cli-linux-x64@2.45.0': 17307 17311 optional: true 17308 17312 17309 - '@sentry/cli-win32-arm64@2.53.0': 17313 + '@sentry/cli-win32-arm64@2.45.0': 17310 17314 optional: true 17311 17315 17312 - '@sentry/cli-win32-i686@2.53.0': 17316 + '@sentry/cli-win32-i686@2.45.0': 17313 17317 optional: true 17314 17318 17315 - '@sentry/cli-win32-x64@2.53.0': 17319 + '@sentry/cli-win32-x64@2.45.0': 17316 17320 optional: true 17317 17321 17318 - '@sentry/cli@2.53.0(encoding@0.1.13)': 17322 + '@sentry/cli@2.45.0(encoding@0.1.13)': 17319 17323 dependencies: 17320 17324 https-proxy-agent: 5.0.1 17321 17325 node-fetch: 2.7.0(encoding@0.1.13) ··· 17323 17327 proxy-from-env: 1.1.0 17324 17328 which: 2.0.2 17325 17329 optionalDependencies: 17326 - '@sentry/cli-darwin': 2.53.0 17327 - '@sentry/cli-linux-arm': 2.53.0 17328 - '@sentry/cli-linux-arm64': 2.53.0 17329 - '@sentry/cli-linux-i686': 2.53.0 17330 - '@sentry/cli-linux-x64': 2.53.0 17331 - '@sentry/cli-win32-arm64': 2.53.0 17332 - '@sentry/cli-win32-i686': 2.53.0 17333 - '@sentry/cli-win32-x64': 2.53.0 17330 + '@sentry/cli-darwin': 2.45.0 17331 + '@sentry/cli-linux-arm': 2.45.0 17332 + '@sentry/cli-linux-arm64': 2.45.0 17333 + '@sentry/cli-linux-i686': 2.45.0 17334 + '@sentry/cli-linux-x64': 2.45.0 17335 + '@sentry/cli-win32-arm64': 2.45.0 17336 + '@sentry/cli-win32-i686': 2.45.0 17337 + '@sentry/cli-win32-x64': 2.45.0 17334 17338 transitivePeerDependencies: 17335 17339 - encoding 17336 17340 - supports-color 17337 17341 17338 - '@sentry/core@10.8.0': {} 17342 + '@sentry/core@8.54.0': {} 17339 17343 17340 - '@sentry/react-native@7.0.1(encoding@0.1.13)(expo@53.0.11(@babel/core@7.26.0)(@expo/metro-runtime@5.0.4(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(react-native-webview@13.15.0(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(utf-8-validate@5.0.10))(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)': 17344 + '@sentry/react-native@6.14.0(encoding@0.1.13)(expo@53.0.11(@babel/core@7.26.0)(@expo/metro-runtime@5.0.4(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(react-native-webview@13.15.0(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0))(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)(utf-8-validate@5.0.10))(react-native@0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10))(react@19.0.0)': 17341 17345 dependencies: 17342 - '@sentry/babel-plugin-component-annotate': 4.3.0 17343 - '@sentry/browser': 10.8.0 17344 - '@sentry/cli': 2.53.0(encoding@0.1.13) 17345 - '@sentry/core': 10.8.0 17346 - '@sentry/react': 10.8.0(react@19.0.0) 17347 - '@sentry/types': 10.8.0 17346 + '@sentry/babel-plugin-component-annotate': 3.4.0 17347 + '@sentry/browser': 8.54.0 17348 + '@sentry/cli': 2.45.0(encoding@0.1.13) 17349 + '@sentry/core': 8.54.0 17350 + '@sentry/react': 8.54.0(react@19.0.0) 17351 + '@sentry/types': 8.54.0 17352 + '@sentry/utils': 8.54.0 17348 17353 react: 19.0.0 17349 17354 react-native: 0.79.3(@babel/core@7.26.0)(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0)(utf-8-validate@5.0.10) 17350 17355 optionalDependencies: ··· 17353 17358 - encoding 17354 17359 - supports-color 17355 17360 17356 - '@sentry/react@10.8.0(react@19.0.0)': 17361 + '@sentry/react@8.54.0(react@19.0.0)': 17357 17362 dependencies: 17358 - '@sentry/browser': 10.8.0 17359 - '@sentry/core': 10.8.0 17363 + '@sentry/browser': 8.54.0 17364 + '@sentry/core': 8.54.0 17360 17365 hoist-non-react-statics: 3.3.2 17361 17366 react: 19.0.0 17362 17367 17363 - '@sentry/types@10.8.0': 17368 + '@sentry/types@8.54.0': 17364 17369 dependencies: 17365 - '@sentry/core': 10.8.0 17370 + '@sentry/core': 8.54.0 17371 + 17372 + '@sentry/utils@8.54.0': 17373 + dependencies: 17374 + '@sentry/core': 8.54.0 17366 17375 17367 17376 '@shikijs/core@3.3.0': 17368 17377 dependencies: