Skip to content

Commit b342751

Browse files
Merge remote-tracking branch 'origin/dev' into fix/network-ios-log-empty-response-body
2 parents d62d374 + 1f64e19 commit b342751

File tree

20 files changed

+408
-202
lines changed

20 files changed

+408
-202
lines changed

.circleci/config.yml

Lines changed: 220 additions & 123 deletions
Large diffs are not rendered by default.

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## [Unreleased](https://github.com/Instabug/Instabug-React-Native/compare/v13.3.0...dev)
4+
5+
### Added
6+
7+
- Add support for Expo Router navigation tracking ([#1270](https://github.com/Instabug/Instabug-React-Native/pull/1270)).
8+
39
## [13.3.0](https://github.com/Instabug/Instabug-React-Native/compare/v13.2.0...v13.3.0) (August 4, 2024)
410

511
### Added

examples/default/android/app/src/main/java/com/instabug/react/example/RNInstabugExampleReactnativePackage.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,6 @@
66
import com.facebook.react.bridge.NativeModule;
77
import com.facebook.react.bridge.ReactApplicationContext;
88
import com.facebook.react.uimanager.ViewManager;
9-
import com.instabug.reactlibrary.RNInstabugAPMModule;
10-
import com.instabug.reactlibrary.RNInstabugBugReportingModule;
11-
import com.instabug.reactlibrary.RNInstabugCrashReportingModule;
12-
import com.instabug.reactlibrary.RNInstabugFeatureRequestsModule;
13-
import com.instabug.reactlibrary.RNInstabugReactnativeModule;
14-
import com.instabug.reactlibrary.RNInstabugRepliesModule;
15-
import com.instabug.reactlibrary.RNInstabugSessionReplayModule;
16-
import com.instabug.reactlibrary.RNInstabugSurveysModule;
179

1810
import java.util.ArrayList;
1911
import java.util.Collections;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"instabug-domain": "api.instabug.com",
3+
"apm-domain": "api-apm.instabug.com"
4+
}

examples/default/android/build.gradle

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,13 @@ allprojects {
2727
maven {
2828
url("$rootDir/../node_modules/detox/Detox-android")
2929
}
30+
31+
maven {
32+
credentials {
33+
username System.getenv("DREAM11_MAVEN_USERNAME")
34+
password System.getenv("DREAM11_MAVEN_PASSWORD")
35+
}
36+
url "https://mvn.instabug.com/nexus/repository/dream-11"
37+
}
3038
}
3139
}

