The example app uses apps/example/app.config.ts so local developer values do not need to be committed.
Create local env values from the template:
cp apps/example/.env.example apps/example/.envSupported variables:
RNDA_APPLE_TEAM_IDRNDA_APP_GROUPRNDA_IOS_BUNDLE_IDRNDA_ANDROID_PACKAGE
If these variables are missing, app.config.ts falls back to stable defaults for this repository.
The example app no longer tracks apps/example/ios and apps/example/android.
The example target folder apps/example/targets is also generated during prebuild and should not be committed.
Regenerate native folders when needed:
cd apps/example
bun run prebuild
# or
bun run ios
bun run androidSwift test sources are package-owned and live in:
packages/react-native-device-activity/ios/Tests
The iOS test runner lives in:
packages/react-native-device-activity/ios/TestHarness
The repository runs SwiftLint from the iOS test harness CocoaPods installation:
packages/react-native-device-activity/ios/TestHarness/Pods/SwiftLint/swiftlint
Run this once after cloning (and again if Pod dependencies are cleaned):
cd packages/react-native-device-activity/ios/TestHarness
pod installThen run repository checks from the root:
bun run pre-pushThe formatting scripts intentionally call node ./node_modules/prettier/bin/prettier.cjs to avoid PATH/bin shadowing from transitive tooling (see expo/expo#42994).
In addition to app/prebuild validation, config plugin regression tests are defined under:
packages/react-native-device-activity/plugin/__tests__
Run them with:
cd packages/react-native-device-activity
bun run test:plugin