This repository contains mono repository structure with multiple React Native and Expo project for development and testing.
- / -> monorepo root private package
- /samples -> sample application, expo, rn...
- /packages -> RN SDK packages
- /dev-packages -> dev packages, ts-3.8 test runner, e2e tests components and runner
- /performance-tests -> applications used for measuring performance in CI
- nodejs 18 (with corepack globally installed)
- yarn version specified in
package.json(at the moment version 3.6)
Install dependencies using:
yarnOnce deps are installed, you can build the project:
yarn build
# Or in watch mode, for development of the SDK core
cd packages/core
yarn build:sdk:watchyarn test
# Or the watcher when writing tests:
cd packages/core
yarn test:watchNow we can go into the sample project, install and build it:
cd samples/react-native/
yarn start # Metro development server
npx pod-install
yarn ios # iOS Development build
yarn android # Android Development buildRecommended is to open the native project in samples/react-native/android and samples/react-native/ios on Android Studio and Xcode respectively.
For android switch newArchEnabled to false in android/gradle.properties. For iOS explicitly disable fabric in samples/react-native/ios/Podfile by setting :fabric_enabled => false before pod install.
yarn pod-install-legacy
yarn react-native run-ios
yarn react-native run-android
# Release builds
yarn pod-install-legacy-production
yarn react-native run-ios --mode=Release
yarn react-native run-android --mode=releaseyarn pod-install
yarn react-native run-ios
yarn react-native run-android
# Release builds
yarn pod-install-production
yarn react-native run-ios --mode=Release
yarn react-native run-android --mode=ReleaseHead to the macOS sample root directory:
cd samples/react-native-macos/
yarn
bundle install
yarn pod-install-legacy
yarn startYou can now build and run the project from command line:
yarn react-native run-macosor by openning the samples/react-native-macos/macos/sentry-react-native-sample.xcworkspace.
Note that the new architecture is not supported for the macOS sample at this point.
Here are step on how to test your changes in sentry-cocoa with sentry-react-native. We assume you have both repositories cloned in siblings folders.
- Build
sentry-cocoa.
cd sentry-cocoa
make init- Link local
sentry-cocoabuild insentry-react-native
cd sentry-react-nativeComment out sentry dependency in RNSentry.podspec.
- s.dependency 'Sentry/HybridSDK', '7.31.0'
+ s.dependency 'Sentry/HybridSDK'Add local pods to sample/ios/Podfile.
target 'sample' do
# ... react native config
pod 'Sentry/HybridSDK', :path => '../../../../sentry-cocoa'
# ... rest of the configuration
endHere are step on how to test your changes in sentry-java with sentry-react-native. We assume that you have sentry-java setup, Android SDK installed, correct JAVA version etc.
- Build and publish
sentry-javalocally.
cd sentry-java
make dryRelease
ls ~/.m2/repository/io/sentry/sentry-android # check that `sentry-java` was published- Add local maven to the sample project.
cd sentry-react-native/sampleAdd local maven to sample/android/build.gradle.
allprojects {
repositories {
mavenLocal()
}
}Update sentry-android version, to the one locally published, in android/build.gradle.
dependencies {
implementation 'com.facebook.react:react-native:+'
- api 'io.sentry:sentry-android:5.4.0'
+ api 'io.sentry:sentry-android:6.7.7-my-local-version'
}Here are steps on how to debug the gradle builds process with sentry-android-gradle-plugin. We assume that you have sentry-android-gradle-plugin setup, Android SDK installed, correct JAVA version etc.
- Add the following code to
samples/react-native/android/settings.gradle, this ensure the plugin builds at the beginning of the application build:
includeBuild('../../../../sentry-android-gradle-plugin/plugin-build') {
dependencySubstitution {
substitute(module 'io.sentry:sentry-android-gradle-plugin') using project(':')
}
}../../../../sentry-android-gradle-plugin/plugin-build this example works if sentry-react-native and sentry-android-gradle-plugin are sibling directories.
- Open
samples/react-native/androidin Android Studio. - Add
Remote JVM Debugconfiguration (keep all defaults). - Run build command with
-Dorg.gradle.debug=trueand--no-daemon, example:
./gradlew assembleRelease -Dorg.gradle.debug=true --no-daemon- The build command will wait for the debugger connection, go to the Android Studio and select the newly created
Remote JVM Debugconfiguration and clickDebug. - The build process will stop on active breakpoint.