examples/default/ios/InstabugExample.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
CC3DF8932A1DFC9A003E9914 /* InstabugSurveysTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CC3DF88B2A1DFC99003E9914 /* InstabugSurveysTests.m */; };
2222
CC3DF8942A1DFC9A003E9914 /* InstabugAPMTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CC3DF88C2A1DFC99003E9914 /* InstabugAPMTests.m */; };
2323
CC3DF8952A1DFC9A003E9914 /* IBGConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = CC3DF88D2A1DFC9A003E9914 /* IBGConstants.m */; };
24+
CC487A9C2C71FCFC0021F680 /* Instabug.plist in Resources */ = {isa = PBXBuildFile; fileRef = CC487A9B2C71FCFC0021F680 /* Instabug.plist */; };
2425
CCF1E4092B022CF20024802D /* RNInstabugTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CCF1E4082B022CF20024802D /* RNInstabugTests.m */; };
2526
CD36F4707EA1F435D2CC7A15 /* libPods-InstabugExample-InstabugTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AF7A6E02D40E0CEEA833CC4 /* libPods-InstabugExample-InstabugTests.a */; };
2627
F7BF47401EF3A435254C97BB /* libPods-InstabugExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BAED0D0441A708AE2390E153 /* libPods-InstabugExample.a */; };
@@ -64,6 +65,7 @@
6465
CC3DF88B2A1DFC99003E9914 /* InstabugSurveysTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InstabugSurveysTests.m; sourceTree = "<group>"; };
6566
CC3DF88C2A1DFC99003E9914 /* InstabugAPMTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InstabugAPMTests.m; sourceTree = "<group>"; };
6667
CC3DF88D2A1DFC9A003E9914 /* IBGConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IBGConstants.m; sourceTree = "<group>"; };
68+
CC487A9B2C71FCFC0021F680 /* Instabug.plist */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = Instabug.plist; path = InstabugExample/Instabug.plist; sourceTree = "<group>"; };
6769
CCF1E4082B022CF20024802D /* RNInstabugTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNInstabugTests.m; sourceTree = "<group>"; };
6870
DBCB1B1D023646D84146C91E /* Pods-InstabugExample-InstabugTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-InstabugExample-InstabugTests.release.xcconfig"; path = "Target Support Files/Pods-InstabugExample-InstabugTests/Pods-InstabugExample-InstabugTests.release.xcconfig"; sourceTree = "<group>"; };
6971
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
@@ -120,6 +122,7 @@
120122
13B07FAE1A68108700A75B9A /* InstabugExample */ = {
121123
isa = PBXGroup;
122124
children = (
125+
CC487A9B2C71FCFC0021F680 /* Instabug.plist */,
123126
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
124127
13B07FB01A68108700A75B9A /* AppDelegate.mm */,
125128
13B07FB51A68108700A75B9A /* Images.xcassets */,
@@ -296,6 +299,7 @@
296299
buildActionMask = 2147483647;
297300
files = (
298301
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
302+
CC487A9C2C71FCFC0021F680 /* Instabug.plist in Resources */,
299303
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
300304
);
301305
runOnlyForDeploymentPostprocessing = 0;
157 Bytes
Binary file not shown.

examples/default/ios/InstabugTests/InstabugSampleTests.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#import <XCTest/XCTest.h>
99
#import "OCMock/OCMock.h"
1010
#import "Instabug/Instabug.h"
11-
#import "Instabug/IBGSurvey.h"
1211
#import "InstabugReactBridge.h"
1312
#import <Instabug/IBGTypes.h>
1413
#import "IBGConstants.h"

examples/default/ios/InstabugTests/RNInstabugTests.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#import <XCTest/XCTest.h>
22
#import "OCMock/OCMock.h"
33
#import "Instabug/Instabug.h"
4-
#import "Instabug/IBGSurvey.h"
54
#import <Instabug/IBGTypes.h>
65
#import "RNInstabug.h"
76
#import "RNInstabug/Instabug+CP.h"

examples/default/src/App.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useEffect } from 'react';
22
import { StyleSheet } from 'react-native';
33

44
import { GestureHandlerRootView } from 'react-native-gesture-handler';
5-
import { NavigationContainer } from '@react-navigation/native';
5+
import { NavigationContainer, useNavigationContainerRef } from '@react-navigation/native';
66
import Instabug, {
77
CrashReporting,
88
InvocationEvent,
@@ -20,6 +20,7 @@ import { QueryClient, QueryClientProvider } from 'react-query';
2020
const queryClient = new QueryClient();
2121

2222
export const App: React.FC = () => {
23+
const navigationRef = useNavigationContainerRef();
2324
useEffect(() => {
2425
Instabug.init({
2526
token: 'deb1910a7342814af4e4c9210c786f35',
@@ -33,11 +34,17 @@ export const App: React.FC = () => {
3334
});
3435
}, []);
3536

37+
useEffect(() => {
38+
const unregisterListener = Instabug.setNavigationListener(navigationRef);
39+
40+
return unregisterListener;
41+
}, [navigationRef]);
42+
3643
return (
3744
<GestureHandlerRootView style={styles.root}>
3845
<NativeBaseProvider theme={nativeBaseTheme}>
3946
<QueryClientProvider client={queryClient}>
40-
<NavigationContainer onStateChange={Instabug.onStateChange} theme={navigationTheme}>
47+
<NavigationContainer theme={navigationTheme} ref={navigationRef}>
4148
<RootTabNavigator />
4249
</NavigationContainer>
4350
</QueryClientProvider>

ios/RNInstabug/InstabugReactBridge.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
#import <Instabug/Instabug.h>
1313
#import <Instabug/IBGBugReporting.h>
1414
#import <Instabug/IBGCrashReporting.h>
15-
#import <Instabug/IBGSurveys.h>
1615
#import <Instabug/IBGLog.h>
1716
#import <Instabug/IBGTypes.h>
1817
#import "ArgsRegistry.h"

ios/RNInstabug/InstabugReactBridge.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#import <Instabug/Instabug.h>
99
#import <Instabug/IBGBugReporting.h>
1010
#import <Instabug/IBGCrashReporting.h>
11-
#import <Instabug/IBGSurveys.h>
1211
#import <Instabug/IBGLog.h>
1312
#import <Instabug/IBGAPM.h>
1413
#import <asl.h>

scripts/customize-ios-endpoints.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/bin/bash
2+
3+
# Replaces the internal Config.plist file inside the Instabug iOS SDK with the
4+
# Instabug.plist file in the example app.
5+
#
6+
# This is a workaround until the iOS SDK is updated to prioritize the custom
7+
# Instabug.plist over the internal Config.plist.
8+
9+
instabug_plist=examples/default/ios/InstabugExample/Instabug.plist
10+
11+
if [ ! -f $instabug_plist ]; then
12+
echo "Instabug.plist not found"
13+
exit 1
14+
fi
15+
16+
for dir in examples/default/ios/Pods/Instabug/Instabug.xcframework/ios-*/
17+
do
18+
echo "Replacing Config.plist in $dir"
19+
20+
config_path=$dir/Instabug.framework/InstabugResources.bundle/Config.plist
21+
22+
if [ ! -f $config_path ]; then
23+
echo "Config.plist not found in $dir"
24+
exit 1
25+
fi
26+
27+
cp -f $instabug_plist $config_path
28+
done

scripts/dream-11-delete-unused-features.sh

100644100755
Lines changed: 42 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,61 @@
22

33
# remove survey and featureRequest features in JavaScript files
44
deletedFeaturesFilesInJavaScript=("Surveys" "FeatureRequests" "Survey")
5-
for feature in "${deletedFeaturesFilesInJavaScript[@]}";
6-
do
7-
echo "$feature"
8-
rm -f src/modules/"$feature".ts
9-
rm -f test/mocks/mock"$feature".ts
10-
sed -i "s/import..*$feature';//g" src/index.ts
11-
sed -i "s/$feature,//g" src/index.ts
12-
5+
for feature in "${deletedFeaturesFilesInJavaScript[@]}"; do
6+
echo "$feature"
7+
8+
rm -f src/modules/"$feature".ts
9+
rm -f src/native/Native"$feature".ts
10+
rm -f test/mocks/mock"$feature".ts
11+
rm -f test/modules/"$feature".spec.ts
12+
13+
node scripts/replace.js --pattern "import.+$feature';" "" src/index.ts
14+
node scripts/replace.js --pattern "$feature," "" src/index.ts
15+
node scripts/replace.js --pattern ".*$feature.*" "" src/native/NativePackage.ts
16+
node scripts/replace.js --pattern ".*$feature.*" "" test/mocks/mockNativeModules.ts
1317
done
14-
npx eslint src/index.ts --fix
18+
19+
npx eslint src/index.ts --fix
1520

1621
# remove survey and featureRequest features in Android files
1722
deletedFeaturesFilesInAndroidApp=("RNInstabugSurveysModule" "RNInstabugFeatureRequestsModule")
18-
for feature in "${deletedFeaturesFilesInAndroidApp[@]}";
19-
do
20-
echo "$feature"
21-
22-
rm -f android/src/main/java/com/instabug/reactlibrary/"$feature".java
23-
rm -f android/src/test/java/com/instabug/reactlibrary/"$feature"Test.java
24-
sed -i "s/modules.add(new $feature(reactContext));//g" android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativePackage.java
23+
for feature in "${deletedFeaturesFilesInAndroidApp[@]}"; do
24+
echo "$feature"
2525

26+
rm -f android/src/main/java/com/instabug/reactlibrary/"$feature".java
27+
rm -f android/src/test/java/com/instabug/reactlibrary/"$feature"Test.java
28+
node scripts/replace.js "modules.add(new $feature(reactContext));" "" android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativePackage.java
2629
done
2730

2831
# remove survey and featureRequest features in IOS files
2932
deletedFeaturesFilesInIosApp=("InstabugSurveysBridge" "InstabugFeatureRequestsBridge")
30-
for feature in "${deletedFeaturesFilesInIosApp[@]}";
31-
do
32-
echo "$feature"
33-
rm -f ios/RNInstabug/"$feature".h
34-
rm -f ios/RNInstabug/"$feature".m
33+
for feature in "${deletedFeaturesFilesInIosApp[@]}"; do
34+
echo "$feature"
35+
rm -f ios/RNInstabug/"$feature".h
36+
rm -f ios/RNInstabug/"$feature".m
3537
done
36-
sed -i "s/\#import <Instabug\/IBGSurveys.h>//g" ios/RNInstabug/InstabugReactBridge.m
37-
sed -i "s/\#import <Instabug\/IBGSurveys.h>//g" ios/RNInstabug/InstabugReactBridge.h
3838

39+
# Remove unused features iOS test files
40+
iosTestFiles=("InstabugSurveysTests.m" "InstabugFeatureRequestsTests.m")
41+
for file in "${iosTestFiles[@]}"; do
42+
echo "Deleting $file"
43+
44+
rm -f examples/default/ios/InstabugTests/"$file"
45+
node scripts/replace.js --pattern ".*$file.*" "" examples/default/ios/InstabugExample.xcodeproj/project.pbxproj
46+
done
3947

40-
# remove all locales except English locale
41-
sed -i -E '/english/!s/.*constants.locale.*//g' src/utils/Enums.ts
42-
npx eslint src/index.ts --fix src/utils/Enums.ts
48+
node scripts/replace.js "#import <Instabug/IBGSurveys.h>" "" ios/RNInstabug/InstabugReactBridge.m
49+
node scripts/replace.js "#import <Instabug/IBGSurveys.h>" "" ios/RNInstabug/InstabugReactBridge.h
4350

44-
sed -i "s/return (major == 7 && minor >= 3) || major >= 8/return false/g" android/build.gradle
51+
# Remove all locales except for English
52+
# This ugly regular expression matches all lines not containing "english" and containing "constants.locale"
53+
node scripts/replace.js --pattern "^(?!.*english).+constants\.locale.*" "" src/utils/Enums.ts
54+
npx eslint src/index.ts --fix src/utils/Enums.ts
4555

46-
sed -i "s/static boolean supportsNamespace() {/static boolean supportsNamespace() { \n return false/g" android/build.gradle
56+
node scripts/replace.js "return (major == 7 && minor >= 3) || major >= 8" "return false" android/build.gradle
4757

58+
# Note: printf is used here as the string contains a newline character which would be escaped otherwise.
59+
node scripts/replace.js "static boolean supportsNamespace() {" "$(printf "static boolean supportsNamespace() {\n return false")" android/build.gradle
4860

61+
# Add Dream11 custom iOS build podspec to Podfile
62+
node scripts/replace.js "target 'InstabugExample' do" "$(printf "target 'InstabugExample' do\n pod 'Instabug', :podspec => 'https://ios-releases.instabug.com/custom/dream11/Instabug.podspec'")" examples/default/ios/Podfile

scripts/replace.js

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,33 @@
1010

1111
const fs = require('fs');
1212
const path = require('path');
13+
const { parseArgs } = require('util');
1314

14-
const [search, replace, ...files] = process.argv.slice(2);
15+
const { values, positionals } = parseArgs({
16+
allowPositionals: true,
17+
options: {
18+
pattern: {
19+
type: 'boolean',
20+
default: false,
21+
short: 'p',
22+
},
23+
},
24+
});
1525

16-
if (!search || !replace || !files.length) {
26+
const [search, replace, ...files] = positionals;
27+
28+
/** Whether to replace the search string as a regular expression or as a literal string. */
29+
const isPattern = values.pattern;
30+
31+
if (search == null || replace == null || !files.length) {
1732
// The path of the script relative to the directory where the user ran the
1833
// script to be used in the error message demonstrating the usage.
1934
const scriptPath = path.relative(process.cwd(), __filename);
2035

2136
console.error('Missing arguments.');
2237
console.table({ search, replace, files });
2338

24-
console.error(`Usage: node ${scriptPath} <search> <replace> <files...>`);
39+
console.error(`Usage: node ${scriptPath} [-p | --pattern] <search> <replace> <files...>`);
2540
process.exit(1);
2641
}
2742

@@ -31,7 +46,8 @@ for (const file of files) {
3146

3247
const fileContent = fs.readFileSync(filePath, 'utf8');
3348

34-
const newContent = fileContent.replaceAll(search, replace);
49+
const searchPattern = isPattern ? new RegExp(search, 'gm') : search;
50+
const newContent = fileContent.replaceAll(searchPattern, replace);
3551

3652
fs.writeFileSync(filePath, newContent);
3753
} catch (error) {

scripts/snapshot-branch.sh

Lines changed: 0 additions & 30 deletions
This file was deleted.

scripts/snapshot-comment.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ Your snapshot has been generated! :rocket:
55
You can install the snapshot through NPM:
66

77
```sh
8-
npm install https://github.com/Instabug/Instabug-React-Native\#{BRANCH}
8+
npm install instabug-reactnative@{VERSION}
99
```
1010

1111
or Yarn:
1212

1313
```sh
14-
yarn add https://github.com/Instabug/Instabug-React-Native\#{BRANCH}
14+
yarn add instabug-reactnative@{VERSION}
1515
```

scripts/snapshot-version.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/bash
2+
3+
# Generates a snapshot version following the format {version}-{pr}{random-3-digit}-SNAPSHOT
4+
# Example: 13.3.0-502861-SNAPSHOT
5+
6+
pr=$(basename $CIRCLE_PULL_REQUEST)
7+
random=$(($RANDOM % 900 + 100))
8+
version=$(jq -r '.version' package.json)
9+
suffix="SNAPSHOT"
10+
11+
SNAPSHOT_VERSION="$version-$pr$random-$suffix"

0 commit comments

Comments
 (0)