diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 0c128bcfb7..dab14d7b9c 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -44,7 +44,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@b6a472f63d85b9c78a3ac5e89422239fc15e9b3c # pin@v3.28.1 + uses: github/codeql-action/init@dd746615b3b9d728a6a37ca2045b68ca76d4841a # pin@v3.28.8 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -55,7 +55,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@b6a472f63d85b9c78a3ac5e89422239fc15e9b3c # pin@v3.28.1 + uses: github/codeql-action/autobuild@dd746615b3b9d728a6a37ca2045b68ca76d4841a # pin@v3.28.8 # ℹī¸ Command-line programs to run using the OS shell. # 📚 https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions @@ -66,4 +66,4 @@ jobs: # make bootstrap # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b6a472f63d85b9c78a3ac5e89422239fc15e9b3c # pin@v3.28.1 + uses: github/codeql-action/analyze@dd746615b3b9d728a6a37ca2045b68ca76d4841a # pin@v3.28.8 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 91ca8180de..fcf33e33a7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,7 +19,7 @@ jobs: steps: - name: Get auth token id: token - uses: actions/create-github-app-token@c1a285145b9d317df6ced56c09f525b5c2b6f755 # v1.11.1 + uses: actions/create-github-app-token@136412a57a7081aa63c935a2cc2918f76c34f514 # v1.11.2 with: app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }} private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 26de1b8c3a..8208dd1e92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,9 +8,30 @@ ## Unreleased +### Changes + +- Load `optionsFile` into the JS bundle during Metro bundle process ([#4476](https://github.com/getsentry/sentry-react-native/pull/4476)) +- Add experimental version of `startWithConfigureOptions` for Apple platforms ([#4444](https://github.com/getsentry/sentry-react-native/pull/4444)) +- Add experimental version of `init` with optional `OptionsConfiguration` for Android ([#4451](https://github.com/getsentry/sentry-react-native/pull/4451)) +- Add initialization using `sentry.options.json` for Apple platforms ([#4447](https://github.com/getsentry/sentry-react-native/pull/4447)) +- Add initialization using `sentry.options.json` for Android ([#4451](https://github.com/getsentry/sentry-react-native/pull/4451)) + +### Internal + +- Extract iOS native initialization to standalone structures ([#4442](https://github.com/getsentry/sentry-react-native/pull/4442)) +- Extract Android native initialization to standalone structures ([#4445](https://github.com/getsentry/sentry-react-native/pull/4445)) + +### Dependencies + +- Bump JavaScript SDK from v8.53.0 to v8.54.0 ([#4503](https://github.com/getsentry/sentry-react-native/pull/4503)) + - [changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md#8540) + - [diff](https://github.com/getsentry/sentry-javascript/compare/8.53.0...8.54.0) + +## 6.6.0 + ### Features -- Load `optionsFile` into the JS bundle during Metro bundle process ([#4476](https://github.com/getsentry/sentry-react-native/pull/4476)) +- Send Sentry React Native SDK version in the Session Replay Events on iOS ([#4450](https://github.com/getsentry/sentry-react-native/pull/4450)) ### Fixes @@ -22,28 +43,25 @@ - Rename `navigation.processing` span to more expressive `Navigation dispatch to screen A mounted/navigation cancelled` ([#4423](https://github.com/getsentry/sentry-react-native/pull/4423)) - Add RN SDK package to `sdk.packages` for Cocoa ([#4381](https://github.com/getsentry/sentry-react-native/pull/4381)) -- Add experimental version of `startWithConfigureOptions` for Apple platforms ([#4444](https://github.com/getsentry/sentry-react-native/pull/4444)) -- Add experimental version of `init` with optional `OptionsConfiguration` for Android ([#4451](https://github.com/getsentry/sentry-react-native/pull/4451)) -- Add initialization using `sentry.options.json` for Apple platforms ([#4447](https://github.com/getsentry/sentry-react-native/pull/4447)) -- Add initialization using `sentry.options.json` for Android ([#4451](https://github.com/getsentry/sentry-react-native/pull/4451)) ### Internal - Initialize `RNSentryTimeToDisplay` during native module `init` on iOS ([#4443](https://github.com/getsentry/sentry-react-native/pull/4443)) -- Extract iOS native initialization to standalone structures ([#4442](https://github.com/getsentry/sentry-react-native/pull/4442)) -- Extract Android native initialization to standalone structures ([#4445](https://github.com/getsentry/sentry-react-native/pull/4445)) ### Dependencies -- Bump CLI from v2.39.1 to v2.41.0 ([#4412](https://github.com/getsentry/sentry-react-native/pull/4412), [#4468](https://github.com/getsentry/sentry-react-native/pull/4468)) - - [changelog](https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md#2410) - - [diff](https://github.com/getsentry/sentry-cli/compare/2.39.1...2.41.0) -- Bump JavaScript SDK from v8.47.0 to v8.50.0 ([#4421](https://github.com/getsentry/sentry-react-native/pull/4421), [#4449](https://github.com/getsentry/sentry-react-native/pull/4449), [#4453](https://github.com/getsentry/sentry-react-native/pull/4453)) - - [changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md#8500) - - [diff](https://github.com/getsentry/sentry-javascript/compare/8.47.0...8.50.0) +- Bump CLI from v2.39.1 to v2.41.1 ([#4412](https://github.com/getsentry/sentry-react-native/pull/4412), [#4468](https://github.com/getsentry/sentry-react-native/pull/4468), [#4473](https://github.com/getsentry/sentry-react-native/pull/4473)) + - [changelog](https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md#2411) + - [diff](https://github.com/getsentry/sentry-cli/compare/2.39.1...2.41.1) +- Bump JavaScript SDK from v8.47.0 to v8.53.0 ([#4421](https://github.com/getsentry/sentry-react-native/pull/4421), [#4449](https://github.com/getsentry/sentry-react-native/pull/4449), [#4453](https://github.com/getsentry/sentry-react-native/pull/4453), [#4480](https://github.com/getsentry/sentry-react-native/pull/4480), [#4491](https://github.com/getsentry/sentry-react-native/pull/4491), [#4496](https://github.com/getsentry/sentry-react-native/pull/4496), [#4497](https://github.com/getsentry/sentry-react-native/pull/4497)) + - [changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md#8530) + - [diff](https://github.com/getsentry/sentry-javascript/compare/8.47.0...8.53.0) - Bump Android SDK from v7.20.0 to v7.20.1 ([#4467](https://github.com/getsentry/sentry-react-native/pull/4467)) - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#7201) - [diff](https://github.com/getsentry/sentry-java/compare/7.20.0...7.20.1) +- Bump Cocoa SDK from v8.43.0 to v8.44.0 ([#4495](https://github.com/getsentry/sentry-react-native/pull/4495)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8440) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.43.0...8.44.0) ## 6.5.0 diff --git a/LICENSE.md b/LICENSE.md index f5dca60848..16d368cbec 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2017-2024 Sentry +Copyright (c) 2017 Sentry Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json index 8666507d77..fd1a5e25c7 100644 --- a/dev-packages/e2e-tests/package.json +++ b/dev-packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "sentry-react-native-e2e-tests", - "version": "6.5.0", + "version": "6.6.0", "private": true, "description": "Sentry React Native End to End Tests Library", "main": "dist/index.js", @@ -13,8 +13,8 @@ "devDependencies": { "@babel/preset-env": "^7.25.3", "@babel/preset-typescript": "^7.18.6", - "@sentry/core": "8.50.0", - "@sentry/react-native": "6.5.0", + "@sentry/core": "8.54.0", + "@sentry/react-native": "6.6.0", "@types/node": "^20.9.3", "@types/react": "^18.2.64", "appium": "2.4.1", diff --git a/dev-packages/type-check/package.json b/dev-packages/type-check/package.json index 8cf9b6c33f..6ed44c18a9 100644 --- a/dev-packages/type-check/package.json +++ b/dev-packages/type-check/package.json @@ -1,7 +1,7 @@ { "name": "sentry-react-native-type-check", "private": true, - "version": "6.5.0", + "version": "6.6.0", "scripts": { "type-check": "./run-type-check.sh" } diff --git a/dev-packages/utils/index.js b/dev-packages/utils/index.js new file mode 100644 index 0000000000..f053ebf797 --- /dev/null +++ b/dev-packages/utils/index.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/dev-packages/utils/metro.js b/dev-packages/utils/metro.js new file mode 100644 index 0000000000..496fb232bc --- /dev/null +++ b/dev-packages/utils/metro.js @@ -0,0 +1,62 @@ +const path = require('path'); +const exclusionList = require('metro-config/src/defaults/exclusionList'); + +/** + * Packages used by the sample apps + */ +const getMonorepoPackages = monorepoRoot => { + return { + '@sentry/react-native': path.resolve(monorepoRoot, 'packages/core'), + }; +}; + +/** + * Block given packages present in the monorepo packages to avoid conflicts with the sample apps + */ +const getBlockList = (monorepoPackages, excludedPackages) => { + return Object.values(monorepoPackages) + .map(p => excludedPackages.map(e => new RegExp(`${p}/node_modules/${e}/.*`))) + .flat(); +}; + +const withMonorepo = config => { + const projectRoot = config.projectRoot; + if (!projectRoot) { + throw new Error('projectRoot is required'); + } + + const monorepoRoot = path.resolve(projectRoot, '../..'); + const monorepoPackages = getMonorepoPackages(monorepoRoot); + + config.resolver = config.resolver || {}; + + const blockList = [ + ...((Array.isArray(config.resolver.blockList) && config.resolver.blockList) || + (!!config.resolver.blockList && [config.resolver.blockList]) || + []), + ...getBlockList(monorepoPackages, ['react-native', 'react']), + new RegExp('.*\\android\\.*'), // Required for Windows in order to run the Sample. + ]; + config.resolver.blockList = exclusionList(blockList); + + config.watchFolders = [...(config.watchFolders || []), projectRoot, ...Object.values(monorepoPackages)]; + + config.resolver.extraNodeModules = { + ...config.resolver.extraNodeModules, + ...monorepoPackages, + 'react-native': path.resolve(projectRoot, 'node_modules/react-native'), + react: path.resolve(projectRoot, 'node_modules/react'), + }; + + config.resolver.nodeModulesPaths = [ + ...(config.resolver.nodeModulesPaths || []), + path.resolve(projectRoot, 'node_modules'), + ...Object.values(monorepoPackages).map(p => path.resolve(p, 'node_modules')), + ]; + + return config; +}; + +module.exports = { + withMonorepo, +}; diff --git a/dev-packages/utils/package.json b/dev-packages/utils/package.json new file mode 100644 index 0000000000..dc690d20e3 --- /dev/null +++ b/dev-packages/utils/package.json @@ -0,0 +1,11 @@ +{ + "name": "sentry-react-native-samples-utils", + "version": "6.6.0", + "description": "Internal Samples Utils", + "main": "index.js", + "license": "MIT", + "private": true, + "dependencies": { + "metro-config": "^0.81.0" + } +} diff --git a/lerna.json b/lerna.json index e16fcab967..44a86ffc11 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "6.5.0", + "version": "6.6.0", "packages": [ "packages/*", "dev-packages/*", diff --git a/package.json b/package.json index 7e65c8fe34..fe74ebeeb2 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@expo/swiftlint": "^0.57.1", "@naturalcycles/ktlint": "^1.13.0", - "@sentry/cli": "2.41.0", + "@sentry/cli": "2.41.1", "clang-format": "^1.8.0", "downlevel-dts": "^0.11.0", "google-java-format": "^1.4.0", @@ -45,6 +45,7 @@ "packages/core", "dev-packages/e2e-tests", "dev-packages/type-check", + "dev-packages/utils", "samples/react-native", "samples/react-native-macos", "samples/expo", diff --git a/packages/core/RNSentry.podspec b/packages/core/RNSentry.podspec index 3c595c08eb..c990e2fb63 100644 --- a/packages/core/RNSentry.podspec +++ b/packages/core/RNSentry.podspec @@ -37,7 +37,7 @@ Pod::Spec.new do |s| s.compiler_flags = other_cflags - s.dependency 'Sentry/HybridSDK', '8.43.0' + s.dependency 'Sentry/HybridSDK', '8.44.0' if defined? install_modules_dependencies # Default React Native dependencies for 0.71 and above (new and legacy architecture) diff --git a/packages/core/RNSentryCocoaTester/RNSentryCocoaTesterTests/RNSentryReplayOptionsTests.swift b/packages/core/RNSentryCocoaTester/RNSentryCocoaTesterTests/RNSentryReplayOptionsTests.swift index 936d55bb1a..0cbe2cefdf 100644 --- a/packages/core/RNSentryCocoaTester/RNSentryCocoaTesterTests/RNSentryReplayOptionsTests.swift +++ b/packages/core/RNSentryCocoaTester/RNSentryCocoaTesterTests/RNSentryReplayOptionsTests.swift @@ -48,12 +48,13 @@ final class RNSentryReplayOptions: XCTestCase { } func assertAllDefaultReplayOptionsAreNotNil(replayOptions: [String: Any]) { - XCTAssertEqual(replayOptions.count, 5) + XCTAssertEqual(replayOptions.count, 6) XCTAssertNotNil(replayOptions["sessionSampleRate"]) XCTAssertNotNil(replayOptions["errorSampleRate"]) XCTAssertNotNil(replayOptions["maskAllImages"]) XCTAssertNotNil(replayOptions["maskAllText"]) XCTAssertNotNil(replayOptions["maskedViewClasses"]) + XCTAssertNotNil(replayOptions["sdkInfo"]) } func testSessionSampleRate() { diff --git a/packages/core/android/src/main/java/io/sentry/react/RNSentryVersion.java b/packages/core/android/src/main/java/io/sentry/react/RNSentryVersion.java index 78d06b8dfa..23b1b258ed 100644 --- a/packages/core/android/src/main/java/io/sentry/react/RNSentryVersion.java +++ b/packages/core/android/src/main/java/io/sentry/react/RNSentryVersion.java @@ -2,7 +2,7 @@ class RNSentryVersion { static final String REACT_NATIVE_SDK_PACKAGE_NAME = "npm:@sentry/react-native"; - static final String REACT_NATIVE_SDK_PACKAGE_VERSION = "6.5.0"; + static final String REACT_NATIVE_SDK_PACKAGE_VERSION = "6.6.0"; static final String NATIVE_SDK_NAME = "sentry.native.android.react-native"; static final String ANDROID_SDK_NAME = "sentry.java.android.react-native"; static final String REACT_NATIVE_SDK_NAME = "sentry.javascript.react-native"; diff --git a/packages/core/ios/RNSentryReplay.mm b/packages/core/ios/RNSentryReplay.mm index 2b7a992a3a..b43fae4a49 100644 --- a/packages/core/ios/RNSentryReplay.mm +++ b/packages/core/ios/RNSentryReplay.mm @@ -1,5 +1,6 @@ #import "RNSentryReplay.h" #import "RNSentryReplayBreadcrumbConverterHelper.h" +#import "RNSentryVersion.h" #import "React/RCTTextView.h" #import "Replay/RNSentryReplayMask.h" #import "Replay/RNSentryReplayUnmask.h" @@ -27,6 +28,8 @@ + (void)updateOptions:(NSMutableDictionary *)options @"maskAllImages" : replayOptions[@"maskAllImages"] ?: [NSNull null], @"maskAllText" : replayOptions[@"maskAllText"] ?: [NSNull null], @"maskedViewClasses" : [RNSentryReplay getReplayRNRedactClasses:replayOptions], + @"sdkInfo" : + @ { @"name" : REACT_NATIVE_SDK_NAME, @"version" : REACT_NATIVE_SDK_PACKAGE_VERSION } } forKey:@"sessionReplay"]; } diff --git a/packages/core/ios/RNSentryVersion.h b/packages/core/ios/RNSentryVersion.h index c79324553c..bda9b20f36 100644 --- a/packages/core/ios/RNSentryVersion.h +++ b/packages/core/ios/RNSentryVersion.h @@ -1,5 +1,6 @@ #import extern NSString *const NATIVE_SDK_NAME; +extern NSString *const REACT_NATIVE_SDK_NAME; extern NSString *const REACT_NATIVE_SDK_PACKAGE_NAME; extern NSString *const REACT_NATIVE_SDK_PACKAGE_VERSION; diff --git a/packages/core/ios/RNSentryVersion.m b/packages/core/ios/RNSentryVersion.m index e8204d49e2..5bdb2cbbc3 100644 --- a/packages/core/ios/RNSentryVersion.m +++ b/packages/core/ios/RNSentryVersion.m @@ -1,5 +1,6 @@ #import "RNSentryVersion.h" NSString *const NATIVE_SDK_NAME = @"sentry.cocoa.react-native"; +NSString *const REACT_NATIVE_SDK_NAME = @"sentry.javascript.react-native"; NSString *const REACT_NATIVE_SDK_PACKAGE_NAME = @"npm:@sentry/react-native"; -NSString *const REACT_NATIVE_SDK_PACKAGE_VERSION = @"6.5.0"; +NSString *const REACT_NATIVE_SDK_PACKAGE_VERSION = @"6.6.0"; diff --git a/packages/core/package.json b/packages/core/package.json index bde21578f9..82f939e104 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -2,7 +2,7 @@ "name": "@sentry/react-native", "homepage": "https://github.com/getsentry/sentry-react-native", "repository": "https://github.com/getsentry/sentry-react-native", - "version": "6.5.0", + "version": "6.6.0", "description": "Official Sentry SDK for react-native", "typings": "dist/js/index.d.ts", "types": "dist/js/index.d.ts", @@ -66,22 +66,22 @@ }, "dependencies": { "@sentry/babel-plugin-component-annotate": "2.20.1", - "@sentry/browser": "8.50.0", - "@sentry/cli": "2.41.0", - "@sentry/core": "8.50.0", - "@sentry/react": "8.50.0", - "@sentry/types": "8.50.0", - "@sentry/utils": "8.50.0" + "@sentry/browser": "8.54.0", + "@sentry/cli": "2.41.1", + "@sentry/core": "8.54.0", + "@sentry/react": "8.54.0", + "@sentry/types": "8.54.0", + "@sentry/utils": "8.54.0" }, "devDependencies": { "@babel/core": "^7.25.2", "@expo/metro-config": "0.19.5", "@mswjs/interceptors": "^0.25.15", "@react-native/babel-preset": "0.76.3", - "@sentry-internal/eslint-config-sdk": "8.50.0", - "@sentry-internal/eslint-plugin-sdk": "8.50.0", - "@sentry-internal/typescript": "8.50.0", - "@sentry/wizard": "3.38.0", + "@sentry-internal/eslint-config-sdk": "8.54.0", + "@sentry-internal/eslint-plugin-sdk": "8.54.0", + "@sentry-internal/typescript": "8.54.0", + "@sentry/wizard": "3.40.0", "@testing-library/react-native": "^12.7.2", "@types/jest": "^29.5.3", "@types/node": "^20.9.3", diff --git a/packages/core/src/js/version.ts b/packages/core/src/js/version.ts index 36f562b476..6718af2331 100644 --- a/packages/core/src/js/version.ts +++ b/packages/core/src/js/version.ts @@ -1,3 +1,3 @@ export const SDK_PACKAGE_NAME = 'npm:@sentry/react-native'; export const SDK_NAME = 'sentry.javascript.react-native'; -export const SDK_VERSION = '6.5.0'; +export const SDK_VERSION = '6.6.0'; diff --git a/performance-tests/TestAppPlain/package.json b/performance-tests/TestAppPlain/package.json index 54e0d5a8a2..67b6a8b3dd 100644 --- a/performance-tests/TestAppPlain/package.json +++ b/performance-tests/TestAppPlain/package.json @@ -1,6 +1,6 @@ { "name": "TestAppPlain", - "version": "6.5.0", + "version": "6.6.0", "private": true, "scripts": { "android": "react-native run-android", diff --git a/performance-tests/TestAppSentry/metro.config.js b/performance-tests/TestAppSentry/metro.config.js index e86e1db671..0c9c988fe2 100644 --- a/performance-tests/TestAppSentry/metro.config.js +++ b/performance-tests/TestAppSentry/metro.config.js @@ -1,15 +1,4 @@ -const path = require('path'); -const exclusionList = require('metro-config/src/defaults/exclusionList'); - -const projectRoot = __dirname; -const monorepoRoot = path.resolve(projectRoot, '../..'); - -// Only list the packages within your monorepo that your app uses. No need to add anything else. -// If your monorepo tooling can give you the list of monorepo workspaces linked -// in your app workspace, you can automate this list instead of hardcoding them. -const monorepoPackages = { - '@sentry/react-native': path.resolve(monorepoRoot, 'packages/core'), -}; +const { withMonorepo } = require('sentry-react-native-samples-utils/metro'); /** * Metro configuration for React Native @@ -17,7 +6,7 @@ const monorepoPackages = { * * @format */ -module.exports = { +module.exports = withMonorepo({ transformer: { getTransformOptions: async () => ({ transform: { @@ -27,24 +16,4 @@ module.exports = { }), }, projectRoot: __dirname, - // 1. Watch the local app directory, and only the shared packages (limiting the scope and speeding it up) - // Note how we change this from `monorepoRoot` to `projectRoot`. This is part of the optimization! - watchFolders: [projectRoot, ...Object.values(monorepoPackages)], - resolver: { - blockList: exclusionList([ - ...Object.values(monorepoPackages).map(p => new RegExp(`${p}/node_modules/react-native/.*`)), - ]), - // Add the monorepo workspaces as `extraNodeModules` to Metro. - // If your monorepo tooling creates workspace symlinks in the `node_modules` directory, - // you can either add symlink support to Metro or set the `extraNodeModules` to avoid the symlinks. - // See: https://metrobundler.dev/docs/configuration/#extranodemodules - extraNodeModules: { - ...monorepoPackages, - 'react-native': path.resolve(projectRoot, 'node_modules/react-native'), - }, - nodeModulesPaths: [ - path.resolve(projectRoot, 'node_modules'), - ...Object.values(monorepoPackages).map(p => path.resolve(p, 'node_modules')), - ], - }, -}; +}); diff --git a/performance-tests/TestAppSentry/package.json b/performance-tests/TestAppSentry/package.json index 5733fc3132..de301f4bf2 100644 --- a/performance-tests/TestAppSentry/package.json +++ b/performance-tests/TestAppSentry/package.json @@ -1,6 +1,6 @@ { "name": "TestAppSentry", - "version": "6.5.0", + "version": "6.6.0", "private": true, "scripts": { "android": "react-native run-android", @@ -8,14 +8,15 @@ "start": "react-native start" }, "dependencies": { - "@sentry/react-native": "6.5.0", + "@sentry/react-native": "6.6.0", "react": "18.1.0", "react-native": "0.70.15" }, "devDependencies": { "@babel/core": "^7.12.9", "@babel/runtime": "^7.12.5", - "metro-react-native-babel-preset": "^0.72.3" + "metro-react-native-babel-preset": "^0.72.3", + "sentry-react-native-samples-utils": "workspace:^" }, "jest": { "preset": "react-native" diff --git a/performance-tests/metrics-ios.yml b/performance-tests/metrics-ios.yml index baf5bd5b18..d0235886d7 100644 --- a/performance-tests/metrics-ios.yml +++ b/performance-tests/metrics-ios.yml @@ -11,4 +11,4 @@ startupTimeTest: binarySizeTest: diffMin: 600 KiB - diffMax: 1100 KiB + diffMax: 1200 KiB diff --git a/samples/expo/app.json b/samples/expo/app.json index 832f50dcc3..c97346d0b5 100644 --- a/samples/expo/app.json +++ b/samples/expo/app.json @@ -4,7 +4,7 @@ "slug": "sentry-react-native-expo-sample", "jsEngine": "hermes", "scheme": "sentry-expo-sample", - "version": "6.5.0", + "version": "6.6.0", "orientation": "portrait", "icon": "./assets/icon.png", "userInterfaceStyle": "light", @@ -19,7 +19,7 @@ "ios": { "supportsTablet": true, "bundleIdentifier": "io.sentry.expo.sample", - "buildNumber": "35" + "buildNumber": "36" }, "android": { "adaptiveIcon": { @@ -27,7 +27,7 @@ "backgroundColor": "#ffffff" }, "package": "io.sentry.expo.sample", - "versionCode": 35 + "versionCode": 36 }, "web": { "bundler": "metro", diff --git a/samples/expo/app/_layout.tsx b/samples/expo/app/_layout.tsx index e950ff4a66..0791ec47d0 100644 --- a/samples/expo/app/_layout.tsx +++ b/samples/expo/app/_layout.tsx @@ -10,6 +10,7 @@ import * as Sentry from '@sentry/react-native'; import { ErrorEvent } from '@sentry/core'; import { isExpoGo } from '../utils/isExpoGo'; import { LogBox } from 'react-native'; +import { isWeb } from '../utils/isWeb'; export { // Catch any errors thrown by the Layout component. @@ -56,8 +57,10 @@ Sentry.init({ }), navigationIntegration, Sentry.reactNativeTracingIntegration(), - Sentry.browserReplayIntegration(), ); + if (isWeb()) { + integrations.push(Sentry.browserReplayIntegration()); + } return integrations.filter(i => i.name !== 'Dedupe'); }, enableAutoSessionTracking: true, diff --git a/samples/expo/metro.config.js b/samples/expo/metro.config.js index 338804f753..48b3993d2e 100644 --- a/samples/expo/metro.config.js +++ b/samples/expo/metro.config.js @@ -1,9 +1,9 @@ // Learn more https://docs.expo.io/guides/customizing-metro const { getDefaultConfig } = require('@expo/metro-config'); -const path = require('path'); - const { getSentryExpoConfig } = require('@sentry/react-native/metro'); +const { withMonorepo } = require('sentry-react-native-samples-utils/metro'); + /** @type {import('expo/metro-config').MetroConfig} */ const config = getSentryExpoConfig(__dirname, { // [Web-only]: Enables CSS support in Metro. @@ -12,40 +12,4 @@ const config = getSentryExpoConfig(__dirname, { annotateReactComponents: true, }); -const projectRoot = __dirname; -const monorepoRoot = path.resolve(projectRoot, '../..'); - -// Only list the packages within your monorepo that your app uses. No need to add anything else. -// If your monorepo tooling can give you the list of monorepo workspaces linked -// in your app workspace, you can automate this list instead of hardcoding them. -const monorepoPackages = { - '@sentry/react-native': path.resolve(monorepoRoot, 'packages/core'), -}; - -const exclusionList = [...Object.values(monorepoPackages).map(p => new RegExp(`${p}/node_modules/react-native/.*`))]; - -if (config.resolver.blacklistRE) { - config.resolver.blacklistRE.push(...exclusionList); -} else { - config.resolver.blacklistRE = exclusionList; -} - -// 1. Watch the local app directory, and only the shared packages (limiting the scope and speeding it up) -// Note how we change this from `monorepoRoot` to `projectRoot`. This is part of the optimization! -config.watchFolders = [projectRoot, ...Object.values(monorepoPackages)]; - -// Add the monorepo workspaces as `extraNodeModules` to Metro. -// If your monorepo tooling creates workspace symlinks in the `node_modules` directory, -// you can either add symlink support to Metro or set the `extraNodeModules` to avoid the symlinks. -// See: https://metrobundler.dev/docs/configuration/#extranodemodules -config.resolver.extraNodeModules = { - ...monorepoPackages, - 'react-native': path.resolve(projectRoot, 'node_modules/react-native'), -}; - -config.resolver.nodeModulesPaths = [ - path.resolve(projectRoot, 'node_modules'), - ...Object.values(monorepoPackages).map(p => path.resolve(p, 'node_modules')), -]; - -module.exports = config; +module.exports = withMonorepo(config); diff --git a/samples/expo/package.json b/samples/expo/package.json index d11903f86a..b151813e59 100644 --- a/samples/expo/package.json +++ b/samples/expo/package.json @@ -1,6 +1,6 @@ { "name": "sentry-react-native-expo-sample", - "version": "6.5.0", + "version": "6.6.0", "main": "expo-router/entry", "scripts": { "start": "expo start", @@ -16,7 +16,7 @@ "set-version": "npx react-native-version --skip-tag --never-amend" }, "dependencies": { - "@sentry/react-native": "6.5.0", + "@sentry/react-native": "6.6.0", "@types/react": "~18.3.12", "expo": "^52.0.0", "expo-constants": "~17.0.3", @@ -37,7 +37,8 @@ "@babel/core": "^7.26.0", "@babel/preset-env": "^7.26.0", "@sentry/babel-plugin-component-annotate": "^2.18.0", - "@types/node": "20.10.4" + "@types/node": "20.10.4", + "sentry-react-native-samples-utils": "workspace:^" }, "overrides": { "react-refresh": "~0.14.0" diff --git a/samples/expo/utils/isWeb.ts b/samples/expo/utils/isWeb.ts new file mode 100644 index 0000000000..a6327791f6 --- /dev/null +++ b/samples/expo/utils/isWeb.ts @@ -0,0 +1,5 @@ +import { Platform } from 'react-native'; + +export function isWeb(): boolean { + return Platform.OS === 'web'; +} diff --git a/samples/react-native-macos/metro.config.js b/samples/react-native-macos/metro.config.js index 363086b13c..270023086b 100644 --- a/samples/react-native-macos/metro.config.js +++ b/samples/react-native-macos/metro.config.js @@ -1,17 +1,7 @@ -const path = require('path'); const { withSentryConfig } = require('@sentry/react-native/metro'); const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); -const exclusionList = require('metro-config/src/defaults/exclusionList'); -const projectRoot = __dirname; -const monorepoRoot = path.resolve(projectRoot, '../..'); - -// Only list the packages within your monorepo that your app uses. No need to add anything else. -// If your monorepo tooling can give you the list of monorepo workspaces linked -// in your app workspace, you can automate this list instead of hardcoding them. -const monorepoPackages = { - '@sentry/react-native': path.resolve(monorepoRoot, 'packages/core'), -}; +const { withMonorepo } = require('sentry-react-native-samples-utils/metro'); /** * Metro configuration @@ -19,52 +9,12 @@ const monorepoPackages = { * * @type {import('metro-config').MetroConfig} */ -const config = { - projectRoot: __dirname, - // 1. Watch the local app directory, and only the shared packages (limiting the scope and speeding it up) - // Note how we change this from `monorepoRoot` to `projectRoot`. This is part of the optimization! - watchFolders: [projectRoot, ...Object.values(monorepoPackages)], - resolver: { - resolverMainFields: ['react-native', 'main'], - resolveRequest: (context, moduleName, platform) => { - if (moduleName.includes('promise/')) { - return context.resolveRequest( - { - ...context, - // Ensures the promise module is resolved from the sample's node_modules. - allowHaste: false, - disableHierarchicalLookup: true, - }, - moduleName, - platform, - ); - } - return context.resolveRequest(context, moduleName, platform); - }, - blockList: exclusionList([ - new RegExp('.*\\android\\.*'), // Required for Windows in order to run the Sample. - ...Object.values(monorepoPackages).map( - p => new RegExp(`${p}/node_modules/react-native/.*`), - ), - ]), - // Add the monorepo workspaces as `extraNodeModules` to Metro. - // If your monorepo tooling creates workspace symlinks in the `node_modules` directory, - // you can either add symlink support to Metro or set the `extraNodeModules` to avoid the symlinks. - // See: https://metrobundler.dev/docs/configuration/#extranodemodules - extraNodeModules: { - ...monorepoPackages, - 'react-native': path.resolve(projectRoot, 'node_modules/react-native'), - }, - nodeModulesPaths: [ - path.resolve(projectRoot, 'node_modules'), - ...Object.values(monorepoPackages).map(p => - path.resolve(p, 'node_modules'), - ), - ], - }, -}; +const config = {}; + +const mergedConfig = mergeConfig(getDefaultConfig(__dirname), config); -const m = mergeConfig(getDefaultConfig(__dirname), config); -module.exports = withSentryConfig(m, { +const sentryConfig = withSentryConfig(mergedConfig, { annotateReactComponents: true, }); + +module.exports = withMonorepo(sentryConfig); diff --git a/samples/react-native-macos/package.json b/samples/react-native-macos/package.json index d2df3f52d1..47d5e98ced 100644 --- a/samples/react-native-macos/package.json +++ b/samples/react-native-macos/package.json @@ -1,6 +1,6 @@ { "name": "sentry-react-native-macos-sample", - "version": "6.5.0", + "version": "6.6.0", "private": true, "scripts": { "start": "react-native start --experimental-debugger", @@ -16,9 +16,9 @@ "@react-navigation/bottom-tabs": "^6.5.12", "@react-navigation/native": "^6.1.9", "@react-navigation/stack": "^6.3.20", - "@sentry/core": "8.50.0", - "@sentry/react": "8.50.0", - "@sentry/react-native": "6.5.0", + "@sentry/core": "8.54.0", + "@sentry/react": "8.54.0", + "@sentry/react-native": "6.6.0", "delay": "^6.0.0", "react": "18.2.0", "react-native": "0.73.9", @@ -49,6 +49,7 @@ "eslint": "^8.19.0", "jest": "^29.6.3", "prettier": "2.8.8", + "sentry-react-native-samples-utils": "workspace:^", "typescript": "5.0.4" }, "engines": { diff --git a/samples/react-native/android/app/build.gradle b/samples/react-native/android/app/build.gradle index 6f1ee1a6d0..4c1341b4c8 100644 --- a/samples/react-native/android/app/build.gradle +++ b/samples/react-native/android/app/build.gradle @@ -136,8 +136,8 @@ android { applicationId "io.sentry.reactnative.sample" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 37 - versionName "6.5.0" + versionCode 38 + versionName "6.6.0" } signingConfigs { diff --git a/samples/react-native/ios/sentryreactnativesample/Info.plist b/samples/react-native/ios/sentryreactnativesample/Info.plist index 5190c903a8..12ed645a84 100644 --- a/samples/react-native/ios/sentryreactnativesample/Info.plist +++ b/samples/react-native/ios/sentryreactnativesample/Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 6.5.0 + 6.6.0 CFBundleSignature ???? CFBundleVersion - 42 + 43 LSRequiresIPhoneOS NSAppTransportSecurity diff --git a/samples/react-native/ios/sentryreactnativesampleTests/Info.plist b/samples/react-native/ios/sentryreactnativesampleTests/Info.plist index 49a16ddde4..515e2c9f2a 100644 --- a/samples/react-native/ios/sentryreactnativesampleTests/Info.plist +++ b/samples/react-native/ios/sentryreactnativesampleTests/Info.plist @@ -15,10 +15,10 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 6.5.0 + 6.6.0 CFBundleSignature ???? CFBundleVersion - 42 + 43 diff --git a/samples/react-native/metro.config.js b/samples/react-native/metro.config.js index 7ecc754c00..587aa3a7c8 100644 --- a/samples/react-native/metro.config.js +++ b/samples/react-native/metro.config.js @@ -1,17 +1,7 @@ -const path = require('path'); const { withSentryConfig } = require('@sentry/react-native/metro'); const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); -const exclusionList = require('metro-config/src/defaults/exclusionList'); -const projectRoot = __dirname; -const monorepoRoot = path.resolve(projectRoot, '../..'); - -// Only list the packages within your monorepo that your app uses. No need to add anything else. -// If your monorepo tooling can give you the list of monorepo workspaces linked -// in your app workspace, you can automate this list instead of hardcoding them. -const monorepoPackages = { - '@sentry/react-native': path.resolve(monorepoRoot, 'packages/core'), -}; +const { withMonorepo } = require('sentry-react-native-samples-utils/metro'); /** * Metro configuration @@ -19,52 +9,12 @@ const monorepoPackages = { * * @type {import('metro-config').MetroConfig} */ -const config = { - projectRoot: __dirname, - // 1. Watch the local app directory, and only the shared packages (limiting the scope and speeding it up) - // Note how we change this from `monorepoRoot` to `projectRoot`. This is part of the optimization! - watchFolders: [projectRoot, ...Object.values(monorepoPackages)], - resolver: { - resolverMainFields: ['react-native', 'main'], - resolveRequest: (context, moduleName, platform) => { - if (moduleName.includes('promise/')) { - return context.resolveRequest( - { - ...context, - // Ensures the promise module is resolved from the sample's node_modules. - allowHaste: false, - disableHierarchicalLookup: true, - }, - moduleName, - platform, - ); - } - return context.resolveRequest(context, moduleName, platform); - }, - blockList: exclusionList([ - new RegExp('.*\\android\\.*'), // Required for Windows in order to run the Sample. - ...Object.values(monorepoPackages).map( - p => new RegExp(`${p}/node_modules/react-native/.*`), - ), - ]), - // Add the monorepo workspaces as `extraNodeModules` to Metro. - // If your monorepo tooling creates workspace symlinks in the `node_modules` directory, - // you can either add symlink support to Metro or set the `extraNodeModules` to avoid the symlinks. - // See: https://metrobundler.dev/docs/configuration/#extranodemodules - extraNodeModules: { - ...monorepoPackages, - 'react-native': path.resolve(projectRoot, 'node_modules/react-native'), - }, - nodeModulesPaths: [ - path.resolve(projectRoot, 'node_modules'), - ...Object.values(monorepoPackages).map(p => - path.resolve(p, 'node_modules'), - ), - ], - }, -}; +const config = {}; + +const mergedConfig = mergeConfig(getDefaultConfig(__dirname), config); -const m = mergeConfig(getDefaultConfig(__dirname), config); -module.exports = withSentryConfig(m, { +const sentryConfig = withSentryConfig(mergedConfig, { annotateReactComponents: true, }); + +module.exports = withMonorepo(sentryConfig); diff --git a/samples/react-native/package.json b/samples/react-native/package.json index 80ac941a39..02d2f942dd 100644 --- a/samples/react-native/package.json +++ b/samples/react-native/package.json @@ -1,6 +1,6 @@ { "name": "sentry-react-native-sample", - "version": "6.5.0", + "version": "6.6.0", "private": true, "scripts": { "postinstall": "patch-package", @@ -25,7 +25,7 @@ "@react-navigation/native": "^7.0.3", "@react-navigation/native-stack": "^7.0.3", "@react-navigation/stack": "^7.0.3", - "@sentry/react-native": "6.5.0", + "@sentry/react-native": "6.6.0", "delay": "^6.0.0", "react": "18.3.1", "react-native": "0.76.3", @@ -63,6 +63,7 @@ "patch-package": "^8.0.0", "prettier": "2.8.8", "react-test-renderer": "18.3.1", + "sentry-react-native-samples-utils": "workspace:^", "typescript": "5.0.4" }, "engines": { diff --git a/yarn.lock b/yarn.lock index 6e02e709e1..6e3e8b6a99 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7549,21 +7549,21 @@ __metadata: languageName: node linkType: hard -"@sentry-internal/browser-utils@npm:8.50.0": - version: 8.50.0 - resolution: "@sentry-internal/browser-utils@npm:8.50.0" +"@sentry-internal/browser-utils@npm:8.54.0": + version: 8.54.0 + resolution: "@sentry-internal/browser-utils@npm:8.54.0" dependencies: - "@sentry/core": 8.50.0 - checksum: f9d681b274d7e9057392bb916a63e3034636e18f8030c49f4b7a834fe3e982ac388417d942aa21e8ee2f031ea8e04f3754168a3328ed23c316612c7b60d1437b + "@sentry/core": 8.54.0 + checksum: a6dc51bcf0b6029ebb49dd3478bd216da5aac118512ae247a3fa4c61b809a6caa27ee1531dc49cdab18f340f6a0cb337cc160c217e6af60060cb50aa2ab15abd languageName: node linkType: hard -"@sentry-internal/eslint-config-sdk@npm:8.50.0": - version: 8.50.0 - resolution: "@sentry-internal/eslint-config-sdk@npm:8.50.0" +"@sentry-internal/eslint-config-sdk@npm:8.54.0": + version: 8.54.0 + resolution: "@sentry-internal/eslint-config-sdk@npm:8.54.0" dependencies: - "@sentry-internal/eslint-plugin-sdk": 8.50.0 - "@sentry-internal/typescript": 8.50.0 + "@sentry-internal/eslint-plugin-sdk": 8.54.0 + "@sentry-internal/typescript": 8.54.0 "@typescript-eslint/eslint-plugin": ^5.48.0 "@typescript-eslint/parser": ^5.48.0 eslint-config-prettier: ^6.11.0 @@ -7574,43 +7574,43 @@ __metadata: eslint-plugin-simple-import-sort: ^5.0.3 peerDependencies: eslint: ">=5" - checksum: a1019cc55daea7587f5f1b913f8f2a7ce70ad04db2afbd7072836abf85a77703e4bf2b2e3bd261c808b0205e3a650040808fda9c2821f011331b976e0843e8da + checksum: 4b4ed9e455517ab9ca90f0d9ab8f9a27342dd2635cd3464bda6b06430ab44028c421f4c7a214a034c20514e950380cd7f37f825a0a60d5b6c07d5e7040cbc1b3 languageName: node linkType: hard -"@sentry-internal/eslint-plugin-sdk@npm:8.50.0": - version: 8.50.0 - resolution: "@sentry-internal/eslint-plugin-sdk@npm:8.50.0" - checksum: 275d4c5f972f83d10ebcd311ce2115bc9047475ac2268a94fc4c1e261512b54529e3afed65d686512448a59896aaccf0f907dbf6a2f464903b51419dca040ed2 +"@sentry-internal/eslint-plugin-sdk@npm:8.54.0": + version: 8.54.0 + resolution: "@sentry-internal/eslint-plugin-sdk@npm:8.54.0" + checksum: b9f3d9512df82d1e9cbef100b2f19626a1ede9b25eee6ff1f0e163f74f087a9de6dc6705c58c01cedd4b1782b2db31f8c158ee8a05552db8b49315c3917b9d92 languageName: node linkType: hard -"@sentry-internal/feedback@npm:8.50.0": - version: 8.50.0 - resolution: "@sentry-internal/feedback@npm:8.50.0" +"@sentry-internal/feedback@npm:8.54.0": + version: 8.54.0 + resolution: "@sentry-internal/feedback@npm:8.54.0" dependencies: - "@sentry/core": 8.50.0 - checksum: 289d89efbe4e315ea7b2e9dadccc2e43245de1614076bdbd7add1d6d21fe6a436cfc020d8797d46526e0e4ed85b2c7bc3ad67e705d50958c970d866a411ecb56 + "@sentry/core": 8.54.0 + checksum: e99ca3997609deba59af450b6298dc5125cc7633a59751632cf3b4a7cf12f097cc3ffa9424c483489a0d232a6c577479fe5496355e6a5c2b3ada0c7aa72e7251 languageName: node linkType: hard -"@sentry-internal/replay-canvas@npm:8.50.0": - version: 8.50.0 - resolution: "@sentry-internal/replay-canvas@npm:8.50.0" +"@sentry-internal/replay-canvas@npm:8.54.0": + version: 8.54.0 + resolution: "@sentry-internal/replay-canvas@npm:8.54.0" dependencies: - "@sentry-internal/replay": 8.50.0 - "@sentry/core": 8.50.0 - checksum: 2255f0482ebc9a4228e5c10713311cadf31e8f4d5a3275d0547a263e70004401d8674f161c1be9b2b676b730265b17798ef4dd17ba89b797397de0b4a31bb976 + "@sentry-internal/replay": 8.54.0 + "@sentry/core": 8.54.0 + checksum: ed11de4c3503833d1e3503e521d0945eb393e16c6e5a2da3b5eae8632540a96530e465e8b6947879440ef19aba5f0d13ce36c4400955fcb310de2882c8610887 languageName: node linkType: hard -"@sentry-internal/replay@npm:8.50.0": - version: 8.50.0 - resolution: "@sentry-internal/replay@npm:8.50.0" +"@sentry-internal/replay@npm:8.54.0": + version: 8.54.0 + resolution: "@sentry-internal/replay@npm:8.54.0" dependencies: - "@sentry-internal/browser-utils": 8.50.0 - "@sentry/core": 8.50.0 - checksum: 6de95d49a8fb66d12de32303b603438e4f6f1359cf9c0df29c8e76f14adf1ff59a9cd68fc94b6c17775d47533ed932449f878803eadf9b48f50e615ed801de85 + "@sentry-internal/browser-utils": 8.54.0 + "@sentry/core": 8.54.0 + checksum: 2d46529612cb279ef53e8fb0f96d9da7b0526e9c3990af27620cb1f10a3f66b81966121d904da08b4ad07c0ae162230dfa39a9572127033b62ca2aae9b9008d8 languageName: node linkType: hard @@ -7625,12 +7625,12 @@ __metadata: languageName: node linkType: hard -"@sentry-internal/typescript@npm:8.50.0": - version: 8.50.0 - resolution: "@sentry-internal/typescript@npm:8.50.0" +"@sentry-internal/typescript@npm:8.54.0": + version: 8.54.0 + resolution: "@sentry-internal/typescript@npm:8.54.0" peerDependencies: typescript: 4.9.5 - checksum: ac37993b83ee84cc2c03930de6153a0247f0709f0f11df17f17f50701c5da9f635325e03c5514e26fc10c8387a445f6ca3e55310ec0bcf769cc2a318d88f23ff + checksum: 83cfd303f34dbc5e70fc18e0af788ae37cdc0635258c082924e022b44177bac5c9c589448b368fbeeafb282a22623b5a6ea0e5ef3140c3f54fce1ac222e1920b languageName: node linkType: hard @@ -7648,79 +7648,79 @@ __metadata: languageName: node linkType: hard -"@sentry/browser@npm:8.50.0": - version: 8.50.0 - resolution: "@sentry/browser@npm:8.50.0" +"@sentry/browser@npm:8.54.0": + version: 8.54.0 + resolution: "@sentry/browser@npm:8.54.0" dependencies: - "@sentry-internal/browser-utils": 8.50.0 - "@sentry-internal/feedback": 8.50.0 - "@sentry-internal/replay": 8.50.0 - "@sentry-internal/replay-canvas": 8.50.0 - "@sentry/core": 8.50.0 - checksum: ce01337ad37cc6b38ce52a67238f8055f15f070681adc0f4f0d21649ec63fc45007410c97ee3c1b8c5e62db91564e2219ac8403fed6c2a4f9977f73855283831 + "@sentry-internal/browser-utils": 8.54.0 + "@sentry-internal/feedback": 8.54.0 + "@sentry-internal/replay": 8.54.0 + "@sentry-internal/replay-canvas": 8.54.0 + "@sentry/core": 8.54.0 + checksum: b125b194877cbdefc76884f6b1b7995d0949f7e7e5c4283c69f01071656df0e571bd0ac1cf1bb47f89f268370dd8b69126db44e2949ee5176a043e615c5bc7e0 languageName: node linkType: hard -"@sentry/cli-darwin@npm:2.41.0": - version: 2.41.0 - resolution: "@sentry/cli-darwin@npm:2.41.0" +"@sentry/cli-darwin@npm:2.41.1": + version: 2.41.1 + resolution: "@sentry/cli-darwin@npm:2.41.1" conditions: os=darwin languageName: node linkType: hard -"@sentry/cli-linux-arm64@npm:2.41.0": - version: 2.41.0 - resolution: "@sentry/cli-linux-arm64@npm:2.41.0" +"@sentry/cli-linux-arm64@npm:2.41.1": + version: 2.41.1 + resolution: "@sentry/cli-linux-arm64@npm:2.41.1" conditions: (os=linux | os=freebsd) & cpu=arm64 languageName: node linkType: hard -"@sentry/cli-linux-arm@npm:2.41.0": - version: 2.41.0 - resolution: "@sentry/cli-linux-arm@npm:2.41.0" +"@sentry/cli-linux-arm@npm:2.41.1": + version: 2.41.1 + resolution: "@sentry/cli-linux-arm@npm:2.41.1" conditions: (os=linux | os=freebsd) & cpu=arm languageName: node linkType: hard -"@sentry/cli-linux-i686@npm:2.41.0": - version: 2.41.0 - resolution: "@sentry/cli-linux-i686@npm:2.41.0" +"@sentry/cli-linux-i686@npm:2.41.1": + version: 2.41.1 + resolution: "@sentry/cli-linux-i686@npm:2.41.1" conditions: (os=linux | os=freebsd) & (cpu=x86 | cpu=ia32) languageName: node linkType: hard -"@sentry/cli-linux-x64@npm:2.41.0": - version: 2.41.0 - resolution: "@sentry/cli-linux-x64@npm:2.41.0" +"@sentry/cli-linux-x64@npm:2.41.1": + version: 2.41.1 + resolution: "@sentry/cli-linux-x64@npm:2.41.1" conditions: (os=linux | os=freebsd) & cpu=x64 languageName: node linkType: hard -"@sentry/cli-win32-i686@npm:2.41.0": - version: 2.41.0 - resolution: "@sentry/cli-win32-i686@npm:2.41.0" +"@sentry/cli-win32-i686@npm:2.41.1": + version: 2.41.1 + resolution: "@sentry/cli-win32-i686@npm:2.41.1" conditions: os=win32 & (cpu=x86 | cpu=ia32) languageName: node linkType: hard -"@sentry/cli-win32-x64@npm:2.41.0": - version: 2.41.0 - resolution: "@sentry/cli-win32-x64@npm:2.41.0" +"@sentry/cli-win32-x64@npm:2.41.1": + version: 2.41.1 + resolution: "@sentry/cli-win32-x64@npm:2.41.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@sentry/cli@npm:2.41.0": - version: 2.41.0 - resolution: "@sentry/cli@npm:2.41.0" +"@sentry/cli@npm:2.41.1": + version: 2.41.1 + resolution: "@sentry/cli@npm:2.41.1" dependencies: - "@sentry/cli-darwin": 2.41.0 - "@sentry/cli-linux-arm": 2.41.0 - "@sentry/cli-linux-arm64": 2.41.0 - "@sentry/cli-linux-i686": 2.41.0 - "@sentry/cli-linux-x64": 2.41.0 - "@sentry/cli-win32-i686": 2.41.0 - "@sentry/cli-win32-x64": 2.41.0 + "@sentry/cli-darwin": 2.41.1 + "@sentry/cli-linux-arm": 2.41.1 + "@sentry/cli-linux-arm64": 2.41.1 + "@sentry/cli-linux-i686": 2.41.1 + "@sentry/cli-linux-x64": 2.41.1 + "@sentry/cli-win32-i686": 2.41.1 + "@sentry/cli-win32-x64": 2.41.1 https-proxy-agent: ^5.0.0 node-fetch: ^2.6.7 progress: ^2.0.3 @@ -7743,7 +7743,7 @@ __metadata: optional: true bin: sentry-cli: bin/sentry-cli - checksum: a847ce6c88ff1104fab3db0c959baaf95f5f76bfcde4b106bce872e14ef74f674cf05ad4fbef9b737726b61cfc2485fab05818f010fa0c0fd89ccc52a8473673 + checksum: 8f5aecf671322f803e5a32696ed0ee0e22f86e3a97d9c6dff0f75b3eaba89533a9ad1d1d87f8b76acc6969696f64f0f00fbd8b4cbc8b365d1d4f3b8d4dcc19f9 languageName: node linkType: hard @@ -7773,10 +7773,10 @@ __metadata: languageName: node linkType: hard -"@sentry/core@npm:8.50.0": - version: 8.50.0 - resolution: "@sentry/core@npm:8.50.0" - checksum: 047763ff4191f9928c58c66252fe107aa4a191dc53aa70794d2176da074b2fea3cc5e43737be4ae142b496da4560f9e63aeaf8410da5676b72e7a76434ee9831 +"@sentry/core@npm:8.54.0": + version: 8.54.0 + resolution: "@sentry/core@npm:8.54.0" + checksum: ad7165a0bc56918cf8b8e5e15c4ceed11358970d8bf4c587a0fb05d8bd2759ee1d965da2a51e705e0e0aaf3a84150ecbf3bd647bfa0dd32bc723b28b91d46a66 languageName: node linkType: hard @@ -7805,7 +7805,7 @@ __metadata: languageName: node linkType: hard -"@sentry/react-native@6.5.0, @sentry/react-native@workspace:packages/core": +"@sentry/react-native@6.6.0, @sentry/react-native@workspace:packages/core": version: 0.0.0-use.local resolution: "@sentry/react-native@workspace:packages/core" dependencies: @@ -7813,17 +7813,17 @@ __metadata: "@expo/metro-config": 0.19.5 "@mswjs/interceptors": ^0.25.15 "@react-native/babel-preset": 0.76.3 - "@sentry-internal/eslint-config-sdk": 8.50.0 - "@sentry-internal/eslint-plugin-sdk": 8.50.0 - "@sentry-internal/typescript": 8.50.0 + "@sentry-internal/eslint-config-sdk": 8.54.0 + "@sentry-internal/eslint-plugin-sdk": 8.54.0 + "@sentry-internal/typescript": 8.54.0 "@sentry/babel-plugin-component-annotate": 2.20.1 - "@sentry/browser": 8.50.0 - "@sentry/cli": 2.41.0 - "@sentry/core": 8.50.0 - "@sentry/react": 8.50.0 - "@sentry/types": 8.50.0 - "@sentry/utils": 8.50.0 - "@sentry/wizard": 3.38.0 + "@sentry/browser": 8.54.0 + "@sentry/cli": 2.41.1 + "@sentry/core": 8.54.0 + "@sentry/react": 8.54.0 + "@sentry/types": 8.54.0 + "@sentry/utils": 8.54.0 + "@sentry/wizard": 3.40.0 "@testing-library/react-native": ^12.7.2 "@types/jest": ^29.5.3 "@types/node": ^20.9.3 @@ -7869,16 +7869,16 @@ __metadata: languageName: unknown linkType: soft -"@sentry/react@npm:8.50.0": - version: 8.50.0 - resolution: "@sentry/react@npm:8.50.0" +"@sentry/react@npm:8.54.0": + version: 8.54.0 + resolution: "@sentry/react@npm:8.54.0" dependencies: - "@sentry/browser": 8.50.0 - "@sentry/core": 8.50.0 + "@sentry/browser": 8.54.0 + "@sentry/core": 8.54.0 hoist-non-react-statics: ^3.3.2 peerDependencies: react: ^16.14.0 || 17.x || 18.x || 19.x - checksum: 4c1fe734249d84fee7f513f8e65e230111fa614974f3fbd187a78b63b6d458ee3f53c683e205ea50c4dcc7d88dcc4dc639e2e225f362a7c06c7e45afa50c30db + checksum: 6f6d12f4db77f137b7b4361bfe298f9eba19b865e56701f7ba336ffedada683bd4baa962747f8b96a91d3399b1317206689e8a7565fb06b930b71440cd8a00a1 languageName: node linkType: hard @@ -7889,12 +7889,12 @@ __metadata: languageName: node linkType: hard -"@sentry/types@npm:8.50.0": - version: 8.50.0 - resolution: "@sentry/types@npm:8.50.0" +"@sentry/types@npm:8.54.0": + version: 8.54.0 + resolution: "@sentry/types@npm:8.54.0" dependencies: - "@sentry/core": 8.50.0 - checksum: 75c91845c1b9363aa138fa3194f798890c52024a187d28b44a835649e2208aa6104881ed5b27fc637c31133142000fa566fc5623df167a58c94c25b8e5f14bd3 + "@sentry/core": 8.54.0 + checksum: 948095843efa280ee1a1dad5ac6dc20688395c25b344860d22505de14a10b1f873bcbeaaf32ba8506955a789a9c0fb0df4e80b93dfee21b1847423e954d0e616 languageName: node linkType: hard @@ -7907,18 +7907,18 @@ __metadata: languageName: node linkType: hard -"@sentry/utils@npm:8.50.0": - version: 8.50.0 - resolution: "@sentry/utils@npm:8.50.0" +"@sentry/utils@npm:8.54.0": + version: 8.54.0 + resolution: "@sentry/utils@npm:8.54.0" dependencies: - "@sentry/core": 8.50.0 - checksum: 4b62cdeaad5dc12c47effaddb175117fdb95697026264261a8fcf5a61d577bde83486700212c36e16a792b13da6e8115813dfe215eae0468a809025e7d9b36b0 + "@sentry/core": 8.54.0 + checksum: 063c31528f4d3d0f17be18050c84fad12a8a62fde97ca8e0e10c0cc01323e644d8d1cbba4b95b20de5d62eaee23ba43ae51b479057da4fd59dbccd49ac97277a languageName: node linkType: hard -"@sentry/wizard@npm:3.38.0": - version: 3.38.0 - resolution: "@sentry/wizard@npm:3.38.0" +"@sentry/wizard@npm:3.40.0": + version: 3.40.0 + resolution: "@sentry/wizard@npm:3.40.0" dependencies: "@clack/core": ^0.3.4 "@clack/prompts": 0.7.0 @@ -7940,7 +7940,7 @@ __metadata: yargs: ^16.2.0 bin: sentry-wizard: dist/bin.js - checksum: 980e97aab93b927a95db1b03777b11e2a63786340119ebcfbf63cee82c475df2e40e84d9857bde6237deeb8ed98ae4622f09476e6c5c32312154008b14add642 + checksum: 002a6d7638ebb40ad3f7ea406570e2f73a77c8e9176d5089f064303624d23e860b0d1f9767f72636588f2e40f00e46267ec7c2610030d642049eaf5865ef7211 languageName: node linkType: hard @@ -9480,10 +9480,11 @@ __metadata: dependencies: "@babel/core": ^7.12.9 "@babel/runtime": ^7.12.5 - "@sentry/react-native": 6.5.0 + "@sentry/react-native": 6.6.0 metro-react-native-babel-preset: ^0.72.3 react: 18.1.0 react-native: 0.70.15 + sentry-react-native-samples-utils: "workspace:^" languageName: unknown linkType: soft @@ -24154,8 +24155,8 @@ __metadata: dependencies: "@babel/preset-env": ^7.25.3 "@babel/preset-typescript": ^7.18.6 - "@sentry/core": 8.50.0 - "@sentry/react-native": 6.5.0 + "@sentry/core": 8.54.0 + "@sentry/react-native": 6.6.0 "@types/node": ^20.9.3 "@types/react": ^18.2.64 appium: 2.4.1 @@ -24184,7 +24185,7 @@ __metadata: "@babel/core": ^7.26.0 "@babel/preset-env": ^7.26.0 "@sentry/babel-plugin-component-annotate": ^2.18.0 - "@sentry/react-native": 6.5.0 + "@sentry/react-native": 6.6.0 "@types/node": 20.10.4 "@types/react": ~18.3.12 expo: ^52.0.0 @@ -24200,6 +24201,7 @@ __metadata: react-native-safe-area-context: 4.12.0 react-native-screens: ~4.0.0 react-native-web: ~0.19.13 + sentry-react-native-samples-utils: "workspace:^" typescript: ^5.3.2 languageName: unknown linkType: soft @@ -24218,9 +24220,9 @@ __metadata: "@react-navigation/bottom-tabs": ^6.5.12 "@react-navigation/native": ^6.1.9 "@react-navigation/stack": ^6.3.20 - "@sentry/core": 8.50.0 - "@sentry/react": 8.50.0 - "@sentry/react-native": 6.5.0 + "@sentry/core": 8.54.0 + "@sentry/react": 8.54.0 + "@sentry/react-native": 6.6.0 "@types/react": ^18.2.65 "@types/react-native-vector-icons": ^6.4.18 "@types/react-test-renderer": ^18.0.0 @@ -24242,6 +24244,7 @@ __metadata: react-native-vector-icons: ^10.0.3 react-redux: ^8.1.3 redux: ^4.2.1 + sentry-react-native-samples-utils: "workspace:^" typescript: 5.0.4 languageName: unknown linkType: soft @@ -24265,7 +24268,7 @@ __metadata: "@react-navigation/native-stack": ^7.0.3 "@react-navigation/stack": ^7.0.3 "@sentry/babel-plugin-component-annotate": ^2.18.0 - "@sentry/react-native": 6.5.0 + "@sentry/react-native": 6.6.0 "@types/react": ^18.2.65 "@types/react-native-vector-icons": ^6.4.18 "@types/react-test-renderer": ^18.0.0 @@ -24290,10 +24293,19 @@ __metadata: react-redux: ^8.1.3 react-test-renderer: 18.3.1 redux: ^4.2.1 + sentry-react-native-samples-utils: "workspace:^" typescript: 5.0.4 languageName: unknown linkType: soft +"sentry-react-native-samples-utils@workspace:^, sentry-react-native-samples-utils@workspace:dev-packages/utils": + version: 0.0.0-use.local + resolution: "sentry-react-native-samples-utils@workspace:dev-packages/utils" + dependencies: + metro-config: ^0.81.0 + languageName: unknown + linkType: soft + "sentry-react-native-type-check@workspace:dev-packages/type-check": version: 0.0.0-use.local resolution: "sentry-react-native-type-check@workspace:dev-packages/type-check" @@ -24306,7 +24318,7 @@ __metadata: dependencies: "@expo/swiftlint": ^0.57.1 "@naturalcycles/ktlint": ^1.13.0 - "@sentry/cli": 2.41.0 + "@sentry/cli": 2.41.1 clang-format: ^1.8.0 downlevel-dts: ^0.11.0 google-java-format: ^1.4.0 @@ -26368,9 +26380,9 @@ __metadata: linkType: hard "undici@npm:^6.11.1, undici@npm:^6.18.2": - version: 6.21.0 - resolution: "undici@npm:6.21.0" - checksum: bc2eb26c4b010a4f816314d48d4529f62b1116405097b2c5f0ac68247c56049a857d11a9f05b237818f04ce4f51d6f5e8d6fcc6aae2ab816c2b7318a9706727c + version: 6.21.1 + resolution: "undici@npm:6.21.1" + checksum: 2efc52f77224754a2efa7cb6459829f3c93c8321d17e76f574a904b353783d95073b6116f5b15637c4845d98c9dc5a019b809cb9d63b3529267e7727c49f6996 languageName: node linkType: hard