Skip to content

Commit 5ad3bfc

Browse files
committed
feat: integrate sentry
1 parent f38fd86 commit 5ad3bfc

7 files changed

Lines changed: 339 additions & 7 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,5 @@ cache/
6262
eas.json
6363

6464
.env.local
65-
.eslintcache
65+
.eslintcache
66+
.env.local

apps/mobile/app.config.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ const createConfig = (): Omit<ExpoConfig, 'extra'> & { extra: { eas: EASConfig }
1414

1515
const extra = {
1616
eas: { projectId } as EASConfig,
17+
sentry: {
18+
dsn: 'https://3ae5dc8126bb61f3f6a582ea697a45d8@o4511502286716928.ingest.us.sentry.io/4511511143579648',
19+
},
20+
env: appEnv.current,
1721
googleIosClientId: appEnv.select({
1822
default: process.env.GOOGLE_IOS_CLIENT_ID_DEV,
1923
production: process.env.GOOGLE_IOS_CLIENT_ID_PROD,

apps/mobile/app/_layout.tsx

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ import { useNetworkConnection } from '@open-webui-react-native/shared/features/n
1717
import { constants } from '@open-webui-react-native/shared/utils/config';
1818
import { setupReactotron } from '@open-webui-react-native/shared/utils/reactotron';
1919
import { setLanguage } from '@ronas-it/react-native-common-modules/i18n';
20+
import * as Sentry from '@sentry/react-native';
2021
import { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';
22+
import Constants from 'expo-constants';
2123
import { useFonts } from 'expo-font';
22-
import { SplashScreen, Stack } from 'expo-router';
24+
import { SplashScreen, Stack, useNavigationContainerRef } from 'expo-router';
2325
import { ReactElement, useEffect } from 'react';
2426
import { GestureHandlerRootView } from 'react-native-gesture-handler';
2527
import { KeyboardProvider } from 'react-native-keyboard-controller';
@@ -29,6 +31,16 @@ import 'expo-dev-client';
2931

3032
export { ErrorBoundary } from 'expo-router';
3133

34+
const reactNavigationIntegration = Sentry.reactNavigationIntegration();
35+
36+
Sentry.init({
37+
dsn: Constants.expoConfig?.extra?.sentry?.dsn,
38+
environment: Constants.expoConfig?.extra?.env,
39+
debug: false,
40+
integrations: [reactNavigationIntegration],
41+
enabled: !__DEV__,
42+
});
43+
3244
const translations = {
3345
[constants.defaultLocale]: {
3446
...require('i18n/mobile/app/en.json'),
@@ -85,9 +97,16 @@ function App(): ReactElement | null {
8597
);
8698
}
8799

88-
export default function RootLayout(): ReactElement | null {
100+
function RootLayout(): ReactElement | null {
89101
useLanguage(constants.defaultLocale);
90102
const [isFontsLoaded] = useFonts(fonts);
103+
const navigationContainerRef = useNavigationContainerRef();
104+
105+
useEffect(() => {
106+
if (navigationContainerRef) {
107+
reactNavigationIntegration.registerNavigationContainer(navigationContainerRef);
108+
}
109+
}, [navigationContainerRef]);
91110

92111
useEffect(() => {
93112
if (isFontsLoaded) {
@@ -121,3 +140,5 @@ export default function RootLayout(): ReactElement | null {
121140
</KeyboardProvider>
122141
);
123142
}
143+
144+
export default Sentry.wrap(RootLayout);

apps/mobile/metro.config.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
const { getDefaultConfig } = require('@expo/metro-config');
1+
const { getSentryExpoConfig } = require('@sentry/react-native/metro');
22
const { withNativeWind } = require('nativewind/metro');
33
const { withNxMetro } = require('@nx/expo');
44
const { mergeConfig } = require('metro-config');
55
const path = require('path');
66

77
const appRoot = __dirname;
88
const monorepoRoot = path.resolve(appRoot, '../..');
9-
const defaultConfig = getDefaultConfig(appRoot);
9+
const defaultConfig = getSentryExpoConfig(appRoot);
1010
const { assetExts, sourceExts } = defaultConfig.resolver;
1111
/**
1212
* Metro configuration

apps/mobile/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
"@react-navigation/drawer": "^7.3.9",
3333
"@ronas-it/react-native-common-modules": "^1.1.0",
3434
"@ronas-it/rtkq-entity-api": "^0.4.10",
35+
"@sentry/react-native": "~7.11.0",
3536
"@shopify/flash-list": "2.0.2",
3637
"@tanstack/react-query": "^5.80.6",
3738
"@tanstack/react-query-persist-client": "^5.87.4",

0 commit comments

Comments
 (0)