From a4e33a9ef149fd267a3ae812e304df1efb0c6f5d Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Sun, 29 Sep 2024 13:26:52 +0300 Subject: [PATCH 01/39] chore: add different request types to APM -> NetworkScreen.tsx --- .../src/screens/apm/NetworkScreen.tsx.json | 18 +++++ .../default/src/screens/apm/NetworkScreen.tsx | 67 ++++++++++++++++++- 2 files changed, 82 insertions(+), 3 deletions(-) create mode 100644 .lh/examples/default/src/screens/apm/NetworkScreen.tsx.json diff --git a/.lh/examples/default/src/screens/apm/NetworkScreen.tsx.json b/.lh/examples/default/src/screens/apm/NetworkScreen.tsx.json new file mode 100644 index 0000000000..5dfd2d317d --- /dev/null +++ b/.lh/examples/default/src/screens/apm/NetworkScreen.tsx.json @@ -0,0 +1,18 @@ +{ + "sourceFile": "examples/default/src/screens/apm/NetworkScreen.tsx", + "activeCommit": 0, + "commits": [ + { + "activePatchIndex": 0, + "patches": [ + { + "date": 1744632518250, + "content": "Index: \n===================================================================\n--- \n+++ \n" + } + ], + "date": 1744632518250, + "name": "Commit-0", + "content": "import React, { useState } from 'react';\nimport { Image, ScrollView, StyleSheet, Text, useWindowDimensions, View } from 'react-native';\nimport { Section } from '../../components/Section';\nimport { Screen } from '../../components/Screen';\nimport { ClipboardTextInput } from '../../components/ClipboardTextInput';\nimport { useQuery } from 'react-query';\nimport { HStack, VStack } from 'native-base';\nimport { gql, request } from 'graphql-request';\nimport { CustomButton } from '../../components/CustomButton';\nimport axios from 'axios';\nimport type { HomeStackParamList } from '../../navigation/HomeStack';\nimport type { NativeStackScreenProps } from '@react-navigation/native-stack';\nimport { ListTile } from '../../components/ListTile';\n\nexport const NetworkScreen: React.FC<\n NativeStackScreenProps\n> = ({ navigation }) => {\n const [endpointUrl, setEndpointUrl] = useState('');\n const { width, height } = useWindowDimensions();\n const defaultRequestBaseUrl = 'https://jsonplaceholder.typicode.com/posts/';\n const shortenLink = 'https://shorturl.at/3Ufj3';\n const defaultRequestUrl = `${defaultRequestBaseUrl}1`;\n\n const imageUrls = [\n 'https://fastly.picsum.photos/id/57/200/300.jpg?hmac=l908G1qVr4r7dP947-tak2mY8Vvic_vEYzCXUCKKskY',\n 'https://fastly.picsum.photos/id/619/200/300.jpg?hmac=WqBGwlGjuY9RCdpzRaG9G-rc9Fi7TGUINX_-klAL2kA',\n ];\n\n async function sendRequestToUrl() {\n let urlToSend: string;\n\n if (endpointUrl.trim() !== '') {\n urlToSend = endpointUrl;\n console.log('Sending request to: ', endpointUrl);\n } else {\n // Use json placeholder URL as a default if endpointUrl is empty\n console.log('sending request to default json placeholder');\n urlToSend = defaultRequestUrl;\n }\n\n try {\n // Perform the request using the urlToSend\n const response = await fetch(urlToSend);\n const data = await response.json();\n\n // Format the JSON response for better logging\n const formattedData = JSON.stringify(data, null, 2);\n\n // Log the formatted response\n console.log('Response:', formattedData);\n } catch (error) {\n // Handle errors appropriately\n console.error('Error:', error);\n }\n }\n\n async function sendRequestToUrlUsingAxios() {\n let urlToSend: string;\n\n if (endpointUrl.trim() !== '') {\n urlToSend = endpointUrl;\n console.log('Sending request to: ', endpointUrl);\n } else {\n // Use json placeholder URL as a default if endpointUrl is empty\n console.log('sending request to default json placeholder');\n urlToSend = defaultRequestUrl;\n }\n\n try {\n // Perform the request using the urlToSend\n const response = await axios.get(urlToSend);\n // Format the JSON response for better logging\n const formattedData = JSON.stringify(response.data, null, 2);\n\n // Log the formatted response\n console.log('Response:', formattedData);\n } catch (error) {\n // Handle errors appropriately\n console.error('Error:', error);\n }\n }\n\n async function sendRedirectRequestToUrl() {\n try {\n console.log('Sending request to: ', shortenLink);\n const response = await fetch(shortenLink);\n console.log('Received from: ', response.url);\n\n // Format the JSON response for better logging\n const data = await response.json();\n\n // Format the JSON response for better logging\n const formattedData = JSON.stringify(data, null, 2);\n\n // Log the formatted response\n console.log('Response:', formattedData);\n } catch (error) {\n // Handle errors appropriately\n console.error('Error:', error);\n }\n }\n\n const fetchGraphQlData = async () => {\n const document = gql`\n query {\n country(code: \"EG\") {\n emoji\n name\n }\n }\n `;\n\n return request<{ country: { emoji: string; name: string } }>(\n 'https://countries.trevorblades.com/graphql',\n document,\n );\n };\n\n const { data, isError, isSuccess, isLoading, refetch } = useQuery('helloQuery', fetchGraphQlData);\n const simulateNetworkRequest = () => {\n axios.get('https://httpbin.org/anything', {\n headers: { traceparent: 'Caught Header Example' },\n });\n };\n const simulateNetworkRequestWithoutHeader = () => {\n axios.get('https://httpbin.org/anything');\n };\n\n function generateUrls(count: number = 10) {\n const urls = [];\n for (let i = 1; i <= count; i++) {\n urls.push(defaultRequestBaseUrl + i);\n }\n return urls;\n }\n\n async function makeSequentialApiCalls(urls: string[]): Promise {\n // const fetchPromises = urls.map((url) => fetch(url).then((response) => response.json()));\n const results: any[] = [];\n\n try {\n for (let i = 0; i < urls.length; i++) {\n await fetch(urls[i]);\n results.push(results[i]);\n }\n return results;\n } catch (error) {\n console.error('Error making parallel API calls:', error);\n throw error;\n }\n }\n async function makeParallelApiCalls(urls: string[]): Promise {\n const fetchPromises = urls.map((url) => fetch(url).then((response) => response.json()));\n\n try {\n return await Promise.all(fetchPromises);\n } catch (error) {\n console.error('Error making parallel API calls:', error);\n throw error;\n }\n }\n\n return (\n \n \n
\n \n setEndpointUrl(text)}\n selectTextOnFocus={true}\n value={endpointUrl}\n />\n \n \n \n simulateNetworkRequest()}\n />\n simulateNetworkRequestWithoutHeader()}\n />\n refetch} title=\"Reload GraphQL\" />\n \n {isLoading && Loading...}\n {isSuccess && GraphQL Data: {data.country.emoji}}\n {isError && Error!}\n \n \n
\n
\n \n {imageUrls.map((imageUrl) => (\n \n ))}\n \n
\n navigation.navigate('HttpScreen')} />\n
\n
\n );\n};\nconst styles = StyleSheet.create({\n image: {\n resizeMode: 'contain',\n },\n // Todo: Text Component\n // Todo: Button Component\n // Todo: Image Component\n});\n" + } + ] +} \ No newline at end of file diff --git a/examples/default/src/screens/apm/NetworkScreen.tsx b/examples/default/src/screens/apm/NetworkScreen.tsx index f9f057f612..1cd9f0c9b7 100644 --- a/examples/default/src/screens/apm/NetworkScreen.tsx +++ b/examples/default/src/screens/apm/NetworkScreen.tsx @@ -17,14 +17,17 @@ export const NetworkScreen: React.FC< > = ({ navigation }) => { const [endpointUrl, setEndpointUrl] = useState(''); const { width, height } = useWindowDimensions(); - const defaultRequestUrl = 'https://jsonplaceholder.typicode.com/posts/1'; + const defaultRequestBaseUrl = 'https://jsonplaceholder.typicode.com/posts/'; + const shortenLink = 'https://shorturl.at/3Ufj3'; + const defaultRequestUrl = `${defaultRequestBaseUrl}1`; + const imageUrls = [ 'https://fastly.picsum.photos/id/57/200/300.jpg?hmac=l908G1qVr4r7dP947-tak2mY8Vvic_vEYzCXUCKKskY', 'https://fastly.picsum.photos/id/619/200/300.jpg?hmac=WqBGwlGjuY9RCdpzRaG9G-rc9Fi7TGUINX_-klAL2kA', ]; async function sendRequestToUrl() { - let urlToSend = ''; + let urlToSend: string; if (endpointUrl.trim() !== '') { urlToSend = endpointUrl; @@ -52,7 +55,7 @@ export const NetworkScreen: React.FC< } async function sendRequestToUrlUsingAxios() { - let urlToSend = ''; + let urlToSend: string; if (endpointUrl.trim() !== '') { urlToSend = endpointUrl; @@ -77,6 +80,26 @@ export const NetworkScreen: React.FC< } } + async function sendRedirectRequestToUrl() { + try { + console.log('Sending request to: ', shortenLink); + const response = await fetch(shortenLink); + console.log('Received from: ', response.url); + + // Format the JSON response for better logging + const data = await response.json(); + + // Format the JSON response for better logging + const formattedData = JSON.stringify(data, null, 2); + + // Log the formatted response + console.log('Response:', formattedData); + } catch (error) { + // Handle errors appropriately + console.error('Error:', error); + } + } + const fetchGraphQlData = async () => { const document = gql` query { @@ -103,6 +126,40 @@ export const NetworkScreen: React.FC< axios.get('https://httpbin.org/anything'); }; + function generateUrls(count: number = 10) { + const urls = []; + for (let i = 1; i <= count; i++) { + urls.push(defaultRequestBaseUrl + i); + } + return urls; + } + + async function makeSequentialApiCalls(urls: string[]): Promise { + // const fetchPromises = urls.map((url) => fetch(url).then((response) => response.json())); + const results: any[] = []; + + try { + for (let i = 0; i < urls.length; i++) { + await fetch(urls[i]); + results.push(results[i]); + } + return results; + } catch (error) { + console.error('Error making parallel API calls:', error); + throw error; + } + } + async function makeParallelApiCalls(urls: string[]): Promise { + const fetchPromises = urls.map((url) => fetch(url).then((response) => response.json())); + + try { + return await Promise.all(fetchPromises); + } catch (error) { + console.error('Error making parallel API calls:', error); + throw error; + } + } + return ( @@ -115,6 +172,10 @@ export const NetworkScreen: React.FC< value={endpointUrl} /> + Date: Tue, 1 Oct 2024 13:09:19 +0300 Subject: [PATCH 02/39] chore: add request filtering & obfuscation react-native logic --- .lh/src/native/NativeAPM.ts.json | 18 +++++ .../RNInstabugReactnativeModule.java | 53 ++++++++++++++ examples/default/src/App.tsx | 52 ++++++++++---- ios/RNInstabug/InstabugReactBridge.h | 6 ++ ios/RNInstabug/InstabugReactBridge.m | 71 ++++++++++++++++++- src/modules/NetworkLogger.ts | 30 ++++++++ src/native/NativeAPM.ts | 7 ++ 7 files changed, 223 insertions(+), 14 deletions(-) create mode 100644 .lh/src/native/NativeAPM.ts.json diff --git a/.lh/src/native/NativeAPM.ts.json b/.lh/src/native/NativeAPM.ts.json new file mode 100644 index 0000000000..cdd77397eb --- /dev/null +++ b/.lh/src/native/NativeAPM.ts.json @@ -0,0 +1,18 @@ +{ + "sourceFile": "src/native/NativeAPM.ts", + "activeCommit": 0, + "commits": [ + { + "activePatchIndex": 0, + "patches": [ + { + "date": 1744632547161, + "content": "Index: \n===================================================================\n--- \n+++ \n" + } + ], + "date": 1744632547161, + "name": "Commit-0", + "content": "<<<<<<< HEAD\nimport type { NativeModule } from 'react-native';\nimport { NativeEventEmitter } from 'react-native';\n=======\nimport { NativeEventEmitter, type NativeModule } from 'react-native';\n>>>>>>> 82df0013 (chore: add request filtering & obfuscation react-native logic)\n\nimport type { W3cExternalTraceAttributes } from '../models/W3cExternalTraceAttributes';\nimport { NativeModules } from './NativePackage';\n\nexport interface ApmNativeModule extends NativeModule {\n // Essential APIs //\n setEnabled(isEnabled: boolean): void;\n\n // Network APIs //\n networkLogAndroid(\n requestStartTime: number,\n requestDuration: number,\n requestHeaders: string,\n requestBody: string,\n requestBodySize: number,\n requestMethod: string,\n requestUrl: string,\n requestContentType: string,\n responseHeaders: string,\n responseBody: string | null,\n responseBodySize: number,\n statusCode: number,\n responseContentType: string,\n errorDomain: string,\n w3cExternalTraceAttributes: W3cExternalTraceAttributes,\n gqlQueryName?: string,\n serverErrorMessage?: string,\n ): void;\n // registerNetworkLogsListener(): void;\n // updateNetworkLogSnapshot(networkData: string): void;\n // setNetworkLoggingRequestFilterPredicateIOS(value: boolean): void;\n\n // App Launches APIs //\n setAppLaunchEnabled(isEnabled: boolean): void;\n endAppLaunch(): void;\n\n // Execution Traces APIs //\n startExecutionTrace(name: string, timestamp: string): Promise;\n setExecutionTraceAttribute(id: string, key: string, value: string): void;\n endExecutionTrace(id: string): void;\n\n // App Flows APIs //\n startFlow(name: string): void;\n endFlow(name: string): void;\n setFlowAttribute(name: string, key: string, value?: string | null): void;\n\n // UI Traces APIs //\n setAutoUITraceEnabled(isEnabled: boolean): void;\n startUITrace(name: string): void;\n endUITrace(): void;\n ibgSleep(): void;\n}\n\nexport const NativeAPM = NativeModules.IBGAPM;\n\nexport const emitter = new NativeEventEmitter(NativeAPM);\n" + } + ] +} \ No newline at end of file diff --git a/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java b/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java index 9c901cb7a5..23a8000d05 100644 --- a/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java +++ b/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java @@ -1274,4 +1274,57 @@ public Map getConstants() { return constants; } + + // private final ConcurrentHashMap> callbackMap = new ConcurrentHashMap>(); + // + // @ReactMethod + // public void registerNetworkLogsListener() { + // MainThreadHandler.runOnMainThread(new Runnable() { + // @Override + // public void run() { + // InternalAPM._registerNetworkLogSanitizer(new VoidSanitizer() { + // @Override + // public void sanitize(NetworkLogSnapshot networkLogSnapshot, @NonNull OnCompleteCallback onCompleteCallback) { + // final int id = onCompleteCallback.hashCode(); + // callbackMap.put(id, onCompleteCallback); + // + // WritableMap networkSnapshotParams = Arguments.createMap(); + // networkSnapshotParams.putInt("id", id); + // networkSnapshotParams.putString("url", networkLogSnapshot.getUrl()); + // networkSnapshotParams.putInt("responseCode", networkLogSnapshot.getResponseCode()); + // + // sendEvent("IBGNetworkLoggerHandler", networkSnapshotParams); + // + // } + // }); + // } + // }); + // } + // + // @ReactMethod + // protected void updateNetworkLogSnapshot(String jsonString) { + // + // JSONObject newJSONObject = null; + // try { + // newJSONObject = new JSONObject(jsonString); + // } catch (JSONException e) { + // throw new RuntimeException(e); + // } + // final Integer ID = newJSONObject.optInt("id"); + // final NetworkLogSnapshot modifiedSnapshot = new NetworkLogSnapshot( + // newJSONObject.optString("url"), + // null, + // null, + // null, + // null, + // newJSONObject.optInt("responseCode") + // ); + // + // final OnCompleteCallback callback = callbackMap.get(ID); + // if (callback != null) { + // callback.onComplete(null); + // } + // callbackMap.remove(ID); + // + // } } diff --git a/examples/default/src/App.tsx b/examples/default/src/App.tsx index abdab11111..6d41f12d15 100644 --- a/examples/default/src/App.tsx +++ b/examples/default/src/App.tsx @@ -2,7 +2,7 @@ import React, { useEffect } from 'react'; import { StyleSheet } from 'react-native'; import { GestureHandlerRootView } from 'react-native-gesture-handler'; -import { NavigationContainer, useNavigationContainerRef } from '@react-navigation/native'; +import { NavigationContainer } from '@react-navigation/native'; import Instabug, { CrashReporting, InvocationEvent, @@ -18,11 +18,31 @@ import { RootTabNavigator } from './navigation/RootTab'; import { nativeBaseTheme } from './theme/nativeBaseTheme'; import { navigationTheme } from './theme/navigationTheme'; -import { QueryClient, QueryClientProvider } from 'react-query'; +// import { QueryClient } from 'react-query'; +import { + ApolloClient, + ApolloLink, + ApolloProvider, + from, + HttpLink, + InMemoryCache, +} from '@apollo/client'; +// import { NativeInstabug } from '../../../src/native/NativeInstabug'; +// +// const queryClient = new QueryClient(); -const queryClient = new QueryClient(); +//Setting up the handler +const IBGApolloLink = new ApolloLink(NetworkLogger.apolloLinkRequestHandler); + +//Sample code +const httpLink = new HttpLink({ uri: 'https://countries.trevorblades.com/graphql' }); +const apolloQueryClient = new ApolloClient({ + cache: new InMemoryCache(), + link: from([IBGApolloLink, httpLink]), +}); export const App: React.FC = () => { +<<<<<<< HEAD const shouldSyncSession = (data: SessionMetadata) => { if (data.launchType === LaunchType.cold) { return true; @@ -38,35 +58,41 @@ export const App: React.FC = () => { const navigationRef = useNavigationContainerRef(); +======= +>>>>>>> 82df0013 (chore: add request filtering & obfuscation react-native logic) useEffect(() => { SessionReplay.setSyncCallback((data) => shouldSyncSession(data)); Instabug.init({ - token: 'deb1910a7342814af4e4c9210c786f35', + // token: 'deb1910a7342814af4e4c9210c786f35', + token: '0fcc87b8bf731164828cc411eccc802a', invocationEvents: [InvocationEvent.floatingButton], debugLogsLevel: LogLevel.verbose, }); CrashReporting.setNDKCrashesEnabled(true); + // NetworkLogger.setNetworkDataObfuscationHandler(async (networkData) => { + // networkData.url = `${networkData.url}/RN/obfuscated`; + // return networkData; + // }); + + // NetworkLogger.setRequestFilterExpression('true'); + Instabug.setReproStepsConfig({ all: ReproStepsMode.enabled, }); }, []); - useEffect(() => { - const unregisterListener = Instabug.setNavigationListener(navigationRef); - - return unregisterListener; - }, [navigationRef]); - return ( - - + {/**/} + + - + + {/**/} ); diff --git a/ios/RNInstabug/InstabugReactBridge.h b/ios/RNInstabug/InstabugReactBridge.h index bca04ddfd0..c84662d00d 100644 --- a/ios/RNInstabug/InstabugReactBridge.h +++ b/ios/RNInstabug/InstabugReactBridge.h @@ -126,6 +126,12 @@ serverErrorMessage:(NSString * _Nullable)serverErrorMessage w3cExternalTraceAttributes:(NSDictionary * _Nullable)w3cExternalTraceAttributes; +// - (void) registerNetworkLogsListener; +// +// - (void) updateNetworkLogSnapshot: (NSString * _Nonnull)jsonString; +// +// - (void) setNetworkLoggingRequestFilterPredicateIOS:(BOOL)value; + /* +------------------------------------------------------------------------+ | Experiments | diff --git a/ios/RNInstabug/InstabugReactBridge.m b/ios/RNInstabug/InstabugReactBridge.m index e7ca15600e..1669276c87 100644 --- a/ios/RNInstabug/InstabugReactBridge.m +++ b/ios/RNInstabug/InstabugReactBridge.m @@ -23,7 +23,7 @@ + (void)setWillSendReportHandler_private:(void(^)(IBGReport *report, void(^repor @implementation InstabugReactBridge - (NSArray *)supportedEvents { - return @[@"IBGpreSendingHandler"]; + return @[@"IBGpreSendingHandler" , @"IBGNetworkLoggerHandler"]; } RCT_EXPORT_MODULE(Instabug) @@ -330,6 +330,75 @@ - (dispatch_queue_t)methodQueue { ]; } +// RCT_EXPORT_METHOD(registerNetworkLogsListener){ +// [IBGNetworkLogger setRequestObfuscationHandlerV2:^(NSURLRequest * _Nonnull request, void (^ _Nonnull completionHandler)(NSURLRequest * _Nonnull)) { +// NSString *tempId = [[[NSUUID alloc] init] UUIDString]; +// self.dictionary[tempId] = completionHandler; +// +// // Ensure the URL, HTTP body, and headers are in the correct format +// NSString *urlString = request.URL.absoluteString ?: @""; +// NSString *bodyString = [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding] ?: @""; +// NSDictionary *headerDict = request.allHTTPHeaderFields ?: @{}; +// +// // Create the dictionary to send +// NSDictionary *dict = @{ +// @"tempId": tempId, +// @"url": urlString, +// @"requestBody": bodyString, +// @"requestHeader": headerDict +// }; +// +// // Send the event +// [self sendEventWithName:@"IBGNetworkLoggerHandler" body:dict]; +// +// }]; +// } +// +// RCT_EXPORT_METHOD(updateNetworkLogSnapshot:(NSString * _Nonnull)jsonString) { +// // Properly initialize the NSMutableURLRequest +// NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; +// +// // Convert jsonString to NSData +// NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; +// +// // Parse the JSON into a dictionary +// NSError *error = nil; +// NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; +// +// // Check for JSON parsing errors +// if (error) { +// NSLog(@"Failed to parse JSON: %@", error); +// return; +// } +// +// // Set the URL, HTTP body, and headers +// request.URL = [NSURL URLWithString:dict[@"url"]]; +// request.HTTPBody = [dict[@"requestBody"] dataUsingEncoding:NSUTF8StringEncoding]; +// +// // Ensure requestHeader is a dictionary +// if ([dict[@"requestHeader"] isKindOfClass:[NSDictionary class]]) { +// request.allHTTPHeaderFields = dict[@"requestHeader"]; +// } else { +// NSLog(@"Invalid requestHeader format"); +// // return; +// } +// +// // Ensure self.completion is not nil before calling it +// NSString *tempId = dict[@"tempId"]; +// if ([tempId isKindOfClass:[NSString class]] && self.dictionary[tempId] != nil) { +// ((IBGURLRequestObfuscationHandler)self.dictionary[tempId])(request); +// } else { +// NSLog(@"Not Available Completion"); +// } +// } +// +// RCT_EXPORT_METHOD(setNetworkLoggingRequestFilterPredicateIOS: (BOOL)value){ +// +// NSPredicate *requestPredicate = [NSPredicate predicateWithValue:(value) ? YES : NO]; +// +// [IBGNetworkLogger setNetworkLoggingRequestFilterPredicate:requestPredicate responseFilterPredicate:nil]; +// } + RCT_EXPORT_METHOD(addPrivateView: (nonnull NSNumber *)reactTag) { UIView* view = [self.bridge.uiManager viewForReactTag:reactTag]; view.instabug_privateView = true; diff --git a/src/modules/NetworkLogger.ts b/src/modules/NetworkLogger.ts index 1e40b9fa9b..e460d8b477 100644 --- a/src/modules/NetworkLogger.ts +++ b/src/modules/NetworkLogger.ts @@ -83,6 +83,19 @@ export const setNetworkDataObfuscationHandler = ( handler?: NetworkDataObfuscationHandler | null | undefined, ) => { _networkDataObfuscationHandler = handler; + + // if (isNativeInterceptionEnabled) { + // registerNetworkLogsListener(async (networkSnapshot) => { + // console.log( + // `Andrew: new snapshot from setNetworkDataObfuscationHandler: ${networkSnapshot.url}`, + // ); + // + // if (_networkDataObfuscationHandler) { + // networkSnapshot = await _networkDataObfuscationHandler(networkSnapshot); + // } + // NativeInstabug.updateNetworkLogSnapshot(JSON.stringify(networkSnapshot)); + // }); + // } }; /** @@ -91,6 +104,23 @@ export const setNetworkDataObfuscationHandler = ( */ export const setRequestFilterExpression = (expression: string) => { _requestFilterExpression = expression; + + // if (isNativeInterceptionEnabled) { + // registerNetworkLogsListener(async (networkSnapshot) => { + // console.log(`Andrew: new snapshot from setRequestFilterExpression: ${networkSnapshot.url}`); + // // eslint-disable-next-line no-new-func + // const predicate = Function('network', 'return ' + _requestFilterExpression); + // const value = predicate(networkSnapshot); + // if (Platform.OS === 'ios') { + // NativeInstabug.setNetworkLoggingRequestFilterPredicateIOS(value); + // } else { + // // set android request url to null ; + // if (value) { + // NativeInstabug.updateNetworkLogSnapshot(''); + // } + // } + // }); + // } }; /** diff --git a/src/native/NativeAPM.ts b/src/native/NativeAPM.ts index 9fa30b702c..834768c1a6 100644 --- a/src/native/NativeAPM.ts +++ b/src/native/NativeAPM.ts @@ -1,5 +1,9 @@ +<<<<<<< HEAD import type { NativeModule } from 'react-native'; import { NativeEventEmitter } from 'react-native'; +======= +import { NativeEventEmitter, type NativeModule } from 'react-native'; +>>>>>>> 82df0013 (chore: add request filtering & obfuscation react-native logic) import type { W3cExternalTraceAttributes } from '../models/W3cExternalTraceAttributes'; import { NativeModules } from './NativePackage'; @@ -28,6 +32,9 @@ export interface ApmNativeModule extends NativeModule { gqlQueryName?: string, serverErrorMessage?: string, ): void; + // registerNetworkLogsListener(): void; + // updateNetworkLogSnapshot(networkData: string): void; + // setNetworkLoggingRequestFilterPredicateIOS(value: boolean): void; // App Launches APIs // setAppLaunchEnabled(isEnabled: boolean): void; From a31bccadeb1037d1dbc37c6ef8efb9ecaccbd60b Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Thu, 3 Oct 2024 14:43:45 +0300 Subject: [PATCH 03/39] chore: add iOS feature flag changes --- examples/default/ios/Podfile.lock | 1 + ios/RNInstabug/Util/IBGNetworkLogger+CP.h | 2 ++ src/modules/Instabug.ts | 11 +++++++++++ 3 files changed, 14 insertions(+) diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index 6572db6072..464945fe2e 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -1768,6 +1768,7 @@ DEPENDENCIES: - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) + - Instabug (from `https://ios-releases.instabug.com/custom/feature-support_cp_network_filtering_obfuscation-release/13.4.2/Instabug.podspec`) - instabug-reactnative-ndk (from `../node_modules/instabug-reactnative-ndk`) - OCMock - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) diff --git a/ios/RNInstabug/Util/IBGNetworkLogger+CP.h b/ios/RNInstabug/Util/IBGNetworkLogger+CP.h index 805591d0ce..92d59931b9 100644 --- a/ios/RNInstabug/Util/IBGNetworkLogger+CP.h +++ b/ios/RNInstabug/Util/IBGNetworkLogger+CP.h @@ -2,6 +2,8 @@ NS_ASSUME_NONNULL_BEGIN + + @interface IBGNetworkLogger (CP) @property (class, atomic, assign) BOOL w3ExternalTraceIDEnabled; diff --git a/src/modules/Instabug.ts b/src/modules/Instabug.ts index 91f6c5c127..d0d8eb7da4 100644 --- a/src/modules/Instabug.ts +++ b/src/modules/Instabug.ts @@ -60,6 +60,17 @@ function reportCurrentViewForAndroid(screenName: string | null) { } } +function _logFlags() { + console.log( + `Andrew: init -> { + isNativeInterceptionFeatureEnabled: ${isNativeInterceptionFeatureEnabled}, + hasAPMNetworkPlugin: ${hasAPMNetworkPlugin}, + isApmNetworkEnabled: ${isAPMNetworkEnabled}, + shouldEnableNativeInterception: ${shouldEnableNativeInterception} + }`, + ); +} + /** * Initializes the SDK. * This is the main SDK method that does all the magic. This is the only From 3b216673c51053f73ef025977887238b0e45ac4a Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Mon, 14 Oct 2024 15:43:55 +0300 Subject: [PATCH 04/39] chore: remove APMNetworkEnabled flag from android --- .lh/src/modules/Instabug.ts.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .lh/src/modules/Instabug.ts.json diff --git a/.lh/src/modules/Instabug.ts.json b/.lh/src/modules/Instabug.ts.json new file mode 100644 index 0000000000..5b319e78d2 --- /dev/null +++ b/.lh/src/modules/Instabug.ts.json @@ -0,0 +1,18 @@ +{ + "sourceFile": "src/modules/Instabug.ts", + "activeCommit": 0, + "commits": [ + { + "activePatchIndex": 0, + "patches": [ + { + "date": 1744633257493, + "content": "Index: \n===================================================================\n--- \n+++ \n" + } + ], + "date": 1744633257493, + "name": "Commit-0", + "content": "import type React from 'react';\nimport { Platform, findNodeHandle, processColor } from 'react-native';\n\nimport type {\n NavigationContainerRefWithCurrent,\n NavigationState as NavigationStateV5,\n} from '@react-navigation/native';\nimport type { ComponentDidAppearEvent } from 'react-native-navigation';\nimport type { NavigationAction, NavigationState as NavigationStateV4 } from 'react-navigation';\n\nimport type { InstabugConfig } from '../models/InstabugConfig';\nimport Report from '../models/Report';\nimport { emitter, NativeEvents, NativeInstabug } from '../native/NativeInstabug';\nimport { registerW3CFlagsListener } from '../utils/FeatureFlags';\nimport {\n ColorTheme,\n Locale,\n LogLevel,\n NetworkInterceptionMode,\n ReproStepsMode,\n StringKey,\n WelcomeMessageMode,\n} from '../utils/Enums';\nimport InstabugUtils, { stringifyIfNotString } from '../utils/InstabugUtils';\nimport * as NetworkLogger from './NetworkLogger';\nimport { captureUnhandledRejections } from '../utils/UnhandledRejectionTracking';\nimport type { ReproConfig } from '../models/ReproConfig';\nimport type { FeatureFlag } from '../models/FeatureFlag';\nimport InstabugConstants from '../utils/InstabugConstants';\nimport { InstabugRNConfig } from '../utils/config';\nimport { Logger } from '../utils/logger';\n\nlet _currentScreen: string | null = null;\nlet _lastScreen: string | null = null;\nlet _isFirstScreen = false;\nconst firstScreen = 'Initial Screen';\n<<<<<<< HEAD\n=======\nlet _currentAppState = AppState.currentState;\nlet isNativeInterceptionFeatureEnabled = false; // Checks the value of \"cp_native_interception_enabled\" backend flag.\nlet hasAPMNetworkPlugin = false; // Android only: checks if the APM plugin is installed.\nlet shouldEnableNativeInterception = false; // Android: used to disable APM logging inside reportNetworkLog() -> NativeAPM.networkLogAndroid(), iOS: used to control native interception (true == enabled , false == disabled)\n>>>>>>> f248be7f (chore: remove APMNetworkEnabled flag from android)\n\n/**\n * Enables or disables Instabug functionality.\n * @param isEnabled A boolean to enable/disable Instabug.\n */\nexport const setEnabled = (isEnabled: boolean) => {\n NativeInstabug.setEnabled(isEnabled);\n};\n\n/**\n * Reports that the screen name been changed (Current View field on dashboard).\n * only for android.\n *\n * Normally reportScreenChange handles taking a screenshot for reproduction\n * steps and the Current View field on the dashboard. But we've faced issues\n * in android where we needed to separate them, that's why we only call it\n * for android.\n *\n * @param screenName string containing the screen name\n */\nfunction reportCurrentViewForAndroid(screenName: string | null) {\n if (Platform.OS === 'android' && screenName != null) {\n NativeInstabug.reportCurrentViewChange(screenName);\n }\n}\n\nfunction _logFlags() {\n console.log(\n `Andrew: init -> {\n isNativeInterceptionFeatureEnabled: ${isNativeInterceptionFeatureEnabled},\n hasAPMNetworkPlugin: ${hasAPMNetworkPlugin},\n shouldEnableNativeInterception: ${shouldEnableNativeInterception}\n }`,\n );\n}\n\n/**\n * Initializes the SDK.\n * This is the main SDK method that does all the magic. This is the only\n * method that SHOULD be called.\n * Should be called in constructor of the AppRegistry component\n * @param config SDK configurations. See {@link InstabugConfig} for more info.\n */\n<<<<<<< HEAD\nexport const init = (config: InstabugConfig) => {\n=======\nexport const init = async (config: InstabugConfig) => {\n // Initialize necessary variables\n isNativeInterceptionFeatureEnabled = await NativeNetworkLogger.isNativeInterceptionEnabled();\n if (Platform.OS === 'android') {\n hasAPMNetworkPlugin = await NativeNetworkLogger.hasAPMNetworkPlugin();\n shouldEnableNativeInterception =\n config.networkInterceptionMode === NetworkInterceptionMode.native;\n }\n\n // Add app state listener to handle background/foreground transitions\n addAppStateListener(async (nextAppState) => handleAppStateChange(nextAppState, config));\n\n // Set up error capturing and rejection handling\n>>>>>>> f248be7f (chore: remove APMNetworkEnabled flag from android)\n InstabugUtils.captureJsErrors();\n captureUnhandledRejections();\n\n if (Platform.OS === 'android') {\n registerW3CFlagsListener();\n }\n\n // Default networkInterceptionMode to JavaScript\n if (config.networkInterceptionMode == null) {\n config.networkInterceptionMode = NetworkInterceptionMode.javascript;\n }\n\n if (config.networkInterceptionMode === NetworkInterceptionMode.javascript) {\n NetworkLogger.setEnabled(true);\n }\n\n NativeInstabug.init(\n config.token,\n config.invocationEvents,\n config.debugLogsLevel ?? LogLevel.error,\n config.networkInterceptionMode === NetworkInterceptionMode.native,\n config.codePushVersion,\n );\n\n _isFirstScreen = true;\n _currentScreen = firstScreen;\n\n InstabugRNConfig.debugLogsLevel = config.debugLogsLevel ?? LogLevel.error;\n\n reportCurrentViewForAndroid(firstScreen);\n setTimeout(() => {\n if (_currentScreen === firstScreen) {\n NativeInstabug.reportScreenChange(firstScreen);\n _currentScreen = null;\n }\n }, 1000);\n};\n\n/**\n * Sets the Code Push version to be sent with each report.\n * @param version the Code Push version.\n */\nexport const setCodePushVersion = (version: string) => {\n NativeInstabug.setCodePushVersion(version);\n};\n\n/**\n * Attaches user data to each report being sent.\n * Each call to this method overrides the user data to be attached.\n * Maximum size of the string is 1,000 characters.\n * @param data A string to be attached to each report, with a maximum size of 1,000 characters.\n */\nexport const setUserData = (data: string) => {\n NativeInstabug.setUserData(data);\n};\n\n/**\n * Sets whether the SDK is tracking user steps or not.\n * Enabling user steps would give you an insight on the scenario a user has\n * performed before encountering a bug or a crash. User steps are attached\n * with each report being sent.\n * @param isEnabled A boolean to set user steps tracking to being enabled or disabled.\n */\nexport const setTrackUserSteps = (isEnabled: boolean) => {\n if (Platform.OS === 'ios') {\n NativeInstabug.setTrackUserSteps(isEnabled);\n }\n};\n\n/**\n * Sets whether IBGLog should also print to Xcode's console log or not.\n * @param printsToConsole A boolean to set whether printing to\n * Xcode's console is enabled or not.\n */\nexport const setIBGLogPrintsToConsole = (printsToConsole: boolean) => {\n if (Platform.OS === 'ios') {\n NativeInstabug.setIBGLogPrintsToConsole(printsToConsole);\n }\n};\n\n/**\n * The session profiler is enabled by default and it attaches to the bug and\n * crash reports the following information during the last 60 seconds before the report is sent.\n * @param isEnabled A boolean parameter to enable or disable the feature.\n */\nexport const setSessionProfilerEnabled = (isEnabled: boolean) => {\n NativeInstabug.setSessionProfilerEnabled(isEnabled);\n};\n\n/**\n * Sets the SDK's locale.\n * Use to change the SDK's UI to different language.\n * Defaults to the device's current locale.\n * @param sdkLocale A locale to set the SDK to.\n */\nexport const setLocale = (sdkLocale: Locale) => {\n NativeInstabug.setLocale(sdkLocale);\n};\n\n/**\n * Sets the color theme of the SDK's whole UI.\n * @param sdkTheme\n */\nexport const setColorTheme = (sdkTheme: ColorTheme) => {\n NativeInstabug.setColorTheme(sdkTheme);\n};\n\n/**\n * Sets the primary color of the SDK's UI.\n * Sets the color of UI elements indicating interactivity or call to action.\n * To use, import processColor and pass to it with argument the color hex\n * as argument.\n * @param color A color to set the UI elements of the SDK to.\n */\nexport const setPrimaryColor = (color: string) => {\n NativeInstabug.setPrimaryColor(processColor(color));\n};\n\n/**\n * Appends a set of tags to previously added tags of reported feedback,\n * bug or crash.\n * @param tags An array of tags to append to current tags.\n */\nexport const appendTags = (tags: string[]) => {\n NativeInstabug.appendTags(tags);\n};\n\n/**\n * Manually removes all tags of reported feedback, bug or crash.\n */\nexport const resetTags = () => {\n NativeInstabug.resetTags();\n};\n\n/**\n * Gets all tags of reported feedback, bug or crash.\n */\nexport const getTags = async (): Promise => {\n const tags = await NativeInstabug.getTags();\n\n return tags;\n};\n\n/**\n * Overrides any of the strings shown in the SDK with custom ones.\n * Allows you to customize any of the strings shown to users in the SDK.\n * @param key Key of string to override.\n * @param string String value to override the default one.\n */\nexport const setString = (key: StringKey, string: string) => {\n // Suffix the repro steps list item numbering title with a # to unify the string key's\n // behavior between Android and iOS\n if (Platform.OS === 'android' && key === StringKey.reproStepsListItemNumberingTitle) {\n string = `${string} #`;\n }\n\n NativeInstabug.setString(string, key);\n};\n\n/**\n * Sets the default value of the user's email and ID and hides the email field from the reporting UI\n * and set the user's name to be included with all reports.\n * It also reset the chats on device to that email and removes user attributes,\n * user data and completed surveys.\n * @param email Email address to be set as the user's email.\n * @param name Name of the user to be set.\n * @param [id] ID of the user to be set.\n */\nexport const identifyUser = (email: string, name: string, id?: string) => {\n NativeInstabug.identifyUser(email, name, id);\n};\n\n/**\n * Sets the default value of the user's email to nil and show email field and remove user name\n * from all reports\n * It also reset the chats on device and removes user attributes, user data and completed surveys.\n */\nexport const logOut = () => {\n NativeInstabug.logOut();\n};\n\n/**\n * Logs a user event that happens through the lifecycle of the application.\n * Logged user events are going to be sent with each report, as well as at the end of a session.\n * @param name Event name.\n */\nexport const logUserEvent = (name: string) => {\n NativeInstabug.logUserEvent(name);\n};\n\n/**\n * Appends a log message to Instabug internal log.\n * These logs are then sent along the next uploaded report.\n * All log messages are timestamped.\n * Logs aren't cleared per single application run.\n * If you wish to reset the logs, use {@link clearLogs()}\n * Note: logs passed to this method are **NOT** printed to Logcat.\n *\n * @param message the message\n */\nexport const logVerbose = (message: string) => {\n if (!message) {\n return;\n }\n message = stringifyIfNotString(message);\n NativeInstabug.logVerbose(message);\n};\n\n/**\n * Appends a log message to Instabug internal log.\n * These logs are then sent along the next uploaded report.\n * All log messages are timestamped.\n * Logs aren't cleared per single application run.\n * If you wish to reset the logs, use {@link clearLogs()}\n * Note: logs passed to this method are **NOT** printed to Logcat.\n *\n * @param message the message\n */\nexport const logInfo = (message: string) => {\n if (!message) {\n return;\n }\n message = stringifyIfNotString(message);\n NativeInstabug.logInfo(message);\n};\n\n/**\n * Appends a log message to Instabug internal log.\n * These logs are then sent along the next uploaded report.\n * All log messages are timestamped.\n * Logs aren't cleared per single application run.\n * If you wish to reset the logs, use {@link clearLogs()}\n * Note: logs passed to this method are **NOT** printed to Logcat.\n *\n * @param message the message\n */\nexport const logDebug = (message: string) => {\n if (!message) {\n return;\n }\n message = stringifyIfNotString(message);\n NativeInstabug.logDebug(message);\n};\n\n/**\n * Appends a log message to Instabug internal log.\n * These logs are then sent along the next uploaded report.\n * All log messages are timestamped.\n * Logs aren't cleared per single application run.\n * If you wish to reset the logs, use {@link clearLogs()}\n * Note: logs passed to this method are **NOT** printed to Logcat.\n *\n * @param message the message\n */\nexport const logError = (message: string) => {\n if (!message) {\n return;\n }\n message = stringifyIfNotString(message);\n NativeInstabug.logError(message);\n};\n\n/**\n * Appends a log message to Instabug internal log.\n * These logs are then sent along the next uploaded report.\n * All log messages are timestamped.\n * Logs aren't cleared per single application run.\n * If you wish to reset the logs, use {@link clearLogs()}\n * Note: logs passed to this method are **NOT** printed to Logcat.\n *\n * @param message the message\n */\nexport const logWarn = (message: string) => {\n if (!message) {\n return;\n }\n message = stringifyIfNotString(message);\n NativeInstabug.logWarn(message);\n};\n\n/**\n * Clear all Instabug logs, console logs, network logs and user steps.\n */\nexport const clearLogs = () => {\n NativeInstabug.clearLogs();\n};\n\n/**\n * Sets the repro steps mode for bugs and crashes.\n *\n * @param config The repro steps config.\n *\n * @example\n * ```js\n * Instabug.setReproStepsConfig({\n * bug: ReproStepsMode.enabled,\n * crash: ReproStepsMode.disabled,\n * sessionReplay: ReproStepsMode.enabled,\n * });\n * ```\n */\nexport const setReproStepsConfig = (config: ReproConfig) => {\n let bug = config.bug ?? ReproStepsMode.enabled;\n let crash = config.crash ?? ReproStepsMode.enabledWithNoScreenshots;\n let sessionReplay = config.sessionReplay ?? ReproStepsMode.enabled;\n\n if (config.all != null) {\n bug = config.all;\n crash = config.all;\n sessionReplay = config.all;\n }\n\n NativeInstabug.setReproStepsConfig(bug, crash, sessionReplay);\n};\n\n/**\n * Sets user attribute to overwrite it's value or create a new one if it doesn't exist.\n *\n * @param key the attribute\n * @param value the value\n */\nexport const setUserAttribute = (key: string, value: string) => {\n if (!key || typeof key !== 'string' || typeof value !== 'string') {\n Logger.error(InstabugConstants.SET_USER_ATTRIBUTES_ERROR_TYPE_MESSAGE);\n return;\n }\n\n NativeInstabug.setUserAttribute(key, value);\n};\n\n/**\n * Returns the user attribute associated with a given key.\n * @param key The attribute key as string\n */\nexport const getUserAttribute = async (key: string): Promise => {\n const attribute = await NativeInstabug.getUserAttribute(key);\n\n return attribute;\n};\n\n/**\n * Removes user attribute if exists.\n *\n * @param key the attribute key as string\n * @see {@link setUserAttribute}\n */\nexport const removeUserAttribute = (key: string) => {\n if (!key || typeof key !== 'string') {\n Logger.error(InstabugConstants.REMOVE_USER_ATTRIBUTES_ERROR_TYPE_MESSAGE);\n\n return;\n }\n NativeInstabug.removeUserAttribute(key);\n};\n\n/**\n * Returns all user attributes.\n * set user attributes, or an empty dictionary if no user attributes have been set.\n */\nexport const getAllUserAttributes = async (): Promise> => {\n const attributes = await NativeInstabug.getAllUserAttributes();\n\n return attributes;\n};\n\n/**\n * Clears all user attributes if exists.\n */\nexport const clearAllUserAttributes = () => {\n NativeInstabug.clearAllUserAttributes();\n};\n\n/**\n * Shows the welcome message in a specific mode.\n * @param mode An enum to set the welcome message mode to live, or beta.\n */\nexport const showWelcomeMessage = (mode: WelcomeMessageMode) => {\n NativeInstabug.showWelcomeMessageWithMode(mode);\n};\n\n/**\n * Sets the welcome message mode to live, beta or disabled.\n * @param mode An enum to set the welcome message mode to live, beta or disabled.\n */\nexport const setWelcomeMessageMode = (mode: WelcomeMessageMode) => {\n NativeInstabug.setWelcomeMessageMode(mode);\n};\n\n/**\n * Add file to be attached to the bug report.\n * @param filePath\n * @param fileName\n */\nexport const addFileAttachment = (filePath: string, fileName: string) => {\n if (Platform.OS === 'android') {\n NativeInstabug.setFileAttachment(filePath, fileName);\n } else {\n NativeInstabug.setFileAttachment(filePath);\n }\n};\n\n/**\n * Hides component from screenshots, screen recordings and view hierarchy.\n * @param viewRef the ref of the component to hide\n */\nexport const addPrivateView = (viewRef: number | React.Component | React.ComponentClass) => {\n const nativeTag = findNodeHandle(viewRef);\n NativeInstabug.addPrivateView(nativeTag);\n};\n\n/**\n * Removes component from the set of hidden views. The component will show again in\n * screenshots, screen recordings and view hierarchy.\n * @param viewRef the ref of the component to remove from hidden views\n */\nexport const removePrivateView = (viewRef: number | React.Component | React.ComponentClass) => {\n const nativeTag = findNodeHandle(viewRef);\n NativeInstabug.removePrivateView(nativeTag);\n};\n\n/**\n * Shows default Instabug prompt.\n */\nexport const show = () => {\n NativeInstabug.show();\n};\n\nexport const onReportSubmitHandler = (handler?: (report: Report) => void) => {\n emitter.addListener(NativeEvents.PRESENDING_HANDLER, (report) => {\n const { tags, consoleLogs, instabugLogs, userAttributes, fileAttachments } = report;\n const reportObj = new Report(tags, consoleLogs, instabugLogs, userAttributes, fileAttachments);\n handler && handler(reportObj);\n });\n\n NativeInstabug.setPreSendingHandler(handler);\n};\n\nexport const onNavigationStateChange = (\n prevState: NavigationStateV4,\n currentState: NavigationStateV4,\n _action: NavigationAction,\n) => {\n const currentScreen = InstabugUtils.getActiveRouteName(currentState);\n const prevScreen = InstabugUtils.getActiveRouteName(prevState);\n\n if (prevScreen !== currentScreen) {\n reportCurrentViewForAndroid(currentScreen);\n if (_currentScreen != null && _currentScreen !== firstScreen) {\n NativeInstabug.reportScreenChange(_currentScreen);\n _currentScreen = null;\n }\n _currentScreen = currentScreen;\n setTimeout(() => {\n if (currentScreen && _currentScreen === currentScreen) {\n NativeInstabug.reportScreenChange(currentScreen);\n _currentScreen = null;\n }\n }, 1000);\n }\n};\n\nexport const onStateChange = (state?: NavigationStateV5) => {\n if (!state) {\n return;\n }\n\n const currentScreen = InstabugUtils.getFullRoute(state);\n reportCurrentViewForAndroid(currentScreen);\n if (_currentScreen !== null && _currentScreen !== firstScreen) {\n NativeInstabug.reportScreenChange(_currentScreen);\n _currentScreen = null;\n }\n\n _currentScreen = currentScreen;\n setTimeout(() => {\n if (_currentScreen === currentScreen) {\n NativeInstabug.reportScreenChange(currentScreen);\n _currentScreen = null;\n }\n }, 1000);\n};\n\n/**\n * Sets a listener for screen change\n * @param navigationRef a refrence of a navigation container\n *\n */\nexport const setNavigationListener = (\n navigationRef: NavigationContainerRefWithCurrent,\n) => {\n return navigationRef.addListener('state', () => {\n onStateChange(navigationRef.getRootState());\n });\n};\n\nexport const reportScreenChange = (screenName: string) => {\n NativeInstabug.reportScreenChange(screenName);\n};\n\n/**\n * Add experiments to next report.\n * @param experiments An array of experiments to add to the next report.\n *\n * @deprecated Please migrate to the new Feature Flags APIs: {@link addFeatureFlags}.\n */\nexport const addExperiments = (experiments: string[]) => {\n NativeInstabug.addExperiments(experiments);\n};\n\n/**\n * Remove experiments from next report.\n * @param experiments An array of experiments to remove from the next report.\n *\n * @deprecated Please migrate to the new Feature Flags APIs: {@link removeFeatureFlags}.\n */\nexport const removeExperiments = (experiments: string[]) => {\n NativeInstabug.removeExperiments(experiments);\n};\n\n/**\n * Clear all experiments\n *\n * @deprecated Please migrate to the new Feature Flags APIs: {@link removeAllFeatureFlags}.\n */\nexport const clearAllExperiments = () => {\n NativeInstabug.clearAllExperiments();\n};\n\n/**\n * Add feature flags to the next report.\n * @param featureFlags An array of feature flags to add to the next report.\n */\nexport const addFeatureFlags = (featureFlags: FeatureFlag[]) => {\n const entries = featureFlags.map((item) => [item.name, item.variant || '']);\n const flags = Object.fromEntries(entries);\n NativeInstabug.addFeatureFlags(flags);\n};\n\n/**\n * Add a feature flag to the to next report.\n */\nexport const addFeatureFlag = (featureFlag: FeatureFlag) => {\n addFeatureFlags([featureFlag]);\n};\n\n/**\n * Remove feature flags from the next report.\n * @param featureFlags An array of feature flags to remove from the next report.\n */\nexport const removeFeatureFlags = (featureFlags: string[]) => {\n NativeInstabug.removeFeatureFlags(featureFlags);\n};\n\n/**\n * Remove a feature flag from the next report.\n * @param name the name of the feature flag to remove from the next report.\n */\nexport const removeFeatureFlag = (name: string) => {\n removeFeatureFlags([name]);\n};\n\n/**\n * Clear all feature flags\n */\nexport const removeAllFeatureFlags = () => {\n NativeInstabug.removeAllFeatureFlags();\n};\n\n/**\n * This API has to be call when using custom app rating prompt\n */\nexport const willRedirectToStore = () => {\n NativeInstabug.willRedirectToStore();\n};\n\n/**\n * This API has be called when changing the default Metro server port (8081) to exclude the DEV URL from network logging.\n */\nexport const setMetroDevServerPort = (port: number) => {\n InstabugRNConfig.metroDevServerPort = port.toString();\n};\n\nexport const componentDidAppearListener = (event: ComponentDidAppearEvent) => {\n if (_isFirstScreen) {\n _lastScreen = event.componentName;\n _isFirstScreen = false;\n return;\n }\n if (_lastScreen !== event.componentName) {\n NativeInstabug.reportScreenChange(event.componentName);\n _lastScreen = event.componentName;\n }\n};\n\n/**\n * Sets listener to W3ExternalTraceID flag changes\n * @param handler A callback that gets the update value of the flag\n */\nexport const _registerW3CFlagsChangeListener = (\n handler: (payload: {\n isW3ExternalTraceIDEnabled: boolean;\n isW3ExternalGeneratedHeaderEnabled: boolean;\n isW3CaughtHeaderEnabled: boolean;\n }) => void,\n) => {\n emitter.addListener(NativeEvents.ON_W3C_FLAGS_CHANGE, (payload) => {\n handler(payload);\n });\n NativeInstabug.registerW3CFlagsChangeListener();\n};\n" + } + ] +} \ No newline at end of file From 0385a857526134b99032912920490c5b766f3d98 Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Mon, 14 Oct 2024 16:09:55 +0300 Subject: [PATCH 05/39] chore: fix NetworkLogger.spec.ts failed tests --- .lh/src/modules/Instabug.ts.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.lh/src/modules/Instabug.ts.json b/.lh/src/modules/Instabug.ts.json index 5b319e78d2..a4188d56f0 100644 --- a/.lh/src/modules/Instabug.ts.json +++ b/.lh/src/modules/Instabug.ts.json @@ -3,11 +3,15 @@ "activeCommit": 0, "commits": [ { - "activePatchIndex": 0, + "activePatchIndex": 1, "patches": [ { "date": 1744633257493, "content": "Index: \n===================================================================\n--- \n+++ \n" + }, + { + "date": 1744633283826, + "content": "Index: \n===================================================================\n--- \n+++ \n@@ -33,8 +33,15 @@\n let _currentScreen: string | null = null;\n let _lastScreen: string | null = null;\n let _isFirstScreen = false;\n const firstScreen = 'Initial Screen';\n+<<<<<<< HEAD\n+=======\n+let _currentAppState = AppState.currentState;\n+let isNativeInterceptionFeatureEnabled = false; // Checks the value of \"cp_native_interception_enabled\" backend flag.\n+let hasAPMNetworkPlugin = false; // Android only: checks if the APM plugin is installed.\n+let shouldEnableNativeInterception = false; // Android: used to disable APM logging inside reportNetworkLog() -> NativeAPM.networkLogAndroid(), iOS: used to control native interception (true == enabled , false == disabled)\n+>>>>>>> f248be7f (chore: remove APMNetworkEnabled flag from android)\n \n /**\n * Enables or disables Instabug functionality.\n * @param isEnabled A boolean to enable/disable Instabug.\n@@ -64,9 +71,8 @@\n console.log(\n `Andrew: init -> {\n isNativeInterceptionFeatureEnabled: ${isNativeInterceptionFeatureEnabled},\n hasAPMNetworkPlugin: ${hasAPMNetworkPlugin},\n- isApmNetworkEnabled: ${isAPMNetworkEnabled},\n shouldEnableNativeInterception: ${shouldEnableNativeInterception}\n }`,\n );\n }\n@@ -77,9 +83,25 @@\n * method that SHOULD be called.\n * Should be called in constructor of the AppRegistry component\n * @param config SDK configurations. See {@link InstabugConfig} for more info.\n */\n+<<<<<<< HEAD\n export const init = (config: InstabugConfig) => {\n+=======\n+export const init = async (config: InstabugConfig) => {\n+ // Initialize necessary variables\n+ isNativeInterceptionFeatureEnabled = await NativeNetworkLogger.isNativeInterceptionEnabled();\n+ if (Platform.OS === 'android') {\n+ hasAPMNetworkPlugin = await NativeNetworkLogger.hasAPMNetworkPlugin();\n+ shouldEnableNativeInterception =\n+ config.networkInterceptionMode === NetworkInterceptionMode.native;\n+ }\n+\n+ // Add app state listener to handle background/foreground transitions\n+ addAppStateListener(async (nextAppState) => handleAppStateChange(nextAppState, config));\n+\n+ // Set up error capturing and rejection handling\n+>>>>>>> f248be7f (chore: remove APMNetworkEnabled flag from android)\n InstabugUtils.captureJsErrors();\n captureUnhandledRejections();\n \n if (Platform.OS === 'android') {\n" } ], "date": 1744633257493, From 6bc4355052e7c4d6db13ffee9e0d861478099b53 Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Wed, 16 Oct 2024 15:35:59 +0300 Subject: [PATCH 06/39] chore: add unit tests and extract log messages --- .lh/src/modules/Instabug.ts.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.lh/src/modules/Instabug.ts.json b/.lh/src/modules/Instabug.ts.json index a4188d56f0..06872db5d7 100644 --- a/.lh/src/modules/Instabug.ts.json +++ b/.lh/src/modules/Instabug.ts.json @@ -3,7 +3,7 @@ "activeCommit": 0, "commits": [ { - "activePatchIndex": 1, + "activePatchIndex": 2, "patches": [ { "date": 1744633257493, @@ -12,6 +12,10 @@ { "date": 1744633283826, "content": "Index: \n===================================================================\n--- \n+++ \n@@ -33,8 +33,15 @@\n let _currentScreen: string | null = null;\n let _lastScreen: string | null = null;\n let _isFirstScreen = false;\n const firstScreen = 'Initial Screen';\n+<<<<<<< HEAD\n+=======\n+let _currentAppState = AppState.currentState;\n+let isNativeInterceptionFeatureEnabled = false; // Checks the value of \"cp_native_interception_enabled\" backend flag.\n+let hasAPMNetworkPlugin = false; // Android only: checks if the APM plugin is installed.\n+let shouldEnableNativeInterception = false; // Android: used to disable APM logging inside reportNetworkLog() -> NativeAPM.networkLogAndroid(), iOS: used to control native interception (true == enabled , false == disabled)\n+>>>>>>> f248be7f (chore: remove APMNetworkEnabled flag from android)\n \n /**\n * Enables or disables Instabug functionality.\n * @param isEnabled A boolean to enable/disable Instabug.\n@@ -64,9 +71,8 @@\n console.log(\n `Andrew: init -> {\n isNativeInterceptionFeatureEnabled: ${isNativeInterceptionFeatureEnabled},\n hasAPMNetworkPlugin: ${hasAPMNetworkPlugin},\n- isApmNetworkEnabled: ${isAPMNetworkEnabled},\n shouldEnableNativeInterception: ${shouldEnableNativeInterception}\n }`,\n );\n }\n@@ -77,9 +83,25 @@\n * method that SHOULD be called.\n * Should be called in constructor of the AppRegistry component\n * @param config SDK configurations. See {@link InstabugConfig} for more info.\n */\n+<<<<<<< HEAD\n export const init = (config: InstabugConfig) => {\n+=======\n+export const init = async (config: InstabugConfig) => {\n+ // Initialize necessary variables\n+ isNativeInterceptionFeatureEnabled = await NativeNetworkLogger.isNativeInterceptionEnabled();\n+ if (Platform.OS === 'android') {\n+ hasAPMNetworkPlugin = await NativeNetworkLogger.hasAPMNetworkPlugin();\n+ shouldEnableNativeInterception =\n+ config.networkInterceptionMode === NetworkInterceptionMode.native;\n+ }\n+\n+ // Add app state listener to handle background/foreground transitions\n+ addAppStateListener(async (nextAppState) => handleAppStateChange(nextAppState, config));\n+\n+ // Set up error capturing and rejection handling\n+>>>>>>> f248be7f (chore: remove APMNetworkEnabled flag from android)\n InstabugUtils.captureJsErrors();\n captureUnhandledRejections();\n \n if (Platform.OS === 'android') {\n" + }, + { + "date": 1744633318557, + "content": "Index: \n===================================================================\n--- \n+++ \n@@ -64,9 +64,8 @@\n console.log(\n `Andrew: init -> {\n isNativeInterceptionFeatureEnabled: ${isNativeInterceptionFeatureEnabled},\n hasAPMNetworkPlugin: ${hasAPMNetworkPlugin},\n- isApmNetworkEnabled: ${isAPMNetworkEnabled},\n shouldEnableNativeInterception: ${shouldEnableNativeInterception}\n }`,\n );\n }\n" } ], "date": 1744633257493, From ceafad3d32739ce6b8e842b4f7ff49bcbc8f3ed3 Mon Sep 17 00:00:00 2001 From: Ahmed Mahmoud Date: Wed, 30 Oct 2024 11:59:42 +0300 Subject: [PATCH 07/39] refactor(example): upgrade to react native 0.75.4 --- examples/default/ios/Podfile | 23 ++++++++++------------- examples/default/ios/Podfile.lock | 3 +++ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/examples/default/ios/Podfile b/examples/default/ios/Podfile index 3526171cd4..b3ab884ddb 100644 --- a/examples/default/ios/Podfile +++ b/examples/default/ios/Podfile @@ -1,6 +1,9 @@ -require_relative '../node_modules/react-native/scripts/react_native_pods' - -require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' +# Resolve react_native_pods.rb with node to allow for hoisting +require Pod::Executable.execute_command('node', ['-p', + 'require.resolve( + "react-native/scripts/react_native_pods.rb", + {paths: [process.argv[1]]}, + )', __dir__]).strip platform :ios, '13.4' prepare_react_native_project! @@ -15,16 +18,9 @@ target 'InstabugExample' do config = use_native_modules! rn_maps_path = '../node_modules/react-native-maps' pod 'react-native-google-maps', :path => rn_maps_path - # Flags change depending on the env values. - flags = get_default_flags() use_react_native!( :path => config[:reactNativePath], - # Hermes is now enabled by default. Disable by setting this flag to false. - # Upcoming versions of React Native may rely on get_default_flags(), but - # we make it explicit here to aid in the React Native upgrade process. - :hermes_enabled => flags[:hermes_enabled], - :fabric_enabled => flags[:fabric_enabled], # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) @@ -35,11 +31,12 @@ target 'InstabugExample' do end post_install do |installer| + # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 react_native_post_install( installer, - # Set `mac_catalyst_enabled` to `true` in order to apply patches - # necessary for Mac Catalyst builds - :mac_catalyst_enabled => false + config[:reactNativePath], + :mac_catalyst_enabled => false, + # :ccache_enabled => true ) end end diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index 464945fe2e..30130fc2da 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -2056,7 +2056,10 @@ SPEC CHECKSUMS: react-native-maps: 72a8a903f8a1b53e2c777ba79102078ab502e0bf react-native-safe-area-context: 142fade490cbebbe428640b8cbdb09daf17e8191 react-native-slider: 4a0f3386a38fc3d2d955efc515aef7096f7d1ee4 +<<<<<<< HEAD react-native-webview: 926d2665cf3196e39c4449a72d136d0a53b9df8a +======= +>>>>>>> 4548a06a (refactor(example): upgrade to react native 0.75.4) React-nativeconfig: 8c83d992b9cc7d75b5abe262069eaeea4349f794 React-NativeModulesApple: 9f7920224a3b0c7d04d77990067ded14cee3c614 React-perflogger: 59e1a3182dca2cee7b9f1f7aab204018d46d1914 From e408304164fc0b34386bc131bd7544eae345d2d4 Mon Sep 17 00:00:00 2001 From: ahmed alaa <154802748+ahmedAlaaInstabug@users.noreply.github.com> Date: Wed, 13 Nov 2024 12:23:53 +0200 Subject: [PATCH 08/39] master-on-dev (#1316) Co-authored-by: Mohamed Zakaria El-Zoghbi <5540492+mzelzoghbi@users.noreply.github.com> From b6d1dd2fe032d5f4213bc5dbc923a1627466e2a6 Mon Sep 17 00:00:00 2001 From: Ahmed Elrefaey <68241710+a7medev@users.noreply.github.com> Date: Wed, 27 Nov 2024 14:39:00 +0200 Subject: [PATCH 09/39] feat: add w3c traceparent header injection (#1288) * feat(example): add apm screen (#1141) * fix(android): resolve an OOM in network logs (#1244) * fix(android): APM network logging(#1253) * fix(android): add W3C External Trace Attributes placeholder * chore: add CHANGLOG * chore: add CHANGLOG * fix: remove ios sub module * fix: use correct diff link for v13.0.0, v12.9.0 releases (#1198) * feat(ios): read env vars from .xcode.env in sourcemaps script (#1200) * feat(ios): read env vars from .xcode.env in sourcemaps script * chore: update xcode project * chore: update changelog * chore/update-podfile.lock * feat: add w3c header generator * ci:fix lint * ci:fix ios tests * feat:update header format * feat:update header format test case title * feat:Inject the W3C Header to Network Requests * ci:fix lint * feat:remove tracestate * feat: get feature flags from IOS * ci: fix ios test * fix: modify function naming * fix: update APM test cases * fix: update native test cases naming * feat(ios): w3c logs mapping * fix: export number partial id * fix: modify partial id generator function * fix: modify partial id generator test cases * feat(example): add network request generators buttons * ci: fix lint * ci(example): add missing import * feat(android): map apm network logs * feat(android): add W3C native modules & tests * feat: map w3c android native modules and test * feat: register w3c feature change listener * feat: add feature flags * feat: call updated feature flags * fix: update object assigning * fix: remove comment * fix: modify test cases naming * fix: generated header injection * fix: fix variable neames * fix: update test cases * fix(android): caught header null string * fix: update network log interface * fix (example): remove redundant button * feat (example): add Enable/Disable APM buttons * fix: add w3c Attributes to network logs tests * fix: fix imports * feat(android) : add w3c attributes to APM network Logs * chore: remove flipper * fix: adjust spacing * fix: update test case * feat: migrate-Feature-Flag-APM-method-to-Core * fix: js testcases * fix: js testcases * fix: js testcases * feat: add migrate APM into core in ios section * fix: js testcases * feat: add migrate APM into core in ios section * feat: add migrate APM into core in ios section * fix: Pr comments * fix: PR comment * fix: Pr comments * fix: added changelog item * fix: feature flag listener * fix: feature flag listener * feat: migrate w3c flags to APM core * feat(example): add apm screen (#1141) * fix(android): resolve an OOM in network logs (#1244) * fix(android): APM network logging(#1253) * fix(android): add W3C External Trace Attributes placeholder * chore: add CHANGLOG * chore: add CHANGLOG * fix: remove ios sub module * feat: export upload utils (#1252) * chore(example): remove flipper (#1259) * fix(android): pass network start time in microseconds (#1260) * fix: network timestamp in android side * fix: PR comments Co-authored-by: Ahmed Elrefaey <68241710+a7medev@users.noreply.github.com> --------- Co-authored-by: Ahmed Elrefaey <68241710+a7medev@users.noreply.github.com> * feat: support feature flags with variants (#1230) Jira ID: MOB-14684 --------- Co-authored-by: Ahmed Elrefaey <68241710+a7medev@users.noreply.github.com> * chore(android): bump android sdk to v13.3.0 (#1261) * chore(ios): bump sdk to v13.3.0 (#1262) * release: v13.3.0 (#1263) * chore: remove duplicate app flows entries in changelog (#1264) * chore: remove duplicate execution traces deprecation in changelog (#1265) * feat: navigation tracking support with expo router (#1270) * feat: add screen tracker on screen change listener and tests * feat (example): add screen change listener * chore: enhance expo router tracking support (#1272) * ci: generalize enterprise releases (#1275) * ci: run tests before enterprise releases (#1271) * ci: publish snapshots to npm (#1274) * fix(ios): network log empty response body (#1273) * fix: drop non-error objects when reporting errors (#1279) * Fix: omitted non-error objects when logging errors * ci: publish snapshots to npm (#1274) * Fix: omitted non-error objects when logging errors * fix: use warn instead of logs Co-authored-by: Ahmed Elrefaey <68241710+a7medev@users.noreply.github.com> * Update CHANGELOG.md Co-authored-by: Ahmed Elrefaey <68241710+a7medev@users.noreply.github.com> * fix: merge issues --------- Co-authored-by: Ahmed Elrefaey <68241710+a7medev@users.noreply.github.com> * feat: capture client error in the network interceptor (#1257) * feat/support-capture-client-error-in-xhr-requests --------- Co-authored-by: Abdelhamid Nasser <38096011+abdelhamid-f-nasser@users.noreply.github.com> Co-authored-by: Ahmed Elrefaey <68241710+a7medev@users.noreply.github.com> Co-authored-by: kholood * fix: merge issues * fix: networkLogIOS test case * fix: merge issues * fix: merge issues * fix: merge issues * fix: merge issues * fix: merge issues * fix: remove logs * fix: refactore networkLogAndroid arguments * fix: merge issues * fix: merge issues * fix: move W3cExternalTraceAttributes to models * fix: return expected value type from bridge * fix: refactor method call * fix: refactor method name * fix: return expected value types of w3c flags * chore: refactor constant names * fix: pod file * fix(android): fix w3c caught header * fix (android): reporting network logs upon disabling w3c main feature flag * chore: add changelog --------- Co-authored-by: Abdelhamid Nasser <38096011+abdelhamid-f-nasser@users.noreply.github.com> Co-authored-by: kholood Co-authored-by: Ahmed alaa Co-authored-by: ahmed alaa <154802748+ahmedAlaaInstabug@users.noreply.github.com> --- src/native/NativeAPM.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/native/NativeAPM.ts b/src/native/NativeAPM.ts index 834768c1a6..35e68fe3c0 100644 --- a/src/native/NativeAPM.ts +++ b/src/native/NativeAPM.ts @@ -1,10 +1,8 @@ <<<<<<< HEAD import type { NativeModule } from 'react-native'; import { NativeEventEmitter } from 'react-native'; -======= -import { NativeEventEmitter, type NativeModule } from 'react-native'; ->>>>>>> 82df0013 (chore: add request filtering & obfuscation react-native logic) +import type { W3cExternalTraceAttributes } from '../models/W3cExternalTraceAttributes'; import type { W3cExternalTraceAttributes } from '../models/W3cExternalTraceAttributes'; import { NativeModules } from './NativePackage'; @@ -29,6 +27,7 @@ export interface ApmNativeModule extends NativeModule { responseContentType: string, errorDomain: string, w3cExternalTraceAttributes: W3cExternalTraceAttributes, + w3cExternalTraceAttributes: W3cExternalTraceAttributes, gqlQueryName?: string, serverErrorMessage?: string, ): void; @@ -60,3 +59,5 @@ export interface ApmNativeModule extends NativeModule { export const NativeAPM = NativeModules.IBGAPM; export const emitter = new NativeEventEmitter(NativeAPM); + +export const emitter = new NativeEventEmitter(NativeAPM); From d8c7b31d79412ab65a5881c9a489cd80088e6a99 Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Wed, 12 Feb 2025 12:06:26 +0200 Subject: [PATCH 10/39] rebase: network-spans branch with dev branch --- examples/default/ios/Podfile.lock | 11 ++++++----- examples/default/src/App.tsx | 3 +-- examples/default/src/screens/apm/NetworkScreen.tsx | 3 +-- test/modules/Instabug.spec.ts | 4 +--- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index 30130fc2da..df9879a763 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -1848,7 +1848,6 @@ SPEC REPOS: trunk: - Google-Maps-iOS-Utils - GoogleMaps - - Instabug - OCMock - SocketRocket @@ -1866,6 +1865,8 @@ EXTERNAL SOURCES: hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" :tag: hermes-2024-08-15-RNv0.75.1-4b3bf912cc0f705b51b71ce1a5b8bd79b93a451b + Instabug: + :podspec: https://ios-releases.instabug.com/custom/feature-support_cp_network_filtering_obfuscation-base/14.1.0/Instabug.podspec instabug-reactnative-ndk: :path: "../node_modules/instabug-reactnative-ndk" RCT-Folly: @@ -2018,7 +2019,7 @@ SPEC CHECKSUMS: Google-Maps-iOS-Utils: f77eab4c4326d7e6a277f8e23a0232402731913a GoogleMaps: 032f676450ba0779bd8ce16840690915f84e57ac hermes-engine: ea92f60f37dba025e293cbe4b4a548fd26b610a0 - Instabug: 8cbca8974168c815658133e2813f5ac3a36f8e20 + Instabug: afe23192d5487aa2afd4f3baa76913cc2c421cda instabug-reactnative-ndk: d765ac289d56e8896398d02760d9abf2562fc641 OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 RCT-Folly: 4464f4d875961fce86008d45f4ecf6cef6de0740 @@ -2094,8 +2095,8 @@ SPEC CHECKSUMS: RNSVG: 8b1a777d54096b8c2a0fd38fc9d5a454332bbb4d RNVectorIcons: 6382277afab3c54658e9d555ee0faa7a37827136 SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d - Yoga: 055f92ad73f8c8600a93f0e25ac0b2344c3b07e6 + Yoga: aa3df615739504eebb91925fc9c58b4922ea9a08 -PODFILE CHECKSUM: 63bf073bef3872df95ea45e7c9c023a331ebb3c3 +PODFILE CHECKSUM: f382faa8fee81f859a17db3fbe928b4f7e7f2ea0 -COCOAPODS: 1.14.0 +COCOAPODS: 1.15.2 diff --git a/examples/default/src/App.tsx b/examples/default/src/App.tsx index 6d41f12d15..d8786173f2 100644 --- a/examples/default/src/App.tsx +++ b/examples/default/src/App.tsx @@ -6,12 +6,11 @@ import { NavigationContainer } from '@react-navigation/native'; import Instabug, { CrashReporting, InvocationEvent, + LaunchType, LogLevel, ReproStepsMode, SessionReplay, - LaunchType, } from 'instabug-reactnative'; -import type { SessionMetadata } from 'instabug-reactnative'; import { NativeBaseProvider } from 'native-base'; import { RootTabNavigator } from './navigation/RootTab'; diff --git a/examples/default/src/screens/apm/NetworkScreen.tsx b/examples/default/src/screens/apm/NetworkScreen.tsx index 1cd9f0c9b7..9b78c4f672 100644 --- a/examples/default/src/screens/apm/NetworkScreen.tsx +++ b/examples/default/src/screens/apm/NetworkScreen.tsx @@ -10,7 +10,6 @@ import { CustomButton } from '../../components/CustomButton'; import axios from 'axios'; import type { HomeStackParamList } from '../../navigation/HomeStack'; import type { NativeStackScreenProps } from '@react-navigation/native-stack'; -import { ListTile } from '../../components/ListTile'; export const NetworkScreen: React.FC< NativeStackScreenProps @@ -184,7 +183,7 @@ export const NetworkScreen: React.FC< title="Simulate Network Request With Header" onPress={() => simulateNetworkRequest()} /> - simulateNetworkRequestWithoutHeader()} /> diff --git a/test/modules/Instabug.spec.ts b/test/modules/Instabug.spec.ts index d1bca25c90..5b6f7ebbb2 100644 --- a/test/modules/Instabug.spec.ts +++ b/test/modules/Instabug.spec.ts @@ -3,14 +3,13 @@ import '../mocks/mockNetworkLogger'; import { Platform, findNodeHandle, processColor } from 'react-native'; import type { NavigationContainerRefWithCurrent } from '@react-navigation/native'; // Import the hook - import { mocked } from 'jest-mock'; import waitForExpect from 'wait-for-expect'; import Report from '../../src/models/Report'; import * as Instabug from '../../src/modules/Instabug'; import * as NetworkLogger from '../../src/modules/NetworkLogger'; -import { NativeEvents, NativeInstabug, emitter } from '../../src/native/NativeInstabug'; +import { emitter, NativeEvents, NativeInstabug } from '../../src/native/NativeInstabug'; import { ColorTheme, InvocationEvent, @@ -23,7 +22,6 @@ import { } from '../../src/utils/Enums'; import InstabugUtils from '../../src/utils/InstabugUtils'; import type { FeatureFlag } from '../../src/models/FeatureFlag'; -import InstabugConstants from '../../src/utils/InstabugConstants'; import { Logger } from '../../src/utils/logger'; describe('Instabug Module', () => { From 04411bd0d0556b3cb96c92f990a327caaecf7616 Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Mon, 17 Feb 2025 11:27:40 +0200 Subject: [PATCH 11/39] fix: web-view screen crash in sample app --- examples/default/package.json | 2 +- examples/default/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/default/package.json b/examples/default/package.json index 26959bb0b9..ab70e536b1 100644 --- a/examples/default/package.json +++ b/examples/default/package.json @@ -32,7 +32,7 @@ "react-native-screens": "^3.35.0", "react-native-svg": "^15.8.0", "react-native-vector-icons": "^10.2.0", - "react-native-webview": "^13.12.3", + "react-native-webview": "^13.13.2", "react-query": "^3.39.3" }, "devDependencies": { diff --git a/examples/default/yarn.lock b/examples/default/yarn.lock index 3e1f047c3f..c484688ce0 100644 --- a/examples/default/yarn.lock +++ b/examples/default/yarn.lock @@ -6329,10 +6329,10 @@ react-native-vector-icons@^10.2.0: prop-types "^15.7.2" yargs "^16.1.1" -react-native-webview@^13.12.3: - version "13.12.3" - resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-13.12.3.tgz#3aa9d2fc982ba2681e56d3e96e22b63a0d929270" - integrity sha512-Y1I5YyDYyE7NC96RHLhd2nxh7ymLYOYLTefgx5ixxw2OToQK0ow3OJ+o77QcI1Tuevj5PCxwqC/14ceS/7yPJQ== +react-native-webview@^13.13.2: + version "13.13.2" + resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-13.13.2.tgz#6d72fd8492f11accbcf3be4d1386fa961e424357" + integrity sha512-zACPDTF0WnaEnKZ9mA/r/UpcOpV2gQM06AAIrOOexnO8UJvXL8Pjso0b/wTqKFxUZZnmjKuwd8gHVUosVOdVrw== dependencies: escape-string-regexp "^4.0.0" invariant "2.2.4" From d1f01500f559e06502b2462a1ae4016cddeede05 Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Wed, 19 Feb 2025 12:04:22 +0200 Subject: [PATCH 12/39] fix: CI Podfile.lock conflict --- examples/default/ios/Podfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index df9879a763..7be549d418 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -1319,7 +1319,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-webview (13.12.3): + - react-native-webview (13.13.2): - DoubleConversion - glog - hermes-engine @@ -2095,8 +2095,8 @@ SPEC CHECKSUMS: RNSVG: 8b1a777d54096b8c2a0fd38fc9d5a454332bbb4d RNVectorIcons: 6382277afab3c54658e9d555ee0faa7a37827136 SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d - Yoga: aa3df615739504eebb91925fc9c58b4922ea9a08 + Yoga: 055f92ad73f8c8600a93f0e25ac0b2344c3b07e6 PODFILE CHECKSUM: f382faa8fee81f859a17db3fbe928b4f7e7f2ea0 -COCOAPODS: 1.15.2 +COCOAPODS: 1.14.0 From f9bf571200df5f3f419cc3d5f2cff325f7234cad Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Mon, 17 Feb 2025 16:31:09 +0200 Subject: [PATCH 13/39] chore: enhance inline code documentation for APM module. --- .../reactlibrary/RNInstabugAPMModule.java | 110 +++++++++++++++++- ios/RNInstabug/InstabugAPMBridge.m | 63 ++++++++-- src/modules/APM.ts | 17 ++- 3 files changed, 174 insertions(+), 16 deletions(-) diff --git a/android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java b/android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java index 8b3c3206eb..daaa987e6e 100644 --- a/android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java +++ b/android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java @@ -43,7 +43,9 @@ public String getName() { } /** - * Sets the printed logs priority. Filter to one of the following levels. + * This method is exporting a method + * named `ibgSleep` to be accessible from JavaScript side. When this method is + * called from JavaScript, it (sleeps) the current thread for 3 seconds. */ @ReactMethod public void ibgSleep() { @@ -57,6 +59,14 @@ public void run() { /** * Enables or disables APM. + * + * This function is exporting a method named + * [setEnabled] to be accessible from JavaScript side. When this method is + * called from JavaScript, it will set the `enabled` property of the [APM] class provided by the + * Instabug SDK to the value passed as the `isEnabled` parameter. This property controls whether the + * APM (Application Performance Monitoring) feature of Instabug is enabled or disabled based on the + * boolean value passed to it. + * * @param isEnabled boolean indicating enabled or disabled. */ @ReactMethod @@ -75,6 +85,12 @@ public void run() { /** * Enables or disables app launch tracking. + * + * This function is exporting a method named + * `setAppLaunchEnabled` to be accessible from JavaScript side. When this + * method is called from JavaScript, it will set the `coldAppLaunchEnabled` property of the `IBGAPM` + * class provided by the Instabug SDK to the value passed as the `isEnabled` parameter. + * * @param isEnabled boolean indicating enabled or disabled. */ @ReactMethod @@ -92,7 +108,10 @@ public void run() { } /** - * Ends app launch + * This function is exporting a method named `endAppLaunch` to be + * accessible from JavaScript side. When this method is called from + * JavaScript, it will invoke the `endAppLaunch` method from the [APM] class provided by the + * Instabug SDK. This method is used to signal the end of the app launch process. */ @ReactMethod public void endAppLaunch() { @@ -110,6 +129,15 @@ public void run() { /** * Enables or disables auto UI tracing + * + * This function is exporting a method named + * [setAutoUITraceEnabled] to be accessible from JavaScript side. When this + * method is called from JavaScript, it will set the `autoUITraceEnabled` property of the [APM] + * class provided by the Instabug SDK to the value passed as the `isEnabled` parameter. This property + * controls whether automatic tracing of UI interactions is enabled or disabled within the SDK. By + * toggling this property, you can control whether the SDK captures data related to user interface + * performance and behavior automatically. + * * @param isEnabled boolean indicating enabled or disabled. */ @ReactMethod @@ -281,6 +309,12 @@ public void run() { /** * Starts a UI trace + * + * This function is exporting a method named + * [startUITrace] to be accessible from JavaScript side. When this method is + * called from JavaScript, it will invoke the [startUITrace] method from the [APM] class + * provided by the Instabug SDK to start a new UI trace. + * * @param name string name of the UI trace. */ @ReactMethod @@ -298,7 +332,10 @@ public void run() { } /** - * Ends the current running UI trace + * This function is exporting a method named [endUITrace] to be + * accessible from JavaScript side. When this method is called from + * JavaScript, it will invoke the `endUITrace` method from the []APM] class provided by the Instabug + * SDK. This method is used to terminate the currently active UI trace. */ @ReactMethod public void endUITrace() { @@ -314,6 +351,73 @@ public void run() { }); } + /** + * The `networkLogAndroid` function logs network-related information using APMNetworkLogger in a React + * Native module. + * + * @param requestStartTime The `requestStartTime` parameter in the `networkLogAndroid` method + * represents the timestamp when the network request started. It is of type `double` and is passed as + * a parameter to log network-related information. + * @param requestDuration The `requestDuration` parameter in the `networkLogAndroid` method represents + * the duration of the network request in milliseconds. It indicates the time taken for the request to + * complete from the moment it was initiated until the response was received. This parameter helps in + * measuring the performance of network requests and identifying any potential + * @param requestHeaders requestHeaders is a string parameter that contains the headers of the network + * request. It typically includes information such as the content type, authorization token, and any + * other headers that were sent with the request. + * @param requestBody The `requestBody` parameter in the `networkLogAndroid` method represents the + * body of the HTTP request being logged. It contains the data that is sent as part of the request to + * the server. This could include form data, JSON payload, XML data, or any other content that is + * being transmitted + * @param requestBodySize The `requestBodySize` parameter in the `networkLogAndroid` method represents + * the size of the request body in bytes. It is a double value that indicates the size of the request + * body being sent in the network request. This parameter is used to log information related to the + * network request, including details + * @param requestMethod The `requestMethod` parameter in the `networkLogAndroid` method represents the + * HTTP method used in the network request, such as GET, POST, PUT, DELETE, etc. It indicates the type + * of operation that the client is requesting from the server. + * @param requestUrl The `requestUrl` parameter in the `networkLogAndroid` method represents the URL + * of the network request being logged. It typically contains the address of the server to which the + * request is being made, along with any additional path or query parameters required for the request. + * This URL is essential for identifying the + * @param requestContentType The `requestContentType` parameter in the `networkLogAndroid` method + * represents the content type of the request being made. This could be values like + * "application/json", "application/xml", "text/plain", etc., indicating the format of the data being + * sent in the request body. It helps in specifying + * @param responseHeaders The `responseHeaders` parameter in the `networkLogAndroid` method represents + * the headers of the response received from a network request. These headers typically include + * information such as content type, content length, server information, and any other metadata + * related to the response. The `responseHeaders` parameter is expected to + * @param responseBody The `responseBody` parameter in the `networkLogAndroid` method represents the + * body of the response received from a network request. It contains the data or content sent back by + * the server in response to the request made by the client. This could be in various formats such as + * JSON, XML, HTML + * @param responseBodySize The `responseBodySize` parameter in the `networkLogAndroid` method + * represents the size of the response body in bytes. It is a double value that indicates the size of + * the response body received from the network request. This parameter is used to log information + * related to the network request and response, including + * @param statusCode The `statusCode` parameter in the `networkLogAndroid` method represents the HTTP + * status code of the network request/response. It indicates the status of the HTTP response, such as + * success (200), redirection (3xx), client errors (4xx), or server errors (5xx). This parameter is + * @param responseContentType The `responseContentType` parameter in the `networkLogAndroid` method + * represents the content type of the response received from the network request. It indicates the + * format of the data in the response, such as JSON, XML, HTML, etc. This information is useful for + * understanding how to parse and handle the + * @param errorDomain The `errorDomain` parameter in the `networkLogAndroid` method is used to specify + * the domain of an error, if any occurred during the network request. If there was no error, this + * parameter will be `null`. + * @param w3cAttributes The `w3cAttributes` parameter in the `networkLogAndroid` method is a + * ReadableMap object that contains additional attributes related to W3C external trace. It may + * include the following key-value pairs: + * @param gqlQueryName The `gqlQueryName` parameter in the `networkLogAndroid` method represents the + * name of the GraphQL query being executed. It is a nullable parameter, meaning it can be null if no + * GraphQL query name is provided. This parameter is used to log information related to GraphQL + * queries in the network logging + * @param serverErrorMessage The `serverErrorMessage` parameter in the `networkLogAndroid` method is + * used to pass any error message received from the server during network communication. This message + * can provide additional details about any errors that occurred on the server side, helping in + * debugging and troubleshooting network-related issues. + */ @ReactMethod private void networkLogAndroid(final double requestStartTime, final double requestDuration, diff --git a/ios/RNInstabug/InstabugAPMBridge.m b/ios/RNInstabug/InstabugAPMBridge.m index daea8b4c1a..10d170185d 100644 --- a/ios/RNInstabug/InstabugAPMBridge.m +++ b/ios/RNInstabug/InstabugAPMBridge.m @@ -36,33 +36,55 @@ - (id) init return self; } +// This method is exporting a method +// named `ibgSleep` to be accessible from JavaScript side. When this method is +// called from JavaScript, it (sleeps) the current thread for 3 seconds. RCT_EXPORT_METHOD(ibgSleep) { [NSThread sleepForTimeInterval:3.0f]; - // for (int i = 1; i <= 1000000; i++) - // { - // double value = sqrt(i); - - // printf("%@", [NSNumber numberWithDouble:value]); - // } - // [NSThread sleepForTimeInterval:3.0f]; } +// Enables or disables APM. +// +// This function is exporting a method named +// `setEnabled` to be accessible from JavaScript side. When this method is +// called from JavaScript, it will set the `enabled` property of the `IBGAPM` class provided by the +// Instabug SDK to the value passed as the `isEnabled` parameter. This property controls whether the +// APM (Application Performance Monitoring) feature of Instabug is enabled or disabled based on the +// boolean value passed to it. RCT_EXPORT_METHOD(setEnabled:(BOOL)isEnabled) { IBGAPM.enabled = isEnabled; } +// This function is exporting a method named +// `setAppLaunchEnabled` to be accessible from JavaScript side. When this +// method is called from JavaScript, it will set the `coldAppLaunchEnabled` property of the `IBGAPM` +// class provided by the Instabug SDK to the value passed as the `isEnabled` parameter. RCT_EXPORT_METHOD(setAppLaunchEnabled:(BOOL)isEnabled) { IBGAPM.coldAppLaunchEnabled = isEnabled; } +// This function is exporting a method named `endAppLaunch` to be +// accessible from JavaScript side. When this method is called from +// JavaScript, it will invoke the `endAppLaunch` method from the `IBGAPM` class provided by the +// Instabug SDK. This method is used to signal the end of the app launch process. RCT_EXPORT_METHOD(endAppLaunch) { [IBGAPM endAppLaunch]; } +// This function is exporting a method named +// `setAutoUITraceEnabled` to be accessible from JavaScript side. When this +// method is called from JavaScript, it will set the `autoUITraceEnabled` property of the `IBGAPM` +// class provided by the Instabug SDK to the value passed as the `isEnabled` parameter. This property +// controls whether automatic tracing of UI interactions is enabled or disabled within the SDK. By +// toggling this property, you can control whether the SDK captures data related to user interface +// performance and behavior automatically. RCT_EXPORT_METHOD(setAutoUITraceEnabled:(BOOL)isEnabled) { IBGAPM.autoUITraceEnabled = isEnabled; } +// This method `startExecutionTrace` is exporting a function to be accessible from JavaScript in a +// React Native application. +// Deprecated see [startFlow: (NSString *)name] RCT_EXPORT_METHOD(startExecutionTrace:(NSString *)name :(NSString *)id :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject) { @@ -75,6 +97,8 @@ - (id) init } } +// This method is exporting a function to be accessible from JavaScript side. +// Deprecated see [setFlowAttribute:(NSString *)name :(NSString *)key :(NSString *_Nullable)value] RCT_EXPORT_METHOD(setExecutionTraceAttribute:(NSString *)id :(NSString *)key :(NSString *)value) { IBGExecutionTrace *trace = [traces objectForKey:id]; if (trace != nil) { @@ -82,6 +106,9 @@ - (id) init } } +// This function is exporting a method named +// `endExecutionTrace` to be accessible from JavaScript side. +// Deprecated see [endFlow: (NSString *)name] RCT_EXPORT_METHOD(endExecutionTrace:(NSString *)id) { IBGExecutionTrace *trace = [traces objectForKey:id]; if (trace != nil) { @@ -89,23 +116,45 @@ - (id) init } } +// This function is exporting a method named +// `startFlow` to be accessible from JavaScript side. When this method is +// called from JavaScript, it will invoke the `startFlowWithName:` method from the `IBGAPM` class +// provided by the Instabug SDK. This method is used to start a flow trace with the specified name, +// allowing the SDK to capture and analyze the flow of execution within the application. RCT_EXPORT_METHOD(startFlow: (NSString *)name) { [IBGAPM startFlowWithName:name]; } +// This function is exporting a method named `endFlow` to +// be accessible from JavaScript side. When this method is called from +// JavaScript, it will invoke the `endFlowWithName:` method from the `IBGAPM` class provided by the +// Instabug SDK. This method is used to end a flow trace with the specified name, allowing the SDK to +// capture and analyze the flow of execution within the application. RCT_EXPORT_METHOD(endFlow: (NSString *)name) { [IBGAPM endFlowWithName:name]; } +// The function is exporting a method named `setFlowAttribute` to be accessible from +// JavaScript side. When this method is +// called from JavaScript, it will invoke the `setAttributeForFlowWithName:` method from the `IBGAPM` class +// provided by the Instabug SDK to set a user defined attribute for the currently active flow. RCT_EXPORT_METHOD(setFlowAttribute:(NSString *)name :(NSString *)key :(NSString *_Nullable)value) { [IBGAPM setAttributeForFlowWithName:name key:key value:value]; } +// This function is exporting a method named +// `startUITrace` to be accessible from JavaScript side. When this method is +// called from JavaScript, it will invoke the `startUITraceWithName:` method from the `IBGAPM` class +// provided by the Instabug SDK to start a new UI trace. RCT_EXPORT_METHOD(startUITrace:(NSString *)name) { [IBGAPM startUITraceWithName:name]; } +// This function is exporting a method named `endUITrace` to be +// accessible from JavaScript side. When this method is called from +// JavaScript, it will invoke the `endUITrace` method from the `IBGAPM` class provided by the Instabug +// SDK. This method is used to terminate the currently active UI trace. RCT_EXPORT_METHOD(endUITrace) { [IBGAPM endUITrace]; } diff --git a/src/modules/APM.ts b/src/modules/APM.ts index 664f4473cc..80ef80efb8 100644 --- a/src/modules/APM.ts +++ b/src/modules/APM.ts @@ -13,7 +13,8 @@ export const setEnabled = (isEnabled: boolean) => { }; /** - * Enables or disables APM App Launch + * If APM is enabled, Instabug SDK starts collecting data about the app launch time by default. + * This API is used to give user more control over this behavior. * @param isEnabled */ export const setAppLaunchEnabled = (isEnabled: boolean) => { @@ -21,7 +22,9 @@ export const setAppLaunchEnabled = (isEnabled: boolean) => { }; /** - * Ends app launch + * To define when an app launch is complete, + * such as when it's intractable, use the end app launch API. + * You can then view this data with the automatic cold and hot app launches. */ export const endAppLaunch = () => { NativeAPM.endAppLaunch(); @@ -29,7 +32,7 @@ export const endAppLaunch = () => { /** * Enables or disables APM Network Metric - * @param isEnabled + * @param isEnabled - a boolean indicates either iOS monitoring is enabled or disabled. */ export const setNetworkEnabledIOS = (isEnabled: boolean) => { if (Platform.OS === 'ios') { @@ -114,15 +117,17 @@ export const setFlowAttribute = (name: string, key: string, value?: string | nul }; /** - * Starts a custom trace - * @param name + * Initiates a UI trace with the specified name using a native module. + * @param {string} name - The `name` parameter in the `startUITrace` function is a string that + * represents the name of the UI trace that you want to start. This name is used to identify and track + * the specific UI trace within the application. */ export const startUITrace = (name: string) => { NativeAPM.startUITrace(name); }; /** - * Ends a custom trace + * Ends the currently running custom trace. */ export const endUITrace = () => { NativeAPM.endUITrace(); From 8e03e0c3419d4de5431b2f910e2c3924acf12a13 Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Thu, 20 Feb 2025 12:45:08 +0200 Subject: [PATCH 14/39] chore: apply pr review comments --- ios/RNInstabug/InstabugAPMBridge.m | 67 +++++++----------------------- src/modules/APM.ts | 2 +- 2 files changed, 17 insertions(+), 52 deletions(-) diff --git a/ios/RNInstabug/InstabugAPMBridge.m b/ios/RNInstabug/InstabugAPMBridge.m index 10d170185d..dd77bf130a 100644 --- a/ios/RNInstabug/InstabugAPMBridge.m +++ b/ios/RNInstabug/InstabugAPMBridge.m @@ -36,54 +36,33 @@ - (id) init return self; } -// This method is exporting a method -// named `ibgSleep` to be accessible from JavaScript side. When this method is -// called from JavaScript, it (sleeps) the current thread for 3 seconds. +// Pauses the current thread for 3 seconds. RCT_EXPORT_METHOD(ibgSleep) { [NSThread sleepForTimeInterval:3.0f]; } // Enables or disables APM. -// -// This function is exporting a method named -// `setEnabled` to be accessible from JavaScript side. When this method is -// called from JavaScript, it will set the `enabled` property of the `IBGAPM` class provided by the -// Instabug SDK to the value passed as the `isEnabled` parameter. This property controls whether the -// APM (Application Performance Monitoring) feature of Instabug is enabled or disabled based on the -// boolean value passed to it. RCT_EXPORT_METHOD(setEnabled:(BOOL)isEnabled) { IBGAPM.enabled = isEnabled; } -// This function is exporting a method named -// `setAppLaunchEnabled` to be accessible from JavaScript side. When this -// method is called from JavaScript, it will set the `coldAppLaunchEnabled` property of the `IBGAPM` -// class provided by the Instabug SDK to the value passed as the `isEnabled` parameter. +// Determines either coldAppLaunch is enabled or not. RCT_EXPORT_METHOD(setAppLaunchEnabled:(BOOL)isEnabled) { IBGAPM.coldAppLaunchEnabled = isEnabled; } -// This function is exporting a method named `endAppLaunch` to be -// accessible from JavaScript side. When this method is called from -// JavaScript, it will invoke the `endAppLaunch` method from the `IBGAPM` class provided by the -// Instabug SDK. This method is used to signal the end of the app launch process. +// This method is used to signal the end of the app launch process. RCT_EXPORT_METHOD(endAppLaunch) { [IBGAPM endAppLaunch]; } -// This function is exporting a method named -// `setAutoUITraceEnabled` to be accessible from JavaScript side. When this -// method is called from JavaScript, it will set the `autoUITraceEnabled` property of the `IBGAPM` -// class provided by the Instabug SDK to the value passed as the `isEnabled` parameter. This property -// controls whether automatic tracing of UI interactions is enabled or disabled within the SDK. By -// toggling this property, you can control whether the SDK captures data related to user interface -// performance and behavior automatically. +// Controls whether automatic tracing of UI interactions is enabled or disabled within the SDK. RCT_EXPORT_METHOD(setAutoUITraceEnabled:(BOOL)isEnabled) { IBGAPM.autoUITraceEnabled = isEnabled; } -// This method `startExecutionTrace` is exporting a function to be accessible from JavaScript in a -// React Native application. +// Starts new execution trace with the specified `name`. +// // Deprecated see [startFlow: (NSString *)name] RCT_EXPORT_METHOD(startExecutionTrace:(NSString *)name :(NSString *)id :(RCTPromiseResolveBlock)resolve @@ -97,7 +76,8 @@ - (id) init } } -// This method is exporting a function to be accessible from JavaScript side. +// Sets a user defined attribute for the execution trace. +// // Deprecated see [setFlowAttribute:(NSString *)name :(NSString *)key :(NSString *_Nullable)value] RCT_EXPORT_METHOD(setExecutionTraceAttribute:(NSString *)id :(NSString *)key :(NSString *)value) { IBGExecutionTrace *trace = [traces objectForKey:id]; @@ -106,8 +86,8 @@ - (id) init } } -// This function is exporting a method named -// `endExecutionTrace` to be accessible from JavaScript side. +// Ends execution trace with the specified `name`. +// // Deprecated see [endFlow: (NSString *)name] RCT_EXPORT_METHOD(endExecutionTrace:(NSString *)id) { IBGExecutionTrace *trace = [traces objectForKey:id]; @@ -116,45 +96,30 @@ - (id) init } } -// This function is exporting a method named -// `startFlow` to be accessible from JavaScript side. When this method is -// called from JavaScript, it will invoke the `startFlowWithName:` method from the `IBGAPM` class -// provided by the Instabug SDK. This method is used to start a flow trace with the specified name, +// Starts a flow trace with the specified `name`, // allowing the SDK to capture and analyze the flow of execution within the application. RCT_EXPORT_METHOD(startFlow: (NSString *)name) { [IBGAPM startFlowWithName:name]; } -// This function is exporting a method named `endFlow` to -// be accessible from JavaScript side. When this method is called from -// JavaScript, it will invoke the `endFlowWithName:` method from the `IBGAPM` class provided by the -// Instabug SDK. This method is used to end a flow trace with the specified name, allowing the SDK to -// capture and analyze the flow of execution within the application. +// Ends a flow with the specified `name`. RCT_EXPORT_METHOD(endFlow: (NSString *)name) { [IBGAPM endFlowWithName:name]; } -// The function is exporting a method named `setFlowAttribute` to be accessible from -// JavaScript side. When this method is -// called from JavaScript, it will invoke the `setAttributeForFlowWithName:` method from the `IBGAPM` class -// provided by the Instabug SDK to set a user defined attribute for the currently active flow. +// Sets a user defined attribute for the currently active flow. RCT_EXPORT_METHOD(setFlowAttribute:(NSString *)name :(NSString *)key :(NSString *_Nullable)value) { [IBGAPM setAttributeForFlowWithName:name key:key value:value]; } -// This function is exporting a method named -// `startUITrace` to be accessible from JavaScript side. When this method is -// called from JavaScript, it will invoke the `startUITraceWithName:` method from the `IBGAPM` class -// provided by the Instabug SDK to start a new UI trace. +// Starts a new `UITrace` with the provided `name` parameter, +// allowing the SDK to capture and analyze the UI components within the application. RCT_EXPORT_METHOD(startUITrace:(NSString *)name) { [IBGAPM startUITraceWithName:name]; } -// This function is exporting a method named `endUITrace` to be -// accessible from JavaScript side. When this method is called from -// JavaScript, it will invoke the `endUITrace` method from the `IBGAPM` class provided by the Instabug -// SDK. This method is used to terminate the currently active UI trace. +// Terminates the currently active UI trace. RCT_EXPORT_METHOD(endUITrace) { [IBGAPM endUITrace]; } diff --git a/src/modules/APM.ts b/src/modules/APM.ts index 80ef80efb8..1125a5b409 100644 --- a/src/modules/APM.ts +++ b/src/modules/APM.ts @@ -24,7 +24,7 @@ export const setAppLaunchEnabled = (isEnabled: boolean) => { /** * To define when an app launch is complete, * such as when it's intractable, use the end app launch API. - * You can then view this data with the automatic cold and hot app launches. + * You can then view this data with the automatic cold app launche. */ export const endAppLaunch = () => { NativeAPM.endAppLaunch(); From cde95ffba7b475ab1e39e32dc1d7839bef95cac6 Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Thu, 20 Feb 2025 13:45:04 +0200 Subject: [PATCH 15/39] chore: apply pr review comments --- .../reactlibrary/RNInstabugAPMModule.java | 39 ++----------------- src/modules/APM.ts | 2 +- 2 files changed, 4 insertions(+), 37 deletions(-) diff --git a/android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java b/android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java index daaa987e6e..d75b4f75bb 100644 --- a/android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java +++ b/android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java @@ -43,9 +43,7 @@ public String getName() { } /** - * This method is exporting a method - * named `ibgSleep` to be accessible from JavaScript side. When this method is - * called from JavaScript, it (sleeps) the current thread for 3 seconds. + * Pauses the current thread for 3 seconds. */ @ReactMethod public void ibgSleep() { @@ -60,13 +58,6 @@ public void run() { /** * Enables or disables APM. * - * This function is exporting a method named - * [setEnabled] to be accessible from JavaScript side. When this method is - * called from JavaScript, it will set the `enabled` property of the [APM] class provided by the - * Instabug SDK to the value passed as the `isEnabled` parameter. This property controls whether the - * APM (Application Performance Monitoring) feature of Instabug is enabled or disabled based on the - * boolean value passed to it. - * * @param isEnabled boolean indicating enabled or disabled. */ @ReactMethod @@ -86,11 +77,6 @@ public void run() { /** * Enables or disables app launch tracking. * - * This function is exporting a method named - * `setAppLaunchEnabled` to be accessible from JavaScript side. When this - * method is called from JavaScript, it will set the `coldAppLaunchEnabled` property of the `IBGAPM` - * class provided by the Instabug SDK to the value passed as the `isEnabled` parameter. - * * @param isEnabled boolean indicating enabled or disabled. */ @ReactMethod @@ -108,10 +94,7 @@ public void run() { } /** - * This function is exporting a method named `endAppLaunch` to be - * accessible from JavaScript side. When this method is called from - * JavaScript, it will invoke the `endAppLaunch` method from the [APM] class provided by the - * Instabug SDK. This method is used to signal the end of the app launch process. + * This method is used to signal the end of the app launch process. */ @ReactMethod public void endAppLaunch() { @@ -130,14 +113,6 @@ public void run() { /** * Enables or disables auto UI tracing * - * This function is exporting a method named - * [setAutoUITraceEnabled] to be accessible from JavaScript side. When this - * method is called from JavaScript, it will set the `autoUITraceEnabled` property of the [APM] - * class provided by the Instabug SDK to the value passed as the `isEnabled` parameter. This property - * controls whether automatic tracing of UI interactions is enabled or disabled within the SDK. By - * toggling this property, you can control whether the SDK captures data related to user interface - * performance and behavior automatically. - * * @param isEnabled boolean indicating enabled or disabled. */ @ReactMethod @@ -310,11 +285,6 @@ public void run() { /** * Starts a UI trace * - * This function is exporting a method named - * [startUITrace] to be accessible from JavaScript side. When this method is - * called from JavaScript, it will invoke the [startUITrace] method from the [APM] class - * provided by the Instabug SDK to start a new UI trace. - * * @param name string name of the UI trace. */ @ReactMethod @@ -332,10 +302,7 @@ public void run() { } /** - * This function is exporting a method named [endUITrace] to be - * accessible from JavaScript side. When this method is called from - * JavaScript, it will invoke the `endUITrace` method from the []APM] class provided by the Instabug - * SDK. This method is used to terminate the currently active UI trace. + * This method is used to terminate the currently active UI trace. */ @ReactMethod public void endUITrace() { diff --git a/src/modules/APM.ts b/src/modules/APM.ts index 1125a5b409..92d4013895 100644 --- a/src/modules/APM.ts +++ b/src/modules/APM.ts @@ -24,7 +24,7 @@ export const setAppLaunchEnabled = (isEnabled: boolean) => { /** * To define when an app launch is complete, * such as when it's intractable, use the end app launch API. - * You can then view this data with the automatic cold app launche. + * You can then view this data with the automatic cold app launch. */ export const endAppLaunch = () => { NativeAPM.endAppLaunch(); From 3211f6b556c0423fc6548c56c45faaef8c8b56d0 Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Tue, 25 Feb 2025 18:08:54 +0200 Subject: [PATCH 16/39] chore: add ComplexViews to APM screen --- examples/default/src/components/CustomGap.tsx | 33 +++++++++++++++++++ .../default/src/screens/apm/APMScreen.tsx | 6 +++- 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 examples/default/src/components/CustomGap.tsx diff --git a/examples/default/src/components/CustomGap.tsx b/examples/default/src/components/CustomGap.tsx new file mode 100644 index 0000000000..bf43eb9d48 --- /dev/null +++ b/examples/default/src/components/CustomGap.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { type DimensionValue, View } from 'react-native'; + +// Define the component type with static properties +interface CustomGapComponent extends React.FC<{ height?: DimensionValue; width?: DimensionValue }> { + small: JSX.Element; + smallV: JSX.Element; + smallH: JSX.Element; + large: JSX.Element; + largeV: JSX.Element; + largeH: JSX.Element; +} + +const defaultDimensionValue = 16; + +// Define the CustomGap component +const CustomGap: CustomGapComponent = ({ height, width }) => { + return ( + + ); +}; + +// Assign static properties for predefined gaps +CustomGap.small = ; +CustomGap.large = ; +CustomGap.smallV = ; +CustomGap.largeV = ; +CustomGap.smallH = ; +CustomGap.largeH = ; + +export default CustomGap; diff --git a/examples/default/src/screens/apm/APMScreen.tsx b/examples/default/src/screens/apm/APMScreen.tsx index d63ee65f4f..4502d4f705 100644 --- a/examples/default/src/screens/apm/APMScreen.tsx +++ b/examples/default/src/screens/apm/APMScreen.tsx @@ -3,9 +3,10 @@ import type { HomeStackParamList } from '../../navigation/HomeStack'; import React, { useState } from 'react'; import { ListTile } from '../../components/ListTile'; import { Screen } from '../../components/Screen'; -import { Text, Switch } from 'react-native'; +import { Switch, Text } from 'react-native'; import { APM } from 'instabug-reactnative'; import { showNotification } from '../../utils/showNotification'; +import CustomGap from '../../components/CustomGap'; export const APMScreen: React.FC> = ({ navigation, @@ -21,12 +22,15 @@ export const APMScreen: React.FC Enable APM: + {CustomGap.smallV} + {CustomGap.largeV} APM.endAppLaunch()} /> navigation.navigate('NetworkTraces')} /> navigation.navigate('ExecutionTraces')} /> navigation.navigate('AppFlows')} /> navigation.navigate('WebViews')} /> + navigation.navigate('ComplexViews')} /> ); }; From be4ca2ec404088479f77ddbdc1d9e464560b6afb Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Wed, 26 Feb 2025 14:21:27 +0200 Subject: [PATCH 17/39] chore: fix APM screen layout on android platform --- examples/default/src/screens/apm/APMScreen.tsx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/examples/default/src/screens/apm/APMScreen.tsx b/examples/default/src/screens/apm/APMScreen.tsx index 4502d4f705..3652a95c5e 100644 --- a/examples/default/src/screens/apm/APMScreen.tsx +++ b/examples/default/src/screens/apm/APMScreen.tsx @@ -3,7 +3,7 @@ import type { HomeStackParamList } from '../../navigation/HomeStack'; import React, { useState } from 'react'; import { ListTile } from '../../components/ListTile'; import { Screen } from '../../components/Screen'; -import { Switch, Text } from 'react-native'; +import { StyleSheet, Switch, Text, View } from 'react-native'; import { APM } from 'instabug-reactnative'; import { showNotification } from '../../utils/showNotification'; import CustomGap from '../../components/CustomGap'; @@ -18,13 +18,20 @@ export const APMScreen: React.FC - Enable APM: + + Enable APM: + + {CustomGap.smallV} - - {CustomGap.largeV} APM.endAppLaunch()} /> navigation.navigate('NetworkTraces')} /> navigation.navigate('ExecutionTraces')} /> From d7cdc334cb85d6e866a4b1b1e46b1aaea531e82c Mon Sep 17 00:00:00 2001 From: Andrew Amin Date: Tue, 11 Mar 2025 12:16:22 +0200 Subject: [PATCH 18/39] chore: update CHANGELOG.md and Podfile.lock --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1f28a933f..cb832b3b81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [Unreleased](https://github.com/Instabug/Instabug-React-Native/compare/v14.1.0...dev) + +### Added + +- Add support for Network Spans in network logging module ([#1360](https://github.com/Instabug/Instabug-React-Native/pull/1360)). + ## [14.1.0](https://github.com/Instabug/Instabug-React-Native/compare/v14.0.0...v14.1.0) (January 2, 2025) ### Added From 5451275edf7c075c595a50956d6795bcdb9f8365 Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Sun, 23 Mar 2025 13:32:56 +0200 Subject: [PATCH 19/39] chore(ios): bump sdk to v14.3.0 --- examples/default/ios/Podfile.lock | 6 +++--- ios/native.rb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index 7be549d418..887c06c372 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -31,7 +31,7 @@ PODS: - hermes-engine (0.75.4): - hermes-engine/Pre-built (= 0.75.4) - hermes-engine/Pre-built (0.75.4) - - Instabug (14.1.0) + - Instabug (14.3.0) - instabug-reactnative-ndk (0.1.0): - DoubleConversion - glog @@ -1624,7 +1624,7 @@ PODS: - ReactCommon/turbomodule/core - Yoga - RNInstabug (14.1.0): - - Instabug (= 14.1.0) + - Instabug (= 14.3.0) - React-Core - RNReanimated (3.16.1): - DoubleConversion @@ -2089,7 +2089,7 @@ SPEC CHECKSUMS: ReactCommon: 6a952e50c2a4b694731d7682aaa6c79bc156e4ad RNCClipboard: 2821ac938ef46f736a8de0c8814845dde2dcbdfb RNGestureHandler: 511250b190a284388f9dd0d2e56c1df76f14cfb8 - RNInstabug: 96e629f47c0af2e9455fbcf800d12049f980d873 + RNInstabug: 4e49b8da38b1f6a0fdeca226cec844d553c8d785 RNReanimated: f42a5044d121d68e91680caacb0293f4274228eb RNScreens: c7ceced6a8384cb9be5e7a5e88e9e714401fd958 RNSVG: 8b1a777d54096b8c2a0fd38fc9d5a454332bbb4d diff --git a/ios/native.rb b/ios/native.rb index 4fc710cbe5..5391315284 100644 --- a/ios/native.rb +++ b/ios/native.rb @@ -1,4 +1,4 @@ -$instabug = { :version => '14.1.0' } +$instabug = { :version => '14.3.0' } def use_instabug! (spec = nil) version = $instabug[:version] From 9b02651d881f23c64a36ce434c2b1eb9f9afe92d Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Tue, 4 Mar 2025 13:27:10 +0200 Subject: [PATCH 20/39] fix: add change log --- CHANGELOG.md | 2 ++ .../ios/InstabugTests/InstabugSampleTests.m | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb832b3b81..624ef9b42b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ - Add support for tracing network requests from Instabug to services like Datadog and New Relic ([#1288](https://github.com/Instabug/Instabug-React-Native/pull/1288)) +Add support enable/disable screenshot auto masking. ([#1353](https://github.com/Instabug/Instabug-React-Native/pull/1353)) + ### Changed - Bump Instabug iOS SDK to v14.1.0 ([#1335](https://github.com/Instabug/Instabug-React-Native/pull/1335)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/14.1.0). diff --git a/examples/default/ios/InstabugTests/InstabugSampleTests.m b/examples/default/ios/InstabugTests/InstabugSampleTests.m index 8744ce4eb8..a65549ed48 100644 --- a/examples/default/ios/InstabugTests/InstabugSampleTests.m +++ b/examples/default/ios/InstabugTests/InstabugSampleTests.m @@ -608,5 +608,21 @@ - (void) testIsW3CaughtHeaderEnabled { OCMVerify([mock w3CaughtHeaderEnabled]); } +- (void)testEnableAutoMasking { + id mock = OCMClassMock([Instabug class]); + + NSArray *autoMaskingTypes = [NSArray arrayWithObjects: + [NSNumber numberWithInteger:IBGAutoMaskScreenshotOptionLabels], + [NSNumber numberWithInteger:IBGAutoMaskScreenshotOptionTextInputs], + [NSNumber numberWithInteger:IBGAutoMaskScreenshotOptionMedia], + [NSNumber numberWithInteger:IBGAutoMaskScreenshotOptionMaskNothing], + nil]; + + OCMStub([mock setAutoMaskScreenshots:IBGAutoMaskScreenshotOptionLabels | IBGAutoMaskScreenshotOptionTextInputs | IBGAutoMaskScreenshotOptionMedia | IBGAutoMaskScreenshotOptionMaskNothing]); + + [self.instabugBridge enableAutoMasking:autoMaskingTypes]; + + OCMVerify([mock setAutoMaskScreenshots:IBGAutoMaskScreenshotOptionLabels | IBGAutoMaskScreenshotOptionTextInputs | IBGAutoMaskScreenshotOptionMedia | IBGAutoMaskScreenshotOptionMaskNothing]); +} @end From 6f449e60a24d834e320ee70cc22f74e1635db7f9 Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Wed, 5 Mar 2025 10:56:51 +0200 Subject: [PATCH 21/39] fix: add unreleased in changelog --- CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 624ef9b42b..cb832b3b81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,8 +12,6 @@ - Add support for tracing network requests from Instabug to services like Datadog and New Relic ([#1288](https://github.com/Instabug/Instabug-React-Native/pull/1288)) -Add support enable/disable screenshot auto masking. ([#1353](https://github.com/Instabug/Instabug-React-Native/pull/1353)) - ### Changed - Bump Instabug iOS SDK to v14.1.0 ([#1335](https://github.com/Instabug/Instabug-React-Native/pull/1335)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/14.1.0). From 2f48e35a0179b7bdec479c22358b6398ce063a23 Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Wed, 5 Mar 2025 11:36:22 +0200 Subject: [PATCH 22/39] fix: linting --- .lh/CHANGELOG.md.json | 22 ++++++++++++++ .lh/RNInstabug.podspec.json | 18 ++++++++++++ .lh/examples/default/ios/Podfile.json | 18 ++++++++++++ .lh/examples/default/ios/Podfile.lock.json | 34 ++++++++++++++++++++++ 4 files changed, 92 insertions(+) create mode 100644 .lh/CHANGELOG.md.json create mode 100644 .lh/RNInstabug.podspec.json create mode 100644 .lh/examples/default/ios/Podfile.json create mode 100644 .lh/examples/default/ios/Podfile.lock.json diff --git a/.lh/CHANGELOG.md.json b/.lh/CHANGELOG.md.json new file mode 100644 index 0000000000..35695c8e04 --- /dev/null +++ b/.lh/CHANGELOG.md.json @@ -0,0 +1,22 @@ +{ + "sourceFile": "CHANGELOG.md", + "activeCommit": 0, + "commits": [ + { + "activePatchIndex": 1, + "patches": [ + { + "date": 1742910830249, + "content": "Index: \n===================================================================\n--- \n+++ \n" + }, + { + "date": 1742910839291, + "content": "Index: \n===================================================================\n--- \n+++ \n@@ -3,13 +3,10 @@\n ## [Unreleased](https://github.com/Instabug/Instabug-React-Native/compare/v14.1.0...dev)\n \n ### Changed\n \n-<<<<<<< HEAD\n - Bump Instabug iOS SDK to v14.3.0 ([#1367](https://github.com/Instabug/Instabug-React-Native/pull/1367)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/14.3.0).\n \n-=======\n->>>>>>> f4b3fcaa (fix: linting)\n ## [14.1.0](https://github.com/Instabug/Instabug-React-Native/compare/v14.0.0...v14.1.0) (January 2, 2025)\n \n ### Added\n \n" + } + ], + "date": 1742910830249, + "name": "Commit-0", + "content": "# Changelog\n\n## [Unreleased](https://github.com/Instabug/Instabug-React-Native/compare/v14.1.0...dev)\n\n### Changed\n\n- Bump Instabug iOS SDK to v14.3.0 ([#1367](https://github.com/Instabug/Instabug-React-Native/pull/1367)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/14.3.0).\n\n## [14.1.0](https://github.com/Instabug/Instabug-React-Native/compare/v14.0.0...v14.1.0) (January 2, 2025)\n\n### Added\n\n- Add support for tracing network requests from Instabug to services like Datadog and New Relic ([#1288](https://github.com/Instabug/Instabug-React-Native/pull/1288))\n\n### Changed\n\n- Bump Instabug iOS SDK to v14.1.0 ([#1335](https://github.com/Instabug/Instabug-React-Native/pull/1335)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/14.1.0).\n- Bump Instabug Android SDK to v14.1.0 ([#1335](https://github.com/Instabug/Instabug-React-Native/pull/1335)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v14.1.0).\n\n## [14.0.0](https://github.com/Instabug/Instabug-React-Native/compare/v13.4.0...14.0.0) (November 19, 2024)\n\n### Added\n\n- Add support for opting into session syncing ([#1292](https://github.com/Instabug/Instabug-React-Native/pull/1292)).\n\n### Changed\n\n- Bump Instabug iOS SDK to v14.0.0 ([#1312](https://github.com/Instabug/Instabug-React-Native/pull/1312)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/14.0.0).\n- Bump Instabug Android SDK to v14.0.0 ([#1312](https://github.com/Instabug/Instabug-React-Native/pull/1312)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v14.0.0).\n\n### Added\n\n- Exclude DEV server from network logs ([#1307](https://github.com/Instabug/Instabug-React-Native/pull/1307)).\n\n### Fixed\n\n- Replace thrown errors with logs ([#1220](https://github.com/Instabug/Instabug-React-Native/pull/1220))\n\n## [13.4.0](https://github.com/Instabug/Instabug-React-Native/compare/v13.3.0...v13.4.0) (October 2, 2024)\n\n### Added\n\n- Add support for Expo Router navigation tracking ([#1270](https://github.com/Instabug/Instabug-React-Native/pull/1270)).\n- Enhance the network interceptor to capture more client error messages ([#1257](https://github.com/Instabug/Instabug-React-Native/pull/1257)).\n\n### Changed\n\n- Bump Instabug iOS SDK to v13.4.2 ([#1285](https://github.com/Instabug/Instabug-React-Native/pull/1285)). See release notes for [13.4.0](https://github.com/Instabug/Instabug-iOS/releases/tag/13.4.0), [13.4.1](https://github.com/Instabug/Instabug-iOS/releases/tag/13.4.1) and [13.4.2](https://github.com/Instabug/Instabug-iOS/releases/tag/13.4.2).\n- Bump Instabug Android SDK to v13.4.1 ([#1285](https://github.com/Instabug/Instabug-React-Native/pull/1285)). See release notes for [13.4.0](https://github.com/Instabug/Instabug-Android/releases/tag/v13.4.0) and [13.4.1](https://github.com/Instabug/Instabug-Android/releases/tag/v13.4.1).\n\n### Fixed\n\n- Fix an issue with JavaScript fatal crashes on iOS causing them to be reported as native iOS crashes instead. ([#1290](https://github.com/Instabug/Instabug-React-Native/pull/1290)).\n- Correctly resolve the flavor path when uploading sourcemaps on Android. ([#1225](https://github.com/Instabug/Instabug-React-Native/pull/1225)).\n- Drop non-error objects reported as crashes since they don't have a stack trace ([#1279](https://github.com/Instabug/Instabug-React-Native/pull/1279)).\n- Fix APM network logging on iOS when the response body is missing or empty. ([#1273](https://github.com/Instabug/Instabug-React-Native/pull/1273)).\n\n## [13.3.0](https://github.com/Instabug/Instabug-React-Native/compare/v13.2.0...v13.3.0) (August 4, 2024)\n\n### Added\n\n- Add support for Feature Flags APIs `Instabug.addFeatureFlags`, `Instabug.removeFeatureFlags` and `Instabug.clearAllFeatureFlags` ([#1230](https://github.com/Instabug/Instabug-React-Native/pull/1230)).\n- Export `uploadSourcemaps` and `uploadSoFiles` utilities in the `instabug-reactnative/upload` sub-package for usage in custom Node.js upload scripts ([#1252](https://github.com/Instabug/Instabug-React-Native/pull/1252)).\n\n### Changed\n\n- Bump Instabug Android SDK to v13.3.0 ([#1261](https://github.com/Instabug/Instabug-React-Native/pull/1261)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v13.3.0).\n- Bump Instabug iOS SDK to v13.3.0 ([#1262](https://github.com/Instabug/Instabug-React-Native/pull/1262)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/13.3.0).\n\n### Deprecated\n\n- Deprecate Experiments APIs `Instabug.addExperiments`, `Instabug.removeExperiments` and `Instabug.clearAllExperiments` in favor of the new Feature Flags APIs ([#1230](https://github.com/Instabug/Instabug-React-Native/pull/1230)).\n\n### Fixed\n\n- Fix APM network logging on Android ([#1253](https://github.com/Instabug/Instabug-React-Native/pull/1253)).\n- Fix an OOM (out-of-memory) crash while saving network logs on Android ([#1244](https://github.com/Instabug/Instabug-React-Native/pull/1244)).\n\n## [13.2.0](https://github.com/Instabug/Instabug-React-Native/compare/v13.1.1...v13.2.0) (July 7, 2024)\n\n### Changed\n\n- Bump Instabug Android SDK to v13.2.0 ([#1245](https://github.com/Instabug/Instabug-React-Native/pull/1245)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v13.2.0).\n- Bump Instabug iOS SDK to v13.2.0 ([#1246](https://github.com/Instabug/Instabug-React-Native/pull/1246)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/13.2.0).\n\n### Fixed\n\n- Change parameters used inside inner classes to `final` in Android code to maintain compatibility with Java 7 and earlier ([#1239](https://github.com/Instabug/Instabug-React-Native/pull/1239)).\n\n## [13.1.1](https://github.com/Instabug/Instabug-React-Native/compare/v13.0.5...v13.1.1) (June 6, 2024)\n\n### Added\n\n- Add support for passing a grouping fingerprint, error level, and user attributes to the `CrashReporting.reportError` non-fatals API ([#1194](https://github.com/Instabug/Instabug-React-Native/pull/1194)).\n\n### Changed\n\n- Bump Instabug iOS SDK to v13.1.0 ([#1227](https://github.com/Instabug/Instabug-React-Native/pull/1227)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/13.1.0).\n- Bump Instabug android SDK to v13.1.1 ([#1228](https://github.com/Instabug/Instabug-React-Native/pull/1228)). [See release notes](https://github.com/Instabug/android/releases/tag/v13.1.0).\n\n### Fixed\n\n- Read `INSTABUG_APP_TOKEN` from system environment when there is no default value ([#1232](https://github.com/Instabug/Instabug-React-Native/pull/1232)).\n\n## [13.0.5](https://github.com/Instabug/Instabug-React-Native/compare/v13.0.4...v13.0.5) (May 18, 2024)\n\n### Changed\n\n- Bump Instabug iOS SDK to v13.0.5 ([#1213](https://github.com/Instabug/Instabug-React-Native/pull/1213)). [See release notes](https://github.com/instabug/instabug-ios/releases/tag/13.0.5).\n\n## [13.0.4](https://github.com/Instabug/Instabug-React-Native/compare/v13.0.0...v13.0.4) (May 14, 2024)\n\n### Changed\n\n- Support reading environment variables from `ios/.xcode.env` and `ios/.xcode.env.local` files when present in the iOS source maps upload script ([#1200](https://github.com/Instabug/Instabug-React-Native/pull/1200)).\n- Bump Instabug Android SDK to v13.0.3 ([#1206](https://github.com/Instabug/Instabug-React-Native/pull/1206)). [See release notes](https://github.com/Instabug/android/releases/tag/v13.0.3).\n- Bump Instabug iOS SDK to v13.0.3 ([#1208](https://github.com/Instabug/Instabug-React-Native/pull/1208)). [See release notes](https://github.com/instabug/instabug-ios/releases/tag/13.0.3).\n\n## [13.0.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.9.0...v13.0.0) (April 19, 2024)\n\n### Added\n\n- Add `Instabug.willRedirectToStore` API for use in custom app rating prompts ([#1186](https://github.com/Instabug/Instabug-React-Native/pull/1186)).\n- Add support for App Flows APIs `APM.startFlow`, `APM.setFlowAttribute` and `APM.endFlow` ([#1138](https://github.com/Instabug/Instabug-React-Native/pull/1138)).\n\n### Changed\n\n- Bump Instabug iOS SDK to v13.0.0 ([#1189](https://github.com/Instabug/Instabug-React-Native/pull/1189)). [See release notes](https://github.com/instabug/instabug-ios/releases/tag/13.0.0).\n- Bump Instabug Android SDK to v13.0.0 ([#1188](https://github.com/Instabug/Instabug-React-Native/pull/1188)). [See release notes](https://github.com/Instabug/android/releases/tag/v13.0.0).\n\n### Deprecated\n\n- Deprecate Execution Traces APIs `APM.startExecutionTrace`, `Trace.end` and `Trace.setAttribute` in favor of the new App Flows APIs ([#1138](https://github.com/Instabug/Instabug-React-Native/pull/1138)).\n\n## [12.9.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.8.0...12.9.0)(April 2, 2024)\n\n### Added\n\n- Adds symbol files upload script ([#1137](https://github.com/Instabug/Instabug-React-Native/pull/1137))\n- Support enabling NDK crash capturing on Android ([#1132](https://github.com/Instabug/Instabug-React-Native/pull/1132)).\n\n### Changed\n\n- Bump Instabug Android SDK to v12.9.0 ([#1168](https://github.com/Instabug/Instabug-React-Native/pull/1168)). [See release notes](https://github.com/Instabug/android/releases/tag/v12.9.0).\n- Bump Instabug iOS SDK to v12.9.0 ([#1168](https://github.com/Instabug/Instabug-React-Native/pull/1168)). [See release notes](https://github.com/instabug/instabug-ios/releases/tag/12.9.0).\n\n### Fixed\n\n- Remove the use of the nullish coalescing assignment operator (`??=`) causing a syntax error with older TypeScript versions ([#1166](https://github.com/Instabug/Instabug-React-Native/pull/1166)), closes [#1161\n ](https://github.com/Instabug/Instabug-React-Native/issues/1161).\n\n## [12.8.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.7.1...v12.8.0) (February 25, 2024)\n\n### Added\n\n- Add `SessionReplay.getSessionReplayLink` API which retrieves the current session's replay link ([#1142](https://github.com/Instabug/Instabug-React-Native/pull/1142)).\n- Support setting the Code Push version after SDK initialization ([#1143](https://github.com/Instabug/Instabug-React-Native/pull/1143)).\n\n### Changed\n\n- Bump Instabug Android SDK to v12.8.0 ([#1149](https://github.com/Instabug/Instabug-React-Native/pull/1149)). [See release notes](https://github.com/Instabug/android/releases/tag/v12.8.0).\n\n## [12.7.1](https://github.com/Instabug/Instabug-React-Native/compare/v12.7.0...v12.7.1) (February 15, 2024)\n\n### Changed\n\n- Bump Instabug Android SDK to v12.7.1 ([#1134](https://github.com/Instabug/Instabug-React-Native/pull/1134)). [See release notes](https://github.com/Instabug/android/releases/tag/v12.7.1).\n\n## [12.7.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.6.0...v12.7.0) (February 10, 2024)\n\n### Added\n\n- Support user identification using ID ([#1115](https://github.com/Instabug/Instabug-React-Native/pull/1115)).\n- Add support for user steps on Android ([#1109](https://github.com/Instabug/Instabug-React-Native/pull/1109)).\n\n### Changed\n\n- Bump Instabug iOS SDK to v12.7.0 ([#1125](https://github.com/Instabug/Instabug-React-Native/pull/1125)). [See release notes](https://github.com/instabug/instabug-ios/releases/tag/12.7.0).\n- Bump Instabug Android SDK to v12.7.0 ([#1126](https://github.com/Instabug/Instabug-React-Native/pull/1126)). [See release notes](https://github.com/Instabug/android/releases/tag/v12.7.0).\n\n### Fixed\n\n- Fix an Android `NullPointerException` crash in private views APIs ([#1121](https://github.com/Instabug/Instabug-React-Native/pull/1121)), closes [#514](https://github.com/Instabug/Instabug-React-Native/issues/514).\n\n## [12.6.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.5.0...v12.6.0) (January 14, 2024)\n\n### Changed\n\n- Bump Instabug iOS SDK to v12.6.0 ([#1095](https://github.com/Instabug/Instabug-React-Native/pull/1095)). [See release notes](https://github.com/instabug/instabug-ios/releases/tag/12.6.0).\n- Bump Instabug Android SDK to v12.6.0 ([#1096](https://github.com/Instabug/Instabug-React-Native/pull/1096)). [See release notes](https://github.com/Instabug/android/releases/tag/v12.6.0).\n\n### Added\n\n- Add support for code push ([#1079](https://github.com/Instabug/Instabug-React-Native/pull/1079)).\n\n## [12.5.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.4.0...v12.5.0) (January 9, 2024)\n\n### Changed\n\n- Bump Instabug iOS SDK to v12.5.0 ([#1085](https://github.com/Instabug/Instabug-React-Native/pull/1085)). [See release notes](https://github.com/instabug/instabug-ios/releases/tag/12.5.0).\n- Bump Instabug Android SDK to v12.5.1 ([#1088](https://github.com/Instabug/Instabug-React-Native/pull/1085)). See release notes for [v12.5.0](https://github.com/Instabug/android/releases/tag/v12.5.0) and [v12.5.1](https://github.com/Instabug/android/releases/tag/v12.5.1).\n\n### Fixed\n\n- Fix a delay issue in reporting the 'Current View' that resulted in displaying outdated values ([#1080](https://github.com/Instabug/Instabug-React-Native/pull/1080)).\n\n## [12.4.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.2.0...v12.4.0) (December 7, 2023)\n\n### Changed\n\n- Bump Instabug iOS SDK to v12.4.0 ([#1074](https://github.com/Instabug/Instabug-React-Native/pull/1074)). See release notes for [v12.3.0](https://github.com/instabug/instabug-ios/releases/tag/12.3.0) and [v12.4.0](https://github.com/instabug/instabug-ios/releases/tag/12.4.0).\n- Bump Instabug Android SDK to v12.4.1 ([#1076](https://github.com/Instabug/Instabug-React-Native/pull/1076)). See release notes for [v12.3.0](https://github.com/Instabug/android/releases/tag/v12.3.0), [v12.3.1](https://github.com/Instabug/android/releases/tag/v12.3.1), [v12.4.0](https://github.com/Instabug/android/releases/tag/v12.4.0) and [v12.4.1](https://github.com/Instabug/android/releases/tag/v12.4.1).\n\n### Fixed\n\n- Fix an issue with `Instabug.init` on Android causing the app to crash while trying to get the current `Application` instance through the current activity which can be `null` in some cases by utilizing the React context instead ([#1069](https://github.com/Instabug/Instabug-React-Native/pull/1069)).\n- Fix an issue with unhandled JavaScript crashes not getting linked with the current session causing inaccurate session metrics ([#1071](https://github.com/Instabug/Instabug-React-Native/pull/1071)).\n\n## [12.2.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.1.0...v12.2.0) (November 14, 2023)\n\n### Added\n\n- Add an iOS-side init API which allows capturing crashes that happen early in the app lifecycle and before the JavaScript code has started ([#1056](https://github.com/Instabug/Instabug-React-Native/pull/1056)).\n\n### Changed\n\n- Bump Instabug iOS SDK to v12.2.0 ([#1053](https://github.com/Instabug/Instabug-React-Native/pull/1053)). [See release notes](https://github.com/instabug/instabug-ios/releases/tag/12.2.0).\n- Bump Instabug Android SDK to v12.2.0 ([#1052](https://github.com/Instabug/Instabug-React-Native/pull/1052)). [See release notes](https://github.com/Instabug/android/releases/tag/v12.2.0).\n\n### Fixed\n\n- Fix an issue with Android Gradle Plugin namespace support required for React Native 0.73 and backward compatibility with previous versions ([#1044](https://github.com/Instabug/Instabug-React-Native/pull/1044)).\n- Fix an issue with unhandled JavaScript crashes being reported as native iOS crashes ([#1054](https://github.com/Instabug/Instabug-React-Native/pull/1054))\n- Re-enable screenshot capturing for Crash Reporting and Session Replay by removing redundant mapping ([#1055](https://github.com/Instabug/Instabug-React-Native/pull/1055)).\n\n## [12.1.0](https://github.com/Instabug/Instabug-React-Native/compare/v11.14.0...v12.1.0) (October 3, 2023)\n\n### Added\n\n- Add support for Session Replay, which includes capturing session details, visual reproduction of sessions as well as support for user steps, network and Instabug logs. ([#1034](https://github.com/Instabug/Instabug-React-Native/pull/1034)).\n\n### Changed\n\n- **BREAKING** Remove deprecated APIs ([#1027](https://github.com/Instabug/Instabug-React-Native/pull/1027)). See migration guide for more details.\n- Bump Instabug iOS SDK to v12.1.0 ([#1031](https://github.com/Instabug/Instabug-React-Native/pull/1031)). See release notes for [v12.0.0](https://github.com/instabug/instabug-ios/releases/tag/12.0.0) and [v12.1.0](https://github.com/instabug/instabug-ios/releases/tag/12.1.0).\n- Bump Instabug Android SDK to v12.1.0 ([#1032](https://github.com/Instabug/Instabug-React-Native/pull/1032)). See release notes for [v12.0.0](https://github.com/Instabug/Instabug-Android/releases/tag/v12.0.0), [v12.0.1](https://github.com/Instabug/Instabug-Android/releases/tag/v12.0.1) and [v12.1.0](https://github.com/Instabug/Instabug-Android/releases/tag/v12.1.0).\n\n## [11.14.0](https://github.com/Instabug/Instabug-React-Native/compare/v11.13.0...11.14.0) (September 15, 2023)\n\n### Added\n\n- Add support for automatic capturing of unhandled Promise rejection crashes ([#1014](https://github.com/Instabug/Instabug-React-Native/pull/1014)).\n- Add new strings (`StringKey.discardAlertStay` and `StringKey.discardAlertDiscard`) for overriding the discard alert buttons for consistency between iOS and Android ([#1001](https://github.com/Instabug/Instabug-React-Native/pull/1001)).\n- Add a new string (`StringKey.reproStepsListItemNumberingTitle`) for overriding the repro steps list item (screen) title for consistency between iOS and Android ([#1002](https://github.com/Instabug/Instabug-React-Native/pull/1002)).\n- Add support for RN version 0.73 by updating the `build.gradle` file with the `namespace` ([#1004](https://github.com/Instabug/Instabug-React-Native/pull/1004))\n- Add native-side init API which can be used to catch and report startup crashes on android. ([#1012](https://github.com/Instabug/Instabug-React-Native/pull/1012))\n- Add the new repro steps configuration API `Instabug.setReproStepsConfig` ([#1024](https://github.com/Instabug/Instabug-React-Native/pull/1024)).\n\n### Changed\n\n- Bump Instabug iOS SDK to v11.14.0 ([#1020](https://github.com/Instabug/Instabug-React-Native/pull/1020)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/11.14.0).\n- Bump Instabug Android SDK to v11.14.0 ([#1019](https://github.com/Instabug/Instabug-React-Native/pull/1019)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v11.14.0).\n\n### Deprecated\n\n- Deprecate the old `StringKey.discardAlertCancel` and `StringKey.discardAlertAction` string keys for overriding the discard alert buttons as they had inconsistent behavior between iOS and Android ([#1001](https://github.com/Instabug/Instabug-React-Native/pull/1001)).\n- Deprecate the old `StringKey.reproStepsListItemTitle` string key for overriding the repro steps list item (screen) title as it had inconsistent behavior between iOS and Android ([#1002](https://github.com/Instabug/Instabug-React-Native/pull/1002)).\n- Deprecate `Instabug.setReproStepsMode` in favor of the new `Instabug.setReproStepsConfig` ([#1024](https://github.com/Instabug/Instabug-React-Native/pull/1024)).\n- Deprecate the old `StringKey.invalidCommentMessage` and `StringKey.invalidCommentTitle` in favor of `StringKey.insufficientContentMessage` and `StringKey.insufficientContentTitle` ([#1026](https://github.com/Instabug/Instabug-React-Native/pull/1026)).\n\n## [11.13.0](https://github.com/Instabug/Instabug-React-Native/compare/v11.12.0...v11.13.0) (July 10, 2023)\n\n### Changed\n\n- Bump Instabug iOS SDK to v11.13.3 ([#997](https://github.com/Instabug/Instabug-React-Native/pull/997)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/11.13.3).\n- Bump Instabug Android SDK to v11.13.0 ([#996](https://github.com/Instabug/Instabug-React-Native/pull/996)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v11.13.0).\n\n### Fixed\n\n- Fix an issue with the Android sourcemaps upload Gradle task getting recreated when both `bundleReleaseJsAndAssets` and `createBundleReleaseJsAndAssets` tasks exist in the same Android project ([#991](https://github.com/Instabug/Instabug-React-Native/pull/991)), closes [#989](https://github.com/Instabug/Instabug-React-Native/issues/989).\n- Fix an issue with JaCoCo gradle plugin replacing the `enabled` method with `required` prop to prevent gradle scripts breaking on version `0.72` ([#995](https://github.com/Instabug/Instabug-React-Native/pull/995)), closes [#994](https://github.com/Instabug/Instabug-React-Native/issues/994).\n\n## [11.12.0](https://github.com/Instabug/Instabug-React-Native/compare/v11.10.0...11.12.0) (May 30, 2023)\n\n### Changed\n\n- Bump Instabug Android SDK to v11.12.0 ([#985](https://github.com/Instabug/Instabug-React-Native/pull/985)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v11.12.0).\n- Bump Instabug iOS SDK to v11.12.0 ([#986](https://github.com/Instabug/Instabug-React-Native/pull/986)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/11.12.0).\n\n### Deprecated\n\n- Deprecate `instabugUploadEnable` gradle property to disable Android sourcemaps auto upload in favor of `INSTABUG_SOURCEMAPS_UPLOAD_DISABLE` env variable ([#983](https://github.com/Instabug/Instabug-React-Native/pull/983)).\n\n### Fixed\n\n- Fix an issue with unhandled JavaScript crashes being reported as native Android crashes ([#980](https://github.com/Instabug/Instabug-React-Native/pull/980)).\n- Fix an issue with the Android sourcemaps upload script, causing the build to fail on older versions of Gradle ([#970](https://github.com/Instabug/Instabug-React-Native/pull/970)), closes [#969](https://github.com/Instabug/Instabug-React-Native/issues/969).\n- Fix an issue with the Android sourcemaps upload script, causing the build to fail when using product flavors ([#975](https://github.com/Instabug/Instabug-React-Native/pull/975)), closes [#974](https://github.com/Instabug/Instabug-React-Native/issues/974).\n- Fix an issue with the network interceptor reverting the user's changes to `XMLHttpRequest` after disabling network logging ([#984](https://github.com/Instabug/Instabug-React-Native/pull/984)), closes [#981](https://github.com/Instabug/Instabug-React-Native/issues/981).\n\n## [11.10.0](https://github.com/Instabug/Instabug-React-Native/compare/v11.9.1...11.10.0) (April 20, 2023)\n\n### Added\n\n- Add support for Android automatic source map file upload on Windows; this requires setting the `INSTABUG_APP_TOKEN` environment variable ([#938](https://github.com/Instabug/Instabug-React-Native/pull/938)).\n\n### Changed\n\n- Bump Instabug Android SDK to v11.11.0 ([#963](https://github.com/Instabug/Instabug-React-Native/pull/963)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v11.11.0).\n- Bump Instabug iOS SDK to v11.10.1 ([#964](https://github.com/Instabug/Instabug-React-Native/pull/964)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/11.10.1).\n- Return a `Promise` from the below APIs ([#948](https://github.com/Instabug/Instabug-React-Native/pull/948)):\n\n - `Instabug.getTags`\n - `Instabug.getUserAttribute`\n - `Instabug.getAllUserAttributes`\n - `Replies.hasChats`\n - `Replies.getUnreadRepliesCount`\n - `Surveys.getAvailableSurveys`\n - `Surveys.hasRespondedToSurvey`\n\n You should not pass it a callback but use the returned `Promise` as follows:\n\n ```js\n const tags = await Instabug.getTags();\n ```\n\n- Improve release variant's build time on Android, by using the react-native-generated source map file, instead of generating it within our scripts ([#938](https://github.com/Instabug/Instabug-React-Native/pull/938)).\n- Improve debug variant's build time on iOS, by disabling automatic source map file uploads ([#942](https://github.com/Instabug/Instabug-React-Native/pull/942)).\n\n### Deprecated\n\n- Deprecate the callback parameter in the aforementioned methods ([#948](https://github.com/Instabug/Instabug-React-Native/pull/948)).\n\n## [11.9.1](https://github.com/Instabug/Instabug-React-Native/compare/v11.9.0...v11.9.1) (March 01, 2023)\n\n### Changed\n\n- Re-export `NetworkData` type ([#932](https://github.com/Instabug/Instabug-React-Native/pull/932)), closes [#930](https://github.com/Instabug/Instabug-React-Native/issues/930).\n\n### Fixed\n\n- Fix a TS compilation error due to a broken entry point path ([#931](https://github.com/Instabug/Instabug-React-Native/pull/931)), closes [#930](https://github.com/Instabug/Instabug-React-Native/issues/930).\n\n## 11.9.0 (2023-02-20)\n\n- Bumps Instabug Android SDK to v11.9.0.\n- Bumps Instabug iOS SDK to v11.9.0.\n- Adds the new `Instabug.init` API to start the SDK as follows:\n ```js\n Instabug.init({\n token: '',\n invocationEvents: [InvocationEvent.floatingButton],\n debugLogsLevel: LogLevel.verbose,\n });\n ```\n- Adds monorepo support for source maps automatic upload scripts.\n- Adds gradle and ruby files to integrate native SDKs within exiting native apps. See [#919](https://github.com/Instabug/Instabug-React-Native/pull/919) for more info.\n- Deprecates all module-enums (e.g. `Instabug.invocationEvent`) in favour of standalone-enums (e.g. `InvocationEvent`). See [#914](https://github.com/Instabug/Instabug-React-Native/pull/914) for more info and the detailed list of Enums.\n- Deprecates `Instabug.start` in favour of `Instabug.init`.\n- Deprecates `Instabug.setDebugEnabled`, `Instabug.setSdkDebugLogsLevel`, and `APM.setLogLevel` in favour of `debugLogsLevel` property of `Instabug.init`.\n- Deprecates `Instabug.isRunningLive` API.\n- Fixes external global error handlers not being called after initializing Instabug.\n- Fixes `BugReporting.setDidSelectPromptOptionHandler` on iOS.\n- Exports native Android SDK using `api` instead of `implementation`.\n\n## 11.6.0 (2022-12-29)\n\n- Bumps Instabug Android SDK to v11.7.0\n- Bumps Instabug iOS SDK to v11.6.0\n- Adds new string keys: insufficientContentMessage and insufficientContentTitle\n- Adds missing mapping for some existing keys if relevant to the other platform\n- Removes the string key: video\n- Deprecates the legacy API callPrivateApi\n\n## 11.5.1 (2022-12-14)\n\n- Deprecates CrashReporting.reportJSException in favour of a new strongly typed API: CrashReporting.reportError\n- Fixes Survey interface export causing a build error with certain babel versions\n\n## 11.5.0 (2022-11-28)\n\n- Bumps Instabug Android SDK to v11.6.0\n- Bumps Instabug iOS SDK to v11.5.0\n- Adds first-class TypeScript support\n- Adds Romanian locale support\n- Adds BugReporting.setDisclaimerText API\n- Adds BugReporting.setCommentMinimumCharacterCount API\n- Deprecates Instabug.enable and Instabug.disable APIs in favour of a new API Instabug.setEnabled, which works on both platforms\n- Fixes a compilation error on Android projects without buildToolsVersion property set\n- Fixes an issue with Hermes source maps generation script on React Native versions prior to 0.65.0\n\n## 11.3.0 (2022-10-11)\n\n- Bumps Instabug Android SDK to v11.5.1\n- Bumps Instabug iOS SDK to v11.3.0\n- Uses Cocoapods for Instabug iOS SDK\n- Fixes a compilation error on projects with Java version prior to 8.\n\n## 11.2.0 (2022-09-19)\n\n- Bumps Instabug Android SDK to v11.4.1\n- Bumps Instabug iOS SDK to v11.2.0\n- React Native 0.69 support\n- Bumps the minimum supported React Native version to 0.60.0\n- Drops manual linking support\n- Adjusts source maps auto upload script on Android to support the bundled Hermes in React Native v0.69\n- Fixes an issue with Hermes source maps generation script causing JS crashes on Android not getting deobfuscated correctly\n- Adds support for iOS source maps auto upload when Hermes is enabled\n\n## 11.0.2 (2022-07-20)\n\n- Fixes a crash that occurs when logging some failed network requests\n\n## 11.0.1 (2022-06-13)\n\n- Fixes an issue with network responses of type JSON not getting logged\n- Fixes an issue that may cause the android build to fail\n- Fixes an issue with iOS autolinking that causes the user local path to be referenced in xcode\n\n## 11.0.0 (2022-06-07)\n\n- Bumps Instabug native SDKs to v11\n- Adds the ability to initialize the Android SDK from JavaScript. Check the migration guide referenced in our docs\n- Adds the ability to opt out of iOS source maps auto upload through the INSTABUG_SOURCEMAPS_UPLOAD_DISABLE env variable\n- Adds dynamic entry file support through the INSTABUG_ENTRY_FILE env variable\n- Adds the string keys for Repro Steps\n- Adds the new APIs: Instabug.addPrivateView and Instabug.removePrivateView\n- Deprecates Instabug.setPrivateView in favor of the newly introduced APIs\n- Removes the deprecated APIs. Check the migration guide referenced in our docs\n- Removes Surveys.setThresholdForReshowingSurveyAfterDismiss\n- Removes the string keys: surveysCustomThanksTitle and surveysCustomThanksSubtitle\n- Renames BugReporting.setAutoScreenRecordingMaxDuration to BugReporting.setAutoScreenRecordingDurationIOS to target iOS only\n- Fixes an issue with the setRequestFilterExpression API not working with Hermes\n- Fixes an issue with the swipe invocation event not working on Android\n\n## 10.13.0 (2022-03-17)\n\n- Adds Instabug Experiments APIs\n- Adds defensive type checking in Instabug logging APIs\n- Bumps Instabug iOS SDK to v10.11.9\n- Bumps Instabug Android SDK to v10.13.0\n- Adapts the strict requirement of newer Expo versions to use the React header with the iOS import statements\n- Fixes an issue with GraphQL requests not being grouped correctly\n- Excludes unnecessary files from the published npm package\n\n## 10.11.0 (2021-12-23)\n\n- Adds GraphQL support for APM network traces with proper grouping\n- Adds APM.endAppLaunch API\n- Bumps Instabug native SDKs to v10.11\n- Fixes an issue with iOS sourcemap upload that causes the build to fail\n\n## 10.9.1 (2021-10-13)\n\n- Bumps Instabug Android SDK to v10.9.1\n- Bumps Instabug iOS SDK to v10.9.3\n- Fixes an issue with network requests not getting logged in v10.9.0 on iOS\n\n## 10.9.0 (2021-09-30)\n\n- Bumps Instabug native SDKs to v10.9\n- Fixes an issue with network header value formatting\n- Replaces the defaults tool with PlistBuddy for reading plist files\n- Enhances API documentation for TypeScript\n\n## v10.8.1 (2021-08-25)\n\n- Fixes a crash that occurs with network requests on slow network connectivity in v10.8\n- Fixes an issue with parseErrorStack whose signature was changed on RN 0.64\n\n## v10.8.0 (2021-08-04)\n\n- Bumps Instabug native SDKs to v10.8\n- Adds string keys for the discard attachment prompt dialog.\n- Fixes Autolinking on iOS.\n\n## v10.4.0 (2021-05-10)\n\n- Migrates iOS to use XCFramework\n- Bumps Instabug native SDKs to v10.4\n- Fixes crashes related to the network request data not being parsed correctly\n- Fixes issues related to the automatic sourcemap file upload on Android\n- Adds missing TypeScript definitions\n- Deprecates Instabug.setVideoRecordingFloatingButtonPosition in favor of BugReporting.setVideoRecordingFloatingButtonPosition\n- Includes native fix which removes the usage of android:requestLegacyExternalStorage permission\n- Various other bug fixes and improvements\n\n## v10.0.0 (2021-02-16)\n\n- Introduces Instabug’s new App Performance Monitoring (APM)\n- Adds support for Push Notifications\n- Bumps the minimum supported iOS version to iOS 10\n- Various bug fixes and improvements\n\n## v9.1.10 (2020-12-02)\n\n- Fixes a crash caused by the network logger when the object passed is too large\n- Adds source map upload script support for environment variables use inside Info.plist\n- Fixes a crash when using `getUserAttribute` on an attribute that does not exist\n- Fixes a crash when calling `setSdkDebugLogsLevel` on Android\n\n## v9.1.9 (2020-10-01)\n\n- Bumps Instabug native Android SDK to v9.1.8\n\n## v9.1.8 (2020-09-16)\n\n- Adds support for react-navigation v5\n- Adds support for the Azerbaijani locale\n- Bumps Instabug native SDKs to v9.1.7\n- Fixes an issue with `onReportSubmitHandler` on iOS\n\n## v9.1.7 (2020-08-10)\n\n- Fixes missing typescript definitions\n\n## v9.1.6 (2020-07-16)\n\n- Fixes an issue that caused XHR Response not to be logged.\n- Adds support for Repro Steps. Repro Steps list all of the actions an app user took before reporting a bug or crash, grouped by the screens they visited in your app.\n- Bump Native SDKs to v9.1.6\n\n## v9.1.1 (2020-04-06)\n\n- Fixes an issue with the version name while uploading the sourcemap on Android.\n\n## v9.1.0 (2020-03-19)\n\n- Bump Native SDKs to v9.1\n- Adds automatic sourcemap upload support for Hermes.\n\n## v9.0.7 (2020-03-10)\n\n- Bump iOS Native SDK to v9.0.12\n- Enables MultiDex for android\n\n## v9.0.6 (2020-01-29)\n\n- Bump iOS Native SDK to v9.0.6\n\n## v9.0.5 (2020-01-27)\n\n- Bump iOS Native SDK to v9.0.4\n- Bump Android Native SDK to v9.0.5\n\n## v9.0.1 (2019-12-14)\n\n- Updated iOS native SDK to v9.0.3\n\n## v9.0.0 (2019-12-02)\n\n- Updated native SDKs to v9.0\n- Fixes Descrepencies in typescript definition file\n\n## v8.7.3 (2019-11-14)\n\n- Fixes `BugReporting.setViewHierarchyEnabled` crashing on iOS.\n\n## v8.7.2 (2019-11-05)\n\n- Fixes the automatic uploading of the source map files in some cases due to incorrect regex.\n- Add a new string reportQuestion to replace the deprecated string startChats.\n- Updates native SDKs\n\n## v8.7.1 (2019-10-02)\n\n- Updates native iOS SDK to v8.7.2\n- Fixes `Warning: Require cycle` warnings.\n\n## v8.7.0 (2019-09-19)\n\n- Updates native SDKs to v8.7\n\n## v8.6.4 (2019-09-13)\n\n- Fixes an issue on Android that would result in a build error with the message `null is not an object (evaluating u.invocationEventNone)`\n\n## v8.6.3 (2019-08-29)\n\n- Updates native iOS SDK to v8.6.2\n\n## v8.6.2 (2019-08-29)\n\n- Updates native Android SDK to v8.6.2\n- Fixes various bugs and improvements in automatic sourcemap upload scripts.\n\n## v8.6.1 (2019-08-26)\n\n- Introducing our new logo and branding. Meet the new Instabug: the platform for Real-Time Contextual Insights.\n- Updates native SDK dependencies to 8.6.1.\n- Adds the `enabled` key to `Instabug.reproStepsMode` enum to be able to use it with `Instabug.setReproStepsMode` API.\n\n## v8.5.6 (2019-08-21)\n\n- Fixes an issue that crashes the SDK when calling `Instabug.onReportSubmitHandler` on iOS.\n- Fixes an issue with passing empty string value to `Instabug.setUserAttribute`.\n\n## v8.5.5 (2019-08-17)\n\n- Fixes an issue with the email validation when reporting a bug on Android.\n- Fixes an issue with the crash reporting which prevented the report from being submitted on Android.\n\n## v8.5.4 (2019-08-10)\n\n- Hot Fixes an issue with `Instabug.setFloatingButtonEdge` and `Instabug.setEnabledAttachmentTypes` causing the app to crash.\n\n## v8.5.3 (2019-08-08)\n\n- Fixes hang/crash issues on iOS 9 devices\n- Fixes string mappings for addVideoMessage and conversationsHeaderTitle in iOS.\n\n## v8.5.2 (2019-08-04)\n\n- Fixes an issue that would cause Android to throw ArrayIndexOutOfBoundsException.\n\n## v8.5.1 (2019-07-22)\n\n- Fixes an issue that would cause Instabug.framework to appear twice when using CocoaPods.\n- Fixes a deadlock that would happen when `console.log` is called immediately after `startWithToken`.\n- Fixes an issue that prevented app token from being detected correctly when uploading source map files.\n- Fixes an issue that caused Android release builds to fail when building on a Windows machine.\n\n## v8.5.0 (2019-07-11)\n\n**⚠️ If you are using React Native 0.60, please follow our migration guide [here](https://github.com/Instabug/Instabug-React-Native/blob/master/README.md#updating-to-version-85)**\n\n- Support for React Native 0.60\n- Updates native iOS and Android SDKs to version 8.5\n\n## v8.4.4 (2019-07-08)\n\n- Fixes an issue that causes the sdk to crash when a network request has no headers.\n\n## v8.4.3 (2019-07-03)\n\n- Fixes an issue that caused Android release builds to fail when building on a Windows machine.\n- Fixes an issue that caused apps to freeze when `onReportSubmitHandler` is called in certain cases.\n\n## v8.4.2 (2019-06-19)\n\n- Fixes valid email written but gets enter valid email error message on Android.\n\n## v8.4.1 (2019-06-17)\n\n- Fixes Surveys.getAvailableSurveys API not returning the list of surveys on iOS.\n- Fixes typescript definition for the API Surveys.getAvailableSurveys.\n\n## v8.4.0 (2019-06-11)\n\n- Updates native iOS and Android SDKs to version 8.4.\n\n## v8.3.4 (2019-06-06)\n\n- Fixes build failure on iOS caused by IBGUserStepsModeEnable not found in SDK.\n\n## v8.3.3 (2019-05-31)\n\n- Fixes crash caused when calling the setReproStepsMode API with enum value enabled.\n- Fixes wrong typescript definition for the setReportTypes API param.\n\n## v8.3.2 (2019-05-23)\n\n- Fixes an issue that causes release builds to fail on Windows\n\n## v8.3.1 (2019-05-11)\n\n- Hotfix captureJsErrors\n\n## v8.3.0 (2019-05-11)\n\n- Update native android and iOS versions to 8.3.0.\n- Fixes Network logging crashes and immutability\n- Added new OnReportSubmitHandler API\n- Fixed linking script\n- Api Name Changes\n" + } + ] +} \ No newline at end of file diff --git a/.lh/RNInstabug.podspec.json b/.lh/RNInstabug.podspec.json new file mode 100644 index 0000000000..eb84cc928d --- /dev/null +++ b/.lh/RNInstabug.podspec.json @@ -0,0 +1,18 @@ +{ + "sourceFile": "RNInstabug.podspec", + "activeCommit": 0, + "commits": [ + { + "activePatchIndex": 0, + "patches": [ + { + "date": 1742910748791, + "content": "Index: \n===================================================================\n--- \n+++ \n" + } + ], + "date": 1742910748791, + "name": "Commit-0", + "content": "require 'json'\nrequire_relative './ios/native'\n\npackage = JSON.parse(File.read('package.json'))\n\nPod::Spec.new do |s|\n s.name = 'RNInstabug'\n s.version = package[\"version\"]\n s.summary = package[\"description\"]\n s.author = package[\"author\"]\n s.license = package[\"license\"]\n s.homepage = package[\"homepage\"]\n s.source = { :git => \"https://github.com/Instabug/Instabug-React-Native.git\", :tag => 'v' + package[\"version\"] }\n\n s.platform = :ios, \"9.0\"\n s.source_files = \"ios/**/*.{h,m,mm}\"\n\n s.dependency 'React-Core'\n use_instabug!(s)\nend\n" + } + ] +} \ No newline at end of file diff --git a/.lh/examples/default/ios/Podfile.json b/.lh/examples/default/ios/Podfile.json new file mode 100644 index 0000000000..b38e2f113d --- /dev/null +++ b/.lh/examples/default/ios/Podfile.json @@ -0,0 +1,18 @@ +{ + "sourceFile": "examples/default/ios/Podfile", + "activeCommit": 0, + "commits": [ + { + "activePatchIndex": 0, + "patches": [ + { + "date": 1742910753663, + "content": "Index: \n===================================================================\n--- \n+++ \n" + } + ], + "date": 1742910753663, + "name": "Commit-0", + "content": "require_relative '../node_modules/react-native/scripts/react_native_pods'\n\nrequire_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'\n\nplatform :ios, '13.4'\nprepare_react_native_project!\n\nlinkage = ENV['USE_FRAMEWORKS']\nif linkage != nil\n Pod::UI.puts \"Configuring Pod with #{linkage}ally linked Frameworks\".green\n use_frameworks! :linkage => linkage.to_sym\nend\n\ntarget 'InstabugExample' do\n config = use_native_modules!\n rn_maps_path = '../node_modules/react-native-maps'\n pod 'react-native-google-maps', :path => rn_maps_path\n # Flags change depending on the env values.\n flags = get_default_flags()\n\n use_react_native!(\n :path => config[:reactNativePath],\n # Hermes is now enabled by default. Disable by setting this flag to false.\n # Upcoming versions of React Native may rely on get_default_flags(), but\n # we make it explicit here to aid in the React Native upgrade process.\n :hermes_enabled => flags[:hermes_enabled],\n :fabric_enabled => flags[:fabric_enabled],\n # An absolute path to your application root.\n :app_path => \"#{Pod::Config.instance.installation_root}/..\"\n )\n\n target 'InstabugTests' do\n inherit! :complete\n pod 'OCMock'\n end\n\n post_install do |installer|\n react_native_post_install(\n installer,\n # Set `mac_catalyst_enabled` to `true` in order to apply patches\n # necessary for Mac Catalyst builds\n :mac_catalyst_enabled => false\n )\n end\nend\n" + } + ] +} \ No newline at end of file diff --git a/.lh/examples/default/ios/Podfile.lock.json b/.lh/examples/default/ios/Podfile.lock.json new file mode 100644 index 0000000000..e63b268069 --- /dev/null +++ b/.lh/examples/default/ios/Podfile.lock.json @@ -0,0 +1,34 @@ +{ + "sourceFile": "examples/default/ios/Podfile.lock", + "activeCommit": 0, + "commits": [ + { + "activePatchIndex": 4, + "patches": [ + { + "date": 1742910728790, + "content": "Index: \n===================================================================\n--- \n+++ \n" + }, + { + "date": 1742910763403, + "content": "Index: \n===================================================================\n--- \n+++ \n@@ -1767,9 +1767,8 @@\n - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)\n - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`)\n - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)\n - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)\n- - Instabug (from `https://ios-releases.instabug.com/custom/feature-add-rct-text-view-to-automasked-views/14.2.0/Instabug.podspec`)\n - instabug-reactnative-ndk (from `../node_modules/instabug-reactnative-ndk`)\n - OCMock\n - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)\n - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)\n" + }, + { + "date": 1742910769101, + "content": "Index: \n===================================================================\n--- \n+++ \n@@ -1846,8 +1846,9 @@\n SPEC REPOS:\n trunk:\n - Google-Maps-iOS-Utils\n - GoogleMaps\n+ - Instabug\n - OCMock\n - SocketRocket\n \n EXTERNAL SOURCES:\n" + }, + { + "date": 1742910775615, + "content": "Index: \n===================================================================\n--- \n+++ \n@@ -1864,10 +1864,8 @@\n :podspec: \"../node_modules/react-native/third-party-podspecs/glog.podspec\"\n hermes-engine:\n :podspec: \"../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec\"\n :tag: hermes-2024-08-15-RNv0.75.1-4b3bf912cc0f705b51b71ce1a5b8bd79b93a451b\n- Instabug:\n- :podspec: https://ios-releases.instabug.com/custom/feature-add-rct-text-view-to-automasked-views/14.2.0/Instabug.podspec\n instabug-reactnative-ndk:\n :path: \"../node_modules/instabug-reactnative-ndk\"\n RCT-Folly:\n :podspec: \"../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec\"\n" + }, + { + "date": 1742910786843, + "content": "Index: \n===================================================================\n--- \n+++ \n@@ -2091,7 +2091,7 @@\n RNVectorIcons: 6382277afab3c54658e9d555ee0faa7a37827136\n SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d\n Yoga: 055f92ad73f8c8600a93f0e25ac0b2344c3b07e6\n \n-PODFILE CHECKSUM: 654123f40bb27c9e3d81b1a5e6b2b60fc29432a2\n+PODFILE CHECKSUM: 63bf073bef3872df95ea45e7c9c023a331ebb3c3\n \n-COCOAPODS: 1.16.2\n+COCOAPODS: 1.14.0\n" + } + ], + "date": 1742910728790, + "name": "Commit-0", + "content": "PODS:\n - boost (1.84.0)\n - DoubleConversion (1.1.6)\n - FBLazyVector (0.75.4)\n - fmt (9.1.0)\n - glog (0.3.5)\n - Google-Maps-iOS-Utils (4.2.2):\n - Google-Maps-iOS-Utils/Clustering (= 4.2.2)\n - Google-Maps-iOS-Utils/Geometry (= 4.2.2)\n - Google-Maps-iOS-Utils/GeometryUtils (= 4.2.2)\n - Google-Maps-iOS-Utils/Heatmap (= 4.2.2)\n - Google-Maps-iOS-Utils/QuadTree (= 4.2.2)\n - GoogleMaps (~> 7.3)\n - Google-Maps-iOS-Utils/Clustering (4.2.2):\n - Google-Maps-iOS-Utils/QuadTree\n - GoogleMaps (~> 7.3)\n - Google-Maps-iOS-Utils/Geometry (4.2.2):\n - GoogleMaps (~> 7.3)\n - Google-Maps-iOS-Utils/GeometryUtils (4.2.2):\n - GoogleMaps (~> 7.3)\n - Google-Maps-iOS-Utils/Heatmap (4.2.2):\n - Google-Maps-iOS-Utils/QuadTree\n - GoogleMaps (~> 7.3)\n - Google-Maps-iOS-Utils/QuadTree (4.2.2):\n - GoogleMaps (~> 7.3)\n - GoogleMaps (7.4.0):\n - GoogleMaps/Maps (= 7.4.0)\n - GoogleMaps/Base (7.4.0)\n - GoogleMaps/Maps (7.4.0):\n - GoogleMaps/Base\n - hermes-engine (0.75.4):\n - hermes-engine/Pre-built (= 0.75.4)\n - hermes-engine/Pre-built (0.75.4)\n - Instabug (14.3.0)\n - instabug-reactnative-ndk (0.1.0):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - Yoga\n - OCMock (3.9.4)\n - RCT-Folly (2024.01.01.00):\n - boost\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - RCT-Folly/Default (= 2024.01.01.00)\n - RCT-Folly/Default (2024.01.01.00):\n - boost\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - RCT-Folly/Fabric (2024.01.01.00):\n - boost\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - RCTDeprecation (0.75.4)\n - RCTRequired (0.75.4)\n - RCTTypeSafety (0.75.4):\n - FBLazyVector (= 0.75.4)\n - RCTRequired (= 0.75.4)\n - React-Core (= 0.75.4)\n - React (0.75.4):\n - React-Core (= 0.75.4)\n - React-Core/DevSupport (= 0.75.4)\n - React-Core/RCTWebSocket (= 0.75.4)\n - React-RCTActionSheet (= 0.75.4)\n - React-RCTAnimation (= 0.75.4)\n - React-RCTBlob (= 0.75.4)\n - React-RCTImage (= 0.75.4)\n - React-RCTLinking (= 0.75.4)\n - React-RCTNetwork (= 0.75.4)\n - React-RCTSettings (= 0.75.4)\n - React-RCTText (= 0.75.4)\n - React-RCTVibration (= 0.75.4)\n - React-callinvoker (0.75.4)\n - React-Core (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-Core/Default (= 0.75.4)\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-Core/CoreModulesHeaders (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-Core/Default\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-Core/Default (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-Core/DevSupport (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-Core/Default (= 0.75.4)\n - React-Core/RCTWebSocket (= 0.75.4)\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-Core/RCTActionSheetHeaders (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-Core/Default\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-Core/RCTAnimationHeaders (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-Core/Default\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-Core/RCTBlobHeaders (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-Core/Default\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-Core/RCTImageHeaders (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-Core/Default\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-Core/RCTLinkingHeaders (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-Core/Default\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-Core/RCTNetworkHeaders (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-Core/Default\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-Core/RCTSettingsHeaders (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-Core/Default\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-Core/RCTTextHeaders (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-Core/Default\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-Core/RCTVibrationHeaders (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-Core/Default\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-Core/RCTWebSocket (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTDeprecation\n - React-Core/Default (= 0.75.4)\n - React-cxxreact\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-perflogger\n - React-runtimescheduler\n - React-utils\n - SocketRocket (= 0.7.0)\n - Yoga\n - React-CoreModules (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - RCT-Folly (= 2024.01.01.00)\n - RCTTypeSafety (= 0.75.4)\n - React-Core/CoreModulesHeaders (= 0.75.4)\n - React-jsi (= 0.75.4)\n - React-jsinspector\n - React-NativeModulesApple\n - React-RCTBlob\n - React-RCTImage (= 0.75.4)\n - ReactCodegen\n - ReactCommon\n - SocketRocket (= 0.7.0)\n - React-cxxreact (0.75.4):\n - boost\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - React-callinvoker (= 0.75.4)\n - React-debug (= 0.75.4)\n - React-jsi (= 0.75.4)\n - React-jsinspector\n - React-logger (= 0.75.4)\n - React-perflogger (= 0.75.4)\n - React-runtimeexecutor (= 0.75.4)\n - React-debug (0.75.4)\n - React-defaultsnativemodule (0.75.4):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-domnativemodule\n - React-Fabric\n - React-featureflags\n - React-featureflagsnativemodule\n - React-graphics\n - React-idlecallbacksnativemodule\n - React-ImageManager\n - React-microtasksnativemodule\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - Yoga\n - React-domnativemodule (0.75.4):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-FabricComponents\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - Yoga\n - React-Fabric (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric/animations (= 0.75.4)\n - React-Fabric/attributedstring (= 0.75.4)\n - React-Fabric/componentregistry (= 0.75.4)\n - React-Fabric/componentregistrynative (= 0.75.4)\n - React-Fabric/components (= 0.75.4)\n - React-Fabric/core (= 0.75.4)\n - React-Fabric/dom (= 0.75.4)\n - React-Fabric/imagemanager (= 0.75.4)\n - React-Fabric/leakchecker (= 0.75.4)\n - React-Fabric/mounting (= 0.75.4)\n - React-Fabric/observers (= 0.75.4)\n - React-Fabric/scheduler (= 0.75.4)\n - React-Fabric/telemetry (= 0.75.4)\n - React-Fabric/templateprocessor (= 0.75.4)\n - React-Fabric/uimanager (= 0.75.4)\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/animations (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/attributedstring (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/componentregistry (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/componentregistrynative (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/components (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric/components/legacyviewmanagerinterop (= 0.75.4)\n - React-Fabric/components/root (= 0.75.4)\n - React-Fabric/components/view (= 0.75.4)\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/components/legacyviewmanagerinterop (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/components/root (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/components/view (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - Yoga\n - React-Fabric/core (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/dom (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/imagemanager (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/leakchecker (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/mounting (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/observers (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric/observers/events (= 0.75.4)\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/observers/events (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/scheduler (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric/observers/events\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-performancetimeline\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/telemetry (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/templateprocessor (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/uimanager (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric/uimanager/consistency (= 0.75.4)\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererconsistency\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-Fabric/uimanager/consistency (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererconsistency\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCommon/turbomodule/core\n - React-FabricComponents (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric\n - React-FabricComponents/components (= 0.75.4)\n - React-FabricComponents/textlayoutmanager (= 0.75.4)\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/core\n - Yoga\n - React-FabricComponents/components (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric\n - React-FabricComponents/components/inputaccessory (= 0.75.4)\n - React-FabricComponents/components/iostextinput (= 0.75.4)\n - React-FabricComponents/components/modal (= 0.75.4)\n - React-FabricComponents/components/rncore (= 0.75.4)\n - React-FabricComponents/components/safeareaview (= 0.75.4)\n - React-FabricComponents/components/scrollview (= 0.75.4)\n - React-FabricComponents/components/text (= 0.75.4)\n - React-FabricComponents/components/textinput (= 0.75.4)\n - React-FabricComponents/components/unimplementedview (= 0.75.4)\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/core\n - Yoga\n - React-FabricComponents/components/inputaccessory (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/core\n - Yoga\n - React-FabricComponents/components/iostextinput (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/core\n - Yoga\n - React-FabricComponents/components/modal (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/core\n - Yoga\n - React-FabricComponents/components/rncore (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/core\n - Yoga\n - React-FabricComponents/components/safeareaview (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/core\n - Yoga\n - React-FabricComponents/components/scrollview (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/core\n - Yoga\n - React-FabricComponents/components/text (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/core\n - Yoga\n - React-FabricComponents/components/textinput (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/core\n - Yoga\n - React-FabricComponents/components/unimplementedview (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/core\n - Yoga\n - React-FabricComponents/textlayoutmanager (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-cxxreact\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-logger\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/core\n - Yoga\n - React-FabricImage (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - RCTRequired (= 0.75.4)\n - RCTTypeSafety (= 0.75.4)\n - React-Fabric\n - React-graphics\n - React-ImageManager\n - React-jsi\n - React-jsiexecutor (= 0.75.4)\n - React-logger\n - React-rendererdebug\n - React-utils\n - ReactCommon\n - Yoga\n - React-featureflags (0.75.4)\n - React-featureflagsnativemodule (0.75.4):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - Yoga\n - React-graphics (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - React-jsi\n - React-jsiexecutor\n - React-utils\n - React-hermes (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - React-cxxreact (= 0.75.4)\n - React-jsi\n - React-jsiexecutor (= 0.75.4)\n - React-jsinspector\n - React-perflogger (= 0.75.4)\n - React-runtimeexecutor\n - React-idlecallbacksnativemodule (0.75.4):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - Yoga\n - React-ImageManager (0.75.4):\n - glog\n - RCT-Folly/Fabric\n - React-Core/Default\n - React-debug\n - React-Fabric\n - React-graphics\n - React-rendererdebug\n - React-utils\n - React-jserrorhandler (0.75.4):\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - React-debug\n - React-jsi\n - React-jsi (0.75.4):\n - boost\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - React-jsiexecutor (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - React-cxxreact (= 0.75.4)\n - React-jsi (= 0.75.4)\n - React-jsinspector\n - React-perflogger (= 0.75.4)\n - React-jsinspector (0.75.4):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - React-featureflags\n - React-jsi\n - React-runtimeexecutor (= 0.75.4)\n - React-jsitracing (0.75.4):\n - React-jsi\n - React-logger (0.75.4):\n - glog\n - React-Mapbuffer (0.75.4):\n - glog\n - React-debug\n - React-microtasksnativemodule (0.75.4):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - Yoga\n - react-native-background-timer (2.4.1):\n - React-Core\n - react-native-config (1.5.3):\n - react-native-config/App (= 1.5.3)\n - react-native-config/App (1.5.3):\n - React-Core\n - react-native-google-maps (1.10.3):\n - Google-Maps-iOS-Utils (= 4.2.2)\n - GoogleMaps (= 7.4.0)\n - React-Core\n - react-native-maps (1.10.3):\n - React-Core\n - react-native-safe-area-context (4.12.0):\n - React-Core\n - react-native-slider (4.5.5):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - Yoga\n - react-native-webview (13.13.2):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - Yoga\n - React-nativeconfig (0.75.4)\n - React-NativeModulesApple (0.75.4):\n - glog\n - hermes-engine\n - React-callinvoker\n - React-Core\n - React-cxxreact\n - React-jsi\n - React-jsinspector\n - React-runtimeexecutor\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - React-perflogger (0.75.4)\n - React-performancetimeline (0.75.4):\n - RCT-Folly (= 2024.01.01.00)\n - React-cxxreact\n - React-RCTActionSheet (0.75.4):\n - React-Core/RCTActionSheetHeaders (= 0.75.4)\n - React-RCTAnimation (0.75.4):\n - RCT-Folly (= 2024.01.01.00)\n - RCTTypeSafety\n - React-Core/RCTAnimationHeaders\n - React-jsi\n - React-NativeModulesApple\n - ReactCodegen\n - ReactCommon\n - React-RCTAppDelegate (0.75.4):\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-CoreModules\n - React-debug\n - React-defaultsnativemodule\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-hermes\n - React-nativeconfig\n - React-NativeModulesApple\n - React-RCTFabric\n - React-RCTImage\n - React-RCTNetwork\n - React-rendererdebug\n - React-RuntimeApple\n - React-RuntimeCore\n - React-RuntimeHermes\n - React-runtimescheduler\n - React-utils\n - ReactCodegen\n - ReactCommon\n - React-RCTBlob (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - React-Core/RCTBlobHeaders\n - React-Core/RCTWebSocket\n - React-jsi\n - React-jsinspector\n - React-NativeModulesApple\n - React-RCTNetwork\n - ReactCodegen\n - ReactCommon\n - React-RCTFabric (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - React-Core\n - React-debug\n - React-Fabric\n - React-FabricComponents\n - React-FabricImage\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-jsi\n - React-jsinspector\n - React-nativeconfig\n - React-performancetimeline\n - React-RCTImage\n - React-RCTText\n - React-rendererconsistency\n - React-rendererdebug\n - React-runtimescheduler\n - React-utils\n - Yoga\n - React-RCTImage (0.75.4):\n - RCT-Folly (= 2024.01.01.00)\n - RCTTypeSafety\n - React-Core/RCTImageHeaders\n - React-jsi\n - React-NativeModulesApple\n - React-RCTNetwork\n - ReactCodegen\n - ReactCommon\n - React-RCTLinking (0.75.4):\n - React-Core/RCTLinkingHeaders (= 0.75.4)\n - React-jsi (= 0.75.4)\n - React-NativeModulesApple\n - ReactCodegen\n - ReactCommon\n - ReactCommon/turbomodule/core (= 0.75.4)\n - React-RCTNetwork (0.75.4):\n - RCT-Folly (= 2024.01.01.00)\n - RCTTypeSafety\n - React-Core/RCTNetworkHeaders\n - React-jsi\n - React-NativeModulesApple\n - ReactCodegen\n - ReactCommon\n - React-RCTSettings (0.75.4):\n - RCT-Folly (= 2024.01.01.00)\n - RCTTypeSafety\n - React-Core/RCTSettingsHeaders\n - React-jsi\n - React-NativeModulesApple\n - ReactCodegen\n - ReactCommon\n - React-RCTText (0.75.4):\n - React-Core/RCTTextHeaders (= 0.75.4)\n - Yoga\n - React-RCTVibration (0.75.4):\n - RCT-Folly (= 2024.01.01.00)\n - React-Core/RCTVibrationHeaders\n - React-jsi\n - React-NativeModulesApple\n - ReactCodegen\n - ReactCommon\n - React-rendererconsistency (0.75.4)\n - React-rendererdebug (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - RCT-Folly (= 2024.01.01.00)\n - React-debug\n - React-rncore (0.75.4)\n - React-RuntimeApple (0.75.4):\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - React-callinvoker\n - React-Core/Default\n - React-CoreModules\n - React-cxxreact\n - React-jserrorhandler\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-Mapbuffer\n - React-NativeModulesApple\n - React-RCTFabric\n - React-RuntimeCore\n - React-runtimeexecutor\n - React-RuntimeHermes\n - React-runtimescheduler\n - React-utils\n - React-RuntimeCore (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - React-cxxreact\n - React-featureflags\n - React-jserrorhandler\n - React-jsi\n - React-jsiexecutor\n - React-jsinspector\n - React-runtimeexecutor\n - React-runtimescheduler\n - React-utils\n - React-runtimeexecutor (0.75.4):\n - React-jsi (= 0.75.4)\n - React-RuntimeHermes (0.75.4):\n - hermes-engine\n - RCT-Folly/Fabric (= 2024.01.01.00)\n - React-featureflags\n - React-hermes\n - React-jsi\n - React-jsinspector\n - React-jsitracing\n - React-nativeconfig\n - React-RuntimeCore\n - React-utils\n - React-runtimescheduler (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - React-callinvoker\n - React-cxxreact\n - React-debug\n - React-featureflags\n - React-jsi\n - React-rendererconsistency\n - React-rendererdebug\n - React-runtimeexecutor\n - React-utils\n - React-utils (0.75.4):\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - React-debug\n - React-jsi (= 0.75.4)\n - ReactCodegen (0.75.4):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-FabricImage\n - React-featureflags\n - React-graphics\n - React-jsi\n - React-jsiexecutor\n - React-NativeModulesApple\n - React-rendererdebug\n - React-utils\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - ReactCommon (0.75.4):\n - ReactCommon/turbomodule (= 0.75.4)\n - ReactCommon/turbomodule (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - React-callinvoker (= 0.75.4)\n - React-cxxreact (= 0.75.4)\n - React-jsi (= 0.75.4)\n - React-logger (= 0.75.4)\n - React-perflogger (= 0.75.4)\n - ReactCommon/turbomodule/bridging (= 0.75.4)\n - ReactCommon/turbomodule/core (= 0.75.4)\n - ReactCommon/turbomodule/bridging (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - React-callinvoker (= 0.75.4)\n - React-cxxreact (= 0.75.4)\n - React-jsi (= 0.75.4)\n - React-logger (= 0.75.4)\n - React-perflogger (= 0.75.4)\n - ReactCommon/turbomodule/core (0.75.4):\n - DoubleConversion\n - fmt (= 9.1.0)\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - React-callinvoker (= 0.75.4)\n - React-cxxreact (= 0.75.4)\n - React-debug (= 0.75.4)\n - React-featureflags (= 0.75.4)\n - React-jsi (= 0.75.4)\n - React-logger (= 0.75.4)\n - React-perflogger (= 0.75.4)\n - React-utils (= 0.75.4)\n - RNCClipboard (1.14.3):\n - React-Core\n - RNGestureHandler (2.20.2):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - Yoga\n - RNInstabug (14.1.0):\n - Instabug (= 14.3.0)\n - React-Core\n - RNReanimated (3.16.1):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - RNReanimated/reanimated (= 3.16.1)\n - RNReanimated/worklets (= 3.16.1)\n - Yoga\n - RNReanimated/reanimated (3.16.1):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - RNReanimated/reanimated/apple (= 3.16.1)\n - Yoga\n - RNReanimated/reanimated/apple (3.16.1):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - Yoga\n - RNReanimated/worklets (3.16.1):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - Yoga\n - RNScreens (3.35.0):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-RCTImage\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - Yoga\n - RNSVG (15.8.0):\n - React-Core\n - RNVectorIcons (10.2.0):\n - DoubleConversion\n - glog\n - hermes-engine\n - RCT-Folly (= 2024.01.01.00)\n - RCTRequired\n - RCTTypeSafety\n - React-Core\n - React-debug\n - React-Fabric\n - React-featureflags\n - React-graphics\n - React-ImageManager\n - React-NativeModulesApple\n - React-RCTFabric\n - React-rendererdebug\n - React-utils\n - ReactCodegen\n - ReactCommon/turbomodule/bridging\n - ReactCommon/turbomodule/core\n - Yoga\n - SocketRocket (0.7.0)\n - Yoga (0.0.0)\n\nDEPENDENCIES:\n - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)\n - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)\n - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)\n - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`)\n - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)\n - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)\n - Instabug (from `https://ios-releases.instabug.com/custom/feature-add-rct-text-view-to-automasked-views/14.2.0/Instabug.podspec`)\n - instabug-reactnative-ndk (from `../node_modules/instabug-reactnative-ndk`)\n - OCMock\n - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)\n - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)\n - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)\n - RCTRequired (from `../node_modules/react-native/Libraries/Required`)\n - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)\n - React (from `../node_modules/react-native/`)\n - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)\n - React-Core (from `../node_modules/react-native/`)\n - React-Core/RCTWebSocket (from `../node_modules/react-native/`)\n - React-CoreModules (from `../node_modules/react-native/React/CoreModules`)\n - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)\n - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`)\n - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`)\n - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`)\n - React-Fabric (from `../node_modules/react-native/ReactCommon`)\n - React-FabricComponents (from `../node_modules/react-native/ReactCommon`)\n - React-FabricImage (from `../node_modules/react-native/ReactCommon`)\n - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`)\n - React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`)\n - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`)\n - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)\n - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`)\n - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)\n - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`)\n - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)\n - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)\n - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`)\n - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`)\n - React-logger (from `../node_modules/react-native/ReactCommon/logger`)\n - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)\n - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)\n - react-native-background-timer (from `../node_modules/react-native-background-timer`)\n - react-native-config (from `../node_modules/react-native-config`)\n - react-native-google-maps (from `../node_modules/react-native-maps`)\n - react-native-maps (from `../node_modules/react-native-maps`)\n - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)\n - \"react-native-slider (from `../node_modules/@react-native-community/slider`)\"\n - react-native-webview (from `../node_modules/react-native-webview`)\n - React-nativeconfig (from `../node_modules/react-native/ReactCommon`)\n - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)\n - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)\n - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`)\n - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)\n - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)\n - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`)\n - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)\n - React-RCTFabric (from `../node_modules/react-native/React`)\n - React-RCTImage (from `../node_modules/react-native/Libraries/Image`)\n - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)\n - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)\n - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)\n - React-RCTText (from `../node_modules/react-native/Libraries/Text`)\n - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)\n - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`)\n - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`)\n - React-rncore (from `../node_modules/react-native/ReactCommon`)\n - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`)\n - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`)\n - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)\n - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`)\n - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)\n - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`)\n - ReactCodegen (from `build/generated/ios`)\n - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)\n - \"RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)\"\n - RNGestureHandler (from `../node_modules/react-native-gesture-handler`)\n - RNInstabug (from `../node_modules/instabug-reactnative`)\n - RNReanimated (from `../node_modules/react-native-reanimated`)\n - RNScreens (from `../node_modules/react-native-screens`)\n - RNSVG (from `../node_modules/react-native-svg`)\n - RNVectorIcons (from `../node_modules/react-native-vector-icons`)\n - Yoga (from `../node_modules/react-native/ReactCommon/yoga`)\n\nSPEC REPOS:\n trunk:\n - Google-Maps-iOS-Utils\n - GoogleMaps\n - OCMock\n - SocketRocket\n\nEXTERNAL SOURCES:\n boost:\n :podspec: \"../node_modules/react-native/third-party-podspecs/boost.podspec\"\n DoubleConversion:\n :podspec: \"../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec\"\n FBLazyVector:\n :path: \"../node_modules/react-native/Libraries/FBLazyVector\"\n fmt:\n :podspec: \"../node_modules/react-native/third-party-podspecs/fmt.podspec\"\n glog:\n :podspec: \"../node_modules/react-native/third-party-podspecs/glog.podspec\"\n hermes-engine:\n :podspec: \"../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec\"\n :tag: hermes-2024-08-15-RNv0.75.1-4b3bf912cc0f705b51b71ce1a5b8bd79b93a451b\n Instabug:\n :podspec: https://ios-releases.instabug.com/custom/feature-add-rct-text-view-to-automasked-views/14.2.0/Instabug.podspec\n instabug-reactnative-ndk:\n :path: \"../node_modules/instabug-reactnative-ndk\"\n RCT-Folly:\n :podspec: \"../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec\"\n RCTDeprecation:\n :path: \"../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation\"\n RCTRequired:\n :path: \"../node_modules/react-native/Libraries/Required\"\n RCTTypeSafety:\n :path: \"../node_modules/react-native/Libraries/TypeSafety\"\n React:\n :path: \"../node_modules/react-native/\"\n React-callinvoker:\n :path: \"../node_modules/react-native/ReactCommon/callinvoker\"\n React-Core:\n :path: \"../node_modules/react-native/\"\n React-CoreModules:\n :path: \"../node_modules/react-native/React/CoreModules\"\n React-cxxreact:\n :path: \"../node_modules/react-native/ReactCommon/cxxreact\"\n React-debug:\n :path: \"../node_modules/react-native/ReactCommon/react/debug\"\n React-defaultsnativemodule:\n :path: \"../node_modules/react-native/ReactCommon/react/nativemodule/defaults\"\n React-domnativemodule:\n :path: \"../node_modules/react-native/ReactCommon/react/nativemodule/dom\"\n React-Fabric:\n :path: \"../node_modules/react-native/ReactCommon\"\n React-FabricComponents:\n :path: \"../node_modules/react-native/ReactCommon\"\n React-FabricImage:\n :path: \"../node_modules/react-native/ReactCommon\"\n React-featureflags:\n :path: \"../node_modules/react-native/ReactCommon/react/featureflags\"\n React-featureflagsnativemodule:\n :path: \"../node_modules/react-native/ReactCommon/react/nativemodule/featureflags\"\n React-graphics:\n :path: \"../node_modules/react-native/ReactCommon/react/renderer/graphics\"\n React-hermes:\n :path: \"../node_modules/react-native/ReactCommon/hermes\"\n React-idlecallbacksnativemodule:\n :path: \"../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks\"\n React-ImageManager:\n :path: \"../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios\"\n React-jserrorhandler:\n :path: \"../node_modules/react-native/ReactCommon/jserrorhandler\"\n React-jsi:\n :path: \"../node_modules/react-native/ReactCommon/jsi\"\n React-jsiexecutor:\n :path: \"../node_modules/react-native/ReactCommon/jsiexecutor\"\n React-jsinspector:\n :path: \"../node_modules/react-native/ReactCommon/jsinspector-modern\"\n React-jsitracing:\n :path: \"../node_modules/react-native/ReactCommon/hermes/executor/\"\n React-logger:\n :path: \"../node_modules/react-native/ReactCommon/logger\"\n React-Mapbuffer:\n :path: \"../node_modules/react-native/ReactCommon\"\n React-microtasksnativemodule:\n :path: \"../node_modules/react-native/ReactCommon/react/nativemodule/microtasks\"\n react-native-background-timer:\n :path: \"../node_modules/react-native-background-timer\"\n react-native-config:\n :path: \"../node_modules/react-native-config\"\n react-native-google-maps:\n :path: \"../node_modules/react-native-maps\"\n react-native-maps:\n :path: \"../node_modules/react-native-maps\"\n react-native-safe-area-context:\n :path: \"../node_modules/react-native-safe-area-context\"\n react-native-slider:\n :path: \"../node_modules/@react-native-community/slider\"\n react-native-webview:\n :path: \"../node_modules/react-native-webview\"\n React-nativeconfig:\n :path: \"../node_modules/react-native/ReactCommon\"\n React-NativeModulesApple:\n :path: \"../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios\"\n React-perflogger:\n :path: \"../node_modules/react-native/ReactCommon/reactperflogger\"\n React-performancetimeline:\n :path: \"../node_modules/react-native/ReactCommon/react/performance/timeline\"\n React-RCTActionSheet:\n :path: \"../node_modules/react-native/Libraries/ActionSheetIOS\"\n React-RCTAnimation:\n :path: \"../node_modules/react-native/Libraries/NativeAnimation\"\n React-RCTAppDelegate:\n :path: \"../node_modules/react-native/Libraries/AppDelegate\"\n React-RCTBlob:\n :path: \"../node_modules/react-native/Libraries/Blob\"\n React-RCTFabric:\n :path: \"../node_modules/react-native/React\"\n React-RCTImage:\n :path: \"../node_modules/react-native/Libraries/Image\"\n React-RCTLinking:\n :path: \"../node_modules/react-native/Libraries/LinkingIOS\"\n React-RCTNetwork:\n :path: \"../node_modules/react-native/Libraries/Network\"\n React-RCTSettings:\n :path: \"../node_modules/react-native/Libraries/Settings\"\n React-RCTText:\n :path: \"../node_modules/react-native/Libraries/Text\"\n React-RCTVibration:\n :path: \"../node_modules/react-native/Libraries/Vibration\"\n React-rendererconsistency:\n :path: \"../node_modules/react-native/ReactCommon/react/renderer/consistency\"\n React-rendererdebug:\n :path: \"../node_modules/react-native/ReactCommon/react/renderer/debug\"\n React-rncore:\n :path: \"../node_modules/react-native/ReactCommon\"\n React-RuntimeApple:\n :path: \"../node_modules/react-native/ReactCommon/react/runtime/platform/ios\"\n React-RuntimeCore:\n :path: \"../node_modules/react-native/ReactCommon/react/runtime\"\n React-runtimeexecutor:\n :path: \"../node_modules/react-native/ReactCommon/runtimeexecutor\"\n React-RuntimeHermes:\n :path: \"../node_modules/react-native/ReactCommon/react/runtime\"\n React-runtimescheduler:\n :path: \"../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler\"\n React-utils:\n :path: \"../node_modules/react-native/ReactCommon/react/utils\"\n ReactCodegen:\n :path: build/generated/ios\n ReactCommon:\n :path: \"../node_modules/react-native/ReactCommon\"\n RNCClipboard:\n :path: \"../node_modules/@react-native-clipboard/clipboard\"\n RNGestureHandler:\n :path: \"../node_modules/react-native-gesture-handler\"\n RNInstabug:\n :path: \"../node_modules/instabug-reactnative\"\n RNReanimated:\n :path: \"../node_modules/react-native-reanimated\"\n RNScreens:\n :path: \"../node_modules/react-native-screens\"\n RNSVG:\n :path: \"../node_modules/react-native-svg\"\n RNVectorIcons:\n :path: \"../node_modules/react-native-vector-icons\"\n Yoga:\n :path: \"../node_modules/react-native/ReactCommon/yoga\"\n\nSPEC CHECKSUMS:\n boost: 4cb898d0bf20404aab1850c656dcea009429d6c1\n DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5\n FBLazyVector: 430e10366de01d1e3d57374500b1b150fe482e6d\n fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120\n glog: 69ef571f3de08433d766d614c73a9838a06bf7eb\n Google-Maps-iOS-Utils: f77eab4c4326d7e6a277f8e23a0232402731913a\n GoogleMaps: 032f676450ba0779bd8ce16840690915f84e57ac\n hermes-engine: ea92f60f37dba025e293cbe4b4a548fd26b610a0\n Instabug: 97a4e694731f46bbc02dbe49ab29cc552c5e2f41\n instabug-reactnative-ndk: d765ac289d56e8896398d02760d9abf2562fc641\n OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74\n RCT-Folly: 4464f4d875961fce86008d45f4ecf6cef6de0740\n RCTDeprecation: 726d24248aeab6d7180dac71a936bbca6a994ed1\n RCTRequired: a94e7febda6db0345d207e854323c37e3a31d93b\n RCTTypeSafety: 28e24a6e44f5cbf912c66dde6ab7e07d1059a205\n React: c2830fa483b0334bda284e46a8579ebbe0c5447e\n React-callinvoker: 4aecde929540c26b841a4493f70ebf6016691eb8\n React-Core: 9c059899f00d46b5cec3ed79251f77d9c469553d\n React-CoreModules: 9fac2d31803c0ed03e4ddaa17f1481714f8633a5\n React-cxxreact: a979810a3ca4045ceb09407a17563046a7f71494\n React-debug: 3d21f69d8def0656f8b8ec25c0f05954f4d862c5\n React-defaultsnativemodule: 2fa2bdb7bd03ff9764facc04aa8520ebf14febae\n React-domnativemodule: 986e6fe7569e1383dce452a7b013b6c843a752df\n React-Fabric: 3bc7be9e3a6b7581fc828dc2aa041e107fc8ffb8\n React-FabricComponents: 668e0cb02344c2942e4c8921a643648faa6dc364\n React-FabricImage: 3f44dd25a2b020ed5215d4438a1bb1f3461cd4f1\n React-featureflags: ee1abd6f71555604a36cda6476e3c502ca9a48e5\n React-featureflagsnativemodule: 7ccc0cd666c2a6257401dceb7920818ac2b42803\n React-graphics: d7dd9c8d75cad5af19e19911fa370f78f2febd96\n React-hermes: 2069b08e965e48b7f8aa2c0ca0a2f383349ed55d\n React-idlecallbacksnativemodule: e211b2099b6dced97959cb58257bab2b2de4d7ef\n React-ImageManager: ab7a7d17dd0ff1ef1d4e1e88197d1119da9957ce\n React-jserrorhandler: d9e867bb83b868472f3f7601883f0403b3e3942d\n React-jsi: d68f1d516e5120a510afe356647a6a1e1f98f2db\n React-jsiexecutor: 6366a08a0fc01c9b65736f8deacd47c4a397912a\n React-jsinspector: 0ac947411f0c73b34908800cc7a6a31d8f93e1a8\n React-jsitracing: 0e8c0aadb1fcec6b1e4f2a66ee3b0da80f0f8615\n React-logger: d79b704bf215af194f5213a6b7deec50ba8e6a9b\n React-Mapbuffer: b982d5bba94a8bc073bda48f0d27c9b28417fae3\n React-microtasksnativemodule: 2b73e68f0462f3175f98782db08896f8501afd20\n react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe\n react-native-config: 8f7283449bbb048902f4e764affbbf24504454af\n react-native-google-maps: 1bcc1f9f13f798fcf230db7fe476f3566d0bc0a3\n react-native-maps: 72a8a903f8a1b53e2c777ba79102078ab502e0bf\n react-native-safe-area-context: 142fade490cbebbe428640b8cbdb09daf17e8191\n react-native-slider: 4a0f3386a38fc3d2d955efc515aef7096f7d1ee4\n react-native-webview: c0b91a4598bd54e9fbc70353aebf1e9bab2e5bb9\n React-nativeconfig: 8c83d992b9cc7d75b5abe262069eaeea4349f794\n React-NativeModulesApple: 9f7920224a3b0c7d04d77990067ded14cee3c614\n React-perflogger: 59e1a3182dca2cee7b9f1f7aab204018d46d1914\n React-performancetimeline: a9d05533ff834c6aa1f532e05e571f3fd2e3c1ed\n React-RCTActionSheet: d80e68d3baa163e4012a47c1f42ddd8bcd9672cc\n React-RCTAnimation: bde981f6bd7f8493696564da9b3bd05721d3b3cc\n React-RCTAppDelegate: 0176615c51476c88212bf3edbafb840d39ea7631\n React-RCTBlob: 520a0382bf8e89b9153d60e3c6293e51615834e9\n React-RCTFabric: c9da097b19b30017a99498b8c66a69c72f3ce689\n React-RCTImage: 90448d2882464af6015ed57c98f463f8748be465\n React-RCTLinking: 1bd95d0a704c271d21d758e0f0388cced768d77d\n React-RCTNetwork: 218af6e63eb9b47935cc5a775b7a1396cf10ff91\n React-RCTSettings: e10b8e42b0fce8a70fbf169de32a2ae03243ef6b\n React-RCTText: e7bf9f4997a1a0b45c052d4ad9a0fe653061cf29\n React-RCTVibration: 5b70b7f11e48d1c57e0d4832c2097478adbabe93\n React-rendererconsistency: f620c6e003e3c4593e6349d8242b8aeb3d4633f0\n React-rendererdebug: e697680f4dd117becc5daf9ea9800067abcee91c\n React-rncore: c22bd84cc2f38947f0414fab6646db22ff4f80cd\n React-RuntimeApple: de0976836b90b484305638616898cbc665c67c13\n React-RuntimeCore: 3c4a5aa63d9e7a3c17b7fb23f32a72a8bcfccf57\n React-runtimeexecutor: ea90d8e3a9e0f4326939858dafc6ab17c031a5d3\n React-RuntimeHermes: c6b0afdf1f493621214eeb6517fb859ce7b21b81\n React-runtimescheduler: 84f0d876d254bce6917a277b3930eb9bc29df6c7\n React-utils: cbe8b8b3d7b2ac282e018e46f0e7b25cdc87c5a0\n ReactCodegen: 4bcb34e6b5ebf6eef5cee34f55aa39991ea1c1f1\n ReactCommon: 6a952e50c2a4b694731d7682aaa6c79bc156e4ad\n RNCClipboard: 2821ac938ef46f736a8de0c8814845dde2dcbdfb\n RNGestureHandler: 511250b190a284388f9dd0d2e56c1df76f14cfb8\n RNInstabug: 4e49b8da38b1f6a0fdeca226cec844d553c8d785\n RNReanimated: f42a5044d121d68e91680caacb0293f4274228eb\n RNScreens: c7ceced6a8384cb9be5e7a5e88e9e714401fd958\n RNSVG: 8b1a777d54096b8c2a0fd38fc9d5a454332bbb4d\n RNVectorIcons: 6382277afab3c54658e9d555ee0faa7a37827136\n SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d\n Yoga: 055f92ad73f8c8600a93f0e25ac0b2344c3b07e6\n\nPODFILE CHECKSUM: 654123f40bb27c9e3d81b1a5e6b2b60fc29432a2\n\nCOCOAPODS: 1.16.2\n" + } + ] +} \ No newline at end of file From a66460ffecf5395a7e2b599bca0130a2f5066365 Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Wed, 5 Mar 2025 15:51:47 +0200 Subject: [PATCH 23/39] fix: update pod lock --- .lh/examples/default/ios/Podfile.lock.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.lh/examples/default/ios/Podfile.lock.json b/.lh/examples/default/ios/Podfile.lock.json index e63b268069..c3ec5e4e3a 100644 --- a/.lh/examples/default/ios/Podfile.lock.json +++ b/.lh/examples/default/ios/Podfile.lock.json @@ -3,7 +3,7 @@ "activeCommit": 0, "commits": [ { - "activePatchIndex": 4, + "activePatchIndex": 5, "patches": [ { "date": 1742910728790, @@ -24,6 +24,10 @@ { "date": 1742910786843, "content": "Index: \n===================================================================\n--- \n+++ \n@@ -2091,7 +2091,7 @@\n RNVectorIcons: 6382277afab3c54658e9d555ee0faa7a37827136\n SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d\n Yoga: 055f92ad73f8c8600a93f0e25ac0b2344c3b07e6\n \n-PODFILE CHECKSUM: 654123f40bb27c9e3d81b1a5e6b2b60fc29432a2\n+PODFILE CHECKSUM: 63bf073bef3872df95ea45e7c9c023a331ebb3c3\n \n-COCOAPODS: 1.16.2\n+COCOAPODS: 1.14.0\n" + }, + { + "date": 1742910918796, + "content": "Index: \n===================================================================\n--- \n+++ \n@@ -0,0 +1,2097 @@\n+PODS:\n+ - boost (1.84.0)\n+ - DoubleConversion (1.1.6)\n+ - FBLazyVector (0.75.4)\n+ - fmt (9.1.0)\n+ - glog (0.3.5)\n+ - Google-Maps-iOS-Utils (4.2.2):\n+ - Google-Maps-iOS-Utils/Clustering (= 4.2.2)\n+ - Google-Maps-iOS-Utils/Geometry (= 4.2.2)\n+ - Google-Maps-iOS-Utils/GeometryUtils (= 4.2.2)\n+ - Google-Maps-iOS-Utils/Heatmap (= 4.2.2)\n+ - Google-Maps-iOS-Utils/QuadTree (= 4.2.2)\n+ - GoogleMaps (~> 7.3)\n+ - Google-Maps-iOS-Utils/Clustering (4.2.2):\n+ - Google-Maps-iOS-Utils/QuadTree\n+ - GoogleMaps (~> 7.3)\n+ - Google-Maps-iOS-Utils/Geometry (4.2.2):\n+ - GoogleMaps (~> 7.3)\n+ - Google-Maps-iOS-Utils/GeometryUtils (4.2.2):\n+ - GoogleMaps (~> 7.3)\n+ - Google-Maps-iOS-Utils/Heatmap (4.2.2):\n+ - Google-Maps-iOS-Utils/QuadTree\n+ - GoogleMaps (~> 7.3)\n+ - Google-Maps-iOS-Utils/QuadTree (4.2.2):\n+ - GoogleMaps (~> 7.3)\n+ - GoogleMaps (7.4.0):\n+ - GoogleMaps/Maps (= 7.4.0)\n+ - GoogleMaps/Base (7.4.0)\n+ - GoogleMaps/Maps (7.4.0):\n+ - GoogleMaps/Base\n+ - hermes-engine (0.75.4):\n+ - hermes-engine/Pre-built (= 0.75.4)\n+ - hermes-engine/Pre-built (0.75.4)\n+ - Instabug (14.3.0)\n+ - instabug-reactnative-ndk (0.1.0):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - OCMock (3.9.4)\n+ - RCT-Folly (2024.01.01.00):\n+ - boost\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - RCT-Folly/Default (= 2024.01.01.00)\n+ - RCT-Folly/Default (2024.01.01.00):\n+ - boost\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - RCT-Folly/Fabric (2024.01.01.00):\n+ - boost\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - RCTDeprecation (0.75.4)\n+ - RCTRequired (0.75.4)\n+ - RCTTypeSafety (0.75.4):\n+ - FBLazyVector (= 0.75.4)\n+ - RCTRequired (= 0.75.4)\n+ - React-Core (= 0.75.4)\n+ - React (0.75.4):\n+ - React-Core (= 0.75.4)\n+ - React-Core/DevSupport (= 0.75.4)\n+ - React-Core/RCTWebSocket (= 0.75.4)\n+ - React-RCTActionSheet (= 0.75.4)\n+ - React-RCTAnimation (= 0.75.4)\n+ - React-RCTBlob (= 0.75.4)\n+ - React-RCTImage (= 0.75.4)\n+ - React-RCTLinking (= 0.75.4)\n+ - React-RCTNetwork (= 0.75.4)\n+ - React-RCTSettings (= 0.75.4)\n+ - React-RCTText (= 0.75.4)\n+ - React-RCTVibration (= 0.75.4)\n+ - React-callinvoker (0.75.4)\n+ - React-Core (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-Core/Default (= 0.75.4)\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-Core/CoreModulesHeaders (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-Core/Default\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-Core/Default (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-Core/DevSupport (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-Core/Default (= 0.75.4)\n+ - React-Core/RCTWebSocket (= 0.75.4)\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-Core/RCTActionSheetHeaders (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-Core/Default\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-Core/RCTAnimationHeaders (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-Core/Default\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-Core/RCTBlobHeaders (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-Core/Default\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-Core/RCTImageHeaders (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-Core/Default\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-Core/RCTLinkingHeaders (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-Core/Default\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-Core/RCTNetworkHeaders (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-Core/Default\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-Core/RCTSettingsHeaders (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-Core/Default\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-Core/RCTTextHeaders (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-Core/Default\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-Core/RCTVibrationHeaders (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-Core/Default\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-Core/RCTWebSocket (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTDeprecation\n+ - React-Core/Default (= 0.75.4)\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-perflogger\n+ - React-runtimescheduler\n+ - React-utils\n+ - SocketRocket (= 0.7.0)\n+ - Yoga\n+ - React-CoreModules (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTTypeSafety (= 0.75.4)\n+ - React-Core/CoreModulesHeaders (= 0.75.4)\n+ - React-jsi (= 0.75.4)\n+ - React-jsinspector\n+ - React-NativeModulesApple\n+ - React-RCTBlob\n+ - React-RCTImage (= 0.75.4)\n+ - ReactCodegen\n+ - ReactCommon\n+ - SocketRocket (= 0.7.0)\n+ - React-cxxreact (0.75.4):\n+ - boost\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-callinvoker (= 0.75.4)\n+ - React-debug (= 0.75.4)\n+ - React-jsi (= 0.75.4)\n+ - React-jsinspector\n+ - React-logger (= 0.75.4)\n+ - React-perflogger (= 0.75.4)\n+ - React-runtimeexecutor (= 0.75.4)\n+ - React-debug (0.75.4)\n+ - React-defaultsnativemodule (0.75.4):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-domnativemodule\n+ - React-Fabric\n+ - React-featureflags\n+ - React-featureflagsnativemodule\n+ - React-graphics\n+ - React-idlecallbacksnativemodule\n+ - React-ImageManager\n+ - React-microtasksnativemodule\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-domnativemodule (0.75.4):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-FabricComponents\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-Fabric (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric/animations (= 0.75.4)\n+ - React-Fabric/attributedstring (= 0.75.4)\n+ - React-Fabric/componentregistry (= 0.75.4)\n+ - React-Fabric/componentregistrynative (= 0.75.4)\n+ - React-Fabric/components (= 0.75.4)\n+ - React-Fabric/core (= 0.75.4)\n+ - React-Fabric/dom (= 0.75.4)\n+ - React-Fabric/imagemanager (= 0.75.4)\n+ - React-Fabric/leakchecker (= 0.75.4)\n+ - React-Fabric/mounting (= 0.75.4)\n+ - React-Fabric/observers (= 0.75.4)\n+ - React-Fabric/scheduler (= 0.75.4)\n+ - React-Fabric/telemetry (= 0.75.4)\n+ - React-Fabric/templateprocessor (= 0.75.4)\n+ - React-Fabric/uimanager (= 0.75.4)\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/animations (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/attributedstring (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/componentregistry (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/componentregistrynative (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/components (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric/components/legacyviewmanagerinterop (= 0.75.4)\n+ - React-Fabric/components/root (= 0.75.4)\n+ - React-Fabric/components/view (= 0.75.4)\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/components/legacyviewmanagerinterop (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/components/root (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/components/view (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-Fabric/core (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/dom (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/imagemanager (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/leakchecker (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/mounting (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/observers (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric/observers/events (= 0.75.4)\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/observers/events (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/scheduler (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric/observers/events\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-performancetimeline\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/telemetry (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/templateprocessor (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/uimanager (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric/uimanager/consistency (= 0.75.4)\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererconsistency\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-Fabric/uimanager/consistency (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererconsistency\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCommon/turbomodule/core\n+ - React-FabricComponents (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric\n+ - React-FabricComponents/components (= 0.75.4)\n+ - React-FabricComponents/textlayoutmanager (= 0.75.4)\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-FabricComponents/components (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric\n+ - React-FabricComponents/components/inputaccessory (= 0.75.4)\n+ - React-FabricComponents/components/iostextinput (= 0.75.4)\n+ - React-FabricComponents/components/modal (= 0.75.4)\n+ - React-FabricComponents/components/rncore (= 0.75.4)\n+ - React-FabricComponents/components/safeareaview (= 0.75.4)\n+ - React-FabricComponents/components/scrollview (= 0.75.4)\n+ - React-FabricComponents/components/text (= 0.75.4)\n+ - React-FabricComponents/components/textinput (= 0.75.4)\n+ - React-FabricComponents/components/unimplementedview (= 0.75.4)\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-FabricComponents/components/inputaccessory (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-FabricComponents/components/iostextinput (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-FabricComponents/components/modal (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-FabricComponents/components/rncore (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-FabricComponents/components/safeareaview (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-FabricComponents/components/scrollview (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-FabricComponents/components/text (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-FabricComponents/components/textinput (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-FabricComponents/components/unimplementedview (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-FabricComponents/textlayoutmanager (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-cxxreact\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-logger\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-FabricImage (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - RCTRequired (= 0.75.4)\n+ - RCTTypeSafety (= 0.75.4)\n+ - React-Fabric\n+ - React-graphics\n+ - React-ImageManager\n+ - React-jsi\n+ - React-jsiexecutor (= 0.75.4)\n+ - React-logger\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCommon\n+ - Yoga\n+ - React-featureflags (0.75.4)\n+ - React-featureflagsnativemodule (0.75.4):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-graphics (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-utils\n+ - React-hermes (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-cxxreact (= 0.75.4)\n+ - React-jsi\n+ - React-jsiexecutor (= 0.75.4)\n+ - React-jsinspector\n+ - React-perflogger (= 0.75.4)\n+ - React-runtimeexecutor\n+ - React-idlecallbacksnativemodule (0.75.4):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-ImageManager (0.75.4):\n+ - glog\n+ - RCT-Folly/Fabric\n+ - React-Core/Default\n+ - React-debug\n+ - React-Fabric\n+ - React-graphics\n+ - React-rendererdebug\n+ - React-utils\n+ - React-jserrorhandler (0.75.4):\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - React-debug\n+ - React-jsi\n+ - React-jsi (0.75.4):\n+ - boost\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-jsiexecutor (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-cxxreact (= 0.75.4)\n+ - React-jsi (= 0.75.4)\n+ - React-jsinspector\n+ - React-perflogger (= 0.75.4)\n+ - React-jsinspector (0.75.4):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-featureflags\n+ - React-jsi\n+ - React-runtimeexecutor (= 0.75.4)\n+ - React-jsitracing (0.75.4):\n+ - React-jsi\n+ - React-logger (0.75.4):\n+ - glog\n+ - React-Mapbuffer (0.75.4):\n+ - glog\n+ - React-debug\n+ - React-microtasksnativemodule (0.75.4):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - react-native-background-timer (2.4.1):\n+ - React-Core\n+ - react-native-config (1.5.3):\n+ - react-native-config/App (= 1.5.3)\n+ - react-native-config/App (1.5.3):\n+ - React-Core\n+ - react-native-google-maps (1.10.3):\n+ - Google-Maps-iOS-Utils (= 4.2.2)\n+ - GoogleMaps (= 7.4.0)\n+ - React-Core\n+ - react-native-maps (1.10.3):\n+ - React-Core\n+ - react-native-safe-area-context (4.12.0):\n+ - React-Core\n+ - react-native-slider (4.5.5):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - react-native-webview (13.13.2):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - React-nativeconfig (0.75.4)\n+ - React-NativeModulesApple (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - React-callinvoker\n+ - React-Core\n+ - React-cxxreact\n+ - React-jsi\n+ - React-jsinspector\n+ - React-runtimeexecutor\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - React-perflogger (0.75.4)\n+ - React-performancetimeline (0.75.4):\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-cxxreact\n+ - React-RCTActionSheet (0.75.4):\n+ - React-Core/RCTActionSheetHeaders (= 0.75.4)\n+ - React-RCTAnimation (0.75.4):\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTTypeSafety\n+ - React-Core/RCTAnimationHeaders\n+ - React-jsi\n+ - React-NativeModulesApple\n+ - ReactCodegen\n+ - ReactCommon\n+ - React-RCTAppDelegate (0.75.4):\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-CoreModules\n+ - React-debug\n+ - React-defaultsnativemodule\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-hermes\n+ - React-nativeconfig\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-RCTImage\n+ - React-RCTNetwork\n+ - React-rendererdebug\n+ - React-RuntimeApple\n+ - React-RuntimeCore\n+ - React-RuntimeHermes\n+ - React-runtimescheduler\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon\n+ - React-RCTBlob (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-Core/RCTBlobHeaders\n+ - React-Core/RCTWebSocket\n+ - React-jsi\n+ - React-jsinspector\n+ - React-NativeModulesApple\n+ - React-RCTNetwork\n+ - ReactCodegen\n+ - ReactCommon\n+ - React-RCTFabric (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-FabricComponents\n+ - React-FabricImage\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-jsi\n+ - React-jsinspector\n+ - React-nativeconfig\n+ - React-performancetimeline\n+ - React-RCTImage\n+ - React-RCTText\n+ - React-rendererconsistency\n+ - React-rendererdebug\n+ - React-runtimescheduler\n+ - React-utils\n+ - Yoga\n+ - React-RCTImage (0.75.4):\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTTypeSafety\n+ - React-Core/RCTImageHeaders\n+ - React-jsi\n+ - React-NativeModulesApple\n+ - React-RCTNetwork\n+ - ReactCodegen\n+ - ReactCommon\n+ - React-RCTLinking (0.75.4):\n+ - React-Core/RCTLinkingHeaders (= 0.75.4)\n+ - React-jsi (= 0.75.4)\n+ - React-NativeModulesApple\n+ - ReactCodegen\n+ - ReactCommon\n+ - ReactCommon/turbomodule/core (= 0.75.4)\n+ - React-RCTNetwork (0.75.4):\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTTypeSafety\n+ - React-Core/RCTNetworkHeaders\n+ - React-jsi\n+ - React-NativeModulesApple\n+ - ReactCodegen\n+ - ReactCommon\n+ - React-RCTSettings (0.75.4):\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTTypeSafety\n+ - React-Core/RCTSettingsHeaders\n+ - React-jsi\n+ - React-NativeModulesApple\n+ - ReactCodegen\n+ - ReactCommon\n+ - React-RCTText (0.75.4):\n+ - React-Core/RCTTextHeaders (= 0.75.4)\n+ - Yoga\n+ - React-RCTVibration (0.75.4):\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-Core/RCTVibrationHeaders\n+ - React-jsi\n+ - React-NativeModulesApple\n+ - ReactCodegen\n+ - ReactCommon\n+ - React-rendererconsistency (0.75.4)\n+ - React-rendererdebug (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-debug\n+ - React-rncore (0.75.4)\n+ - React-RuntimeApple (0.75.4):\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - React-callinvoker\n+ - React-Core/Default\n+ - React-CoreModules\n+ - React-cxxreact\n+ - React-jserrorhandler\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-Mapbuffer\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-RuntimeCore\n+ - React-runtimeexecutor\n+ - React-RuntimeHermes\n+ - React-runtimescheduler\n+ - React-utils\n+ - React-RuntimeCore (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - React-cxxreact\n+ - React-featureflags\n+ - React-jserrorhandler\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-jsinspector\n+ - React-runtimeexecutor\n+ - React-runtimescheduler\n+ - React-utils\n+ - React-runtimeexecutor (0.75.4):\n+ - React-jsi (= 0.75.4)\n+ - React-RuntimeHermes (0.75.4):\n+ - hermes-engine\n+ - RCT-Folly/Fabric (= 2024.01.01.00)\n+ - React-featureflags\n+ - React-hermes\n+ - React-jsi\n+ - React-jsinspector\n+ - React-jsitracing\n+ - React-nativeconfig\n+ - React-RuntimeCore\n+ - React-utils\n+ - React-runtimescheduler (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-callinvoker\n+ - React-cxxreact\n+ - React-debug\n+ - React-featureflags\n+ - React-jsi\n+ - React-rendererconsistency\n+ - React-rendererdebug\n+ - React-runtimeexecutor\n+ - React-utils\n+ - React-utils (0.75.4):\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-debug\n+ - React-jsi (= 0.75.4)\n+ - ReactCodegen (0.75.4):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-FabricImage\n+ - React-featureflags\n+ - React-graphics\n+ - React-jsi\n+ - React-jsiexecutor\n+ - React-NativeModulesApple\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - ReactCommon (0.75.4):\n+ - ReactCommon/turbomodule (= 0.75.4)\n+ - ReactCommon/turbomodule (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-callinvoker (= 0.75.4)\n+ - React-cxxreact (= 0.75.4)\n+ - React-jsi (= 0.75.4)\n+ - React-logger (= 0.75.4)\n+ - React-perflogger (= 0.75.4)\n+ - ReactCommon/turbomodule/bridging (= 0.75.4)\n+ - ReactCommon/turbomodule/core (= 0.75.4)\n+ - ReactCommon/turbomodule/bridging (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-callinvoker (= 0.75.4)\n+ - React-cxxreact (= 0.75.4)\n+ - React-jsi (= 0.75.4)\n+ - React-logger (= 0.75.4)\n+ - React-perflogger (= 0.75.4)\n+ - ReactCommon/turbomodule/core (0.75.4):\n+ - DoubleConversion\n+ - fmt (= 9.1.0)\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - React-callinvoker (= 0.75.4)\n+ - React-cxxreact (= 0.75.4)\n+ - React-debug (= 0.75.4)\n+ - React-featureflags (= 0.75.4)\n+ - React-jsi (= 0.75.4)\n+ - React-logger (= 0.75.4)\n+ - React-perflogger (= 0.75.4)\n+ - React-utils (= 0.75.4)\n+ - RNCClipboard (1.14.3):\n+ - React-Core\n+ - RNGestureHandler (2.20.2):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - RNInstabug (14.1.0):\n+ - Instabug (= 14.3.0)\n+ - React-Core\n+ - RNReanimated (3.16.1):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - RNReanimated/reanimated (= 3.16.1)\n+ - RNReanimated/worklets (= 3.16.1)\n+ - Yoga\n+ - RNReanimated/reanimated (3.16.1):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - RNReanimated/reanimated/apple (= 3.16.1)\n+ - Yoga\n+ - RNReanimated/reanimated/apple (3.16.1):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - RNReanimated/worklets (3.16.1):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - RNScreens (3.35.0):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-RCTImage\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - RNSVG (15.8.0):\n+ - React-Core\n+ - RNVectorIcons (10.2.0):\n+ - DoubleConversion\n+ - glog\n+ - hermes-engine\n+ - RCT-Folly (= 2024.01.01.00)\n+ - RCTRequired\n+ - RCTTypeSafety\n+ - React-Core\n+ - React-debug\n+ - React-Fabric\n+ - React-featureflags\n+ - React-graphics\n+ - React-ImageManager\n+ - React-NativeModulesApple\n+ - React-RCTFabric\n+ - React-rendererdebug\n+ - React-utils\n+ - ReactCodegen\n+ - ReactCommon/turbomodule/bridging\n+ - ReactCommon/turbomodule/core\n+ - Yoga\n+ - SocketRocket (0.7.0)\n+ - Yoga (0.0.0)\n+\n+DEPENDENCIES:\n+ - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)\n+ - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)\n+ - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)\n+ - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`)\n+ - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)\n+ - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)\n+ - instabug-reactnative-ndk (from `../node_modules/instabug-reactnative-ndk`)\n+ - OCMock\n+ - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)\n+ - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)\n+ - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)\n+ - RCTRequired (from `../node_modules/react-native/Libraries/Required`)\n+ - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)\n+ - React (from `../node_modules/react-native/`)\n+ - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)\n+ - React-Core (from `../node_modules/react-native/`)\n+ - React-Core/RCTWebSocket (from `../node_modules/react-native/`)\n+ - React-CoreModules (from `../node_modules/react-native/React/CoreModules`)\n+ - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)\n+ - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`)\n+ - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`)\n+ - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`)\n+ - React-Fabric (from `../node_modules/react-native/ReactCommon`)\n+ - React-FabricComponents (from `../node_modules/react-native/ReactCommon`)\n+ - React-FabricImage (from `../node_modules/react-native/ReactCommon`)\n+ - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`)\n+ - React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`)\n+ - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`)\n+ - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)\n+ - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`)\n+ - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)\n+ - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`)\n+ - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)\n+ - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)\n+ - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`)\n+ - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`)\n+ - React-logger (from `../node_modules/react-native/ReactCommon/logger`)\n+ - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)\n+ - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)\n+ - react-native-background-timer (from `../node_modules/react-native-background-timer`)\n+ - react-native-config (from `../node_modules/react-native-config`)\n+ - react-native-google-maps (from `../node_modules/react-native-maps`)\n+ - react-native-maps (from `../node_modules/react-native-maps`)\n+ - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)\n+ - \"react-native-slider (from `../node_modules/@react-native-community/slider`)\"\n+ - react-native-webview (from `../node_modules/react-native-webview`)\n+ - React-nativeconfig (from `../node_modules/react-native/ReactCommon`)\n+ - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)\n+ - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)\n+ - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`)\n+ - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)\n+ - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)\n+ - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`)\n+ - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)\n+ - React-RCTFabric (from `../node_modules/react-native/React`)\n+ - React-RCTImage (from `../node_modules/react-native/Libraries/Image`)\n+ - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)\n+ - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)\n+ - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)\n+ - React-RCTText (from `../node_modules/react-native/Libraries/Text`)\n+ - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)\n+ - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`)\n+ - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`)\n+ - React-rncore (from `../node_modules/react-native/ReactCommon`)\n+ - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`)\n+ - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`)\n+ - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)\n+ - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`)\n+ - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)\n+ - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`)\n+ - ReactCodegen (from `build/generated/ios`)\n+ - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)\n+ - \"RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)\"\n+ - RNGestureHandler (from `../node_modules/react-native-gesture-handler`)\n+ - RNInstabug (from `../node_modules/instabug-reactnative`)\n+ - RNReanimated (from `../node_modules/react-native-reanimated`)\n+ - RNScreens (from `../node_modules/react-native-screens`)\n+ - RNSVG (from `../node_modules/react-native-svg`)\n+ - RNVectorIcons (from `../node_modules/react-native-vector-icons`)\n+ - Yoga (from `../node_modules/react-native/ReactCommon/yoga`)\n+\n+SPEC REPOS:\n+ trunk:\n+ - Google-Maps-iOS-Utils\n+ - GoogleMaps\n+ - Instabug\n+ - OCMock\n+ - SocketRocket\n+\n+EXTERNAL SOURCES:\n+ boost:\n+ :podspec: \"../node_modules/react-native/third-party-podspecs/boost.podspec\"\n+ DoubleConversion:\n+ :podspec: \"../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec\"\n+ FBLazyVector:\n+ :path: \"../node_modules/react-native/Libraries/FBLazyVector\"\n+ fmt:\n+ :podspec: \"../node_modules/react-native/third-party-podspecs/fmt.podspec\"\n+ glog:\n+ :podspec: \"../node_modules/react-native/third-party-podspecs/glog.podspec\"\n+ hermes-engine:\n+ :podspec: \"../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec\"\n+ :tag: hermes-2024-08-15-RNv0.75.1-4b3bf912cc0f705b51b71ce1a5b8bd79b93a451b\n+ instabug-reactnative-ndk:\n+ :path: \"../node_modules/instabug-reactnative-ndk\"\n+ RCT-Folly:\n+ :podspec: \"../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec\"\n+ RCTDeprecation:\n+ :path: \"../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation\"\n+ RCTRequired:\n+ :path: \"../node_modules/react-native/Libraries/Required\"\n+ RCTTypeSafety:\n+ :path: \"../node_modules/react-native/Libraries/TypeSafety\"\n+ React:\n+ :path: \"../node_modules/react-native/\"\n+ React-callinvoker:\n+ :path: \"../node_modules/react-native/ReactCommon/callinvoker\"\n+ React-Core:\n+ :path: \"../node_modules/react-native/\"\n+ React-CoreModules:\n+ :path: \"../node_modules/react-native/React/CoreModules\"\n+ React-cxxreact:\n+ :path: \"../node_modules/react-native/ReactCommon/cxxreact\"\n+ React-debug:\n+ :path: \"../node_modules/react-native/ReactCommon/react/debug\"\n+ React-defaultsnativemodule:\n+ :path: \"../node_modules/react-native/ReactCommon/react/nativemodule/defaults\"\n+ React-domnativemodule:\n+ :path: \"../node_modules/react-native/ReactCommon/react/nativemodule/dom\"\n+ React-Fabric:\n+ :path: \"../node_modules/react-native/ReactCommon\"\n+ React-FabricComponents:\n+ :path: \"../node_modules/react-native/ReactCommon\"\n+ React-FabricImage:\n+ :path: \"../node_modules/react-native/ReactCommon\"\n+ React-featureflags:\n+ :path: \"../node_modules/react-native/ReactCommon/react/featureflags\"\n+ React-featureflagsnativemodule:\n+ :path: \"../node_modules/react-native/ReactCommon/react/nativemodule/featureflags\"\n+ React-graphics:\n+ :path: \"../node_modules/react-native/ReactCommon/react/renderer/graphics\"\n+ React-hermes:\n+ :path: \"../node_modules/react-native/ReactCommon/hermes\"\n+ React-idlecallbacksnativemodule:\n+ :path: \"../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks\"\n+ React-ImageManager:\n+ :path: \"../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios\"\n+ React-jserrorhandler:\n+ :path: \"../node_modules/react-native/ReactCommon/jserrorhandler\"\n+ React-jsi:\n+ :path: \"../node_modules/react-native/ReactCommon/jsi\"\n+ React-jsiexecutor:\n+ :path: \"../node_modules/react-native/ReactCommon/jsiexecutor\"\n+ React-jsinspector:\n+ :path: \"../node_modules/react-native/ReactCommon/jsinspector-modern\"\n+ React-jsitracing:\n+ :path: \"../node_modules/react-native/ReactCommon/hermes/executor/\"\n+ React-logger:\n+ :path: \"../node_modules/react-native/ReactCommon/logger\"\n+ React-Mapbuffer:\n+ :path: \"../node_modules/react-native/ReactCommon\"\n+ React-microtasksnativemodule:\n+ :path: \"../node_modules/react-native/ReactCommon/react/nativemodule/microtasks\"\n+ react-native-background-timer:\n+ :path: \"../node_modules/react-native-background-timer\"\n+ react-native-config:\n+ :path: \"../node_modules/react-native-config\"\n+ react-native-google-maps:\n+ :path: \"../node_modules/react-native-maps\"\n+ react-native-maps:\n+ :path: \"../node_modules/react-native-maps\"\n+ react-native-safe-area-context:\n+ :path: \"../node_modules/react-native-safe-area-context\"\n+ react-native-slider:\n+ :path: \"../node_modules/@react-native-community/slider\"\n+ react-native-webview:\n+ :path: \"../node_modules/react-native-webview\"\n+ React-nativeconfig:\n+ :path: \"../node_modules/react-native/ReactCommon\"\n+ React-NativeModulesApple:\n+ :path: \"../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios\"\n+ React-perflogger:\n+ :path: \"../node_modules/react-native/ReactCommon/reactperflogger\"\n+ React-performancetimeline:\n+ :path: \"../node_modules/react-native/ReactCommon/react/performance/timeline\"\n+ React-RCTActionSheet:\n+ :path: \"../node_modules/react-native/Libraries/ActionSheetIOS\"\n+ React-RCTAnimation:\n+ :path: \"../node_modules/react-native/Libraries/NativeAnimation\"\n+ React-RCTAppDelegate:\n+ :path: \"../node_modules/react-native/Libraries/AppDelegate\"\n+ React-RCTBlob:\n+ :path: \"../node_modules/react-native/Libraries/Blob\"\n+ React-RCTFabric:\n+ :path: \"../node_modules/react-native/React\"\n+ React-RCTImage:\n+ :path: \"../node_modules/react-native/Libraries/Image\"\n+ React-RCTLinking:\n+ :path: \"../node_modules/react-native/Libraries/LinkingIOS\"\n+ React-RCTNetwork:\n+ :path: \"../node_modules/react-native/Libraries/Network\"\n+ React-RCTSettings:\n+ :path: \"../node_modules/react-native/Libraries/Settings\"\n+ React-RCTText:\n+ :path: \"../node_modules/react-native/Libraries/Text\"\n+ React-RCTVibration:\n+ :path: \"../node_modules/react-native/Libraries/Vibration\"\n+ React-rendererconsistency:\n+ :path: \"../node_modules/react-native/ReactCommon/react/renderer/consistency\"\n+ React-rendererdebug:\n+ :path: \"../node_modules/react-native/ReactCommon/react/renderer/debug\"\n+ React-rncore:\n+ :path: \"../node_modules/react-native/ReactCommon\"\n+ React-RuntimeApple:\n+ :path: \"../node_modules/react-native/ReactCommon/react/runtime/platform/ios\"\n+ React-RuntimeCore:\n+ :path: \"../node_modules/react-native/ReactCommon/react/runtime\"\n+ React-runtimeexecutor:\n+ :path: \"../node_modules/react-native/ReactCommon/runtimeexecutor\"\n+ React-RuntimeHermes:\n+ :path: \"../node_modules/react-native/ReactCommon/react/runtime\"\n+ React-runtimescheduler:\n+ :path: \"../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler\"\n+ React-utils:\n+ :path: \"../node_modules/react-native/ReactCommon/react/utils\"\n+ ReactCodegen:\n+ :path: build/generated/ios\n+ ReactCommon:\n+ :path: \"../node_modules/react-native/ReactCommon\"\n+ RNCClipboard:\n+ :path: \"../node_modules/@react-native-clipboard/clipboard\"\n+ RNGestureHandler:\n+ :path: \"../node_modules/react-native-gesture-handler\"\n+ RNInstabug:\n+ :path: \"../node_modules/instabug-reactnative\"\n+ RNReanimated:\n+ :path: \"../node_modules/react-native-reanimated\"\n+ RNScreens:\n+ :path: \"../node_modules/react-native-screens\"\n+ RNSVG:\n+ :path: \"../node_modules/react-native-svg\"\n+ RNVectorIcons:\n+ :path: \"../node_modules/react-native-vector-icons\"\n+ Yoga:\n+ :path: \"../node_modules/react-native/ReactCommon/yoga\"\n+\n+SPEC CHECKSUMS:\n+ boost: 4cb898d0bf20404aab1850c656dcea009429d6c1\n+ DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5\n+ FBLazyVector: 430e10366de01d1e3d57374500b1b150fe482e6d\n+ fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120\n+ glog: 69ef571f3de08433d766d614c73a9838a06bf7eb\n+ Google-Maps-iOS-Utils: f77eab4c4326d7e6a277f8e23a0232402731913a\n+ GoogleMaps: 032f676450ba0779bd8ce16840690915f84e57ac\n+ hermes-engine: ea92f60f37dba025e293cbe4b4a548fd26b610a0\n+ Instabug: 97a4e694731f46bbc02dbe49ab29cc552c5e2f41\n+ instabug-reactnative-ndk: d765ac289d56e8896398d02760d9abf2562fc641\n+ OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74\n+ RCT-Folly: 4464f4d875961fce86008d45f4ecf6cef6de0740\n+ RCTDeprecation: 726d24248aeab6d7180dac71a936bbca6a994ed1\n+ RCTRequired: a94e7febda6db0345d207e854323c37e3a31d93b\n+ RCTTypeSafety: 28e24a6e44f5cbf912c66dde6ab7e07d1059a205\n+ React: c2830fa483b0334bda284e46a8579ebbe0c5447e\n+ React-callinvoker: 4aecde929540c26b841a4493f70ebf6016691eb8\n+ React-Core: 9c059899f00d46b5cec3ed79251f77d9c469553d\n+ React-CoreModules: 9fac2d31803c0ed03e4ddaa17f1481714f8633a5\n+ React-cxxreact: a979810a3ca4045ceb09407a17563046a7f71494\n+ React-debug: 3d21f69d8def0656f8b8ec25c0f05954f4d862c5\n+ React-defaultsnativemodule: 2fa2bdb7bd03ff9764facc04aa8520ebf14febae\n+ React-domnativemodule: 986e6fe7569e1383dce452a7b013b6c843a752df\n+ React-Fabric: 3bc7be9e3a6b7581fc828dc2aa041e107fc8ffb8\n+ React-FabricComponents: 668e0cb02344c2942e4c8921a643648faa6dc364\n+ React-FabricImage: 3f44dd25a2b020ed5215d4438a1bb1f3461cd4f1\n+ React-featureflags: ee1abd6f71555604a36cda6476e3c502ca9a48e5\n+ React-featureflagsnativemodule: 7ccc0cd666c2a6257401dceb7920818ac2b42803\n+ React-graphics: d7dd9c8d75cad5af19e19911fa370f78f2febd96\n+ React-hermes: 2069b08e965e48b7f8aa2c0ca0a2f383349ed55d\n+ React-idlecallbacksnativemodule: e211b2099b6dced97959cb58257bab2b2de4d7ef\n+ React-ImageManager: ab7a7d17dd0ff1ef1d4e1e88197d1119da9957ce\n+ React-jserrorhandler: d9e867bb83b868472f3f7601883f0403b3e3942d\n+ React-jsi: d68f1d516e5120a510afe356647a6a1e1f98f2db\n+ React-jsiexecutor: 6366a08a0fc01c9b65736f8deacd47c4a397912a\n+ React-jsinspector: 0ac947411f0c73b34908800cc7a6a31d8f93e1a8\n+ React-jsitracing: 0e8c0aadb1fcec6b1e4f2a66ee3b0da80f0f8615\n+ React-logger: d79b704bf215af194f5213a6b7deec50ba8e6a9b\n+ React-Mapbuffer: b982d5bba94a8bc073bda48f0d27c9b28417fae3\n+ React-microtasksnativemodule: 2b73e68f0462f3175f98782db08896f8501afd20\n+ react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe\n+ react-native-config: 8f7283449bbb048902f4e764affbbf24504454af\n+ react-native-google-maps: 1bcc1f9f13f798fcf230db7fe476f3566d0bc0a3\n+ react-native-maps: 72a8a903f8a1b53e2c777ba79102078ab502e0bf\n+ react-native-safe-area-context: 142fade490cbebbe428640b8cbdb09daf17e8191\n+ react-native-slider: 4a0f3386a38fc3d2d955efc515aef7096f7d1ee4\n+ react-native-webview: c0b91a4598bd54e9fbc70353aebf1e9bab2e5bb9\n+ React-nativeconfig: 8c83d992b9cc7d75b5abe262069eaeea4349f794\n+ React-NativeModulesApple: 9f7920224a3b0c7d04d77990067ded14cee3c614\n+ React-perflogger: 59e1a3182dca2cee7b9f1f7aab204018d46d1914\n+ React-performancetimeline: a9d05533ff834c6aa1f532e05e571f3fd2e3c1ed\n+ React-RCTActionSheet: d80e68d3baa163e4012a47c1f42ddd8bcd9672cc\n+ React-RCTAnimation: bde981f6bd7f8493696564da9b3bd05721d3b3cc\n+ React-RCTAppDelegate: 0176615c51476c88212bf3edbafb840d39ea7631\n+ React-RCTBlob: 520a0382bf8e89b9153d60e3c6293e51615834e9\n+ React-RCTFabric: c9da097b19b30017a99498b8c66a69c72f3ce689\n+ React-RCTImage: 90448d2882464af6015ed57c98f463f8748be465\n+ React-RCTLinking: 1bd95d0a704c271d21d758e0f0388cced768d77d\n+ React-RCTNetwork: 218af6e63eb9b47935cc5a775b7a1396cf10ff91\n+ React-RCTSettings: e10b8e42b0fce8a70fbf169de32a2ae03243ef6b\n+ React-RCTText: e7bf9f4997a1a0b45c052d4ad9a0fe653061cf29\n+ React-RCTVibration: 5b70b7f11e48d1c57e0d4832c2097478adbabe93\n+ React-rendererconsistency: f620c6e003e3c4593e6349d8242b8aeb3d4633f0\n+ React-rendererdebug: e697680f4dd117becc5daf9ea9800067abcee91c\n+ React-rncore: c22bd84cc2f38947f0414fab6646db22ff4f80cd\n+ React-RuntimeApple: de0976836b90b484305638616898cbc665c67c13\n+ React-RuntimeCore: 3c4a5aa63d9e7a3c17b7fb23f32a72a8bcfccf57\n+ React-runtimeexecutor: ea90d8e3a9e0f4326939858dafc6ab17c031a5d3\n+ React-RuntimeHermes: c6b0afdf1f493621214eeb6517fb859ce7b21b81\n+ React-runtimescheduler: 84f0d876d254bce6917a277b3930eb9bc29df6c7\n+ React-utils: cbe8b8b3d7b2ac282e018e46f0e7b25cdc87c5a0\n+ ReactCodegen: 4bcb34e6b5ebf6eef5cee34f55aa39991ea1c1f1\n+ ReactCommon: 6a952e50c2a4b694731d7682aaa6c79bc156e4ad\n+ RNCClipboard: 2821ac938ef46f736a8de0c8814845dde2dcbdfb\n+ RNGestureHandler: 511250b190a284388f9dd0d2e56c1df76f14cfb8\n+ RNInstabug: 4e49b8da38b1f6a0fdeca226cec844d553c8d785\n+ RNReanimated: f42a5044d121d68e91680caacb0293f4274228eb\n+ RNScreens: c7ceced6a8384cb9be5e7a5e88e9e714401fd958\n+ RNSVG: 8b1a777d54096b8c2a0fd38fc9d5a454332bbb4d\n+ RNVectorIcons: 6382277afab3c54658e9d555ee0faa7a37827136\n+ SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d\n+ Yoga: 055f92ad73f8c8600a93f0e25ac0b2344c3b07e6\n+\n+PODFILE CHECKSUM: 63bf073bef3872df95ea45e7c9c023a331ebb3c3\n+\n+COCOAPODS: 1.14.0\n" } ], "date": 1742910728790, From c2ec9db62949d83f1bbc6185e2f31578d271cdf3 Mon Sep 17 00:00:00 2001 From: Ahmed alaa Date: Sun, 9 Mar 2025 15:32:39 +0200 Subject: [PATCH 24/39] run automask in main thread --- .../RNInstabugReactnativeModule.java | 65 +++++++++---------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java b/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java index 23a8000d05..2cf93e8cc3 100644 --- a/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java +++ b/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java @@ -120,7 +120,7 @@ public void setEnabled(final boolean isEnabled) { @Override public void run() { try { - if(isEnabled) + if (isEnabled) Instabug.enable(); else Instabug.disable(); @@ -133,10 +133,11 @@ public void run() { /** * Initializes the SDK. - * @param token The token that identifies the app. You can find it on your dashboard. + * + * @param token The token that identifies the app. You can find it on your dashboard. * @param invocationEventValues The events that invoke the SDK's UI. - * @param logLevel The level of detail in logs that you want to print. - * @param codePushVersion The Code Push version to be used for all reports. + * @param logLevel The level of detail in logs that you want to print. + * @param codePushVersion The Code Push version to be used for all reports. */ @ReactMethod public void init( @@ -162,8 +163,8 @@ public void run() { .setInvocationEvents(invocationEvents) .setLogLevel(parsedLogLevel); - if(codePushVersion != null) { - if(Instabug.isBuilt()) { + if (codePushVersion != null) { + if (Instabug.isBuilt()) { Instabug.setCodePushVersion(codePushVersion); } else { builder.setCodePushVersion(codePushVersion); @@ -329,7 +330,7 @@ public void run() { * * @param userEmail User's default email * @param userName Username. - * @param userId User's ID + * @param userId User's ID */ @ReactMethod public void identifyUser( @@ -749,15 +750,15 @@ public void addFileAttachmentWithDataToReport(String data, String fileName) { private WritableMap convertFromHashMapToWriteableMap(HashMap hashMap) { WritableMap writableMap = new WritableNativeMap(); - for(int i = 0; i < hashMap.size(); i++) { + for (int i = 0; i < hashMap.size(); i++) { Object key = hashMap.keySet().toArray()[i]; Object value = hashMap.get(key); - writableMap.putString((String) key,(String) value); + writableMap.putString((String) key, (String) value); } return writableMap; } - private static JSONObject objectToJSONObject(Object object){ + private static JSONObject objectToJSONObject(Object object) { Object json = null; JSONObject jsonObject = null; try { @@ -774,13 +775,12 @@ private static JSONObject objectToJSONObject(Object object){ private WritableArray convertArrayListToWritableArray(List arrayList) { WritableArray writableArray = new WritableNativeArray(); - for(int i = 0; i < arrayList.size(); i++) { + for (int i = 0; i < arrayList.size(); i++) { Object object = arrayList.get(i); - if(object instanceof String) { + if (object instanceof String) { writableArray.pushString((String) object); - } - else { + } else { JSONObject jsonObject = objectToJSONObject(object); writableArray.pushMap((WritableMap) jsonObject); } @@ -836,7 +836,7 @@ public void run() { * Shows the welcome message in a specific mode. * * @param welcomeMessageMode An enum to set the welcome message mode to - * live, or beta. + * live, or beta. */ @ReactMethod public void showWelcomeMessageWithMode(final String welcomeMessageMode) { @@ -858,7 +858,7 @@ public void run() { * Sets the welcome message mode to live, beta or disabled. * * @param welcomeMessageMode An enum to set the welcome message mode to - * live, beta or disabled. + * live, beta or disabled. */ @ReactMethod public void setWelcomeMessageMode(final String welcomeMessageMode) { @@ -993,7 +993,6 @@ public void run() { * Reports that the screen name been changed (Current View). * * @param screenName string containing the screen name - * */ @ReactMethod public void reportCurrentViewChange(final String screenName) { @@ -1016,7 +1015,6 @@ public void run() { * Reports that the screen has been changed (Repro Steps) the screen sent to this method will be the 'current view' on the dashboard * * @param screenName string containing the screen name - * */ @ReactMethod public void reportScreenChange(final String screenName) { @@ -1026,7 +1024,7 @@ public void run() { try { Method method = getMethod(Class.forName("com.instabug.library.Instabug"), "reportScreenChange", Bitmap.class, String.class); if (method != null) { - method.invoke(null , null, screenName); + method.invoke(null, null, screenName); } } catch (Exception e) { e.printStackTrace(); @@ -1120,7 +1118,7 @@ public void removeFeatureFlags(final ReadableArray featureFlags) { @Override public void run() { try { - ArrayList stringArray = ArrayUtil.parseReadableArrayOfStrings(featureFlags); + ArrayList stringArray = ArrayUtil.parseReadableArrayOfStrings(featureFlags); Instabug.removeFeatureFlag(stringArray); } catch (Exception e) { e.printStackTrace(); @@ -1156,11 +1154,12 @@ public void run() { } }); } + /** * Register a listener for W3C flags value change */ @ReactMethod - public void registerW3CFlagsChangeListener(){ + public void registerW3CFlagsChangeListener() { MainThreadHandler.runOnMainThread(new Runnable() { @Override @@ -1177,8 +1176,7 @@ public void invoke(@NonNull CoreFeaturesState featuresState) { sendEvent(Constants.IBG_ON_NEW_W3C_FLAGS_UPDATE_RECEIVED_CALLBACK, params); } }); - } - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); } @@ -1189,18 +1187,17 @@ public void invoke(@NonNull CoreFeaturesState featuresState) { /** - * Get first time Value of W3ExternalTraceID flag + * Get first time Value of W3ExternalTraceID flag */ @ReactMethod - public void isW3ExternalTraceIDEnabled(Promise promise){ + public void isW3ExternalTraceIDEnabled(Promise promise) { MainThreadHandler.runOnMainThread(new Runnable() { @Override public void run() { try { promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_EXTERNAL_TRACE_ID)); - } - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); promise.resolve(false); } @@ -1212,18 +1209,17 @@ public void run() { /** - * Get first time Value of W3ExternalGeneratedHeader flag + * Get first time Value of W3ExternalGeneratedHeader flag */ @ReactMethod - public void isW3ExternalGeneratedHeaderEnabled(Promise promise){ + public void isW3ExternalGeneratedHeaderEnabled(Promise promise) { MainThreadHandler.runOnMainThread(new Runnable() { @Override public void run() { try { promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_ATTACHING_GENERATED_HEADER)); - } - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); promise.resolve(false); } @@ -1234,18 +1230,17 @@ public void run() { } /** - * Get first time Value of W3CaughtHeader flag + * Get first time Value of W3CaughtHeader flag */ @ReactMethod - public void isW3CaughtHeaderEnabled(Promise promise){ + public void isW3CaughtHeaderEnabled(Promise promise) { MainThreadHandler.runOnMainThread(new Runnable() { @Override public void run() { try { promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_ATTACHING_CAPTURED_HEADER)); - } - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); promise.resolve(false); } From 66a009fa10505e462f85ef8e9d8a198f6d6db1dc Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Wed, 5 Mar 2025 15:51:00 +0200 Subject: [PATCH 25/39] fix: linting --- .../RNInstabugReactnativeModule.java.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .lh/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java.json diff --git a/.lh/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java.json b/.lh/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java.json new file mode 100644 index 0000000000..e3e23ec932 --- /dev/null +++ b/.lh/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java.json @@ -0,0 +1,18 @@ +{ + "sourceFile": "android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java", + "activeCommit": 0, + "commits": [ + { + "activePatchIndex": 0, + "patches": [ + { + "date": 1742913538940, + "content": "Index: \n===================================================================\n--- \n+++ \n" + } + ], + "date": 1742913538940, + "name": "Commit-0", + "content": "package com.instabug.reactlibrary;\n\nimport static com.instabug.reactlibrary.utils.InstabugUtil.getMethod;\n\nimport android.app.Application;\nimport android.graphics.Bitmap;\nimport android.net.Uri;\nimport android.util.Log;\nimport android.view.View;\n\nimport androidx.annotation.NonNull;\nimport androidx.annotation.UiThread;\n\nimport com.facebook.react.bridge.Arguments;\nimport com.facebook.react.bridge.Callback;\nimport com.facebook.react.bridge.Promise;\nimport com.facebook.react.bridge.ReactApplicationContext;\nimport com.facebook.react.bridge.ReactMethod;\nimport com.facebook.react.bridge.ReadableArray;\nimport com.facebook.react.bridge.ReadableMap;\nimport com.facebook.react.bridge.WritableArray;\nimport com.facebook.react.bridge.WritableMap;\nimport com.facebook.react.bridge.WritableNativeArray;\nimport com.facebook.react.bridge.WritableNativeMap;\nimport com.facebook.react.uimanager.UIManagerModule;\nimport com.instabug.apm.InternalAPM;\nimport com.instabug.apm.configuration.cp.APMFeature;\nimport com.instabug.library.Feature;\nimport com.instabug.library.Instabug;\nimport com.instabug.library.InstabugColorTheme;\nimport com.instabug.library.InstabugCustomTextPlaceHolder;\nimport com.instabug.library.IssueType;\nimport com.instabug.library.LogLevel;\nimport com.instabug.library.ReproConfigurations;\nimport com.instabug.library.core.InstabugCore;\nimport com.instabug.library.internal.crossplatform.CoreFeature;\nimport com.instabug.library.internal.crossplatform.CoreFeaturesState;\nimport com.instabug.library.internal.crossplatform.FeaturesStateListener;\nimport com.instabug.library.internal.crossplatform.InternalCore;\nimport com.instabug.library.featuresflags.model.IBGFeatureFlag;\nimport com.instabug.library.featuresflags.model.IBGFeatureFlag;\nimport com.instabug.library.internal.module.InstabugLocale;\nimport com.instabug.library.invocation.InstabugInvocationEvent;\nimport com.instabug.library.logging.InstabugLog;\nimport com.instabug.library.model.NetworkLog;\nimport com.instabug.library.model.Report;\nimport com.instabug.library.ui.onboarding.WelcomeMessage;\nimport com.instabug.library.util.InstabugSDKLogger;\nimport com.instabug.reactlibrary.utils.ArrayUtil;\nimport com.instabug.reactlibrary.utils.EventEmitterModule;\nimport com.instabug.reactlibrary.utils.MainThreadHandler;\n\nimport com.instabug.reactlibrary.utils.RNTouchedViewExtractor;\n\nimport org.json.JSONException;\nimport org.json.JSONObject;\nimport org.json.JSONTokener;\n\nimport java.io.File;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.Iterator;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\n\nimport javax.annotation.Nullable;\n\n\n/**\n * The type Rn instabug reactnative module.\n */\npublic class RNInstabugReactnativeModule extends EventEmitterModule {\n\n private static final String TAG = \"IBG-RN-Core\";\n\n private InstabugCustomTextPlaceHolder placeHolders;\n private static Report currentReport;\n private final ReactApplicationContext reactContext;\n\n /**\n * Instantiates a new Rn Instabug ReactNative module.\n *\n * @param reactContext the react context\n */\n public RNInstabugReactnativeModule(ReactApplicationContext reactContext) {\n super(reactContext);\n\n this.reactContext = reactContext;\n\n //init placeHolders\n placeHolders = new InstabugCustomTextPlaceHolder();\n }\n\n @Override\n public String getName() {\n return \"Instabug\";\n }\n\n\n @ReactMethod\n public void addListener(String event) {\n super.addListener(event);\n }\n\n @ReactMethod\n public void removeListeners(Integer count) {\n super.removeListeners(count);\n }\n\n /**\n * Enables or disables Instabug functionality.\n * @param isEnabled A boolean to enable/disable Instabug.\n */\n @ReactMethod\n public void setEnabled(final boolean isEnabled) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n if (isEnabled)\n Instabug.enable();\n else\n Instabug.disable();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Initializes the SDK.\n *\n * @param token The token that identifies the app. You can find it on your dashboard.\n * @param invocationEventValues The events that invoke the SDK's UI.\n * @param logLevel The level of detail in logs that you want to print.\n * @param codePushVersion The Code Push version to be used for all reports.\n */\n @ReactMethod\n public void init(\n final String token,\n final ReadableArray invocationEventValues,\n final String logLevel,\n final boolean useNativeNetworkInterception,\n @Nullable final String codePushVersion\n ) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n final RNTouchedViewExtractor rnTouchedViewExtractor = new RNTouchedViewExtractor();\n InstabugCore.setTouchedViewExtractorExtension(rnTouchedViewExtractor);\n final ArrayList keys = ArrayUtil.parseReadableArrayOfStrings(invocationEventValues);\n final ArrayList parsedInvocationEvents = ArgsRegistry.invocationEvents.getAll(keys);\n final InstabugInvocationEvent[] invocationEvents = parsedInvocationEvents.toArray(new InstabugInvocationEvent[0]);\n final int parsedLogLevel = ArgsRegistry.sdkLogLevels.getOrDefault(logLevel, LogLevel.ERROR);\n\n final Application application = (Application) reactContext.getApplicationContext();\n\n RNInstabug.Builder builder = new RNInstabug.Builder(application, token)\n .setInvocationEvents(invocationEvents)\n .setLogLevel(parsedLogLevel);\n\n if (codePushVersion != null) {\n if (Instabug.isBuilt()) {\n Instabug.setCodePushVersion(codePushVersion);\n } else {\n builder.setCodePushVersion(codePushVersion);\n }\n }\n builder.build();\n }\n });\n }\n\n @ReactMethod\n public void setCodePushVersion(@Nullable final String version) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.setCodePushVersion(version);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n\n /**\n * Adds tag(s) to issues before sending them\n *\n * @param tags\n */\n @ReactMethod\n public void appendTags(final ReadableArray tags) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Object[] objectArray = ArrayUtil.toArray(tags);\n String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);\n Instabug.addTags(stringArray);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n\n }\n\n /**\n * Change Locale of Instabug UI elements(defaults to English)\n *\n * @param instabugLocale\n */\n @ReactMethod\n public void setLocale(final String instabugLocale) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final InstabugLocale parsedLocale = ArgsRegistry.locales\n .getOrDefault(instabugLocale, InstabugLocale.ENGLISH);\n final Locale locale = new Locale(parsedLocale.getCode(), parsedLocale.getCountry());\n Instabug.setLocale(locale);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * The file at filePath will be uploaded along upcoming reports with the name\n * fileNameWithExtension\n *\n * @param fileUri the file uri\n * @param fileNameWithExtension the file name with extension\n */\n @ReactMethod\n public void setFileAttachment(final String fileUri, final String fileNameWithExtension) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n File file = new File(fileUri);\n if (file.exists()) {\n Instabug.addFileAttachment(Uri.fromFile(file), fileNameWithExtension);\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n\n }\n\n /**\n * Adds specific user data that you need to be added to the reports\n *\n * @param userData\n */\n @ReactMethod\n public void setUserData(final String userData) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.setUserData(userData);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Set the primary color that the SDK will use to tint certain UI elements in the SDK\n *\n * @param primaryColor The value of the primary color ,\n * whatever this color was parsed from a resource color or hex color\n * or RGB color values\n */\n @ReactMethod\n public void setPrimaryColor(final int primaryColor) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.setPrimaryColor(primaryColor);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Gets tags.\n *\n * @return all tags added\n * @see #resetTags()\n */\n @ReactMethod\n public void getTags(final Promise promise) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n WritableArray tagsArray = Arguments.createArray();\n try {\n ArrayList tags = Instabug.getTags();\n for (int i = 0; i < tags.size(); i++) {\n tagsArray.pushString(tags.get(i));\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n promise.resolve(tagsArray);\n }\n });\n }\n\n /**\n * Set the user identity.\n * Instabug will pre-fill the user email in reports.\n *\n * @param userEmail User's default email\n * @param userName Username.\n * @param userId User's ID\n */\n @ReactMethod\n public void identifyUser(\n final String userEmail,\n final String userName,\n @Nullable final String userId\n ) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n // The arguments get re-ordered here to match the API signature.\n Instabug.identifyUser(userName, userEmail, userId);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Reset ALL tags added\n */\n @ReactMethod\n public void resetTags() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.resetTags();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void logVerbose(final String message) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InstabugLog.v(message);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void logDebug(final String message) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InstabugLog.d(message);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void logInfo(final String message) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InstabugLog.i(message);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void logError(final String message) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InstabugLog.e(message);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void logWarn(final String message) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InstabugLog.w(message);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Clears Instabug internal log\n */\n @ReactMethod\n public void clearLogs() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InstabugLog.clearLogs();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Sets user attribute to overwrite it's value or create a new one if it doesn't exist.\n *\n * @param key the attribute\n * @param value the value\n */\n @ReactMethod\n public void setUserAttribute(final String key, final String value) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.setUserAttribute(key, value);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Gets specific user attribute.\n *\n * @param key the attribute key as string\n * @return the desired user attribute\n */\n @ReactMethod\n public void getUserAttribute(final String key, final Promise promise) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n String userAttribute = \"\";\n try {\n userAttribute = Instabug.getUserAttribute(key);\n } catch (Exception e) {\n e.printStackTrace();\n }\n promise.resolve(userAttribute);\n }\n });\n }\n\n /**\n * Removes user attribute if exists.\n *\n * @param key the attribute key as string\n * @see #setUserAttribute(String, String)\n */\n @ReactMethod\n public void removeUserAttribute(final String key) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.removeUserAttribute(key);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Gets all saved user attributes.\n *\n * @return all user attributes as HashMap\n */\n @ReactMethod\n public void getAllUserAttributes(final Promise promise) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n WritableMap writableMap = Arguments.createMap();\n try {\n HashMap map = Instabug.getAllUserAttributes();\n for (HashMap.Entry entry : map.entrySet()) {\n writableMap.putString(entry.getKey(), entry.getValue());\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n promise.resolve(writableMap);\n }\n });\n }\n\n /**\n * Clears all user attributes if exists.\n */\n @ReactMethod\n public void clearAllUserAttributes() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.clearAllUserAttributes();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Sets InstabugSDK theme color.\n *\n * @param theme which is a constant String \"light\" or \"dark\"\n */\n @ReactMethod\n public void setColorTheme(final String theme) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final InstabugColorTheme colorTheme = ArgsRegistry.colorThemes\n .getOrDefault(theme, InstabugColorTheme.InstabugColorThemeLight);\n Instabug.setColorTheme(colorTheme);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Overrides any of the strings shown in the SDK with custom ones.\n * Allows you to customize any of the strings shown to users in the SDK.\n *\n * @param string String value to override the default one.\n * @param key Key of string to override.\n */\n @ReactMethod\n public void setString(final String string, final String key) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final InstabugCustomTextPlaceHolder.Key parsedKey = ArgsRegistry.placeholders.get(key);\n placeHolders.set(parsedKey, string);\n Instabug.setCustomTextPlaceHolders(placeHolders);\n } catch (java.lang.Exception exception) {\n exception.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Sets the default value of the user's email to null and show email field and remove user\n * name from all reports\n * It also reset the chats on device and removes user attributes, user data and completed\n * surveys.\n */\n @ReactMethod\n public void logOut() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.logoutUser();\n } catch (java.lang.Exception exception) {\n exception.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Logs a user event that happens through the lifecycle of the application.\n * Logged user events are going to be sent with each report, as well as at the end of a session.\n *\n * @param name Event name.\n */\n @ReactMethod\n public void logUserEvent(final String name) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.logUserEvent(name);\n } catch (java.lang.Exception exception) {\n exception.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Sets a block of code to be executed before sending each report.\n * This block is executed in the background before sending each report. Could\n * be used for attaching logs and extra data to reports.\n *\n * @param preSendingHandler - A callback that gets executed before\n * sending each bug\n * report.\n */\n @ReactMethod\n public void setPreSendingHandler(final Callback preSendingHandler) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n Instabug.onReportSubmitHandler(new Report.OnReportCreatedListener() {\n @Override\n public void onReportCreated(Report report) {\n WritableMap reportParam = Arguments.createMap();\n reportParam.putArray(\"tagsArray\", convertArrayListToWritableArray(report.getTags()));\n reportParam.putArray(\"consoleLogs\", convertArrayListToWritableArray(report.getConsoleLog()));\n reportParam.putString(\"userData\", report.getUserData());\n reportParam.putMap(\"userAttributes\", convertFromHashMapToWriteableMap(report.getUserAttributes()));\n reportParam.putMap(\"fileAttachments\", convertFromHashMapToWriteableMap(report.getFileAttachments()));\n sendEvent(\"IBGpreSendingHandler\", reportParam);\n currentReport = report;\n }\n });\n }\n });\n }\n\n protected static void clearCurrentReport() {\n currentReport = null;\n }\n\n @ReactMethod\n public void appendTagToReport(String tag) {\n if (currentReport != null) {\n currentReport.addTag(tag);\n }\n }\n\n @ReactMethod\n public void appendConsoleLogToReport(String consoleLog) {\n if (currentReport != null) {\n currentReport.appendToConsoleLogs(consoleLog);\n }\n }\n\n @ReactMethod\n public void setUserAttributeToReport(String key, String value) {\n if (currentReport != null) {\n currentReport.setUserAttribute(key, value);\n }\n }\n\n @ReactMethod\n public void logDebugToReport(String log) {\n if (currentReport != null) {\n currentReport.logDebug(log);\n }\n }\n\n @ReactMethod\n public void logVerboseToReport(String log) {\n if (currentReport != null) {\n currentReport.logVerbose(log);\n }\n }\n\n @ReactMethod\n public void logWarnToReport(String log) {\n if (currentReport != null) {\n currentReport.logWarn(log);\n }\n }\n\n @ReactMethod\n public void logErrorToReport(String log) {\n if (currentReport != null) {\n currentReport.logError(log);\n }\n }\n\n @ReactMethod\n public void logInfoToReport(String log) {\n if (currentReport != null) {\n currentReport.logInfo(log);\n }\n }\n\n @ReactMethod\n public void addFileAttachmentWithURLToReport(String urlString, String fileName) {\n if (currentReport != null) {\n Uri uri = Uri.parse(urlString);\n currentReport.addFileAttachment(uri, fileName);\n }\n }\n\n @ReactMethod\n public void addFileAttachmentWithDataToReport(String data, String fileName) {\n if (currentReport != null) {\n currentReport.addFileAttachment(data.getBytes(), fileName);\n }\n }\n\n private WritableMap convertFromHashMapToWriteableMap(HashMap hashMap) {\n WritableMap writableMap = new WritableNativeMap();\n for (int i = 0; i < hashMap.size(); i++) {\n Object key = hashMap.keySet().toArray()[i];\n Object value = hashMap.get(key);\n writableMap.putString((String) key, (String) value);\n }\n return writableMap;\n }\n\n private static JSONObject objectToJSONObject(Object object) {\n Object json = null;\n JSONObject jsonObject = null;\n try {\n json = new JSONTokener(object.toString()).nextValue();\n } catch (JSONException e) {\n e.printStackTrace();\n }\n if (json instanceof JSONObject) {\n jsonObject = (JSONObject) json;\n }\n return jsonObject;\n }\n\n private WritableArray convertArrayListToWritableArray(List arrayList) {\n WritableArray writableArray = new WritableNativeArray();\n\n for (int i = 0; i < arrayList.size(); i++) {\n Object object = arrayList.get(i);\n\n if (object instanceof String) {\n writableArray.pushString((String) object);\n } else {\n JSONObject jsonObject = objectToJSONObject(object);\n writableArray.pushMap((WritableMap) jsonObject);\n }\n }\n\n return writableArray;\n\n }\n\n /**\n * Clears all Uris of the attached files.\n * The URIs which added via {@link Instabug#addFileAttachment} API not the physical files.\n */\n @ReactMethod\n public void clearFileAttachment() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.clearFileAttachment();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void setReproStepsConfig(final String bugMode, final String crashMode, final String sessionReplayMode) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final Integer resolvedBugMode = ArgsRegistry.reproModes.get(bugMode);\n final Integer resolvedCrashMode = ArgsRegistry.reproModes.get(crashMode);\n final Integer resolvedSessionReplayMode = ArgsRegistry.reproModes.get(sessionReplayMode);\n\n final ReproConfigurations config = new ReproConfigurations.Builder()\n .setIssueMode(IssueType.Bug, resolvedBugMode)\n .setIssueMode(IssueType.Crash, resolvedCrashMode)\n .setIssueMode(IssueType.SessionReplay, resolvedSessionReplayMode)\n .build();\n\n Instabug.setReproConfigurations(config);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Shows the welcome message in a specific mode.\n *\n * @param welcomeMessageMode An enum to set the welcome message mode to\n * live, or beta.\n */\n @ReactMethod\n public void showWelcomeMessageWithMode(final String welcomeMessageMode) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final WelcomeMessage.State parsedState = ArgsRegistry.welcomeMessageStates\n .getOrDefault(welcomeMessageMode, WelcomeMessage.State.LIVE);\n Instabug.showWelcomeMessage(parsedState);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Sets the welcome message mode to live, beta or disabled.\n *\n * @param welcomeMessageMode An enum to set the welcome message mode to\n * live, beta or disabled.\n */\n @ReactMethod\n public void setWelcomeMessageMode(final String welcomeMessageMode) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final WelcomeMessage.State parsedState = ArgsRegistry.welcomeMessageStates\n .getOrDefault(welcomeMessageMode, WelcomeMessage.State.LIVE);\n Instabug.setWelcomeMessageState(parsedState);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void show() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n Instabug.show();\n }\n });\n }\n\n /**\n * Enable/disable session profiler\n *\n * @param sessionProfilerEnabled desired state of the session profiler feature\n */\n @ReactMethod\n public void setSessionProfilerEnabled(final boolean sessionProfilerEnabled) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n if (sessionProfilerEnabled) {\n Instabug.setSessionProfilerState(Feature.State.ENABLED);\n } else {\n Instabug.setSessionProfilerState(Feature.State.DISABLED);\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void networkLogAndroid(final String url,\n final String requestBody,\n final String responseBody,\n final String method,\n final double responseCode,\n final String requestHeaders,\n final String responseHeaders,\n final double duration) {\n try {\n final String date = String.valueOf(System.currentTimeMillis());\n\n NetworkLog networkLog = new NetworkLog();\n networkLog.setDate(date);\n networkLog.setUrl(url);\n networkLog.setMethod(method);\n networkLog.setResponseCode((int) responseCode);\n networkLog.setTotalDuration((long) duration);\n\n try {\n networkLog.setRequest(requestBody);\n networkLog.setResponse(responseBody);\n networkLog.setRequestHeaders(requestHeaders);\n networkLog.setResponseHeaders(responseHeaders);\n } catch (OutOfMemoryError | Exception exception) {\n Log.d(TAG, \"Error: \" + exception.getMessage() + \"while trying to set network log contents (request body, response body, request headers, and response headers).\");\n }\n\n networkLog.insert();\n } catch (OutOfMemoryError | Exception exception) {\n Log.d(TAG, \"Error: \" + exception.getMessage() + \"while trying to insert a network log\");\n }\n }\n\n @UiThread\n @Nullable\n private View resolveReactView(final int reactTag) {\n final ReactApplicationContext reactContext = getReactApplicationContext();\n final UIManagerModule uiManagerModule = reactContext.getNativeModule(UIManagerModule.class);\n\n if (uiManagerModule == null) {\n return null;\n }\n\n return uiManagerModule.resolveView(reactTag);\n }\n\n\n @ReactMethod\n public void addPrivateView(final int reactTag) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final View view = resolveReactView(reactTag);\n\n Instabug.addPrivateViews(view);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void removePrivateView(final int reactTag) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final View view = resolveReactView(reactTag);\n\n Instabug.removePrivateViews(view);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Reports that the screen name been changed (Current View).\n *\n * @param screenName string containing the screen name\n */\n @ReactMethod\n public void reportCurrentViewChange(final String screenName) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Method method = getMethod(Class.forName(\"com.instabug.library.Instabug\"), \"reportCurrentViewChange\", String.class);\n if (method != null) {\n method.invoke(null, screenName);\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Reports that the screen has been changed (Repro Steps) the screen sent to this method will be the 'current view' on the dashboard\n *\n * @param screenName string containing the screen name\n */\n @ReactMethod\n public void reportScreenChange(final String screenName) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Method method = getMethod(Class.forName(\"com.instabug.library.Instabug\"), \"reportScreenChange\", Bitmap.class, String.class);\n if (method != null) {\n method.invoke(null, null, screenName);\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * @deprecated see {@link #addFeatureFlags(ReadableArray)}\n */\n @ReactMethod\n public void addExperiments(final ReadableArray experiments) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Object[] objectArray = ArrayUtil.toArray(experiments);\n String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);\n Instabug.addExperiments(Arrays.asList(stringArray));\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * @deprecated see {@link #removeFeatureFlags(ReadableArray)}\n */\n @ReactMethod\n public void removeExperiments(final ReadableArray experiments) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Object[] objectArray = ArrayUtil.toArray(experiments);\n String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);\n Instabug.removeExperiments(Arrays.asList(stringArray));\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * @deprecated see {@link #removeAllFeatureFlags()}\n */\n @ReactMethod\n public void clearAllExperiments() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.clearAllExperiments();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void addFeatureFlags(final ReadableMap featureFlagsMap) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Iterator> iterator = featureFlagsMap.getEntryIterator();\n ArrayList featureFlags = new ArrayList<>();\n while (iterator.hasNext()) {\n Map.Entry item = iterator.next();\n String variant = (String) item.getValue();\n String name = item.getKey();\n featureFlags.add(new IBGFeatureFlag(name, variant.isEmpty() ? null : variant));\n }\n if (!featureFlags.isEmpty()) {\n Instabug.addFeatureFlags(featureFlags);\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void removeFeatureFlags(final ReadableArray featureFlags) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n ArrayList stringArray = ArrayUtil.parseReadableArrayOfStrings(featureFlags);\n Instabug.removeFeatureFlag(stringArray);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void removeAllFeatureFlags() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.removeAllFeatureFlags();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void willRedirectToStore() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.willRedirectToStore();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Register a listener for W3C flags value change\n */\n @ReactMethod\n public void registerW3CFlagsChangeListener() {\n\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InternalCore.INSTANCE._setFeaturesStateListener(new FeaturesStateListener() {\n @Override\n public void invoke(@NonNull CoreFeaturesState featuresState) {\n WritableMap params = Arguments.createMap();\n params.putBoolean(\"isW3ExternalTraceIDEnabled\", featuresState.isW3CExternalTraceIdEnabled());\n params.putBoolean(\"isW3ExternalGeneratedHeaderEnabled\", featuresState.isAttachingGeneratedHeaderEnabled());\n params.putBoolean(\"isW3CaughtHeaderEnabled\", featuresState.isAttachingCapturedHeaderEnabled());\n\n sendEvent(Constants.IBG_ON_NEW_W3C_FLAGS_UPDATE_RECEIVED_CALLBACK, params);\n }\n });\n } catch (Exception e) {\n e.printStackTrace();\n }\n\n }\n\n });\n }\n\n\n /**\n * Get first time Value of W3ExternalTraceID flag\n */\n @ReactMethod\n public void isW3ExternalTraceIDEnabled(Promise promise) {\n\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_EXTERNAL_TRACE_ID));\n } catch (Exception e) {\n e.printStackTrace();\n promise.resolve(false);\n }\n\n }\n\n });\n }\n\n\n /**\n * Get first time Value of W3ExternalGeneratedHeader flag\n */\n @ReactMethod\n public void isW3ExternalGeneratedHeaderEnabled(Promise promise) {\n\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_ATTACHING_GENERATED_HEADER));\n } catch (Exception e) {\n e.printStackTrace();\n promise.resolve(false);\n }\n\n }\n\n });\n }\n\n /**\n * Get first time Value of W3CaughtHeader flag\n */\n @ReactMethod\n public void isW3CaughtHeaderEnabled(Promise promise) {\n\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_ATTACHING_CAPTURED_HEADER));\n } catch (Exception e) {\n e.printStackTrace();\n promise.resolve(false);\n }\n\n }\n\n });\n }\n\n\n /**\n * Map between the exported JS constant and the arg key in {@link ArgsRegistry}.\n * The constant name and the arg key should match to be able to resolve the\n * constant with its actual value from the {@link ArgsRegistry} maps.\n *\n * This is a workaround, because RN cannot resolve enums in the constants map.\n */\n @Override\n public Map getConstants() {\n final Map args = ArgsRegistry.getAll();\n final Map constants = new HashMap<>();\n\n for (String key : args.keySet()) {\n constants.put(key, key);\n }\n\n return constants;\n }\n\n /**\n * Sets the auto mask screenshots types.\n *\n * @param autoMaskingTypes The masking type to be applied.\n */\n @ReactMethod\n public void enableAutoMasking(@NonNull ReadableArray autoMaskingTypes) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n\n @Override\n public void run() {\n int[] autoMassingTypesArray = new int[autoMaskingTypes.size()];\n for (int i = 0; i < autoMaskingTypes.size(); i++) {\n String key = autoMaskingTypes.getString(i);\n\n autoMassingTypesArray[i] = ArgsRegistry.autoMaskingTypes.get(key);\n\n }\n\n Instabug.setAutoMaskScreenshotsTypes(autoMassingTypesArray);\n }\n\n });\n }\n}\n" + } + ] +} \ No newline at end of file From 487e3363aa608fd7c81e43125224c56380fcc5eb Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Wed, 5 Mar 2025 15:51:47 +0200 Subject: [PATCH 26/39] fix: update pod lock --- .../RNInstabugReactnativeModule.java.json | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 .lh/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java.json diff --git a/.lh/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java.json b/.lh/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java.json deleted file mode 100644 index e3e23ec932..0000000000 --- a/.lh/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "sourceFile": "android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java", - "activeCommit": 0, - "commits": [ - { - "activePatchIndex": 0, - "patches": [ - { - "date": 1742913538940, - "content": "Index: \n===================================================================\n--- \n+++ \n" - } - ], - "date": 1742913538940, - "name": "Commit-0", - "content": "package com.instabug.reactlibrary;\n\nimport static com.instabug.reactlibrary.utils.InstabugUtil.getMethod;\n\nimport android.app.Application;\nimport android.graphics.Bitmap;\nimport android.net.Uri;\nimport android.util.Log;\nimport android.view.View;\n\nimport androidx.annotation.NonNull;\nimport androidx.annotation.UiThread;\n\nimport com.facebook.react.bridge.Arguments;\nimport com.facebook.react.bridge.Callback;\nimport com.facebook.react.bridge.Promise;\nimport com.facebook.react.bridge.ReactApplicationContext;\nimport com.facebook.react.bridge.ReactMethod;\nimport com.facebook.react.bridge.ReadableArray;\nimport com.facebook.react.bridge.ReadableMap;\nimport com.facebook.react.bridge.WritableArray;\nimport com.facebook.react.bridge.WritableMap;\nimport com.facebook.react.bridge.WritableNativeArray;\nimport com.facebook.react.bridge.WritableNativeMap;\nimport com.facebook.react.uimanager.UIManagerModule;\nimport com.instabug.apm.InternalAPM;\nimport com.instabug.apm.configuration.cp.APMFeature;\nimport com.instabug.library.Feature;\nimport com.instabug.library.Instabug;\nimport com.instabug.library.InstabugColorTheme;\nimport com.instabug.library.InstabugCustomTextPlaceHolder;\nimport com.instabug.library.IssueType;\nimport com.instabug.library.LogLevel;\nimport com.instabug.library.ReproConfigurations;\nimport com.instabug.library.core.InstabugCore;\nimport com.instabug.library.internal.crossplatform.CoreFeature;\nimport com.instabug.library.internal.crossplatform.CoreFeaturesState;\nimport com.instabug.library.internal.crossplatform.FeaturesStateListener;\nimport com.instabug.library.internal.crossplatform.InternalCore;\nimport com.instabug.library.featuresflags.model.IBGFeatureFlag;\nimport com.instabug.library.featuresflags.model.IBGFeatureFlag;\nimport com.instabug.library.internal.module.InstabugLocale;\nimport com.instabug.library.invocation.InstabugInvocationEvent;\nimport com.instabug.library.logging.InstabugLog;\nimport com.instabug.library.model.NetworkLog;\nimport com.instabug.library.model.Report;\nimport com.instabug.library.ui.onboarding.WelcomeMessage;\nimport com.instabug.library.util.InstabugSDKLogger;\nimport com.instabug.reactlibrary.utils.ArrayUtil;\nimport com.instabug.reactlibrary.utils.EventEmitterModule;\nimport com.instabug.reactlibrary.utils.MainThreadHandler;\n\nimport com.instabug.reactlibrary.utils.RNTouchedViewExtractor;\n\nimport org.json.JSONException;\nimport org.json.JSONObject;\nimport org.json.JSONTokener;\n\nimport java.io.File;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.Iterator;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\n\nimport javax.annotation.Nullable;\n\n\n/**\n * The type Rn instabug reactnative module.\n */\npublic class RNInstabugReactnativeModule extends EventEmitterModule {\n\n private static final String TAG = \"IBG-RN-Core\";\n\n private InstabugCustomTextPlaceHolder placeHolders;\n private static Report currentReport;\n private final ReactApplicationContext reactContext;\n\n /**\n * Instantiates a new Rn Instabug ReactNative module.\n *\n * @param reactContext the react context\n */\n public RNInstabugReactnativeModule(ReactApplicationContext reactContext) {\n super(reactContext);\n\n this.reactContext = reactContext;\n\n //init placeHolders\n placeHolders = new InstabugCustomTextPlaceHolder();\n }\n\n @Override\n public String getName() {\n return \"Instabug\";\n }\n\n\n @ReactMethod\n public void addListener(String event) {\n super.addListener(event);\n }\n\n @ReactMethod\n public void removeListeners(Integer count) {\n super.removeListeners(count);\n }\n\n /**\n * Enables or disables Instabug functionality.\n * @param isEnabled A boolean to enable/disable Instabug.\n */\n @ReactMethod\n public void setEnabled(final boolean isEnabled) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n if (isEnabled)\n Instabug.enable();\n else\n Instabug.disable();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Initializes the SDK.\n *\n * @param token The token that identifies the app. You can find it on your dashboard.\n * @param invocationEventValues The events that invoke the SDK's UI.\n * @param logLevel The level of detail in logs that you want to print.\n * @param codePushVersion The Code Push version to be used for all reports.\n */\n @ReactMethod\n public void init(\n final String token,\n final ReadableArray invocationEventValues,\n final String logLevel,\n final boolean useNativeNetworkInterception,\n @Nullable final String codePushVersion\n ) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n final RNTouchedViewExtractor rnTouchedViewExtractor = new RNTouchedViewExtractor();\n InstabugCore.setTouchedViewExtractorExtension(rnTouchedViewExtractor);\n final ArrayList keys = ArrayUtil.parseReadableArrayOfStrings(invocationEventValues);\n final ArrayList parsedInvocationEvents = ArgsRegistry.invocationEvents.getAll(keys);\n final InstabugInvocationEvent[] invocationEvents = parsedInvocationEvents.toArray(new InstabugInvocationEvent[0]);\n final int parsedLogLevel = ArgsRegistry.sdkLogLevels.getOrDefault(logLevel, LogLevel.ERROR);\n\n final Application application = (Application) reactContext.getApplicationContext();\n\n RNInstabug.Builder builder = new RNInstabug.Builder(application, token)\n .setInvocationEvents(invocationEvents)\n .setLogLevel(parsedLogLevel);\n\n if (codePushVersion != null) {\n if (Instabug.isBuilt()) {\n Instabug.setCodePushVersion(codePushVersion);\n } else {\n builder.setCodePushVersion(codePushVersion);\n }\n }\n builder.build();\n }\n });\n }\n\n @ReactMethod\n public void setCodePushVersion(@Nullable final String version) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.setCodePushVersion(version);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n\n /**\n * Adds tag(s) to issues before sending them\n *\n * @param tags\n */\n @ReactMethod\n public void appendTags(final ReadableArray tags) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Object[] objectArray = ArrayUtil.toArray(tags);\n String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);\n Instabug.addTags(stringArray);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n\n }\n\n /**\n * Change Locale of Instabug UI elements(defaults to English)\n *\n * @param instabugLocale\n */\n @ReactMethod\n public void setLocale(final String instabugLocale) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final InstabugLocale parsedLocale = ArgsRegistry.locales\n .getOrDefault(instabugLocale, InstabugLocale.ENGLISH);\n final Locale locale = new Locale(parsedLocale.getCode(), parsedLocale.getCountry());\n Instabug.setLocale(locale);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * The file at filePath will be uploaded along upcoming reports with the name\n * fileNameWithExtension\n *\n * @param fileUri the file uri\n * @param fileNameWithExtension the file name with extension\n */\n @ReactMethod\n public void setFileAttachment(final String fileUri, final String fileNameWithExtension) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n File file = new File(fileUri);\n if (file.exists()) {\n Instabug.addFileAttachment(Uri.fromFile(file), fileNameWithExtension);\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n\n }\n\n /**\n * Adds specific user data that you need to be added to the reports\n *\n * @param userData\n */\n @ReactMethod\n public void setUserData(final String userData) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.setUserData(userData);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Set the primary color that the SDK will use to tint certain UI elements in the SDK\n *\n * @param primaryColor The value of the primary color ,\n * whatever this color was parsed from a resource color or hex color\n * or RGB color values\n */\n @ReactMethod\n public void setPrimaryColor(final int primaryColor) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.setPrimaryColor(primaryColor);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Gets tags.\n *\n * @return all tags added\n * @see #resetTags()\n */\n @ReactMethod\n public void getTags(final Promise promise) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n WritableArray tagsArray = Arguments.createArray();\n try {\n ArrayList tags = Instabug.getTags();\n for (int i = 0; i < tags.size(); i++) {\n tagsArray.pushString(tags.get(i));\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n promise.resolve(tagsArray);\n }\n });\n }\n\n /**\n * Set the user identity.\n * Instabug will pre-fill the user email in reports.\n *\n * @param userEmail User's default email\n * @param userName Username.\n * @param userId User's ID\n */\n @ReactMethod\n public void identifyUser(\n final String userEmail,\n final String userName,\n @Nullable final String userId\n ) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n // The arguments get re-ordered here to match the API signature.\n Instabug.identifyUser(userName, userEmail, userId);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Reset ALL tags added\n */\n @ReactMethod\n public void resetTags() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.resetTags();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void logVerbose(final String message) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InstabugLog.v(message);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void logDebug(final String message) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InstabugLog.d(message);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void logInfo(final String message) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InstabugLog.i(message);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void logError(final String message) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InstabugLog.e(message);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void logWarn(final String message) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InstabugLog.w(message);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Clears Instabug internal log\n */\n @ReactMethod\n public void clearLogs() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InstabugLog.clearLogs();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Sets user attribute to overwrite it's value or create a new one if it doesn't exist.\n *\n * @param key the attribute\n * @param value the value\n */\n @ReactMethod\n public void setUserAttribute(final String key, final String value) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.setUserAttribute(key, value);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Gets specific user attribute.\n *\n * @param key the attribute key as string\n * @return the desired user attribute\n */\n @ReactMethod\n public void getUserAttribute(final String key, final Promise promise) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n String userAttribute = \"\";\n try {\n userAttribute = Instabug.getUserAttribute(key);\n } catch (Exception e) {\n e.printStackTrace();\n }\n promise.resolve(userAttribute);\n }\n });\n }\n\n /**\n * Removes user attribute if exists.\n *\n * @param key the attribute key as string\n * @see #setUserAttribute(String, String)\n */\n @ReactMethod\n public void removeUserAttribute(final String key) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.removeUserAttribute(key);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Gets all saved user attributes.\n *\n * @return all user attributes as HashMap\n */\n @ReactMethod\n public void getAllUserAttributes(final Promise promise) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n WritableMap writableMap = Arguments.createMap();\n try {\n HashMap map = Instabug.getAllUserAttributes();\n for (HashMap.Entry entry : map.entrySet()) {\n writableMap.putString(entry.getKey(), entry.getValue());\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n promise.resolve(writableMap);\n }\n });\n }\n\n /**\n * Clears all user attributes if exists.\n */\n @ReactMethod\n public void clearAllUserAttributes() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.clearAllUserAttributes();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Sets InstabugSDK theme color.\n *\n * @param theme which is a constant String \"light\" or \"dark\"\n */\n @ReactMethod\n public void setColorTheme(final String theme) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final InstabugColorTheme colorTheme = ArgsRegistry.colorThemes\n .getOrDefault(theme, InstabugColorTheme.InstabugColorThemeLight);\n Instabug.setColorTheme(colorTheme);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Overrides any of the strings shown in the SDK with custom ones.\n * Allows you to customize any of the strings shown to users in the SDK.\n *\n * @param string String value to override the default one.\n * @param key Key of string to override.\n */\n @ReactMethod\n public void setString(final String string, final String key) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final InstabugCustomTextPlaceHolder.Key parsedKey = ArgsRegistry.placeholders.get(key);\n placeHolders.set(parsedKey, string);\n Instabug.setCustomTextPlaceHolders(placeHolders);\n } catch (java.lang.Exception exception) {\n exception.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Sets the default value of the user's email to null and show email field and remove user\n * name from all reports\n * It also reset the chats on device and removes user attributes, user data and completed\n * surveys.\n */\n @ReactMethod\n public void logOut() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.logoutUser();\n } catch (java.lang.Exception exception) {\n exception.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Logs a user event that happens through the lifecycle of the application.\n * Logged user events are going to be sent with each report, as well as at the end of a session.\n *\n * @param name Event name.\n */\n @ReactMethod\n public void logUserEvent(final String name) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.logUserEvent(name);\n } catch (java.lang.Exception exception) {\n exception.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Sets a block of code to be executed before sending each report.\n * This block is executed in the background before sending each report. Could\n * be used for attaching logs and extra data to reports.\n *\n * @param preSendingHandler - A callback that gets executed before\n * sending each bug\n * report.\n */\n @ReactMethod\n public void setPreSendingHandler(final Callback preSendingHandler) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n Instabug.onReportSubmitHandler(new Report.OnReportCreatedListener() {\n @Override\n public void onReportCreated(Report report) {\n WritableMap reportParam = Arguments.createMap();\n reportParam.putArray(\"tagsArray\", convertArrayListToWritableArray(report.getTags()));\n reportParam.putArray(\"consoleLogs\", convertArrayListToWritableArray(report.getConsoleLog()));\n reportParam.putString(\"userData\", report.getUserData());\n reportParam.putMap(\"userAttributes\", convertFromHashMapToWriteableMap(report.getUserAttributes()));\n reportParam.putMap(\"fileAttachments\", convertFromHashMapToWriteableMap(report.getFileAttachments()));\n sendEvent(\"IBGpreSendingHandler\", reportParam);\n currentReport = report;\n }\n });\n }\n });\n }\n\n protected static void clearCurrentReport() {\n currentReport = null;\n }\n\n @ReactMethod\n public void appendTagToReport(String tag) {\n if (currentReport != null) {\n currentReport.addTag(tag);\n }\n }\n\n @ReactMethod\n public void appendConsoleLogToReport(String consoleLog) {\n if (currentReport != null) {\n currentReport.appendToConsoleLogs(consoleLog);\n }\n }\n\n @ReactMethod\n public void setUserAttributeToReport(String key, String value) {\n if (currentReport != null) {\n currentReport.setUserAttribute(key, value);\n }\n }\n\n @ReactMethod\n public void logDebugToReport(String log) {\n if (currentReport != null) {\n currentReport.logDebug(log);\n }\n }\n\n @ReactMethod\n public void logVerboseToReport(String log) {\n if (currentReport != null) {\n currentReport.logVerbose(log);\n }\n }\n\n @ReactMethod\n public void logWarnToReport(String log) {\n if (currentReport != null) {\n currentReport.logWarn(log);\n }\n }\n\n @ReactMethod\n public void logErrorToReport(String log) {\n if (currentReport != null) {\n currentReport.logError(log);\n }\n }\n\n @ReactMethod\n public void logInfoToReport(String log) {\n if (currentReport != null) {\n currentReport.logInfo(log);\n }\n }\n\n @ReactMethod\n public void addFileAttachmentWithURLToReport(String urlString, String fileName) {\n if (currentReport != null) {\n Uri uri = Uri.parse(urlString);\n currentReport.addFileAttachment(uri, fileName);\n }\n }\n\n @ReactMethod\n public void addFileAttachmentWithDataToReport(String data, String fileName) {\n if (currentReport != null) {\n currentReport.addFileAttachment(data.getBytes(), fileName);\n }\n }\n\n private WritableMap convertFromHashMapToWriteableMap(HashMap hashMap) {\n WritableMap writableMap = new WritableNativeMap();\n for (int i = 0; i < hashMap.size(); i++) {\n Object key = hashMap.keySet().toArray()[i];\n Object value = hashMap.get(key);\n writableMap.putString((String) key, (String) value);\n }\n return writableMap;\n }\n\n private static JSONObject objectToJSONObject(Object object) {\n Object json = null;\n JSONObject jsonObject = null;\n try {\n json = new JSONTokener(object.toString()).nextValue();\n } catch (JSONException e) {\n e.printStackTrace();\n }\n if (json instanceof JSONObject) {\n jsonObject = (JSONObject) json;\n }\n return jsonObject;\n }\n\n private WritableArray convertArrayListToWritableArray(List arrayList) {\n WritableArray writableArray = new WritableNativeArray();\n\n for (int i = 0; i < arrayList.size(); i++) {\n Object object = arrayList.get(i);\n\n if (object instanceof String) {\n writableArray.pushString((String) object);\n } else {\n JSONObject jsonObject = objectToJSONObject(object);\n writableArray.pushMap((WritableMap) jsonObject);\n }\n }\n\n return writableArray;\n\n }\n\n /**\n * Clears all Uris of the attached files.\n * The URIs which added via {@link Instabug#addFileAttachment} API not the physical files.\n */\n @ReactMethod\n public void clearFileAttachment() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.clearFileAttachment();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void setReproStepsConfig(final String bugMode, final String crashMode, final String sessionReplayMode) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final Integer resolvedBugMode = ArgsRegistry.reproModes.get(bugMode);\n final Integer resolvedCrashMode = ArgsRegistry.reproModes.get(crashMode);\n final Integer resolvedSessionReplayMode = ArgsRegistry.reproModes.get(sessionReplayMode);\n\n final ReproConfigurations config = new ReproConfigurations.Builder()\n .setIssueMode(IssueType.Bug, resolvedBugMode)\n .setIssueMode(IssueType.Crash, resolvedCrashMode)\n .setIssueMode(IssueType.SessionReplay, resolvedSessionReplayMode)\n .build();\n\n Instabug.setReproConfigurations(config);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Shows the welcome message in a specific mode.\n *\n * @param welcomeMessageMode An enum to set the welcome message mode to\n * live, or beta.\n */\n @ReactMethod\n public void showWelcomeMessageWithMode(final String welcomeMessageMode) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final WelcomeMessage.State parsedState = ArgsRegistry.welcomeMessageStates\n .getOrDefault(welcomeMessageMode, WelcomeMessage.State.LIVE);\n Instabug.showWelcomeMessage(parsedState);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Sets the welcome message mode to live, beta or disabled.\n *\n * @param welcomeMessageMode An enum to set the welcome message mode to\n * live, beta or disabled.\n */\n @ReactMethod\n public void setWelcomeMessageMode(final String welcomeMessageMode) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final WelcomeMessage.State parsedState = ArgsRegistry.welcomeMessageStates\n .getOrDefault(welcomeMessageMode, WelcomeMessage.State.LIVE);\n Instabug.setWelcomeMessageState(parsedState);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void show() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n Instabug.show();\n }\n });\n }\n\n /**\n * Enable/disable session profiler\n *\n * @param sessionProfilerEnabled desired state of the session profiler feature\n */\n @ReactMethod\n public void setSessionProfilerEnabled(final boolean sessionProfilerEnabled) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n if (sessionProfilerEnabled) {\n Instabug.setSessionProfilerState(Feature.State.ENABLED);\n } else {\n Instabug.setSessionProfilerState(Feature.State.DISABLED);\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void networkLogAndroid(final String url,\n final String requestBody,\n final String responseBody,\n final String method,\n final double responseCode,\n final String requestHeaders,\n final String responseHeaders,\n final double duration) {\n try {\n final String date = String.valueOf(System.currentTimeMillis());\n\n NetworkLog networkLog = new NetworkLog();\n networkLog.setDate(date);\n networkLog.setUrl(url);\n networkLog.setMethod(method);\n networkLog.setResponseCode((int) responseCode);\n networkLog.setTotalDuration((long) duration);\n\n try {\n networkLog.setRequest(requestBody);\n networkLog.setResponse(responseBody);\n networkLog.setRequestHeaders(requestHeaders);\n networkLog.setResponseHeaders(responseHeaders);\n } catch (OutOfMemoryError | Exception exception) {\n Log.d(TAG, \"Error: \" + exception.getMessage() + \"while trying to set network log contents (request body, response body, request headers, and response headers).\");\n }\n\n networkLog.insert();\n } catch (OutOfMemoryError | Exception exception) {\n Log.d(TAG, \"Error: \" + exception.getMessage() + \"while trying to insert a network log\");\n }\n }\n\n @UiThread\n @Nullable\n private View resolveReactView(final int reactTag) {\n final ReactApplicationContext reactContext = getReactApplicationContext();\n final UIManagerModule uiManagerModule = reactContext.getNativeModule(UIManagerModule.class);\n\n if (uiManagerModule == null) {\n return null;\n }\n\n return uiManagerModule.resolveView(reactTag);\n }\n\n\n @ReactMethod\n public void addPrivateView(final int reactTag) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final View view = resolveReactView(reactTag);\n\n Instabug.addPrivateViews(view);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void removePrivateView(final int reactTag) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n final View view = resolveReactView(reactTag);\n\n Instabug.removePrivateViews(view);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Reports that the screen name been changed (Current View).\n *\n * @param screenName string containing the screen name\n */\n @ReactMethod\n public void reportCurrentViewChange(final String screenName) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Method method = getMethod(Class.forName(\"com.instabug.library.Instabug\"), \"reportCurrentViewChange\", String.class);\n if (method != null) {\n method.invoke(null, screenName);\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Reports that the screen has been changed (Repro Steps) the screen sent to this method will be the 'current view' on the dashboard\n *\n * @param screenName string containing the screen name\n */\n @ReactMethod\n public void reportScreenChange(final String screenName) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Method method = getMethod(Class.forName(\"com.instabug.library.Instabug\"), \"reportScreenChange\", Bitmap.class, String.class);\n if (method != null) {\n method.invoke(null, null, screenName);\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * @deprecated see {@link #addFeatureFlags(ReadableArray)}\n */\n @ReactMethod\n public void addExperiments(final ReadableArray experiments) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Object[] objectArray = ArrayUtil.toArray(experiments);\n String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);\n Instabug.addExperiments(Arrays.asList(stringArray));\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * @deprecated see {@link #removeFeatureFlags(ReadableArray)}\n */\n @ReactMethod\n public void removeExperiments(final ReadableArray experiments) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Object[] objectArray = ArrayUtil.toArray(experiments);\n String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);\n Instabug.removeExperiments(Arrays.asList(stringArray));\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * @deprecated see {@link #removeAllFeatureFlags()}\n */\n @ReactMethod\n public void clearAllExperiments() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.clearAllExperiments();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void addFeatureFlags(final ReadableMap featureFlagsMap) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Iterator> iterator = featureFlagsMap.getEntryIterator();\n ArrayList featureFlags = new ArrayList<>();\n while (iterator.hasNext()) {\n Map.Entry item = iterator.next();\n String variant = (String) item.getValue();\n String name = item.getKey();\n featureFlags.add(new IBGFeatureFlag(name, variant.isEmpty() ? null : variant));\n }\n if (!featureFlags.isEmpty()) {\n Instabug.addFeatureFlags(featureFlags);\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void removeFeatureFlags(final ReadableArray featureFlags) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n ArrayList stringArray = ArrayUtil.parseReadableArrayOfStrings(featureFlags);\n Instabug.removeFeatureFlag(stringArray);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void removeAllFeatureFlags() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.removeAllFeatureFlags();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n @ReactMethod\n public void willRedirectToStore() {\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n Instabug.willRedirectToStore();\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n });\n }\n\n /**\n * Register a listener for W3C flags value change\n */\n @ReactMethod\n public void registerW3CFlagsChangeListener() {\n\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n InternalCore.INSTANCE._setFeaturesStateListener(new FeaturesStateListener() {\n @Override\n public void invoke(@NonNull CoreFeaturesState featuresState) {\n WritableMap params = Arguments.createMap();\n params.putBoolean(\"isW3ExternalTraceIDEnabled\", featuresState.isW3CExternalTraceIdEnabled());\n params.putBoolean(\"isW3ExternalGeneratedHeaderEnabled\", featuresState.isAttachingGeneratedHeaderEnabled());\n params.putBoolean(\"isW3CaughtHeaderEnabled\", featuresState.isAttachingCapturedHeaderEnabled());\n\n sendEvent(Constants.IBG_ON_NEW_W3C_FLAGS_UPDATE_RECEIVED_CALLBACK, params);\n }\n });\n } catch (Exception e) {\n e.printStackTrace();\n }\n\n }\n\n });\n }\n\n\n /**\n * Get first time Value of W3ExternalTraceID flag\n */\n @ReactMethod\n public void isW3ExternalTraceIDEnabled(Promise promise) {\n\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_EXTERNAL_TRACE_ID));\n } catch (Exception e) {\n e.printStackTrace();\n promise.resolve(false);\n }\n\n }\n\n });\n }\n\n\n /**\n * Get first time Value of W3ExternalGeneratedHeader flag\n */\n @ReactMethod\n public void isW3ExternalGeneratedHeaderEnabled(Promise promise) {\n\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_ATTACHING_GENERATED_HEADER));\n } catch (Exception e) {\n e.printStackTrace();\n promise.resolve(false);\n }\n\n }\n\n });\n }\n\n /**\n * Get first time Value of W3CaughtHeader flag\n */\n @ReactMethod\n public void isW3CaughtHeaderEnabled(Promise promise) {\n\n MainThreadHandler.runOnMainThread(new Runnable() {\n @Override\n public void run() {\n try {\n promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_ATTACHING_CAPTURED_HEADER));\n } catch (Exception e) {\n e.printStackTrace();\n promise.resolve(false);\n }\n\n }\n\n });\n }\n\n\n /**\n * Map between the exported JS constant and the arg key in {@link ArgsRegistry}.\n * The constant name and the arg key should match to be able to resolve the\n * constant with its actual value from the {@link ArgsRegistry} maps.\n *\n * This is a workaround, because RN cannot resolve enums in the constants map.\n */\n @Override\n public Map getConstants() {\n final Map args = ArgsRegistry.getAll();\n final Map constants = new HashMap<>();\n\n for (String key : args.keySet()) {\n constants.put(key, key);\n }\n\n return constants;\n }\n\n /**\n * Sets the auto mask screenshots types.\n *\n * @param autoMaskingTypes The masking type to be applied.\n */\n @ReactMethod\n public void enableAutoMasking(@NonNull ReadableArray autoMaskingTypes) {\n MainThreadHandler.runOnMainThread(new Runnable() {\n\n @Override\n public void run() {\n int[] autoMassingTypesArray = new int[autoMaskingTypes.size()];\n for (int i = 0; i < autoMaskingTypes.size(); i++) {\n String key = autoMaskingTypes.getString(i);\n\n autoMassingTypesArray[i] = ArgsRegistry.autoMaskingTypes.get(key);\n\n }\n\n Instabug.setAutoMaskScreenshotsTypes(autoMassingTypesArray);\n }\n\n });\n }\n}\n" - } - ] -} \ No newline at end of file From 20edb84cb21d82ab1c58f86e2281190799a90db4 Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Sun, 6 Apr 2025 14:25:33 +0200 Subject: [PATCH 27/39] chore(android): bump sdk to v14.3.0 --- android/native.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/native.gradle b/android/native.gradle index 652733c4f8..55a7f0e4eb 100644 --- a/android/native.gradle +++ b/android/native.gradle @@ -1,5 +1,5 @@ project.ext.instabug = [ - version: '14.1.0' + version: '14.3.0.6624149-SNAPSHOT' ] dependencies { From d9d2ffa46880f756e93f5357ff9d106b87ca0fe0 Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Wed, 12 Mar 2025 22:55:36 +0200 Subject: [PATCH 28/39] feat: stop capturing network body --- src/modules/NetworkLogger.ts | 9 +++++++++ src/native/NativeInstabug.ts | 1 + test/modules/NetworkLogger.spec.ts | 8 ++++++++ 3 files changed, 18 insertions(+) diff --git a/src/modules/NetworkLogger.ts b/src/modules/NetworkLogger.ts index e460d8b477..b6e25c04b5 100644 --- a/src/modules/NetworkLogger.ts +++ b/src/modules/NetworkLogger.ts @@ -5,6 +5,7 @@ import xhr, { NetworkData, ProgressCallback } from '../utils/XhrNetworkIntercept import { isContentTypeNotAllowed, reportNetworkLog } from '../utils/InstabugUtils'; import { InstabugRNConfig } from '../utils/config'; import { Logger } from '../utils/logger'; +import { NativeInstabug } from '../native/NativeInstabug'; export type { NetworkData }; @@ -144,3 +145,11 @@ export const apolloLinkRequestHandler: RequestHandler = (operation, forward) => return forward(operation); }; + +/** + * Sets whether network body logs will be captured or not. + * @param isEnabled + */ +export const setNetworkLogBodyEnabled = (isEnabled: boolean) => { + NativeInstabug.setNetworkLogBodyEnabled(isEnabled); +}; diff --git a/src/native/NativeInstabug.ts b/src/native/NativeInstabug.ts index 5f0628ef71..7fca0bea26 100644 --- a/src/native/NativeInstabug.ts +++ b/src/native/NativeInstabug.ts @@ -72,6 +72,7 @@ export interface InstabugNativeModule extends NativeModule { ): void; setNetworkLoggingEnabled(isEnabled: boolean): void; + setNetworkLogBodyEnabled(isEnabled: boolean): void; // Repro Steps APIs // setReproStepsConfig( diff --git a/test/modules/NetworkLogger.spec.ts b/test/modules/NetworkLogger.spec.ts index dbf35eddb9..d46b10aff5 100644 --- a/test/modules/NetworkLogger.spec.ts +++ b/test/modules/NetworkLogger.spec.ts @@ -8,6 +8,7 @@ import Interceptor from '../../src/utils/XhrNetworkInterceptor'; import { isContentTypeNotAllowed, reportNetworkLog } from '../../src/utils/InstabugUtils'; import InstabugConstants from '../../src/utils/InstabugConstants'; import { Logger } from '../../src/utils/logger'; +import { NativeInstabug } from '../../src/native/NativeInstabug'; const clone = (obj: T): T => { return JSON.parse(JSON.stringify(obj)); @@ -282,4 +283,11 @@ describe('NetworkLogger Module', () => { expect(reportNetworkLog).toHaveBeenCalledWith(networkData); }); + + it('should call the native method setNetworkLogBodyEnabled', () => { + NetworkLogger.setNetworkLogBodyEnabled(true); + + expect(NativeInstabug.setNetworkLogBodyEnabled).toBeCalledTimes(1); + expect(NativeInstabug.setNetworkLogBodyEnabled).toBeCalledWith(true); + }); }); From cc31c7db5857beb163c20aae5fab49f087627711 Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Thu, 13 Mar 2025 01:25:51 +0200 Subject: [PATCH 29/39] fix: add change log --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb832b3b81..2f075079f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ + +## [Unreleased](https://github.com/Instabug/Instabug-React-Native/compare/v14.1.0...dev) + +### Added + +- Add support enable/disable stop capturing network body. ([#1362](https://github.com/Instabug/Instabug-React-Native/pull/1362)) + # Changelog ## [Unreleased](https://github.com/Instabug/Instabug-React-Native/compare/v14.1.0...dev) From f35cf040d76861b44d9bf264f163a2ebca45abf8 Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Thu, 13 Mar 2025 01:28:18 +0200 Subject: [PATCH 30/39] fix: linting --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f075079f5..8cdf8c7b92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,3 @@ - ## [Unreleased](https://github.com/Instabug/Instabug-React-Native/compare/v14.1.0...dev) ### Added From 82a7a69d18fbac4bb4f566a64cefd3cc3db1c8cf Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Mon, 7 Apr 2025 12:17:34 +0200 Subject: [PATCH 31/39] fix: pod file --- examples/default/ios/Podfile.lock | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index 887c06c372..29c8adac60 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -1848,6 +1848,7 @@ SPEC REPOS: trunk: - Google-Maps-iOS-Utils - GoogleMaps + - Instabug - OCMock - SocketRocket @@ -2099,4 +2100,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: f382faa8fee81f859a17db3fbe928b4f7e7f2ea0 -COCOAPODS: 1.14.0 +COCOAPODS: 1.16.2 From aed62a9e8044e1455f8d92e54dcdb28a52a76115 Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Mon, 7 Apr 2025 12:25:27 +0200 Subject: [PATCH 32/39] cocoa pods version --- examples/default/ios/Podfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index 29c8adac60..381e4262cb 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -2100,4 +2100,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: f382faa8fee81f859a17db3fbe928b4f7e7f2ea0 -COCOAPODS: 1.16.2 +COCOAPODS: 1.14.0 From 4f8bc531abc39fef253fba62cb09f081638c90cd Mon Sep 17 00:00:00 2001 From: Andrew Amin <160974398+AndrewAminInstabug@users.noreply.github.com> Date: Mon, 7 Apr 2025 13:35:26 +0200 Subject: [PATCH 33/39] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cdf8c7b92..8045ca4315 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ### Added -- Add support enable/disable stop capturing network body. ([#1362](https://github.com/Instabug/Instabug-React-Native/pull/1362)) +- Add support for enable/disable capturing network body. ([#1362](https://github.com/Instabug/Instabug-React-Native/pull/1362)) # Changelog From ec7b209064a8d47e3a6adae2341bda3946c4c567 Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Mon, 7 Apr 2025 17:09:21 +0200 Subject: [PATCH 34/39] fix: crash on non fatal --- ios/RNInstabug/InstabugCrashReportingBridge.m | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ios/RNInstabug/InstabugCrashReportingBridge.m b/ios/RNInstabug/InstabugCrashReportingBridge.m index c73a85d5bc..28176e0e66 100644 --- a/ios/RNInstabug/InstabugCrashReportingBridge.m +++ b/ios/RNInstabug/InstabugCrashReportingBridge.m @@ -29,6 +29,14 @@ + (BOOL)requiresMainQueueSetup RCT_EXPORT_METHOD(sendJSCrash:(NSDictionary *)stackTrace resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { + + if([fingerprint isKindOfClass:NSNull.class]){ + fingerprint = nil; + } + + if([userAttributes isKindOfClass:NSNull.class]){ + userAttributes = nil; + } dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul); dispatch_async(queue, ^{ [IBGCrashReporting cp_reportFatalCrashWithStackTrace:stackTrace]; From f739ebac8568c4ac5d8e77c1e30f82179650a97b Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Mon, 7 Apr 2025 17:20:33 +0200 Subject: [PATCH 35/39] fix: fetal crash --- ios/RNInstabug/InstabugCrashReportingBridge.m | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/ios/RNInstabug/InstabugCrashReportingBridge.m b/ios/RNInstabug/InstabugCrashReportingBridge.m index 28176e0e66..9f4cdab552 100644 --- a/ios/RNInstabug/InstabugCrashReportingBridge.m +++ b/ios/RNInstabug/InstabugCrashReportingBridge.m @@ -30,13 +30,6 @@ + (BOOL)requiresMainQueueSetup resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { - if([fingerprint isKindOfClass:NSNull.class]){ - fingerprint = nil; - } - - if([userAttributes isKindOfClass:NSNull.class]){ - userAttributes = nil; - } dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul); dispatch_async(queue, ^{ [IBGCrashReporting cp_reportFatalCrashWithStackTrace:stackTrace]; @@ -48,6 +41,14 @@ + (BOOL)requiresMainQueueSetup userAttributes:(nullable NSDictionary *)userAttributes fingerprint:(nullable NSString *)fingerprint nonFatalExceptionLevel:(IBGNonFatalLevel)nonFatalExceptionLevel resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { + + if([fingerprint isKindOfClass:NSNull.class]){ + fingerprint = nil; + } + + if([userAttributes isKindOfClass:NSNull.class]){ + userAttributes = nil; + } dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); dispatch_async(queue, ^{ [IBGCrashReporting cp_reportNonFatalCrashWithStackTrace:stackTrace level:nonFatalExceptionLevel groupingString:fingerprint userAttributes:userAttributes]; From f6014a1a0feffd7e02a2cc890562089b8283a3b6 Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Mon, 14 Apr 2025 10:43:00 +0200 Subject: [PATCH 36/39] chore: (Android) bump sdk to v14.3.0 --- CHANGELOG.md | 3 ++- android/native.gradle | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8045ca4315..716101a1b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,12 +6,13 @@ # Changelog -## [Unreleased](https://github.com/Instabug/Instabug-React-Native/compare/v14.1.0...dev) ### Added - Add support for Network Spans in network logging module ([#1360](https://github.com/Instabug/Instabug-React-Native/pull/1360)). +- Bump Instabug Android SDK to v14.3.0 ([#1369](https://github.com/Instabug/Instabug-React-Native/pull/1369)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v14.3.0). + ## [14.1.0](https://github.com/Instabug/Instabug-React-Native/compare/v14.0.0...v14.1.0) (January 2, 2025) ### Added diff --git a/android/native.gradle b/android/native.gradle index 55a7f0e4eb..3241dc5f24 100644 --- a/android/native.gradle +++ b/android/native.gradle @@ -1,5 +1,5 @@ project.ext.instabug = [ - version: '14.3.0.6624149-SNAPSHOT' + version: '14.3.0' ] dependencies { From 9fb425280f1e9582870b234535db14c9b2f2174f Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Mon, 14 Apr 2025 10:44:27 +0200 Subject: [PATCH 37/39] fix: reformate change log --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 716101a1b1..ab6a12eb6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,11 @@ +# Changelog + ## [Unreleased](https://github.com/Instabug/Instabug-React-Native/compare/v14.1.0...dev) ### Added - Add support for enable/disable capturing network body. ([#1362](https://github.com/Instabug/Instabug-React-Native/pull/1362)) -# Changelog - ### Added From a25ec809b3efa3cc854be6f39fcba1af3c78fd2f Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Mon, 14 Apr 2025 11:18:54 +0200 Subject: [PATCH 38/39] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab6a12eb6e..e1526389f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ - Add support for Network Spans in network logging module ([#1360](https://github.com/Instabug/Instabug-React-Native/pull/1360)). -- Bump Instabug Android SDK to v14.3.0 ([#1369](https://github.com/Instabug/Instabug-React-Native/pull/1369)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v14.3.0). +- Bump Instabug Android SDK to v14.3.0 ([#1375](https://github.com/Instabug/Instabug-React-Native/pull/1375)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v14.3.0). ## [14.1.0](https://github.com/Instabug/Instabug-React-Native/compare/v14.0.0...v14.1.0) (January 2, 2025) From 7213000b69bce7352e5eb558edb6d3313fa29895 Mon Sep 17 00:00:00 2001 From: AyaMahmoud148 Date: Mon, 14 Apr 2025 12:42:23 +0200 Subject: [PATCH 39/39] release: 14.3.0 --- CHANGELOG.md | 2 +- android/build.gradle | 2 +- examples/default/ios/Podfile.lock | 4 ++-- package.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1526389f3..15fe8caf50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased](https://github.com/Instabug/Instabug-React-Native/compare/v14.1.0...dev) +## [14.3.0](https://github.com/Instabug/Instabug-React-Native/compare/v14.1.0...14.3.0) ### Added diff --git a/android/build.gradle b/android/build.gradle index 8a312ccb37..1093a8f1d9 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -57,7 +57,7 @@ android { minSdkVersion getExtOrDefault('minSdkVersion').toInteger() targetSdkVersion getExtOrDefault('targetSdkVersion').toInteger() versionCode 1 - versionName "14.1.0" + versionName "14.3.0" multiDexEnabled true ndk { abiFilters "armeabi-v7a", "x86" diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index 381e4262cb..02203adf53 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -1623,7 +1623,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNInstabug (14.1.0): + - RNInstabug (14.3.0): - Instabug (= 14.3.0) - React-Core - RNReanimated (3.16.1): @@ -2090,7 +2090,7 @@ SPEC CHECKSUMS: ReactCommon: 6a952e50c2a4b694731d7682aaa6c79bc156e4ad RNCClipboard: 2821ac938ef46f736a8de0c8814845dde2dcbdfb RNGestureHandler: 511250b190a284388f9dd0d2e56c1df76f14cfb8 - RNInstabug: 4e49b8da38b1f6a0fdeca226cec844d553c8d785 + RNInstabug: c55b6c697b39d3cbe51b1ab9b729f0b55ed619f1 RNReanimated: f42a5044d121d68e91680caacb0293f4274228eb RNScreens: c7ceced6a8384cb9be5e7a5e88e9e714401fd958 RNSVG: 8b1a777d54096b8c2a0fd38fc9d5a454332bbb4d diff --git a/package.json b/package.json index e065cb993d..a93da7dd30 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "instabug-reactnative", "description": "React Native plugin for integrating the Instabug SDK", - "version": "14.1.0", + "version": "14.3.0", "author": "Instabug (https://instabug.com)", "repository": "github:Instabug/Instabug-React-Native", "homepage": "https://www.instabug.com/platforms/react-native",