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 enabled)
- yarn version specified in
package.json
(at the moment version 3.6)
Install dependencies using:
yarn
Once 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:watch
yarn test
# Or the watcher when writing tests:
cd packages/core
yarn test:watch
Now 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 build
Recommended 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=release
yarn 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=Release
Head to the macOS sample root directory:
cd samples/react-native-macos/
yarn
bundle install
yarn pod-install-legacy
yarn start
You can now build and run the project from command line:
yarn react-native run-macos
or 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-cocoa
build insentry-react-native
cd sentry-react-native
Comment 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
end
Here 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-java
locally.
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/sample
Add 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/android
in Android Studio. - Add
Remote JVM Debug
configuration (keep all defaults). - Run build command with
-Dorg.gradle.debug=true
and--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 Debug
configuration and clickDebug
. - The build process will stop on active breakpoint.