From d32cf08d70b94dfb62a1e5cbd1bdda9fb2710383 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 18 Dec 2025 10:18:15 +0100 Subject: [PATCH 1/8] Lint rules and code style for expo app --- samples/expo/.eslintrc.js | 18 +++++++ samples/expo/.prettierignore | 6 +++ samples/expo/.prettierrc.js | 8 ++++ samples/expo/app/(tabs)/_layout.tsx | 47 ++++++++++++------- samples/expo/app/+html.tsx | 4 +- samples/expo/app/_layout.tsx | 3 +- samples/expo/components/ExternalLink.tsx | 2 +- samples/expo/components/StyledText.tsx | 9 +++- samples/expo/components/Themed.tsx | 2 +- .../components/__tests__/StyledText-test.js | 9 ---- samples/expo/package.json | 8 ++++ samples/expo/utils/setScopeProperties.ts | 2 +- 12 files changed, 85 insertions(+), 33 deletions(-) create mode 100644 samples/expo/.eslintrc.js create mode 100644 samples/expo/.prettierignore create mode 100644 samples/expo/.prettierrc.js delete mode 100644 samples/expo/components/__tests__/StyledText-test.js diff --git a/samples/expo/.eslintrc.js b/samples/expo/.eslintrc.js new file mode 100644 index 0000000000..99a35e6e3d --- /dev/null +++ b/samples/expo/.eslintrc.js @@ -0,0 +1,18 @@ +module.exports = { + root: true, + extends: ['expo', '@react-native'], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + overrides: [ + { + files: ['*.ts', '*.tsx'], + rules: { + '@typescript-eslint/no-shadow': ['error'], + 'no-shadow': 'off', + 'no-undef': 'off', + quotes: [2, 'single', { avoidEscape: true }], + }, + }, + ], + ignorePatterns: ['/node_modules', '/ios', '/android', '/.expo'], +}; diff --git a/samples/expo/.prettierignore b/samples/expo/.prettierignore new file mode 100644 index 0000000000..6cb1582f53 --- /dev/null +++ b/samples/expo/.prettierignore @@ -0,0 +1,6 @@ +node_modules/ +ios/ +android/ +.expo/ +*.md + diff --git a/samples/expo/.prettierrc.js b/samples/expo/.prettierrc.js new file mode 100644 index 0000000000..269359da4a --- /dev/null +++ b/samples/expo/.prettierrc.js @@ -0,0 +1,8 @@ +module.exports = { + arrowParens: 'avoid', + bracketSameLine: true, + bracketSpacing: true, + singleQuote: true, + trailingComma: 'all', +}; + diff --git a/samples/expo/app/(tabs)/_layout.tsx b/samples/expo/app/(tabs)/_layout.tsx index 30914fbc0c..1619232206 100644 --- a/samples/expo/app/(tabs)/_layout.tsx +++ b/samples/expo/app/(tabs)/_layout.tsx @@ -12,12 +12,40 @@ function TabBarIcon(props: { name: React.ComponentProps['name']; color: string; }) { + // eslint-disable-next-line react-native/no-inline-styles return ; } +function CodeIcon({ color }: { color: string }) { + return ; +} + +function InfoButton({ colorScheme }: { colorScheme: 'light' | 'dark' | null }) { + return ( + + + {({ pressed }) => ( + + )} + + + ); +} + export default function TabLayout() { const colorScheme = useColorScheme(); + const renderInfoButton = React.useCallback( + () => , + [colorScheme], + ); + return ( , - headerRight: () => ( - - - {({ pressed }) => ( - - )} - - - ), + tabBarIcon: CodeIcon, + headerRight: renderInfoButton, }} /> , + tabBarIcon: CodeIcon, }} /> diff --git a/samples/expo/app/+html.tsx b/samples/expo/app/+html.tsx index cb31090e81..6646145e2e 100644 --- a/samples/expo/app/+html.tsx +++ b/samples/expo/app/+html.tsx @@ -12,8 +12,8 @@ export default function Root({ children }: { children: React.ReactNode }) { - {/* - Disable body scrolling on web. This makes ScrollView components work closer to how they do on native. + {/* + Disable body scrolling on web. This makes ScrollView components work closer to how they do on native. However, body scrolling is often nice to have for mobile web. If you want to enable it, remove this line. */} diff --git a/samples/expo/app/_layout.tsx b/samples/expo/app/_layout.tsx index 121a5284a0..8c8034cb21 100644 --- a/samples/expo/app/_layout.tsx +++ b/samples/expo/app/_layout.tsx @@ -10,7 +10,6 @@ import { SENTRY_INTERNAL_DSN } from '../utils/dsn'; import * as Sentry from '@sentry/react-native'; import { LogBox } from 'react-native'; import * as ImagePicker from 'expo-image-picker'; -import { withSentryPlayground } from '@sentry/react-native/playground'; export { // Catch any errors thrown by the Layout component. @@ -125,7 +124,7 @@ function RootLayout() { // Expo Router uses Error Boundaries to catch errors in the navigation tree. useEffect(() => { - if (error) throw error; + if (error) {throw error;} }, [error]); useEffect(() => { diff --git a/samples/expo/components/ExternalLink.tsx b/samples/expo/components/ExternalLink.tsx index c535be96ee..66a00acfcd 100644 --- a/samples/expo/components/ExternalLink.tsx +++ b/samples/expo/components/ExternalLink.tsx @@ -4,7 +4,7 @@ import React from 'react'; import { Platform } from 'react-native'; export function ExternalLink( - props: Omit, 'href'> & { href: string } + props: Omit, 'href'> & { href: string }, ) { return ( ; + return ; } + +const styles = StyleSheet.create({ + monoText: { + fontFamily: 'SpaceMono', + }, +}); diff --git a/samples/expo/components/Themed.tsx b/samples/expo/components/Themed.tsx index 9139f9b858..17b170fad4 100644 --- a/samples/expo/components/Themed.tsx +++ b/samples/expo/components/Themed.tsx @@ -18,7 +18,7 @@ export type ViewProps = ThemeProps & DefaultView['props']; export function useThemeColor( props: { light?: string; dark?: string }, - colorName: keyof typeof Colors.light & keyof typeof Colors.dark + colorName: keyof typeof Colors.light & keyof typeof Colors.dark, ) { const theme = useColorScheme() ?? 'light'; const colorFromProps = props[theme]; diff --git a/samples/expo/components/__tests__/StyledText-test.js b/samples/expo/components/__tests__/StyledText-test.js deleted file mode 100644 index d12e8748c5..0000000000 --- a/samples/expo/components/__tests__/StyledText-test.js +++ /dev/null @@ -1,9 +0,0 @@ -import * as React from 'react'; -import { render, screen } from '@testing-library/react-native'; -import { MonoText } from '../StyledText'; - -it(`renders correctly`, () => { - render(MonoText Test); - - expect(screen.getAllByLabelText("MonoText Test")).toBeOnTheScreen(); -}); diff --git a/samples/expo/package.json b/samples/expo/package.json index 9eb916ff53..f0ae4168fa 100644 --- a/samples/expo/package.json +++ b/samples/expo/package.json @@ -10,6 +10,8 @@ "android": "expo run:android", "ios": "expo run:ios", "ts:check": "tsc", + "lint": "npx eslint . --ext .js,.jsx,.ts,.tsx", + "fix": "npx eslint . --ext .js,.jsx,.ts,.tsx --fix && prettier --write \"**/*.{js,jsx,ts,tsx,json}\"", "export": "expo export --source-maps --clear --platform all", "export:web": "expo export --source-maps --clear --platform web", "prebuild": "expo prebuild --clean --no-install", @@ -43,8 +45,14 @@ "devDependencies": { "@babel/core": "^7.26.0", "@babel/preset-env": "^7.26.0", + "@react-native/eslint-config": "0.79.1", "@sentry/babel-plugin-component-annotate": "4.6.1", "@types/node": "20.10.4", + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", + "eslint": "^8.57.0", + "eslint-config-expo": "^7.1.2", + "prettier": "2.8.8", "sentry-react-native-samples-utils": "workspace:^" }, "overrides": { diff --git a/samples/expo/utils/setScopeProperties.ts b/samples/expo/utils/setScopeProperties.ts index 1fbfca4238..8d41d667ee 100644 --- a/samples/expo/utils/setScopeProperties.ts +++ b/samples/expo/utils/setScopeProperties.ts @@ -1,5 +1,5 @@ import * as Sentry from '@sentry/react-native'; -import { SeverityLevel } from '@sentry/core'; +import { SeverityLevel } from '@sentry/react-native'; export const setScopeProperties = () => { const dateString = new Date().toString(); From 6259b4706308385765b244f044fe9b2973ed4fec Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 18 Dec 2025 10:30:40 +0100 Subject: [PATCH 2/8] Lockfile update --- yarn.lock | 419 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 413 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5cb08cb6ac..5d5035c947 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5378,6 +5378,16 @@ __metadata: languageName: node linkType: hard +"@emnapi/core@npm:^1.4.3": + version: 1.7.1 + resolution: "@emnapi/core@npm:1.7.1" + dependencies: + "@emnapi/wasi-threads": 1.1.0 + tslib: ^2.4.0 + checksum: 45274d4916c29ca39bb1833269524b8ccccc4295902193e640843df37ae4c35cf65a9d557d34d2eff770745116542af75feeb60d73088086fee791192cbee292 + languageName: node + linkType: hard + "@emnapi/runtime@npm:^1.1.0, @emnapi/runtime@npm:^1.1.1": version: 1.2.0 resolution: "@emnapi/runtime@npm:1.2.0" @@ -5405,6 +5415,15 @@ __metadata: languageName: node linkType: hard +"@emnapi/wasi-threads@npm:1.1.0": + version: 1.1.0 + resolution: "@emnapi/wasi-threads@npm:1.1.0" + dependencies: + tslib: ^2.4.0 + checksum: 6cffe35f3e407ae26236092991786db5968b4265e6e55f4664bf6f2ce0508e2a02a44ce6ebb16f2acd2f6589efb293f4f9d09cc9fbf80c00fc1a203accc94196 + languageName: node + linkType: hard + "@es-joy/jsdoccomment@npm:~0.50.2": version: 0.50.2 resolution: "@es-joy/jsdoccomment@npm:0.50.2" @@ -6878,6 +6897,17 @@ __metadata: languageName: node linkType: hard +"@napi-rs/wasm-runtime@npm:^0.2.11": + version: 0.2.12 + resolution: "@napi-rs/wasm-runtime@npm:0.2.12" + dependencies: + "@emnapi/core": ^1.4.3 + "@emnapi/runtime": ^1.4.3 + "@tybys/wasm-util": ^0.10.0 + checksum: 676271082b2e356623faa1fefd552a82abb8c00f8218e333091851456c52c81686b98f77fcd119b9b2f4f215d924e4b23acd6401d9934157c80da17be783ec3d + languageName: node + linkType: hard + "@naturalcycles/ktlint@npm:^1.13.0": version: 1.13.0 resolution: "@naturalcycles/ktlint@npm:1.13.0" @@ -6930,6 +6960,13 @@ __metadata: languageName: node linkType: hard +"@nolyfill/is-core-module@npm:1.0.39": + version: 1.0.39 + resolution: "@nolyfill/is-core-module@npm:1.0.39" + checksum: 0d6e098b871eca71d875651288e1f0fa770a63478b0b50479c99dc760c64175a56b5b04f58d5581bbcc6b552b8191ab415eada093d8df9597ab3423c8cac1815 + languageName: node + linkType: hard + "@npmcli/agent@npm:^2.0.0": version: 2.2.2 resolution: "@npmcli/agent@npm:2.2.2" @@ -8862,6 +8899,29 @@ __metadata: languageName: node linkType: hard +"@react-native/eslint-config@npm:0.79.1": + version: 0.79.1 + resolution: "@react-native/eslint-config@npm:0.79.1" + dependencies: + "@babel/core": ^7.25.2 + "@babel/eslint-parser": ^7.25.1 + "@react-native/eslint-plugin": 0.79.1 + "@typescript-eslint/eslint-plugin": ^7.1.1 + "@typescript-eslint/parser": ^7.1.1 + eslint-config-prettier: ^8.5.0 + eslint-plugin-eslint-comments: ^3.2.0 + eslint-plugin-ft-flow: ^2.0.1 + eslint-plugin-jest: ^27.9.0 + eslint-plugin-react: ^7.30.1 + eslint-plugin-react-hooks: ^4.6.0 + eslint-plugin-react-native: ^4.0.0 + peerDependencies: + eslint: ">=8" + prettier: ">=2" + checksum: 3a0f6c372f285e1cf53c28ceac91f69e1ada0d386df8b53bbe3b27b1da965448a261c5892ca511c59988318b0c0c8468321649877fe1bc0619994032267cb2bf + languageName: node + linkType: hard + "@react-native/eslint-config@npm:0.80.2": version: 0.80.2 resolution: "@react-native/eslint-config@npm:0.80.2" @@ -8892,6 +8952,13 @@ __metadata: languageName: node linkType: hard +"@react-native/eslint-plugin@npm:0.79.1": + version: 0.79.1 + resolution: "@react-native/eslint-plugin@npm:0.79.1" + checksum: 36ad64820cfdb3c1e922a349f1ba926a808185606778069e6892eb822a83c84781d7d402f5eb3967a2565a27124576d98fbd1c4b8389747beceb0d0fa6b8ef65 + languageName: node + linkType: hard + "@react-native/eslint-plugin@npm:0.80.2": version: 0.80.2 resolution: "@react-native/eslint-plugin@npm:0.80.2" @@ -10156,6 +10223,15 @@ __metadata: languageName: node linkType: hard +"@tybys/wasm-util@npm:^0.10.0": + version: 0.10.1 + resolution: "@tybys/wasm-util@npm:0.10.1" + dependencies: + tslib: ^2.4.0 + checksum: b8b281ffa9cd01cb6d45a4dddca2e28fd0cb6ad67cf091ba4a73ac87c0d6bd6ce188c332c489e87c20b0750b0b6fe3b99e30e1cd2227ec16da692f51c778944e + languageName: node + linkType: hard + "@tybys/wasm-util@npm:^0.9.0": version: 0.9.0 resolution: "@tybys/wasm-util@npm:0.9.0" @@ -10930,7 +11006,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^7.1.1, @typescript-eslint/eslint-plugin@npm:^7.18.0": +"@typescript-eslint/eslint-plugin@npm:^7.1.1, @typescript-eslint/eslint-plugin@npm:^7.18.0, @typescript-eslint/eslint-plugin@npm:^7.4.0": version: 7.18.0 resolution: "@typescript-eslint/eslint-plugin@npm:7.18.0" dependencies: @@ -10988,7 +11064,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/parser@npm:^7.1.1, @typescript-eslint/parser@npm:^7.18.0": +"@typescript-eslint/parser@npm:^7.1.1, @typescript-eslint/parser@npm:^7.18.0, @typescript-eslint/parser@npm:^7.4.0": version: 7.18.0 resolution: "@typescript-eslint/parser@npm:7.18.0" dependencies: @@ -11108,7 +11184,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:7.18.0": +"@typescript-eslint/types@npm:7.18.0, @typescript-eslint/types@npm:^7.2.0": version: 7.18.0 resolution: "@typescript-eslint/types@npm:7.18.0" checksum: 7df2750cd146a0acd2d843208d69f153b458e024bbe12aab9e441ad2c56f47de3ddfeb329c4d1ea0079e2577fea4b8c1c1ce15315a8d49044586b04fedfe7a4d @@ -11231,7 +11307,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:7.18.0, @typescript-eslint/utils@npm:^7.0.0": +"@typescript-eslint/utils@npm:7.18.0, @typescript-eslint/utils@npm:^7.0.0, @typescript-eslint/utils@npm:^7.2.0": version: 7.18.0 resolution: "@typescript-eslint/utils@npm:7.18.0" dependencies: @@ -11292,6 +11368,141 @@ __metadata: languageName: node linkType: hard +"@unrs/resolver-binding-android-arm-eabi@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.11.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-android-arm64@npm:1.11.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-arm64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.11.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-x64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.11.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-freebsd-x64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.11.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.11.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-wasm32-wasi@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.11.1" + dependencies: + "@napi-rs/wasm-runtime": ^0.2.11 + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@urql/core@npm:^5.0.0, @urql/core@npm:^5.0.6": version: 5.0.8 resolution: "@urql/core@npm:5.0.8" @@ -16151,6 +16362,23 @@ __metadata: languageName: node linkType: hard +"eslint-config-expo@npm:^7.1.2": + version: 7.1.2 + resolution: "eslint-config-expo@npm:7.1.2" + dependencies: + "@typescript-eslint/eslint-plugin": ^7.4.0 + "@typescript-eslint/parser": ^7.4.0 + eslint-import-resolver-typescript: ^3.6.1 + eslint-plugin-expo: ^0.0.1 + eslint-plugin-import: ^2.29.1 + eslint-plugin-react: ^7.34.0 + eslint-plugin-react-hooks: ^4.6.0 + peerDependencies: + eslint: ">=8.10" + checksum: 899c9d9e456b90e473545ca15c6812c149c3404a16e98a1fb9acc9eb78aa32770fb82adba9972eb2dfa05ae26c71d949283b1396ff2cf148cdc4d6cb58e95819 + languageName: node + linkType: hard + "eslint-config-prettier@npm:^8.5.0, eslint-config-prettier@npm:^8.8.0": version: 8.10.0 resolution: "eslint-config-prettier@npm:8.10.0" @@ -16206,6 +16434,30 @@ __metadata: languageName: node linkType: hard +"eslint-import-resolver-typescript@npm:^3.6.1": + version: 3.10.1 + resolution: "eslint-import-resolver-typescript@npm:3.10.1" + dependencies: + "@nolyfill/is-core-module": 1.0.39 + debug: ^4.4.0 + get-tsconfig: ^4.10.0 + is-bun-module: ^2.0.0 + stable-hash: ^0.0.5 + tinyglobby: ^0.2.13 + unrs-resolver: ^1.6.2 + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + eslint-plugin-import-x: "*" + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + checksum: 57acb58fe28257024236b52ebfe6a3d2e3970a88002e02e771ff327c850c76b2a6b90175b54a980e9efe4787ac09bafe53cb3ebabf3fd165d3ff2a80b2d7e50d + languageName: node + linkType: hard + "eslint-module-utils@npm:^2.12.0": version: 2.12.0 resolution: "eslint-module-utils@npm:2.12.0" @@ -16268,6 +16520,18 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-expo@npm:^0.0.1": + version: 0.0.1 + resolution: "eslint-plugin-expo@npm:0.0.1" + dependencies: + "@typescript-eslint/types": ^7.2.0 + "@typescript-eslint/utils": ^7.2.0 + peerDependencies: + eslint: ">=8" + checksum: 55646d333041e83e30ae2e23bc32a46d005e1297fd13f09379177d0158b6b898b96f2dced7ac485f221649e57a6c0b5950572e34c2c48044f565d6aff0f36a16 + languageName: node + linkType: hard + "eslint-plugin-ft-flow@npm:^2.0.1": version: 2.0.3 resolution: "eslint-plugin-ft-flow@npm:2.0.3" @@ -16323,7 +16587,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-import@npm:^2.32.0": +"eslint-plugin-import@npm:^2.29.1, eslint-plugin-import@npm:^2.32.0": version: 2.32.0 resolution: "eslint-plugin-import@npm:2.32.0" dependencies: @@ -16534,7 +16798,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react@npm:^7.32.2, eslint-plugin-react@npm:^7.37.0": +"eslint-plugin-react@npm:^7.32.2, eslint-plugin-react@npm:^7.34.0, eslint-plugin-react@npm:^7.37.0": version: 7.37.5 resolution: "eslint-plugin-react@npm:7.37.5" dependencies: @@ -17459,6 +17723,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: bd537daa9d3cd53887eed35efa0eab2dbb1ca408790e10e024120e7a36c6e9ae2b33710cb8381e35def01bc9c1d7eaba746f886338413e68ff6ebaee07b9a6e8 + languageName: node + linkType: hard + "fecha@npm:^4.2.0": version: 4.2.3 resolution: "fecha@npm:4.2.3" @@ -18180,6 +18456,15 @@ __metadata: languageName: node linkType: hard +"get-tsconfig@npm:^4.10.0": + version: 4.13.0 + resolution: "get-tsconfig@npm:4.13.0" + dependencies: + resolve-pkg-maps: ^1.0.0 + checksum: b3cfa1316dd8842e038f6a3dc02ae87d9f3a227f14b79ac4b1c81bf6fc75de4dfc3355c4117612e183f5147dad49c8132841c7fdd7a4508531d820a9b90acc51 + languageName: node + linkType: hard + "get-uri@npm:^6.0.1": version: 6.0.3 resolution: "get-uri@npm:6.0.3" @@ -19300,6 +19585,15 @@ __metadata: languageName: node linkType: hard +"is-bun-module@npm:^2.0.0": + version: 2.0.0 + resolution: "is-bun-module@npm:2.0.0" + dependencies: + semver: ^7.7.1 + checksum: e75bd87cb1aaff7c97cf085509669559a713f741a43b4fd5979cb44c5c0c16c05670ce5f23fc22337d1379211fac118c525c5ed73544076ddaf181c1c21ace35 + languageName: node + linkType: hard + "is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" @@ -23556,6 +23850,15 @@ __metadata: languageName: node linkType: hard +"napi-postinstall@npm:^0.3.0": + version: 0.3.4 + resolution: "napi-postinstall@npm:0.3.4" + bin: + napi-postinstall: lib/cli.js + checksum: 01672ae6568e2b3a6d985371f1504a6e1c791aa308b94c9f89736fde8251b7b8ab3227d1a5ede8d0eb0552099e069970b038c6958052c01b2bdc5aae31f0a88c + languageName: node + linkType: hard + "natural-compare-lite@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare-lite@npm:1.4.0" @@ -25004,6 +25307,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 6817fb74eb745a71445debe1029768de55fd59a42b75606f478ee1d0dc1aa6e78b711d041a7c9d5550e042642029b7f373dc1a43b224c4b7f12d23436735dba0 + languageName: node + linkType: hard + "pidtree@npm:^0.6.0": version: 0.6.0 resolution: "pidtree@npm:0.6.0" @@ -27056,6 +27366,13 @@ __metadata: languageName: node linkType: hard +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: 1012afc566b3fdb190a6309cc37ef3b2dcc35dff5fa6683a9d00cd25c3247edfbc4691b91078c97adc82a29b77a2660c30d791d65dab4fc78bfc473f60289977 + languageName: node + linkType: hard + "resolve-workspace-root@npm:^2.0.0": version: 2.0.0 resolution: "resolve-workspace-root@npm:2.0.0" @@ -27709,10 +28026,15 @@ __metadata: dependencies: "@babel/core": ^7.26.0 "@babel/preset-env": ^7.26.0 + "@react-native/eslint-config": 0.79.1 "@sentry/babel-plugin-component-annotate": 4.6.1 "@sentry/react-native": 7.8.0 "@types/node": 20.10.4 "@types/react": ~19.0.10 + "@typescript-eslint/eslint-plugin": ^7.18.0 + "@typescript-eslint/parser": ^7.18.0 + eslint: ^8.57.0 + eslint-config-expo: ^7.1.2 expo: ^53.0.0 expo-constants: ~17.1.5 expo-dev-client: ~5.1.8 @@ -27722,6 +28044,7 @@ __metadata: expo-status-bar: ~2.2.3 expo-updates: ~0.28.12 expo-web-browser: ~14.1.6 + prettier: 2.8.8 react: 19.0.0 react-dom: 19.0.0 react-native: 0.79.2 @@ -28574,6 +28897,13 @@ __metadata: languageName: node linkType: hard +"stable-hash@npm:^0.0.5": + version: 0.0.5 + resolution: "stable-hash@npm:0.0.5" + checksum: 9222ea2c558e37c4a576cb4e406966b9e6aa05b93f5c4f09ef4aaabe3577439b9b8fbff407b16840b63e2ae83de74290c7b1c2da7360d571e480e46a4aec0a56 + languageName: node + linkType: hard + "stack-generator@npm:^2.0.5": version: 2.0.10 resolution: "stack-generator@npm:2.0.10" @@ -29431,6 +29761,16 @@ __metadata: languageName: node linkType: hard +"tinyglobby@npm:^0.2.13": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" + dependencies: + fdir: ^6.5.0 + picomatch: ^4.0.3 + checksum: 0e33b8babff966c6ab86e9b825a350a6a98a63700fa0bb7ae6cf36a7770a508892383adc272f7f9d17aaf46a9d622b455e775b9949a3f951eaaf5dfb26331d44 + languageName: node + linkType: hard + "tmp@npm:^0.0.33": version: 0.0.33 resolution: "tmp@npm:0.0.33" @@ -30285,6 +30625,73 @@ __metadata: languageName: node linkType: hard +"unrs-resolver@npm:^1.6.2": + version: 1.11.1 + resolution: "unrs-resolver@npm:1.11.1" + dependencies: + "@unrs/resolver-binding-android-arm-eabi": 1.11.1 + "@unrs/resolver-binding-android-arm64": 1.11.1 + "@unrs/resolver-binding-darwin-arm64": 1.11.1 + "@unrs/resolver-binding-darwin-x64": 1.11.1 + "@unrs/resolver-binding-freebsd-x64": 1.11.1 + "@unrs/resolver-binding-linux-arm-gnueabihf": 1.11.1 + "@unrs/resolver-binding-linux-arm-musleabihf": 1.11.1 + "@unrs/resolver-binding-linux-arm64-gnu": 1.11.1 + "@unrs/resolver-binding-linux-arm64-musl": 1.11.1 + "@unrs/resolver-binding-linux-ppc64-gnu": 1.11.1 + "@unrs/resolver-binding-linux-riscv64-gnu": 1.11.1 + "@unrs/resolver-binding-linux-riscv64-musl": 1.11.1 + "@unrs/resolver-binding-linux-s390x-gnu": 1.11.1 + "@unrs/resolver-binding-linux-x64-gnu": 1.11.1 + "@unrs/resolver-binding-linux-x64-musl": 1.11.1 + "@unrs/resolver-binding-wasm32-wasi": 1.11.1 + "@unrs/resolver-binding-win32-arm64-msvc": 1.11.1 + "@unrs/resolver-binding-win32-ia32-msvc": 1.11.1 + "@unrs/resolver-binding-win32-x64-msvc": 1.11.1 + napi-postinstall: ^0.3.0 + dependenciesMeta: + "@unrs/resolver-binding-android-arm-eabi": + optional: true + "@unrs/resolver-binding-android-arm64": + optional: true + "@unrs/resolver-binding-darwin-arm64": + optional: true + "@unrs/resolver-binding-darwin-x64": + optional: true + "@unrs/resolver-binding-freebsd-x64": + optional: true + "@unrs/resolver-binding-linux-arm-gnueabihf": + optional: true + "@unrs/resolver-binding-linux-arm-musleabihf": + optional: true + "@unrs/resolver-binding-linux-arm64-gnu": + optional: true + "@unrs/resolver-binding-linux-arm64-musl": + optional: true + "@unrs/resolver-binding-linux-ppc64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-musl": + optional: true + "@unrs/resolver-binding-linux-s390x-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-musl": + optional: true + "@unrs/resolver-binding-wasm32-wasi": + optional: true + "@unrs/resolver-binding-win32-arm64-msvc": + optional: true + "@unrs/resolver-binding-win32-ia32-msvc": + optional: true + "@unrs/resolver-binding-win32-x64-msvc": + optional: true + checksum: 10f829c06c30d041eaf6a8a7fd59268f1cad5b723f1399f1ec64f0d79be2809f6218209d06eab32a3d0fcd7d56034874f3a3f95292fdb53fa1f8279de8fcb0c5 + languageName: node + linkType: hard + "upath@npm:2.0.1": version: 2.0.1 resolution: "upath@npm:2.0.1" From 3cd51c695e644df7251539f507e7b2bfa08e5b06 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 18 Dec 2025 10:57:17 +0100 Subject: [PATCH 3/8] Fixes --- samples/expo/.prettierrc.js | 1 - samples/expo/app.json | 6 ++---- samples/expo/app/(tabs)/index.tsx | 18 ++++++++++++++---- samples/expo/app/(tabs)/two.tsx | 19 +++++++++++++++---- samples/expo/app/+html.tsx | 5 ++++- samples/expo/app/_layout.tsx | 10 ++++++++-- samples/expo/app/modal.tsx | 6 +++++- samples/expo/components/EditScreenInfo.tsx | 6 ++++-- samples/expo/components/ExternalLink.tsx | 2 +- samples/expo/components/Themed.tsx | 5 ++++- samples/expo/tsconfig.json | 11 ++--------- 11 files changed, 59 insertions(+), 30 deletions(-) diff --git a/samples/expo/.prettierrc.js b/samples/expo/.prettierrc.js index 269359da4a..2ae7b381ed 100644 --- a/samples/expo/.prettierrc.js +++ b/samples/expo/.prettierrc.js @@ -5,4 +5,3 @@ module.exports = { singleQuote: true, trailingComma: 'all', }; - diff --git a/samples/expo/app.json b/samples/expo/app.json index cca528d235..dc009914bd 100644 --- a/samples/expo/app.json +++ b/samples/expo/app.json @@ -14,9 +14,7 @@ "resizeMode": "contain", "backgroundColor": "#ffffff" }, - "assetBundlePatterns": [ - "**/*" - ], + "assetBundlePatterns": ["**/*"], "ios": { "supportsTablet": true, "bundleIdentifier": "io.sentry.expo.sample", @@ -90,4 +88,4 @@ "url": "https://u.expo.dev/00000000-0000-0000-0000-000000000000" } } -} \ No newline at end of file +} diff --git a/samples/expo/app/(tabs)/index.tsx b/samples/expo/app/(tabs)/index.tsx index 0aa94be894..44cb99e51d 100644 --- a/samples/expo/app/(tabs)/index.tsx +++ b/samples/expo/app/(tabs)/index.tsx @@ -79,7 +79,9 @@ export default function TabOneScreen() { title="Native Crash" onPress={() => { if (isRunningInExpoGo()) { - console.warn('Not supported in Expo Go. Build the application to test this feature.'); + console.warn( + 'Not supported in Expo Go. Build the application to test this feature.', + ); return; } Sentry.nativeCrash(); @@ -138,7 +140,9 @@ export default function TabOneScreen() {