From 1ebcf4a80b77ee460cff3d31be176acdb86c1603 Mon Sep 17 00:00:00 2001 From: kholood Date: Wed, 18 Sep 2024 17:26:56 +0300 Subject: [PATCH 01/28] feat(android): add session sync callback (#1281) * feat(android): add SRSyncCallback * feat: implement and test syncCallback CP side * feat(example): use SRSyncCallback in example app * ci: fix tests * fix: export session data type * fix(example): use session data type * fix(android):remove data modifier * fix(android): add property modifiers * fix(android): update test case * fix: enhance test case * fix: update session data type * fix: add more session metadata to setSyncCallback * fix: update syncCallback test * feat: add launchType to session metadata for setSyncCallback * fix: import type * fix: assert evaluate sync returns correct value * fix: import type * fix: cleanup * chore: update js doc * fix: typo * fix: follow interface naming convention * fix: update type * fix: refactor syncCallback * fix: default syncing session to true * fix: convert network logs to readable array * chore: add discriptive comment * chore: use readable map for session metadata * fix: setSyncCallback should sync in case of exception * fix: move SessionMetadata to models * fix: update SessionMetadata type import * fix: report bug e2e test --------- Co-authored-by: Ahmed Elrefaey <68241710+a7medev@users.noreply.github.com> --- android/native.gradle | 2 +- .../instabug/reactlibrary/ArgsRegistry.java | 17 +++ .../com/instabug/reactlibrary/Constants.java | 2 + .../RNInstabugSessionReplayModule.java | 107 +++++++++++++++++- .../RNInstabugSessionReplayModuleTest.java | 65 ++++++++--- examples/default/e2e/reportBug.e2e.ts | 4 +- examples/default/src/App.tsx | 19 ++++ src/index.ts | 3 +- src/models/SessionMetadata.ts | 57 ++++++++++ src/modules/SessionReplay.ts | 38 ++++++- src/native/NativeConstants.ts | 9 +- src/native/NativeSessionReplay.ts | 8 ++ src/utils/Enums.ts | 9 ++ test/mocks/mockSessionReplay.ts | 2 + test/modules/SessionReplay.spec.ts | 15 ++- 15 files changed, 333 insertions(+), 24 deletions(-) create mode 100644 src/models/SessionMetadata.ts diff --git a/android/native.gradle b/android/native.gradle index 0e86a4edff..93ff054427 100644 --- a/android/native.gradle +++ b/android/native.gradle @@ -1,5 +1,5 @@ project.ext.instabug = [ - version: '13.3.0' + version: '13.3.0.6212131-SNAPSHOT', ] dependencies { diff --git a/android/src/main/java/com/instabug/reactlibrary/ArgsRegistry.java b/android/src/main/java/com/instabug/reactlibrary/ArgsRegistry.java index 37f730cbe9..f1a4c1fa94 100644 --- a/android/src/main/java/com/instabug/reactlibrary/ArgsRegistry.java +++ b/android/src/main/java/com/instabug/reactlibrary/ArgsRegistry.java @@ -15,6 +15,7 @@ import com.instabug.library.invocation.InstabugInvocationEvent; import com.instabug.library.invocation.util.InstabugFloatingButtonEdge; import com.instabug.library.invocation.util.InstabugVideoRecordingButtonPosition; +import com.instabug.library.sessionreplay.model.SessionMetadata; import com.instabug.library.ui.onboarding.WelcomeMessage; import java.util.ArrayList; @@ -58,6 +59,7 @@ static Map getAll() { putAll(nonFatalExceptionLevel); putAll(locales); putAll(placeholders); + putAll(launchType); }}; } @@ -238,4 +240,19 @@ static Map getAll() { put("team", Key.CHATS_TEAM_STRING_NAME); put("insufficientContentMessage", Key.COMMENT_FIELD_INSUFFICIENT_CONTENT); }}; + + public static ArgsMap launchType = new ArgsMap() {{ + put("cold", SessionMetadata.LaunchType.COLD); + put("hot",SessionMetadata.LaunchType.HOT ); + put("warm",SessionMetadata.LaunchType.WARM ); + }}; + +// Temporary workaround to be removed in future release +// This is used for mapping native `LaunchType` values into React Native enum values. + public static HashMap launchTypeReversed = new HashMap() {{ + put(SessionMetadata.LaunchType.COLD,"cold"); + put(SessionMetadata.LaunchType.HOT,"hot" ); + put(SessionMetadata.LaunchType.WARM,"warm" ); + }}; + } diff --git a/android/src/main/java/com/instabug/reactlibrary/Constants.java b/android/src/main/java/com/instabug/reactlibrary/Constants.java index f78d3a732d..fcab683326 100644 --- a/android/src/main/java/com/instabug/reactlibrary/Constants.java +++ b/android/src/main/java/com/instabug/reactlibrary/Constants.java @@ -9,4 +9,6 @@ final class Constants { final static String IBG_ON_NEW_MESSAGE_HANDLER = "IBGonNewMessageHandler"; final static String IBG_ON_NEW_REPLY_RECEIVED_CALLBACK = "IBGOnNewReplyReceivedCallback"; + final static String IBG_SESSION_REPLAY_ON_SYNC_CALLBACK_INVOCATION = "IBGSessionReplayOnSyncCallback"; + } diff --git a/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java b/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java index 5024c61804..d4973894a8 100644 --- a/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java +++ b/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java @@ -1,24 +1,44 @@ package com.instabug.reactlibrary; + +import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; -import com.instabug.chat.Replies; +import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.bridge.WritableArray; +import com.facebook.react.bridge.WritableMap; import com.instabug.library.OnSessionReplayLinkReady; +import com.instabug.library.SessionSyncListener; import com.instabug.library.sessionreplay.SessionReplay; +import com.instabug.library.sessionreplay.model.SessionMetadata; +import com.instabug.reactlibrary.utils.EventEmitterModule; import com.instabug.reactlibrary.utils.MainThreadHandler; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CountDownLatch; import javax.annotation.Nonnull; -public class RNInstabugSessionReplayModule extends ReactContextBaseJavaModule { +public class RNInstabugSessionReplayModule extends EventEmitterModule { public RNInstabugSessionReplayModule(ReactApplicationContext reactApplicationContext) { super(reactApplicationContext); } + @ReactMethod + public void addListener(String event) { + super.addListener(event); + } + + @ReactMethod + public void removeListeners(Integer count) { + super.removeListeners(count); + } + @Nonnull @Override public String getName() { @@ -79,7 +99,7 @@ public void run() { e.printStackTrace(); } } - }); + }); } @ReactMethod @@ -97,6 +117,85 @@ public void onSessionReplayLinkReady(@Nullable String link) { } }); + } + + public ReadableMap getSessionMetadataMap(SessionMetadata sessionMetadata){ + WritableMap params = Arguments.createMap(); + params.putString("appVersion",sessionMetadata.getAppVersion()); + params.putString("OS",sessionMetadata.getOs()); + params.putString("device",sessionMetadata.getDevice()); + params.putDouble("sessionDurationInSeconds",(double)sessionMetadata.getSessionDurationInSeconds()); + params.putBoolean("hasLinkToAppReview",sessionMetadata.getLinkedToReview()); + params.putString("launchType",ArgsRegistry.launchTypeReversed.get(sessionMetadata.getLaunchType()) ); + params.putDouble("launchDuration", sessionMetadata.getLaunchDuration()); + params.putArray("networkLogs",getNetworkLogsArray(sessionMetadata.getNetworkLogs())); + +// TODO:Add rest of sessionMetadata +// params.putDouble("bugsCount", ??); +// params.putDouble("fatalCrashCount",??); +// params.putDouble("oomCrashCount",??); + return params; + } + + public ReadableArray getNetworkLogsArray(List networkLogList ){ + WritableArray networkLogs = Arguments.createArray(); + + for (SessionMetadata.NetworkLog log : networkLogList) { + WritableMap networkLog = Arguments.createMap(); + networkLog.putString("url", log.getUrl()); + networkLog.putDouble("duration", log.getDuration()); + networkLog.putInt("statusCode", log.getStatusCode()); + + networkLogs.pushMap(networkLog); + } + + return networkLogs; + } + + private boolean shouldSync = true; + private CountDownLatch latch; + @ReactMethod + public void setSyncCallback() { + MainThreadHandler.runOnMainThread(new Runnable() { + @Override + public void run() { + try { + SessionReplay.setSyncCallback(new SessionSyncListener() { + @Override + public boolean onSessionReadyToSync(@NonNull SessionMetadata sessionMetadata) { + + sendEvent(Constants.IBG_SESSION_REPLAY_ON_SYNC_CALLBACK_INVOCATION,getSessionMetadataMap(sessionMetadata)); + latch = new CountDownLatch(1); + + try { + latch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + return true; + } + + return shouldSync; + } + }); + } + catch(Exception e){ + e.printStackTrace(); + } + + } + }); } + + @ReactMethod + public void evaluateSync(boolean result) { + shouldSync = result; + + if (latch != null) { + latch.countDown(); + } + } + + + } diff --git a/android/src/test/java/com/instabug/reactlibrary/RNInstabugSessionReplayModuleTest.java b/android/src/test/java/com/instabug/reactlibrary/RNInstabugSessionReplayModuleTest.java index ecf339c72b..1af5e6da08 100644 --- a/android/src/test/java/com/instabug/reactlibrary/RNInstabugSessionReplayModuleTest.java +++ b/android/src/test/java/com/instabug/reactlibrary/RNInstabugSessionReplayModuleTest.java @@ -1,40 +1,44 @@ package com.instabug.reactlibrary; +import static junit.framework.TestCase.assertEquals; +import static junit.framework.TestCase.assertTrue; + +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockConstruction; import static org.mockito.Mockito.mockStatic; -import static org.mockito.Mockito.timeout; -import static org.mockito.Mockito.times; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import android.os.Handler; import android.os.Looper; import com.facebook.react.bridge.Arguments; -import com.facebook.react.bridge.JavaOnlyArray; +import com.facebook.react.bridge.JavaOnlyMap; import com.facebook.react.bridge.Promise; -import com.facebook.react.bridge.ReadableArray; -import com.facebook.react.bridge.WritableArray; -import com.instabug.chat.Replies; -import com.instabug.featuresrequest.ActionType; -import com.instabug.featuresrequest.FeatureRequests; -import com.instabug.library.Feature; +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.WritableMap; import com.instabug.library.OnSessionReplayLinkReady; +import com.instabug.library.SessionSyncListener; import com.instabug.library.sessionreplay.SessionReplay; +import com.instabug.library.sessionreplay.model.SessionMetadata; import com.instabug.reactlibrary.utils.MainThreadHandler; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.mockito.MockedConstruction; import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.atomic.AtomicBoolean; public class RNInstabugSessionReplayModuleTest { @@ -44,8 +48,8 @@ public class RNInstabugSessionReplayModuleTest { // Mock Objects private MockedStatic mockLooper; - private MockedStatic mockMainThreadHandler; - private MockedStatic mockSessionReplay; + private MockedStatic mockMainThreadHandler; + private MockedStatic mockSessionReplay; @Before public void mockMainThreadHandler() throws Exception { @@ -107,7 +111,7 @@ public void testSetInstabugLogsEnabled() { @Test public void testGetSessionReplayLink() { Promise promise = mock(Promise.class); - String link="instabug link"; + String link = "instabug link"; mockSessionReplay.when(() -> SessionReplay.getSessionReplayLink(any())).thenAnswer( invocation -> { @@ -136,5 +140,40 @@ public void testSetUserStepsEnabled() { mockSessionReplay.verifyNoMoreInteractions(); } + @Test + public void testSetSyncCallback() throws Exception { + MockedStatic mockArguments = mockStatic(Arguments.class); + MockedConstruction mockCountDownLatch = mockConstruction(CountDownLatch.class); + RNInstabugSessionReplayModule SRModule = spy(new RNInstabugSessionReplayModule(mock(ReactApplicationContext.class))); + + final boolean shouldSync = true; + final AtomicBoolean actual = new AtomicBoolean(); + + mockArguments.when(Arguments::createMap).thenReturn(new JavaOnlyMap()); + + mockSessionReplay.when(() -> SessionReplay.setSyncCallback(any(SessionSyncListener.class))) + .thenAnswer((invocation) -> { + SessionSyncListener listener = (SessionSyncListener) invocation.getArguments()[0]; + SessionMetadata metadata = mock(SessionMetadata.class); + actual.set(listener.onSessionReadyToSync(metadata)); + return null; + }); + + doAnswer((invocation) -> { + SRModule.evaluateSync(shouldSync); + return null; + }).when(SRModule).sendEvent(eq(Constants.IBG_SESSION_REPLAY_ON_SYNC_CALLBACK_INVOCATION), any()); + + WritableMap params = Arguments.createMap(); + + SRModule.setSyncCallback(); + + assertEquals(shouldSync, actual.get()); + verify(SRModule).sendEvent(Constants.IBG_SESSION_REPLAY_ON_SYNC_CALLBACK_INVOCATION, params); + mockSessionReplay.verify(() -> SessionReplay.setSyncCallback(any(SessionSyncListener.class))); + + mockArguments.close(); + mockCountDownLatch.close(); + } } diff --git a/examples/default/e2e/reportBug.e2e.ts b/examples/default/e2e/reportBug.e2e.ts index 08757b7884..e4ba1e2f9e 100644 --- a/examples/default/e2e/reportBug.e2e.ts +++ b/examples/default/e2e/reportBug.e2e.ts @@ -14,7 +14,9 @@ it('reports a bug', async () => { await waitFor(floatingButton).toBeVisible().withTimeout(30000); await floatingButton.tap(); - await getElement('reportBugMenuItem').tap(); + const reportBugMenuItemButton = getElement('reportBugMenuItem'); + await waitFor(reportBugMenuItemButton).toBeVisible().withTimeout(30000); + await reportBugMenuItemButton.tap(); await getElement('emailField').typeText(mockData.email); await getElement('commentField').typeText(mockData.bugComment); diff --git a/examples/default/src/App.tsx b/examples/default/src/App.tsx index 33a3c34f94..abdab11111 100644 --- a/examples/default/src/App.tsx +++ b/examples/default/src/App.tsx @@ -8,7 +8,10 @@ import Instabug, { InvocationEvent, LogLevel, ReproStepsMode, + SessionReplay, + LaunchType, } from 'instabug-reactnative'; +import type { SessionMetadata } from 'instabug-reactnative'; import { NativeBaseProvider } from 'native-base'; import { RootTabNavigator } from './navigation/RootTab'; @@ -20,8 +23,24 @@ import { QueryClient, QueryClientProvider } from 'react-query'; const queryClient = new QueryClient(); export const App: React.FC = () => { + const shouldSyncSession = (data: SessionMetadata) => { + if (data.launchType === LaunchType.cold) { + return true; + } + if (data.sessionDurationInSeconds > 20) { + return true; + } + if (data.OS === 'OS Level 34') { + return true; + } + return false; + }; + const navigationRef = useNavigationContainerRef(); + useEffect(() => { + SessionReplay.setSyncCallback((data) => shouldSyncSession(data)); + Instabug.init({ token: 'deb1910a7342814af4e4c9210c786f35', invocationEvents: [InvocationEvent.floatingButton], diff --git a/src/index.ts b/src/index.ts index a6c425fcd0..6e7de02846 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,6 +14,7 @@ import * as Replies from './modules/Replies'; import type { Survey } from './modules/Surveys'; import * as Surveys from './modules/Surveys'; import * as SessionReplay from './modules/SessionReplay'; +import type { SessionMetadata } from './models/SessionMetadata'; export * from './utils/Enums'; export { @@ -28,6 +29,6 @@ export { Replies, Surveys, }; -export type { InstabugConfig, Survey, NetworkData, NetworkDataObfuscationHandler }; +export type { InstabugConfig, Survey, NetworkData, NetworkDataObfuscationHandler, SessionMetadata }; export default Instabug; diff --git a/src/models/SessionMetadata.ts b/src/models/SessionMetadata.ts new file mode 100644 index 0000000000..f95c1cba52 --- /dev/null +++ b/src/models/SessionMetadata.ts @@ -0,0 +1,57 @@ +import type { LaunchType } from '../utils/Enums'; + +/** + * network log item + */ +export interface NetworkLog { + url: string; + duration: number; + statusCode: number; +} + +export interface SessionMetadata { + /** + * app version of the session + */ + appVersion: string; + /** + * operating system of the session + */ + OS: string; + /** + * mobile device model of the session + */ + device: string; + /** + * session duration in seconds + */ + sessionDurationInSeconds: number; + /** + * list of netwrok requests occurred during the session + */ + networkLogs: NetworkLog[]; + /** + * launch type of the session + */ + launchType: LaunchType; + /** + * is an in-app review occurred in the previous session. + */ + hasLinkToAppReview: boolean; + /** + * app launch duration + */ + launchDuration: number; + /** + * number of bugs in the session + */ + bugsCount?: number; + /** + * number of fetal crashes in the session + */ + fatalCrashCount?: number; + /** + * number of out of memory crashes in the session + */ + oomCrashCount?: number; +} diff --git a/src/modules/SessionReplay.ts b/src/modules/SessionReplay.ts index edfef456f3..a0abcd3d76 100644 --- a/src/modules/SessionReplay.ts +++ b/src/modules/SessionReplay.ts @@ -1,5 +1,5 @@ -import { NativeSessionReplay } from '../native/NativeSessionReplay'; - +import { NativeSessionReplay, NativeEvents, emitter } from '../native/NativeSessionReplay'; +import type { SessionMetadata } from '../models/SessionMetadata'; /** * Enables or disables Session Replay for your Instabug integration. * @@ -75,3 +75,37 @@ export const setUserStepsEnabled = (isEnabled: boolean) => { export const getSessionReplayLink = async (): Promise => { return NativeSessionReplay.getSessionReplayLink(); }; + +/** + * Set a callback for whether this session should sync + * + * @param handler + + * @example + * ```ts + * SessionReplay.setSyncCallback((metadata) => { + * return metadata.device == "Xiaomi M2007J3SY" && + * metadata.os == "OS Level 33" && + * metadata.appVersion == "3.1.4 (4)" || + * metadata.sessionDurationInSeconds > 20; + * }); + * ``` + */ +export const setSyncCallback = async ( + handler: (payload: SessionMetadata) => boolean, +): Promise => { + emitter.addListener(NativeEvents.SESSION_REPLAY_ON_SYNC_CALLBACK_INVOCATION, (payload) => { + const result = handler(payload); + const shouldSync = Boolean(result); + + if (typeof result !== 'boolean') { + console.warn( + `IBG-RN: The callback passed to SessionReplay.setSyncCallback was expected to return a boolean but returned "${result}". The value has been cast to boolean, proceeding with ${shouldSync}.`, + ); + } + + NativeSessionReplay.evaluateSync(shouldSync); + }); + + return NativeSessionReplay.setSyncCallback(); +}; diff --git a/src/native/NativeConstants.ts b/src/native/NativeConstants.ts index 5317e963ef..271f179b8d 100644 --- a/src/native/NativeConstants.ts +++ b/src/native/NativeConstants.ts @@ -12,7 +12,8 @@ export type NativeConstants = NativeSdkDebugLogsLevel & NativeReproStepsMode & NativeLocale & NativeNonFatalErrorLevel & - NativeStringKey; + NativeStringKey & + NativeLaunchType; interface NativeSdkDebugLogsLevel { sdkDebugLogsLevelVerbose: any; @@ -188,3 +189,9 @@ interface NativeStringKey { welcomeMessageLiveWelcomeStepContent: any; welcomeMessageLiveWelcomeStepTitle: any; } + +interface NativeLaunchType { + hot: any; + cold: any; + warm: any; +} diff --git a/src/native/NativeSessionReplay.ts b/src/native/NativeSessionReplay.ts index 9c3090fb19..3139ef44a5 100644 --- a/src/native/NativeSessionReplay.ts +++ b/src/native/NativeSessionReplay.ts @@ -1,3 +1,4 @@ +import { NativeEventEmitter } from 'react-native'; import type { NativeModule } from 'react-native'; import { NativeModules } from './NativePackage'; @@ -8,6 +9,13 @@ export interface SessionReplayNativeModule extends NativeModule { setInstabugLogsEnabled(isEnabled: boolean): void; setUserStepsEnabled(isEnabled: boolean): void; getSessionReplayLink(): Promise; + setSyncCallback(): Promise; + evaluateSync(shouldSync: boolean): void; } export const NativeSessionReplay = NativeModules.IBGSessionReplay; +export enum NativeEvents { + SESSION_REPLAY_ON_SYNC_CALLBACK_INVOCATION = 'IBGSessionReplayOnSyncCallback', +} + +export const emitter = new NativeEventEmitter(NativeSessionReplay); diff --git a/src/utils/Enums.ts b/src/utils/Enums.ts index 57cb54ca15..39577bac89 100644 --- a/src/utils/Enums.ts +++ b/src/utils/Enums.ts @@ -232,3 +232,12 @@ export enum StringKey { welcomeMessageLiveWelcomeStepContent = constants.welcomeMessageLiveWelcomeStepContent, welcomeMessageLiveWelcomeStepTitle = constants.welcomeMessageLiveWelcomeStepTitle, } + +export enum LaunchType { + hot = constants.hot, + cold = constants.cold, + /** + * android only + */ + warm = constants.warm, +} diff --git a/test/mocks/mockSessionReplay.ts b/test/mocks/mockSessionReplay.ts index ea61a8356f..9106a205a0 100644 --- a/test/mocks/mockSessionReplay.ts +++ b/test/mocks/mockSessionReplay.ts @@ -8,6 +8,8 @@ const mockSessionReplay: SessionReplayNativeModule = { setInstabugLogsEnabled: jest.fn(), setUserStepsEnabled: jest.fn(), getSessionReplayLink: jest.fn().mockReturnValue('link'), + setSyncCallback: jest.fn(), + evaluateSync: jest.fn(), }; export default mockSessionReplay; diff --git a/test/modules/SessionReplay.spec.ts b/test/modules/SessionReplay.spec.ts index 052a63891e..66e672ec59 100644 --- a/test/modules/SessionReplay.spec.ts +++ b/test/modules/SessionReplay.spec.ts @@ -1,5 +1,5 @@ import * as SessionReplay from '../../src/modules/SessionReplay'; -import { NativeSessionReplay } from '../../src/native/NativeSessionReplay'; +import { NativeSessionReplay, emitter, NativeEvents } from '../../src/native/NativeSessionReplay'; describe('Session Replay Module', () => { it('should call the native method setEnabled', () => { @@ -36,4 +36,17 @@ describe('Session Replay Module', () => { expect(NativeSessionReplay.getSessionReplayLink).toBeCalledTimes(1); expect(NativeSessionReplay.getSessionReplayLink).toReturnWith('link'); }); + + it('should call the native method setSyncCallback', () => { + const shouldSync = true; + const callback = jest.fn().mockReturnValue(shouldSync); + + SessionReplay.setSyncCallback(callback); + emitter.emit(NativeEvents.SESSION_REPLAY_ON_SYNC_CALLBACK_INVOCATION); + + expect(NativeSessionReplay.setSyncCallback).toBeCalledTimes(1); + expect(emitter.listenerCount(NativeEvents.SESSION_REPLAY_ON_SYNC_CALLBACK_INVOCATION)).toBe(1); + expect(NativeSessionReplay.evaluateSync).toBeCalledTimes(1); + expect(NativeSessionReplay.evaluateSync).toBeCalledWith(shouldSync); + }); }); From c1a8e5d71e114aae6d418d391fd601a3686ef389 Mon Sep 17 00:00:00 2001 From: kholood Date: Mon, 30 Sep 2024 13:07:23 +0300 Subject: [PATCH 02/28] feat(ios): add session sync callback (#1282) * feat(android): add SRSyncCallback * feat: implement and test syncCallback CP side * feat(example): use SRSyncCallback in example app * ci: fix tests * fix: export session data type * fix(example): use session data type * fix(android):remove data modifier * fix(android): add property modifiers * fix(android): update test case * fix: enhance test case * fix(ios): update network log signature * chore(ios): integrate dynamic sampling snapshot * fix:update IOS network log unit test * fix: update session metadata * feat(ios): add setSyncCallback * fix: pod.lock file * fix: update session data type * fix: add more session metadata to setSyncCallback * fix: update syncCallback test * feat: add launchType to session metadata for setSyncCallback * fix: import type * fix: enhance test case * fix: add more session metadata to setSyncCallback * fix: update syncCallback test * feat: add launchType to session metadata for setSyncCallback * fix: import type * feat(ios): add launchType metadata to session syncCallback * fix: add unknown type to launch types * fix: assert evaluate sync returns correct value * fix: import type * fix: cleanup * chore: update js doc * fix: typo * fix: follow interface naming convention * fix: update type * fix: refactor syncCallback * fix: default syncing session to true * fix: convert network logs to readable array * chore: add discriptive comment * chore: use readable map for session metadata * fix: setSyncCallback should sync in case of exception * fix: move SessionMetadata to models * fix: update SessionMetadata type import * fix: report bug e2e test * chore (ios): update snapshot * chore (ios): refactor callback * fix: return network logs * chore: update podfile.lock * chore: fix formatting * chore: revert Podfile.lock * chore: fix ci * fix: launchType typo * fix: update class sessionEvaluationCompletion atomicity * chore: enhance syncCallback formatting * chore: update evaluateSync formatting * fix: fix test SetSyncCallback * fix: update getNetworkLogsArray return value --------- Co-authored-by: Ahmed Elrefaey <68241710+a7medev@users.noreply.github.com> --- RNInstabug.podspec | 2 +- .../ios/InstabugTests/InstabugSampleTests.m | 7 +-- .../InstabugSessionReplayTests.m | 53 +++++++++++++++++-- examples/default/ios/Podfile | 4 +- examples/default/ios/Podfile.lock | 18 ++++--- ios/RNInstabug/ArgsRegistry.h | 1 + ios/RNInstabug/ArgsRegistry.m | 9 ++++ ios/RNInstabug/InstabugReactBridge.h | 4 +- ios/RNInstabug/InstabugReactBridge.m | 6 +-- ios/RNInstabug/InstabugSessionReplayBridge.h | 7 +++ ios/RNInstabug/InstabugSessionReplayBridge.m | 53 ++++++++++++++++++- ios/RNInstabug/Util/IBGNetworkLogger+CP.h | 3 +- src/native/NativeConstants.ts | 1 + src/native/NativeInstabug.ts | 1 - src/utils/Enums.ts | 1 + src/utils/InstabugUtils.ts | 1 - test/utils/InstabugUtils.spec.ts | 1 - 17 files changed, 140 insertions(+), 32 deletions(-) diff --git a/RNInstabug.podspec b/RNInstabug.podspec index 40c480f4cb..21ae5fc720 100644 --- a/RNInstabug.podspec +++ b/RNInstabug.podspec @@ -16,5 +16,5 @@ Pod::Spec.new do |s| s.source_files = "ios/**/*.{h,m,mm}" s.dependency 'React-Core' - use_instabug!(s) + s.dependency 'Instabug' end diff --git a/examples/default/ios/InstabugTests/InstabugSampleTests.m b/examples/default/ios/InstabugTests/InstabugSampleTests.m index 70ef410258..742c2d77c5 100644 --- a/examples/default/ios/InstabugTests/InstabugSampleTests.m +++ b/examples/default/ios/InstabugTests/InstabugSampleTests.m @@ -331,7 +331,6 @@ - (void)testNetworkLogIOS { double startTime = 1719847101199; double duration = 150; NSString *gqlQueryName = nil; - NSString *serverErrorMessage = nil; [self.instabugBridge networkLogIOS:url method:method @@ -347,8 +346,7 @@ - (void)testNetworkLogIOS { errorCode:errorCode startTime:startTime duration:duration - gqlQueryName:gqlQueryName - serverErrorMessage:serverErrorMessage]; + gqlQueryName:gqlQueryName]; OCMVerify([mIBGNetworkLogger addNetworkLogWithUrl:url method:method @@ -364,8 +362,7 @@ - (void)testNetworkLogIOS { errorCode:errorCode startTime:startTime * 1000 duration:duration * 1000 - gqlQueryName:gqlQueryName - serverErrorMessage:serverErrorMessage]); + gqlQueryName:gqlQueryName]); } - (void)testSetFileAttachment { diff --git a/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m b/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m index a2030df9ae..7ee1871ea9 100644 --- a/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m +++ b/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m @@ -16,8 +16,8 @@ @implementation InstabugSessionReplayTests - (void)setUp { - self.mSessionReplay = OCMClassMock([IBGSessionReplay class]); - self.bridge = [[InstabugSessionReplayBridge alloc] init]; + self.mSessionReplay = OCMClassMock([IBGSessionReplay class]); + self.bridge = [[InstabugSessionReplayBridge alloc] init]; } - (void)testSetEnabled { @@ -67,7 +67,54 @@ - (void)testGetSessionReplayLink { [self.bridge getSessionReplayLink:resolve :reject]; OCMVerify([self.mSessionReplay sessionReplayLink]); [self waitForExpectations:@[expectation] timeout:5.0]; - } +- (void)testSetSyncCallback { + id mockMetadata = OCMClassMock([IBGSessionMetadata class]); + id mockNetworkLog = OCMClassMock([IBGSessionMetadataNetworkLogs class]); + id partialMock = OCMPartialMock(self.bridge); + + XCTestExpectation *completionExpectation = [self expectationWithDescription:@"Completion block should be called with the expected value"]; + + BOOL expectedValue = YES; + __block BOOL actualValue = NO; + + OCMStub([mockNetworkLog url]).andReturn(@"http://example.com"); + OCMStub([mockNetworkLog statusCode]).andReturn(200); + + OCMStub([mockMetadata device]).andReturn(@"ipohne"); + OCMStub([mockMetadata os]).andReturn(@"ios"); + OCMStub([mockMetadata appVersion]).andReturn(@"13.4.1"); + OCMStub([mockMetadata sessionDuration]).andReturn(20); + OCMStub([mockMetadata hasLinkToAppReview]).andReturn(NO); + OCMStub([mockMetadata launchType]).andReturn(LaunchTypeCold); + OCMStub([mockMetadata launchDuration]).andReturn(20); + OCMStub([mockMetadata bugsCount]).andReturn(10); + OCMStub([mockMetadata fatalCrashCount]).andReturn(10); + OCMStub([mockMetadata oomCrashCount]).andReturn(10); + OCMStub([mockMetadata networkLogs]).andReturn(@[mockNetworkLog]); + + SessionEvaluationCompletion sessionEvaluationCompletion = ^(BOOL shouldSync) { + actualValue = shouldSync; + [completionExpectation fulfill]; + }; + + OCMStub([partialMock sendEventWithName:@"IBGSessionReplayOnSyncCallback" body:OCMArg.any]).andDo(^(NSInvocation *invocation) { + [self.bridge evaluateSync:expectedValue]; + }); + + OCMStub([self.mSessionReplay setSyncCallbackWithHandler:[OCMArg checkWithBlock: ^BOOL(void(^handler)(IBGSessionMetadata *metadataObject, SessionEvaluationCompletion completion)) { + handler(mockMetadata, sessionEvaluationCompletion); + return YES; + }]]); + + [self.bridge setSyncCallback]; + [self waitForExpectationsWithTimeout:1 handler:nil]; + + OCMVerify([partialMock sendEventWithName:@"IBGSessionReplayOnSyncCallback" body:OCMArg.any]); + OCMVerifyAll(self.mSessionReplay); + XCTAssertEqual(actualValue, expectedValue); + } + + @end diff --git a/examples/default/ios/Podfile b/examples/default/ios/Podfile index 3d0c8ceedb..131ea74989 100644 --- a/examples/default/ios/Podfile +++ b/examples/default/ios/Podfile @@ -32,8 +32,8 @@ target 'InstabugExample' do target 'InstabugTests' do inherit! :complete pod 'OCMock' - # Pods for testing - end + pod 'Instabug', :podspec => 'https://ios-releases.instabug.com/custom/feature-dynamic-sampling-callback-add-apm-delegate/13.4.0/Instabug.podspec' + end post_install do |installer| react_native_post_install( diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index 1da6e558ee..b90c3a0da2 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -38,12 +38,12 @@ PODS: - hermes-engine (0.72.3): - hermes-engine/Pre-built (= 0.72.3) - hermes-engine/Pre-built (0.72.3) - - Instabug (13.3.0) + - Instabug (13.4.0) - instabug-reactnative-ndk (0.1.0): - RCT-Folly (= 2021.07.22.00) - React-Core - libevent (2.1.12) - - OCMock (3.9.3) + - OCMock (3.9.4) - RCT-Folly (2021.07.22.00): - boost - DoubleConversion @@ -476,7 +476,7 @@ PODS: - RCT-Folly (= 2021.07.22.00) - React-Core - RNInstabug (13.3.0): - - Instabug (= 13.3.0) + - Instabug - React-Core - RNReanimated (3.5.4): - DoubleConversion @@ -524,6 +524,7 @@ DEPENDENCIES: - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - 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-dynamic-sampling-callback-add-apm-delegate/13.4.0/Instabug.podspec`) - instabug-reactnative-ndk (from `../node_modules/instabug-reactnative-ndk`) - libevent (~> 2.1.12) - OCMock @@ -580,7 +581,6 @@ SPEC REPOS: - fmt - Google-Maps-iOS-Utils - GoogleMaps - - Instabug - libevent - OCMock - SocketRocket @@ -599,6 +599,8 @@ EXTERNAL SOURCES: hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" :tag: hermes-2023-03-20-RNv0.72.0-49794cfc7c81fb8f69fd60c3bbf85a7480cc5a77 + Instabug: + :podspec: https://ios-releases.instabug.com/custom/feature-dynamic-sampling-callback-add-apm-delegate/13.4.0/Instabug.podspec instabug-reactnative-ndk: :path: "../node_modules/instabug-reactnative-ndk" RCT-Folly: @@ -704,10 +706,10 @@ SPEC CHECKSUMS: Google-Maps-iOS-Utils: f77eab4c4326d7e6a277f8e23a0232402731913a GoogleMaps: 032f676450ba0779bd8ce16840690915f84e57ac hermes-engine: 10fbd3f62405c41ea07e71973ea61e1878d07322 - Instabug: 4f26295103a330ec0236918359eef7ccaa74e2fa + Instabug: 16e4c013f2ae57ddca4966ea90736e48bbcdd2d5 instabug-reactnative-ndk: 960119a69380cf4cbe47ccd007c453f757927d17 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 - OCMock: 300b1b1b9155cb6378660b981c2557448830bdc6 + OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 RCTRequired: a2faf4bad4e438ca37b2040cb8f7799baa065c18 RCTTypeSafety: cb09f3e4747b6d18331a15eb05271de7441ca0b3 @@ -748,7 +750,7 @@ SPEC CHECKSUMS: ReactCommon: 3ccb8fb14e6b3277e38c73b0ff5e4a1b8db017a9 RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495 RNGestureHandler: 6e46dde1f87e5f018a54fe5d40cd0e0b942b49ee - RNInstabug: a4ac0bd09123f6be7d58be541dc220acbaff8dc3 + RNInstabug: 80b369d623a473c31ff3b8b8ea1d17daaca44132 RNReanimated: ab2e96c6d5591c3dfbb38a464f54c8d17fb34a87 RNScreens: b21dc57dfa2b710c30ec600786a3fc223b1b92e7 RNSVG: 80584470ff1ffc7994923ea135a3e5ad825546b9 @@ -756,6 +758,6 @@ SPEC CHECKSUMS: SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 Yoga: 8796b55dba14d7004f980b54bcc9833ee45b28ce -PODFILE CHECKSUM: 281036e04bd4b9e7c2cc03a503b3245d3f1dd0dd +PODFILE CHECKSUM: f16fc6271767fab2dc19a52068caa1ca15e29e62 COCOAPODS: 1.12.0 diff --git a/ios/RNInstabug/ArgsRegistry.h b/ios/RNInstabug/ArgsRegistry.h index 09c8ac91c5..c7720e38fb 100644 --- a/ios/RNInstabug/ArgsRegistry.h +++ b/ios/RNInstabug/ArgsRegistry.h @@ -22,6 +22,7 @@ typedef NSDictionary ArgsDictionary; + (ArgsDictionary *) reproStates; + (ArgsDictionary *) locales; + (ArgsDictionary *)nonFatalExceptionLevel; ++ (ArgsDictionary *) launchType; + (NSDictionary *) placeholders; diff --git a/ios/RNInstabug/ArgsRegistry.m b/ios/RNInstabug/ArgsRegistry.m index 7099f4976c..707fdc9932 100644 --- a/ios/RNInstabug/ArgsRegistry.m +++ b/ios/RNInstabug/ArgsRegistry.m @@ -20,6 +20,7 @@ + (NSMutableDictionary *) getAll { [all addEntriesFromDictionary:ArgsRegistry.locales]; [all addEntriesFromDictionary:ArgsRegistry.nonFatalExceptionLevel]; [all addEntriesFromDictionary:ArgsRegistry.placeholders]; + [all addEntriesFromDictionary:ArgsRegistry.launchType]; return all; } @@ -241,4 +242,12 @@ + (ArgsDictionary *)nonFatalExceptionLevel { }; } ++ (ArgsDictionary *) launchType { + return @{ + @"hot": @(LaunchTypeHot), + @"cold": @(LaunchTypeCold), + @"unknown":@(LaunchTypeUnknown) + }; +} + @end diff --git a/ios/RNInstabug/InstabugReactBridge.h b/ios/RNInstabug/InstabugReactBridge.h index a3cfc21c13..a9f92fde44 100644 --- a/ios/RNInstabug/InstabugReactBridge.h +++ b/ios/RNInstabug/InstabugReactBridge.h @@ -120,9 +120,7 @@ errorCode:(double)errorCode startTime:(double)startTime duration:(double)duration - gqlQueryName:(NSString * _Nullable)gqlQueryName - serverErrorMessage:(NSString * _Nullable)serverErrorMessage; - + gqlQueryName:(NSString * _Nullable)gqlQueryName; /* +------------------------------------------------------------------------+ | Experiments | diff --git a/ios/RNInstabug/InstabugReactBridge.m b/ios/RNInstabug/InstabugReactBridge.m index dd18513163..abe1a6e453 100644 --- a/ios/RNInstabug/InstabugReactBridge.m +++ b/ios/RNInstabug/InstabugReactBridge.m @@ -297,8 +297,7 @@ - (dispatch_queue_t)methodQueue { errorCode:(double)errorCode startTime:(double)startTime duration:(double)duration - gqlQueryName:(NSString * _Nullable)gqlQueryName - serverErrorMessage:(NSString * _Nullable)serverErrorMessage) { + gqlQueryName:(NSString * _Nullable)gqlQueryName) { [IBGNetworkLogger addNetworkLogWithUrl:url method:method requestBody:requestBody @@ -313,8 +312,7 @@ - (dispatch_queue_t)methodQueue { errorCode:errorCode startTime:startTime * 1000 duration:duration * 1000 - gqlQueryName:gqlQueryName - serverErrorMessage:serverErrorMessage]; + gqlQueryName:gqlQueryName]; } RCT_EXPORT_METHOD(addPrivateView: (nonnull NSNumber *)reactTag) { diff --git a/ios/RNInstabug/InstabugSessionReplayBridge.h b/ios/RNInstabug/InstabugSessionReplayBridge.h index 1f247ab26e..259ea1c146 100644 --- a/ios/RNInstabug/InstabugSessionReplayBridge.h +++ b/ios/RNInstabug/InstabugSessionReplayBridge.h @@ -2,6 +2,7 @@ #import #import #import +#import @interface InstabugSessionReplayBridge : RCTEventEmitter /* @@ -20,6 +21,12 @@ - (void)getSessionReplayLink:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject; +- (void)setSyncCallback; + +- (void)evaluateSync:(BOOL)result; + +@property (atomic, copy) SessionEvaluationCompletion sessionEvaluationCompletion; + @end diff --git a/ios/RNInstabug/InstabugSessionReplayBridge.m b/ios/RNInstabug/InstabugSessionReplayBridge.m index bbaf7ffd6d..2c865ecb5f 100644 --- a/ios/RNInstabug/InstabugSessionReplayBridge.m +++ b/ios/RNInstabug/InstabugSessionReplayBridge.m @@ -18,7 +18,9 @@ + (BOOL)requiresMainQueueSetup } - (NSArray *)supportedEvents { - return @[]; + return @[ + @"IBGSessionReplayOnSyncCallback", + ]; } RCT_EXPORT_MODULE(IBGSessionReplay) @@ -45,6 +47,55 @@ + (BOOL)requiresMainQueueSetup resolve(link); } +- (NSArray *)getNetworkLogsArray: + (NSArray*) networkLogs { + NSMutableArray *networkLogsArray = [NSMutableArray array]; + + for (IBGSessionMetadataNetworkLogs* log in networkLogs) { + NSDictionary *nLog = @{@"url": log.url, @"statusCode": @(log.statusCode), @"duration": @(log.duration)}; + [networkLogsArray addObject:nLog]; + } + return networkLogsArray; +} + +- (NSDictionary *)getMetadataObjectMap:(IBGSessionMetadata *)metadataObject { + return @{ + @"appVersion": metadataObject.appVersion, + @"OS": metadataObject.os, + @"device": metadataObject.device, + @"sessionDurationInSeconds": @(metadataObject.sessionDuration), + @"hasLinkToAppReview": @(metadataObject.hasLinkToAppReview), + @"launchType": @(metadataObject.launchType), + @"launchDuration": @(metadataObject.launchDuration), + @"bugsCount": @(metadataObject.bugsCount), + @"fatalCrashCount": @(metadataObject.fatalCrashCount), + @"oomCrashCount": @(metadataObject.oomCrashCount), + @"networkLogs":[self getNetworkLogsArray:metadataObject.networkLogs] + }; +} + +RCT_EXPORT_METHOD(setSyncCallback) { + [IBGSessionReplay setSyncCallbackWithHandler:^(IBGSessionMetadata * _Nonnull metadataObject, SessionEvaluationCompletion _Nonnull completion) { + + [self sendEventWithName:@"IBGSessionReplayOnSyncCallback" + body:[self getMetadataObjectMap:metadataObject]]; + + self.sessionEvaluationCompletion = completion; + }]; +} + +RCT_EXPORT_METHOD(evaluateSync:(BOOL)result) { + + if (self.sessionEvaluationCompletion) { + + self.sessionEvaluationCompletion(result); + + self.sessionEvaluationCompletion = nil; + + } +} + + @synthesize description; @synthesize hash; diff --git a/ios/RNInstabug/Util/IBGNetworkLogger+CP.h b/ios/RNInstabug/Util/IBGNetworkLogger+CP.h index 5ae464785f..771417cfbd 100644 --- a/ios/RNInstabug/Util/IBGNetworkLogger+CP.h +++ b/ios/RNInstabug/Util/IBGNetworkLogger+CP.h @@ -19,8 +19,7 @@ NS_ASSUME_NONNULL_BEGIN errorCode:(int32_t)errorCode startTime:(int64_t)startTime duration:(int64_t) duration - gqlQueryName:(NSString * _Nullable)gqlQueryName - serverErrorMessage:(NSString * _Nullable)serverErrorMessage; + gqlQueryName:(NSString * _Nullable)gqlQueryName; @end diff --git a/src/native/NativeConstants.ts b/src/native/NativeConstants.ts index 271f179b8d..cec8840055 100644 --- a/src/native/NativeConstants.ts +++ b/src/native/NativeConstants.ts @@ -194,4 +194,5 @@ interface NativeLaunchType { hot: any; cold: any; warm: any; + unknown: any; } diff --git a/src/native/NativeInstabug.ts b/src/native/NativeInstabug.ts index 3b72f5951f..223aec83d0 100644 --- a/src/native/NativeInstabug.ts +++ b/src/native/NativeInstabug.ts @@ -66,7 +66,6 @@ export interface InstabugNativeModule extends NativeModule { startTime: number, duration: number, gqlQueryName: string | undefined, - serverErrorMessage: string | undefined, ): void; setNetworkLoggingEnabled(isEnabled: boolean): void; diff --git a/src/utils/Enums.ts b/src/utils/Enums.ts index 39577bac89..c80b46f54f 100644 --- a/src/utils/Enums.ts +++ b/src/utils/Enums.ts @@ -236,6 +236,7 @@ export enum StringKey { export enum LaunchType { hot = constants.hot, cold = constants.cold, + unknown = constants.unknown, /** * android only */ diff --git a/src/utils/InstabugUtils.ts b/src/utils/InstabugUtils.ts index d4238f14f0..80f632a0d5 100644 --- a/src/utils/InstabugUtils.ts +++ b/src/utils/InstabugUtils.ts @@ -191,7 +191,6 @@ export function reportNetworkLog(network: NetworkData) { network.startTime, network.duration, network.gqlQueryName, - network.serverErrorMessage, ); } } diff --git a/test/utils/InstabugUtils.spec.ts b/test/utils/InstabugUtils.spec.ts index becfccc0e9..3ac83be274 100644 --- a/test/utils/InstabugUtils.spec.ts +++ b/test/utils/InstabugUtils.spec.ts @@ -323,7 +323,6 @@ describe('reportNetworkLog', () => { network.startTime, network.duration, network.gqlQueryName, - network.serverErrorMessage, ); }); }); From 486b010571d2e3da3a950409fc31f6748ff9c09f Mon Sep 17 00:00:00 2001 From: kholood Date: Wed, 2 Oct 2024 11:16:13 +0300 Subject: [PATCH 03/28] Revert "fix(ios): update network log signature" This reverts commit 8d9036e2020be91147670eb20a4cd98e4bda0a02. --- examples/default/ios/InstabugTests/InstabugSampleTests.m | 7 +++++-- ios/RNInstabug/InstabugReactBridge.h | 4 +++- ios/RNInstabug/InstabugReactBridge.m | 6 ++++-- ios/RNInstabug/Util/IBGNetworkLogger+CP.h | 3 ++- src/native/NativeInstabug.ts | 1 + src/utils/InstabugUtils.ts | 1 + 6 files changed, 16 insertions(+), 6 deletions(-) diff --git a/examples/default/ios/InstabugTests/InstabugSampleTests.m b/examples/default/ios/InstabugTests/InstabugSampleTests.m index 742c2d77c5..70ef410258 100644 --- a/examples/default/ios/InstabugTests/InstabugSampleTests.m +++ b/examples/default/ios/InstabugTests/InstabugSampleTests.m @@ -331,6 +331,7 @@ - (void)testNetworkLogIOS { double startTime = 1719847101199; double duration = 150; NSString *gqlQueryName = nil; + NSString *serverErrorMessage = nil; [self.instabugBridge networkLogIOS:url method:method @@ -346,7 +347,8 @@ - (void)testNetworkLogIOS { errorCode:errorCode startTime:startTime duration:duration - gqlQueryName:gqlQueryName]; + gqlQueryName:gqlQueryName + serverErrorMessage:serverErrorMessage]; OCMVerify([mIBGNetworkLogger addNetworkLogWithUrl:url method:method @@ -362,7 +364,8 @@ - (void)testNetworkLogIOS { errorCode:errorCode startTime:startTime * 1000 duration:duration * 1000 - gqlQueryName:gqlQueryName]); + gqlQueryName:gqlQueryName + serverErrorMessage:serverErrorMessage]); } - (void)testSetFileAttachment { diff --git a/ios/RNInstabug/InstabugReactBridge.h b/ios/RNInstabug/InstabugReactBridge.h index a9f92fde44..a3cfc21c13 100644 --- a/ios/RNInstabug/InstabugReactBridge.h +++ b/ios/RNInstabug/InstabugReactBridge.h @@ -120,7 +120,9 @@ errorCode:(double)errorCode startTime:(double)startTime duration:(double)duration - gqlQueryName:(NSString * _Nullable)gqlQueryName; + gqlQueryName:(NSString * _Nullable)gqlQueryName + serverErrorMessage:(NSString * _Nullable)serverErrorMessage; + /* +------------------------------------------------------------------------+ | Experiments | diff --git a/ios/RNInstabug/InstabugReactBridge.m b/ios/RNInstabug/InstabugReactBridge.m index abe1a6e453..dd18513163 100644 --- a/ios/RNInstabug/InstabugReactBridge.m +++ b/ios/RNInstabug/InstabugReactBridge.m @@ -297,7 +297,8 @@ - (dispatch_queue_t)methodQueue { errorCode:(double)errorCode startTime:(double)startTime duration:(double)duration - gqlQueryName:(NSString * _Nullable)gqlQueryName) { + gqlQueryName:(NSString * _Nullable)gqlQueryName + serverErrorMessage:(NSString * _Nullable)serverErrorMessage) { [IBGNetworkLogger addNetworkLogWithUrl:url method:method requestBody:requestBody @@ -312,7 +313,8 @@ - (dispatch_queue_t)methodQueue { errorCode:errorCode startTime:startTime * 1000 duration:duration * 1000 - gqlQueryName:gqlQueryName]; + gqlQueryName:gqlQueryName + serverErrorMessage:serverErrorMessage]; } RCT_EXPORT_METHOD(addPrivateView: (nonnull NSNumber *)reactTag) { diff --git a/ios/RNInstabug/Util/IBGNetworkLogger+CP.h b/ios/RNInstabug/Util/IBGNetworkLogger+CP.h index 771417cfbd..5ae464785f 100644 --- a/ios/RNInstabug/Util/IBGNetworkLogger+CP.h +++ b/ios/RNInstabug/Util/IBGNetworkLogger+CP.h @@ -19,7 +19,8 @@ NS_ASSUME_NONNULL_BEGIN errorCode:(int32_t)errorCode startTime:(int64_t)startTime duration:(int64_t) duration - gqlQueryName:(NSString * _Nullable)gqlQueryName; + gqlQueryName:(NSString * _Nullable)gqlQueryName + serverErrorMessage:(NSString * _Nullable)serverErrorMessage; @end diff --git a/src/native/NativeInstabug.ts b/src/native/NativeInstabug.ts index 223aec83d0..3b72f5951f 100644 --- a/src/native/NativeInstabug.ts +++ b/src/native/NativeInstabug.ts @@ -66,6 +66,7 @@ export interface InstabugNativeModule extends NativeModule { startTime: number, duration: number, gqlQueryName: string | undefined, + serverErrorMessage: string | undefined, ): void; setNetworkLoggingEnabled(isEnabled: boolean): void; diff --git a/src/utils/InstabugUtils.ts b/src/utils/InstabugUtils.ts index 80f632a0d5..d4238f14f0 100644 --- a/src/utils/InstabugUtils.ts +++ b/src/utils/InstabugUtils.ts @@ -191,6 +191,7 @@ export function reportNetworkLog(network: NetworkData) { network.startTime, network.duration, network.gqlQueryName, + network.serverErrorMessage, ); } } From 201b4904a19086e14f4dff6fe8a7b0a4e9420221 Mon Sep 17 00:00:00 2001 From: kholood Date: Wed, 2 Oct 2024 11:19:10 +0300 Subject: [PATCH 04/28] chore(ios): update snapshot --- examples/default/ios/Podfile | 2 +- examples/default/ios/Podfile.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/default/ios/Podfile b/examples/default/ios/Podfile index 131ea74989..e199d06be6 100644 --- a/examples/default/ios/Podfile +++ b/examples/default/ios/Podfile @@ -32,7 +32,7 @@ target 'InstabugExample' do target 'InstabugTests' do inherit! :complete pod 'OCMock' - pod 'Instabug', :podspec => 'https://ios-releases.instabug.com/custom/feature-dynamic-sampling-callback-add-apm-delegate/13.4.0/Instabug.podspec' + pod 'Instabug', :podspec => 'https://ios-releases.instabug.com/custom/feature-dynamic-sampling-callback-base/13.4.2/Instabug.podspec' end post_install do |installer| diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index b90c3a0da2..343bf2b6d3 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -38,7 +38,7 @@ PODS: - hermes-engine (0.72.3): - hermes-engine/Pre-built (= 0.72.3) - hermes-engine/Pre-built (0.72.3) - - Instabug (13.4.0) + - Instabug (13.4.2) - instabug-reactnative-ndk (0.1.0): - RCT-Folly (= 2021.07.22.00) - React-Core @@ -524,7 +524,7 @@ DEPENDENCIES: - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - 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-dynamic-sampling-callback-add-apm-delegate/13.4.0/Instabug.podspec`) + - Instabug (from `https://ios-releases.instabug.com/custom/feature-dynamic-sampling-callback-base/13.4.2/Instabug.podspec`) - instabug-reactnative-ndk (from `../node_modules/instabug-reactnative-ndk`) - libevent (~> 2.1.12) - OCMock @@ -600,7 +600,7 @@ EXTERNAL SOURCES: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" :tag: hermes-2023-03-20-RNv0.72.0-49794cfc7c81fb8f69fd60c3bbf85a7480cc5a77 Instabug: - :podspec: https://ios-releases.instabug.com/custom/feature-dynamic-sampling-callback-add-apm-delegate/13.4.0/Instabug.podspec + :podspec: https://ios-releases.instabug.com/custom/feature-dynamic-sampling-callback-base/13.4.2/Instabug.podspec instabug-reactnative-ndk: :path: "../node_modules/instabug-reactnative-ndk" RCT-Folly: @@ -706,7 +706,7 @@ SPEC CHECKSUMS: Google-Maps-iOS-Utils: f77eab4c4326d7e6a277f8e23a0232402731913a GoogleMaps: 032f676450ba0779bd8ce16840690915f84e57ac hermes-engine: 10fbd3f62405c41ea07e71973ea61e1878d07322 - Instabug: 16e4c013f2ae57ddca4966ea90736e48bbcdd2d5 + Instabug: fdeda93a58be4e3fead76d264962111b8069e2f1 instabug-reactnative-ndk: 960119a69380cf4cbe47ccd007c453f757927d17 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 @@ -758,6 +758,6 @@ SPEC CHECKSUMS: SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 Yoga: 8796b55dba14d7004f980b54bcc9833ee45b28ce -PODFILE CHECKSUM: f16fc6271767fab2dc19a52068caa1ca15e29e62 +PODFILE CHECKSUM: 5d05a5f39e6af8a9c3e43e874715bc5f95e203e9 COCOAPODS: 1.12.0 From 038da9a3aed95672b289677ff3ec1eb3d25602e8 Mon Sep 17 00:00:00 2001 From: kholood Date: Wed, 2 Oct 2024 11:30:36 +0300 Subject: [PATCH 05/28] fix: ios network logging test after reverting --- test/utils/InstabugUtils.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/test/utils/InstabugUtils.spec.ts b/test/utils/InstabugUtils.spec.ts index 3ac83be274..becfccc0e9 100644 --- a/test/utils/InstabugUtils.spec.ts +++ b/test/utils/InstabugUtils.spec.ts @@ -323,6 +323,7 @@ describe('reportNetworkLog', () => { network.startTime, network.duration, network.gqlQueryName, + network.serverErrorMessage, ); }); }); From cf9db14ca760e48ea4705f06f4382d94561f1085 Mon Sep 17 00:00:00 2001 From: kholood Date: Wed, 2 Oct 2024 18:50:02 +0300 Subject: [PATCH 06/28] fix: convert sendEvent arg from writable to readable map --- .../com/instabug/reactlibrary/utils/EventEmitterModule.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/instabug/reactlibrary/utils/EventEmitterModule.java b/android/src/main/java/com/instabug/reactlibrary/utils/EventEmitterModule.java index d2226cc497..b7d96eb018 100644 --- a/android/src/main/java/com/instabug/reactlibrary/utils/EventEmitterModule.java +++ b/android/src/main/java/com/instabug/reactlibrary/utils/EventEmitterModule.java @@ -5,6 +5,7 @@ import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; +import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.WritableMap; import com.facebook.react.modules.core.DeviceEventManagerModule; @@ -16,7 +17,7 @@ public EventEmitterModule(ReactApplicationContext context) { } @VisibleForTesting - public void sendEvent(String event, @Nullable WritableMap params) { + public void sendEvent(String event, @Nullable ReadableMap params) { if (listenerCount > 0) { getReactApplicationContext() .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) From eaa675179d32fbe37fbc3de99eafac3de0ff35de Mon Sep 17 00:00:00 2001 From: kholood Date: Wed, 2 Oct 2024 18:51:23 +0300 Subject: [PATCH 07/28] chore(android): update snapshot --- android/native.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/native.gradle b/android/native.gradle index 93ff054427..1dbf2e2b6a 100644 --- a/android/native.gradle +++ b/android/native.gradle @@ -1,5 +1,5 @@ project.ext.instabug = [ - version: '13.3.0.6212131-SNAPSHOT', + version: '13.3.0.6212626-SNAPSHOT', ] dependencies { From efc5f6a7f325bd57912369685fd5769540bc4dd0 Mon Sep 17 00:00:00 2001 From: kholood Date: Wed, 2 Oct 2024 18:53:08 +0300 Subject: [PATCH 08/28] fix(android): refactor getSessionMetadataMap to tolerate null values --- .../RNInstabugSessionReplayModule.java | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java b/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java index d4973894a8..2cff1fc558 100644 --- a/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java +++ b/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java @@ -119,39 +119,50 @@ public void onSessionReplayLinkReady(@Nullable String link) { } - public ReadableMap getSessionMetadataMap(SessionMetadata sessionMetadata){ + public WritableMap getSessionMetadataMap(SessionMetadata sessionMetadata){ WritableMap params = Arguments.createMap(); params.putString("appVersion",sessionMetadata.getAppVersion()); params.putString("OS",sessionMetadata.getOs()); params.putString("device",sessionMetadata.getDevice()); params.putDouble("sessionDurationInSeconds",(double)sessionMetadata.getSessionDurationInSeconds()); params.putBoolean("hasLinkToAppReview",sessionMetadata.getLinkedToReview()); - params.putString("launchType",ArgsRegistry.launchTypeReversed.get(sessionMetadata.getLaunchType()) ); - params.putDouble("launchDuration", sessionMetadata.getLaunchDuration()); params.putArray("networkLogs",getNetworkLogsArray(sessionMetadata.getNetworkLogs())); -// TODO:Add rest of sessionMetadata -// params.putDouble("bugsCount", ??); -// params.putDouble("fatalCrashCount",??); -// params.putDouble("oomCrashCount",??); + String launchType = sessionMetadata.getLaunchType(); + Long launchDuration = sessionMetadata.getLaunchDuration(); + + if (launchType != null) { + params.putString("launchType",ArgsRegistry.launchTypeReversed.get(sessionMetadata.getLaunchType()) ); + } else { + params.putString("launchType","" ); + } + + if (launchDuration != null) { + params.putDouble("launchDuration", (double)launchDuration); + } else { + params.putDouble("launchDuration", 0.0); + } + return params; } - public ReadableArray getNetworkLogsArray(List networkLogList ){ + public ReadableArray getNetworkLogsArray(List networkLogList ) { WritableArray networkLogs = Arguments.createArray(); - for (SessionMetadata.NetworkLog log : networkLogList) { - WritableMap networkLog = Arguments.createMap(); - networkLog.putString("url", log.getUrl()); - networkLog.putDouble("duration", log.getDuration()); - networkLog.putInt("statusCode", log.getStatusCode()); + if (networkLogList != null) { + for (SessionMetadata.NetworkLog log : networkLogList) { + WritableMap networkLog = Arguments.createMap(); + networkLog.putString("url", log.getUrl()); + networkLog.putDouble("duration", log.getDuration()); + networkLog.putInt("statusCode", log.getStatusCode()); - networkLogs.pushMap(networkLog); + networkLogs.pushMap(networkLog); + } } return networkLogs; } - + private boolean shouldSync = true; private CountDownLatch latch; @ReactMethod From 4901ebfcbf4e975f66b3408b53d01a1bca975ebf Mon Sep 17 00:00:00 2001 From: kholood Date: Wed, 2 Oct 2024 19:35:42 +0300 Subject: [PATCH 09/28] fix(ios): update fulfill exception wait time in test --- examples/default/ios/InstabugTests/InstabugSessionReplayTests.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m b/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m index 7ee1871ea9..75bb6cf8ac 100644 --- a/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m +++ b/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m @@ -109,7 +109,7 @@ - (void)testSetSyncCallback { }]]); [self.bridge setSyncCallback]; - [self waitForExpectationsWithTimeout:1 handler:nil]; + [self waitForExpectationsWithTimeout:2 handler:nil]; OCMVerify([partialMock sendEventWithName:@"IBGSessionReplayOnSyncCallback" body:OCMArg.any]); OCMVerifyAll(self.mSessionReplay); From cfcd55b1bb99e1769410af36fb38bfb8665cacd3 Mon Sep 17 00:00:00 2001 From: kholood Date: Fri, 4 Oct 2024 12:30:45 +0300 Subject: [PATCH 10/28] fix(android): convert session metadat map to readable map --- .../instabug/reactlibrary/RNInstabugSessionReplayModule.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java b/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java index 2cff1fc558..e53ac4e328 100644 --- a/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java +++ b/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java @@ -9,6 +9,7 @@ import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.WritableArray; import com.facebook.react.bridge.WritableMap; import com.instabug.library.OnSessionReplayLinkReady; @@ -119,7 +120,7 @@ public void onSessionReplayLinkReady(@Nullable String link) { } - public WritableMap getSessionMetadataMap(SessionMetadata sessionMetadata){ + public ReadableMap getSessionMetadataMap(SessionMetadata sessionMetadata){ WritableMap params = Arguments.createMap(); params.putString("appVersion",sessionMetadata.getAppVersion()); params.putString("OS",sessionMetadata.getOs()); From e73f4739bdd7244b998be44bacd8921105882d1f Mon Sep 17 00:00:00 2001 From: kholood Date: Fri, 4 Oct 2024 12:39:54 +0300 Subject: [PATCH 11/28] chore: update docs --- src/models/SessionMetadata.ts | 6 +++--- src/utils/Enums.ts | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/models/SessionMetadata.ts b/src/models/SessionMetadata.ts index f95c1cba52..485a3d4708 100644 --- a/src/models/SessionMetadata.ts +++ b/src/models/SessionMetadata.ts @@ -43,15 +43,15 @@ export interface SessionMetadata { */ launchDuration: number; /** - * number of bugs in the session + * number of bugs in the session (iOS only) */ bugsCount?: number; /** - * number of fetal crashes in the session + * number of fetal crashes in the session (iOS only) */ fatalCrashCount?: number; /** - * number of out of memory crashes in the session + * number of out of memory crashes in the session (iOS only) */ oomCrashCount?: number; } diff --git a/src/utils/Enums.ts b/src/utils/Enums.ts index c80b46f54f..e43448ab43 100644 --- a/src/utils/Enums.ts +++ b/src/utils/Enums.ts @@ -236,9 +236,12 @@ export enum StringKey { export enum LaunchType { hot = constants.hot, cold = constants.cold, + /** + * iOS only + */ unknown = constants.unknown, /** - * android only + * Android only */ warm = constants.warm, } From daaedc0eca5f3d3ee7de79fb005119d67eef30bf Mon Sep 17 00:00:00 2001 From: kholood Date: Mon, 7 Oct 2024 13:22:27 +0300 Subject: [PATCH 12/28] fix: remove hot launch type --- .../src/main/java/com/instabug/reactlibrary/ArgsRegistry.java | 2 -- .../instabug/reactlibrary/RNInstabugSessionReplayModule.java | 2 +- ios/RNInstabug/ArgsRegistry.m | 1 - src/native/NativeConstants.ts | 1 - src/utils/Enums.ts | 1 - 5 files changed, 1 insertion(+), 6 deletions(-) diff --git a/android/src/main/java/com/instabug/reactlibrary/ArgsRegistry.java b/android/src/main/java/com/instabug/reactlibrary/ArgsRegistry.java index f1a4c1fa94..c5f0462339 100644 --- a/android/src/main/java/com/instabug/reactlibrary/ArgsRegistry.java +++ b/android/src/main/java/com/instabug/reactlibrary/ArgsRegistry.java @@ -243,7 +243,6 @@ static Map getAll() { public static ArgsMap launchType = new ArgsMap() {{ put("cold", SessionMetadata.LaunchType.COLD); - put("hot",SessionMetadata.LaunchType.HOT ); put("warm",SessionMetadata.LaunchType.WARM ); }}; @@ -251,7 +250,6 @@ static Map getAll() { // This is used for mapping native `LaunchType` values into React Native enum values. public static HashMap launchTypeReversed = new HashMap() {{ put(SessionMetadata.LaunchType.COLD,"cold"); - put(SessionMetadata.LaunchType.HOT,"hot" ); put(SessionMetadata.LaunchType.WARM,"warm" ); }}; diff --git a/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java b/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java index e53ac4e328..a630267acb 100644 --- a/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java +++ b/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java @@ -135,7 +135,7 @@ public ReadableMap getSessionMetadataMap(SessionMetadata sessionMetadata){ if (launchType != null) { params.putString("launchType",ArgsRegistry.launchTypeReversed.get(sessionMetadata.getLaunchType()) ); } else { - params.putString("launchType","" ); + params.putString("launchType","unknown"); } if (launchDuration != null) { diff --git a/ios/RNInstabug/ArgsRegistry.m b/ios/RNInstabug/ArgsRegistry.m index 707fdc9932..bc14302ac1 100644 --- a/ios/RNInstabug/ArgsRegistry.m +++ b/ios/RNInstabug/ArgsRegistry.m @@ -244,7 +244,6 @@ + (ArgsDictionary *)nonFatalExceptionLevel { + (ArgsDictionary *) launchType { return @{ - @"hot": @(LaunchTypeHot), @"cold": @(LaunchTypeCold), @"unknown":@(LaunchTypeUnknown) }; diff --git a/src/native/NativeConstants.ts b/src/native/NativeConstants.ts index cec8840055..a4e98e2c86 100644 --- a/src/native/NativeConstants.ts +++ b/src/native/NativeConstants.ts @@ -191,7 +191,6 @@ interface NativeStringKey { } interface NativeLaunchType { - hot: any; cold: any; warm: any; unknown: any; diff --git a/src/utils/Enums.ts b/src/utils/Enums.ts index e43448ab43..a840b2d76d 100644 --- a/src/utils/Enums.ts +++ b/src/utils/Enums.ts @@ -234,7 +234,6 @@ export enum StringKey { } export enum LaunchType { - hot = constants.hot, cold = constants.cold, /** * iOS only From be32acdcebf18e2d8df20818bb167659dfa3a726 Mon Sep 17 00:00:00 2001 From: kholood Date: Mon, 7 Oct 2024 13:24:06 +0300 Subject: [PATCH 13/28] fix: increase timeout expectation in test case --- examples/default/ios/InstabugTests/InstabugSessionReplayTests.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m b/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m index 75bb6cf8ac..23b45c270d 100644 --- a/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m +++ b/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m @@ -109,7 +109,7 @@ - (void)testSetSyncCallback { }]]); [self.bridge setSyncCallback]; - [self waitForExpectationsWithTimeout:2 handler:nil]; + [self waitForExpectationsWithTimeout:10 handler:nil]; OCMVerify([partialMock sendEventWithName:@"IBGSessionReplayOnSyncCallback" body:OCMArg.any]); OCMVerifyAll(self.mSessionReplay); From f4d097a04b7fdf426051e925e9c27bba81045e42 Mon Sep 17 00:00:00 2001 From: kholood Date: Mon, 7 Oct 2024 14:15:04 +0300 Subject: [PATCH 14/28] Revert "fix: increase timeout expectation in test case" This reverts commit be32acdcebf18e2d8df20818bb167659dfa3a726. --- examples/default/ios/InstabugTests/InstabugSessionReplayTests.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m b/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m index 23b45c270d..75bb6cf8ac 100644 --- a/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m +++ b/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m @@ -109,7 +109,7 @@ - (void)testSetSyncCallback { }]]); [self.bridge setSyncCallback]; - [self waitForExpectationsWithTimeout:10 handler:nil]; + [self waitForExpectationsWithTimeout:2 handler:nil]; OCMVerify([partialMock sendEventWithName:@"IBGSessionReplayOnSyncCallback" body:OCMArg.any]); OCMVerifyAll(self.mSessionReplay); From bb42692b823f76fffc4992ee71cc7bb9a3f2c761 Mon Sep 17 00:00:00 2001 From: YoussefFouadd Date: Wed, 16 Oct 2024 15:36:39 +0300 Subject: [PATCH 15/28] feat(example): add features and buttons implementation (#1280) Jira ID: RL-224 --- examples/default/src/navigation/HomeStack.tsx | 10 ++ .../src/screens/CrashReportingScreen.tsx | 12 +- .../src/screens/FeatureRequestsScreen.tsx | 17 +- examples/default/src/screens/HomeScreen.tsx | 1 + .../default/src/screens/LegacyModeScreen.tsx | 83 +++++++++ .../default/src/screens/SettingsScreen.tsx | 34 +++- .../default/src/screens/apm/APMScreen.tsx | 16 +- .../default/src/screens/apm/HttpScreen.tsx | 167 ++++++++++++++++++ .../default/src/screens/apm/NetworkScreen.tsx | 8 +- .../default/src/utils/showNotification.ts | 9 + 10 files changed, 351 insertions(+), 6 deletions(-) create mode 100644 examples/default/src/screens/LegacyModeScreen.tsx create mode 100644 examples/default/src/screens/apm/HttpScreen.tsx create mode 100644 examples/default/src/utils/showNotification.ts diff --git a/examples/default/src/navigation/HomeStack.tsx b/examples/default/src/navigation/HomeStack.tsx index b4a8ca3e69..716ea05d9f 100644 --- a/examples/default/src/navigation/HomeStack.tsx +++ b/examples/default/src/navigation/HomeStack.tsx @@ -26,6 +26,8 @@ import { TracesScreen } from '../screens/apm/TracesScreen'; import { NetworkScreen } from '../screens/apm/NetworkScreen'; import { FlowsScreen } from '../screens/apm/FlowsScreen'; import { SessionReplayScreen } from '../screens/SessionReplayScreen'; +import { LegacyModeScreen } from '../screens/LegacyModeScreen'; +import { HttpScreen } from '../screens/apm/HttpScreen'; export type HomeStackParamList = { Home: undefined; @@ -45,6 +47,8 @@ export type HomeStackParamList = { LargeImageList: undefined; SessionReplay: undefined; BackAndForthScreen: BackAndForthScreenProp; + LegacyMode: undefined; + HttpScreen: undefined; // APM // APM: undefined; @@ -132,6 +136,12 @@ export const HomeStackNavigator: React.FC = () => { + + ); }; diff --git a/examples/default/src/screens/CrashReportingScreen.tsx b/examples/default/src/screens/CrashReportingScreen.tsx index c5a53567fc..397565ecd3 100644 --- a/examples/default/src/screens/CrashReportingScreen.tsx +++ b/examples/default/src/screens/CrashReportingScreen.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { Alert, Platform, ScrollView, StyleSheet, Text, View } from 'react-native'; +import { Alert, Platform, ScrollView, StyleSheet, Text, View, Switch } from 'react-native'; import { CrashReporting, NonFatalErrorLevel } from 'instabug-reactnative'; @@ -12,6 +12,7 @@ import { VerticalListTile } from '../components/VerticalListTile'; import { Button, VStack } from 'native-base'; import { InputField } from '../components/InputField'; import { Select } from '../components/Select'; +import { showNotification } from '../utils/showNotification'; const styles = StyleSheet.create({ inputWrapper: { @@ -61,6 +62,7 @@ export const CrashReportingScreen: React.FC = () => { throw error; } } + const [isEnabled, setIsEnabled] = useState(false); const [userAttributeKey, setUserAttributeKey] = useState(''); const [userAttributeValue, setUserAttributeValue] = useState(''); @@ -70,6 +72,12 @@ export const CrashReportingScreen: React.FC = () => { NonFatalErrorLevel.error, ); + const toggleSwitch = (value: boolean) => { + setIsEnabled(value); + CrashReporting.setEnabled(value); + showNotification('Crash Reporting status', 'Crash Reporting enabled set to ' + value); + }; + function sendCrash() { try { const error = new Error(crashNameValue); @@ -99,6 +107,8 @@ export const CrashReportingScreen: React.FC = () => { return ( + Crash Reporting Enabled: +
{ + const [isEnabled, setIsEnabled] = useState(false); + + const toggleSwitch = (value: boolean) => { + setIsEnabled(value); + + FeatureRequests.setEmailFieldRequired(value, ActionType.requestNewFeature); + showNotification('Email status', 'Email field required set to ' + value); + }; return ( + Email field Required: + FeatureRequests.show()} /> ); diff --git a/examples/default/src/screens/HomeScreen.tsx b/examples/default/src/screens/HomeScreen.tsx index 690d41cc2d..7a5aeeb466 100644 --- a/examples/default/src/screens/HomeScreen.tsx +++ b/examples/default/src/screens/HomeScreen.tsx @@ -19,6 +19,7 @@ export const HomeScreen: React.FC navigation.navigate('UserSteps')} /> navigation.navigate('APM')} /> navigation.navigate('SessionReplay')} /> + navigation.navigate('LegacyMode')} /> ); }; diff --git a/examples/default/src/screens/LegacyModeScreen.tsx b/examples/default/src/screens/LegacyModeScreen.tsx new file mode 100644 index 0000000000..8790911c40 --- /dev/null +++ b/examples/default/src/screens/LegacyModeScreen.tsx @@ -0,0 +1,83 @@ +import React, { useState } from 'react'; +import { ActivityIndicator } from 'react-native'; +import Instabug from 'instabug-reactnative'; +import { ListTile } from '../components/ListTile'; +import { Screen } from '../components/Screen'; +import { showNotification } from '../utils/showNotification'; + +export const LegacyModeScreen: React.FC = () => { + const [loading, setLoading] = useState(false); + + const addMultipleInstabugLogs = async (numberOfLogs: number) => { + setLoading(true); + try { + for (let i = 0; i < numberOfLogs; i++) { + Instabug.logDebug(`log ${i}`); + } + showNotification('Success', 'Succeeded'); + } catch (error) { + showNotification('Error', 'Failed'); + } finally { + setLoading(false); + } + }; + + const addMultipleUserEvents = async (numberOfLogs: number) => { + setLoading(true); + try { + for (let i = 0; i < numberOfLogs; i++) { + Instabug.logUserEvent(`test user event ${i}`); + } + showNotification('Success', 'Succeeded'); + } catch (error) { + showNotification('Error', 'Failed'); + } finally { + setLoading(false); + } + }; + + const addMultipleTags = async (numberOfLogs: number) => { + setLoading(true); + try { + for (let i = 0; i < numberOfLogs; i++) { + Instabug.appendTags([`test tag ${i}`]); + } + showNotification('Success', 'Succeeded'); + } catch (error) { + showNotification('Error', 'Failed'); + } finally { + setLoading(false); + } + }; + + const addMultipleUserAttributes = async (numberOfLogs: number) => { + setLoading(true); + try { + for (let i = 0; i < numberOfLogs; i++) { + Instabug.setUserAttribute(`user${i}`, `user${i} value`); + } + showNotification('Success', 'Succeeded'); + } catch (error) { + showNotification('Error', 'Failed'); + } finally { + setLoading(false); + } + }; + + return ( + + {loading && } + + addMultipleInstabugLogs(10)} + /> + addMultipleUserEvents(10)} /> + addMultipleTags(10)} /> + addMultipleUserAttributes(10)} + /> + + ); +}; diff --git a/examples/default/src/screens/SettingsScreen.tsx b/examples/default/src/screens/SettingsScreen.tsx index 6390bb7a0a..764753e704 100644 --- a/examples/default/src/screens/SettingsScreen.tsx +++ b/examples/default/src/screens/SettingsScreen.tsx @@ -1,6 +1,12 @@ import React, { useState } from 'react'; -import Instabug, { BugReporting, ColorTheme, InvocationEvent } from 'instabug-reactnative'; +import Instabug, { + BugReporting, + ColorTheme, + InvocationEvent, + Locale, + ReproStepsMode, +} from 'instabug-reactnative'; import { InputGroup, InputLeftAddon, useToast, VStack, Button } from 'native-base'; import { ListTile } from '../components/ListTile'; @@ -193,6 +199,32 @@ export const SettingsScreen: React.FC = () => { onValueChange={Instabug.setColorTheme} /> + { + Instabug.setLocale(Locale.arabic); + }} + /> + { + Instabug.setReproStepsConfig({ + all: ReproStepsMode.disabled, + }); + }} + /> + { + Instabug.addExperiments(['exp1', 'exp2']); + }} + /> + { + Instabug.removeExperiments(['exp1', 'exp2']); + }} + /> diff --git a/examples/default/src/screens/apm/APMScreen.tsx b/examples/default/src/screens/apm/APMScreen.tsx index 2bc4dbca0d..0b04e61919 100644 --- a/examples/default/src/screens/apm/APMScreen.tsx +++ b/examples/default/src/screens/apm/APMScreen.tsx @@ -1,14 +1,28 @@ import type { NativeStackScreenProps } from '@react-navigation/native-stack'; import type { HomeStackParamList } from '../../navigation/HomeStack'; -import React from 'react'; +import React, { useState } from 'react'; import { ListTile } from '../../components/ListTile'; import { Screen } from '../../components/Screen'; +import { Text, Switch } from 'react-native'; +import { APM } from 'instabug-reactnative'; +import { showNotification } from '../../utils/showNotification'; export const APMScreen: React.FC> = ({ navigation, }) => { + const [isEnabled, setIsEnabled] = useState(false); + + const toggleSwitch = (value: boolean) => { + setIsEnabled(value); + APM.setEnabled(value); + showNotification('APM status', 'APM enabled set to ' + value); + }; + return ( + Enable APM: + + APM.endAppLaunch()} /> navigation.navigate('NetworkTraces')} /> navigation.navigate('ExecutionTraces')} /> navigation.navigate('AppFlows')} /> diff --git a/examples/default/src/screens/apm/HttpScreen.tsx b/examples/default/src/screens/apm/HttpScreen.tsx new file mode 100644 index 0000000000..48f972ae41 --- /dev/null +++ b/examples/default/src/screens/apm/HttpScreen.tsx @@ -0,0 +1,167 @@ +import React, { useState } from 'react'; +import { ActivityIndicator } from 'react-native'; +import { ListTile } from '../../components/ListTile'; +import { Screen } from '../../components/Screen'; +import { showNotification } from '../../utils/showNotification'; + +export const HttpScreen: React.FC = () => { + const [loading, setLoading] = useState(false); + + const makeGetCall = async () => { + setLoading(true); + const url = 'https://httpbin.org/anything'; + try { + const response = await fetch(url, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, + }); + + const responseBody = await response.json(); + console.log('Response:', responseBody); + + setLoading(false); + showNotification('Success', 'Succeeded'); + } catch (error) { + console.error('Error:', error); + setLoading(false); + showNotification('Error', 'Failed'); + } + }; + + const makePostCall = async () => { + setLoading(true); + const url = 'https://httpbin.org/post'; + const requestBody = { + name: 'Islam', + }; + try { + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(requestBody), + }); + + const responseBody = await response.json(); + console.log('Response:', responseBody); + + setLoading(false); + showNotification('Success', 'Succeeded'); + } catch (error) { + console.error('Error:', error); + setLoading(false); + showNotification('Error', 'Failed'); + } + }; + + const makeDeleteCall = async () => { + setLoading(true); + const url = 'https://httpbin.org/delete'; + try { + const response = await fetch(url, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + }); + + const responseBody = await response.json(); + console.log('Response:', responseBody); + + setLoading(false); + showNotification('Success', 'Succeeded'); + } catch (error) { + console.error('Error:', error); + setLoading(false); + showNotification('Error', 'Failed'); + } + }; + + const makePutCall = async () => { + setLoading(true); + const url = 'https://httpbin.org/put'; + const requestBody = { + name: 'Islam', + }; + try { + const response = await fetch(url, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(requestBody), + }); + + const responseBody = await response.json(); + console.log('Response:', responseBody); + + setLoading(false); + showNotification('Success', 'Succeeded'); + } catch (error) { + console.error('Error:', error); + setLoading(false); + showNotification('Error', 'Failed'); + } + }; + + const makePatchCall = async () => { + setLoading(true); + const url = 'https://httpbin.org/patch'; + + const jsonInputString = JSON.stringify({ name: 'Islam' }); + + try { + const response = await fetch(url, { + method: 'PATCH', + headers: { + 'Content-Type': 'application/json', + }, + body: jsonInputString, + }); + + const responseBody = await response.json(); + console.log('Response:', responseBody); + setLoading(false); + showNotification('Success', 'Succeeded'); + } catch (error) { + console.error('Error:', error); + setLoading(false); + showNotification('Error', 'Failed'); + } + }; + + const makeDownloadImageCall = async () => { + setLoading(true); + const url = 'https://httpbin.org/image/jpeg'; + try { + const response = await fetch(url, { + method: 'GET', + }); + + const responseBody = await response.blob(); + console.log('Response:', responseBody); + + setLoading(false); + showNotification('Success', 'Succeeded'); + } catch (error) { + console.error('Error:', error); + setLoading(false); + showNotification('Error', 'Failed'); + } + }; + + return ( + + {loading && } + + + + + + + + ); +}; diff --git a/examples/default/src/screens/apm/NetworkScreen.tsx b/examples/default/src/screens/apm/NetworkScreen.tsx index 40ad2b5faf..8aa20f49f0 100644 --- a/examples/default/src/screens/apm/NetworkScreen.tsx +++ b/examples/default/src/screens/apm/NetworkScreen.tsx @@ -8,8 +8,13 @@ import { HStack, VStack } from 'native-base'; import { gql, request } from 'graphql-request'; 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 = () => { +export const NetworkScreen: React.FC< + NativeStackScreenProps +> = ({ navigation }) => { const [endpointUrl, setEndpointUrl] = useState(''); const { width, height } = useWindowDimensions(); const defaultRequestUrl = 'https://jsonplaceholder.typicode.com/posts/1'; @@ -128,6 +133,7 @@ export const NetworkScreen: React.FC = () => { ))}
+ navigation.navigate('HttpScreen')} />
); diff --git a/examples/default/src/utils/showNotification.ts b/examples/default/src/utils/showNotification.ts new file mode 100644 index 0000000000..f7084b46e8 --- /dev/null +++ b/examples/default/src/utils/showNotification.ts @@ -0,0 +1,9 @@ +import { ToastAndroid, Platform, Alert } from 'react-native'; + +export function showNotification(title: string, message: string): void { + if (Platform.OS === 'android') { + ToastAndroid.show(message, ToastAndroid.SHORT); + } else { + Alert.alert(title, message); + } +} From 2d34d8fc6bf7af474e5109262554641366f93095 Mon Sep 17 00:00:00 2001 From: kholood Date: Mon, 28 Oct 2024 14:57:01 +0300 Subject: [PATCH 16/28] fix(android): add unknown launch type --- .../src/main/java/com/instabug/reactlibrary/ArgsRegistry.java | 1 + .../instabug/reactlibrary/RNInstabugSessionReplayModule.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/instabug/reactlibrary/ArgsRegistry.java b/android/src/main/java/com/instabug/reactlibrary/ArgsRegistry.java index c5f0462339..b56db804d6 100644 --- a/android/src/main/java/com/instabug/reactlibrary/ArgsRegistry.java +++ b/android/src/main/java/com/instabug/reactlibrary/ArgsRegistry.java @@ -244,6 +244,7 @@ static Map getAll() { public static ArgsMap launchType = new ArgsMap() {{ put("cold", SessionMetadata.LaunchType.COLD); put("warm",SessionMetadata.LaunchType.WARM ); + put("unknown","unknown"); }}; // Temporary workaround to be removed in future release diff --git a/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java b/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java index a630267acb..20b0a89adb 100644 --- a/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java +++ b/android/src/main/java/com/instabug/reactlibrary/RNInstabugSessionReplayModule.java @@ -135,7 +135,7 @@ public ReadableMap getSessionMetadataMap(SessionMetadata sessionMetadata){ if (launchType != null) { params.putString("launchType",ArgsRegistry.launchTypeReversed.get(sessionMetadata.getLaunchType()) ); } else { - params.putString("launchType","unknown"); + params.putString("launchType",ArgsRegistry.launchType.get("unknown")); } if (launchDuration != null) { From 3b85dcd386a98be17f7560bcd0f9b2e5c3d50cbd Mon Sep 17 00:00:00 2001 From: kholood Date: Mon, 28 Oct 2024 14:58:02 +0300 Subject: [PATCH 17/28] chore: update documentation --- src/utils/Enums.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/utils/Enums.ts b/src/utils/Enums.ts index a840b2d76d..37ffa33ce3 100644 --- a/src/utils/Enums.ts +++ b/src/utils/Enums.ts @@ -235,9 +235,6 @@ export enum StringKey { export enum LaunchType { cold = constants.cold, - /** - * iOS only - */ unknown = constants.unknown, /** * Android only From 3b3a495968ddc67191aeee5f774f48a01f34a9de Mon Sep 17 00:00:00 2001 From: Ahmed alaa Date: Sun, 10 Nov 2024 17:20:07 +0200 Subject: [PATCH 18/28] feat: upgrade to 14.0.0 --- RNInstabug.podspec | 2 +- examples/default/ios/Podfile | 1 - examples/default/ios/Podfile.lock | 14 ++++++-------- ios/native.rb | 2 +- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/RNInstabug.podspec b/RNInstabug.podspec index 21ae5fc720..40c480f4cb 100644 --- a/RNInstabug.podspec +++ b/RNInstabug.podspec @@ -16,5 +16,5 @@ Pod::Spec.new do |s| s.source_files = "ios/**/*.{h,m,mm}" s.dependency 'React-Core' - s.dependency 'Instabug' + use_instabug!(s) end diff --git a/examples/default/ios/Podfile b/examples/default/ios/Podfile index e199d06be6..4d746db417 100644 --- a/examples/default/ios/Podfile +++ b/examples/default/ios/Podfile @@ -32,7 +32,6 @@ target 'InstabugExample' do target 'InstabugTests' do inherit! :complete pod 'OCMock' - pod 'Instabug', :podspec => 'https://ios-releases.instabug.com/custom/feature-dynamic-sampling-callback-base/13.4.2/Instabug.podspec' end post_install do |installer| diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index 6b6b138b63..4af8d1a69e 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -38,7 +38,7 @@ PODS: - hermes-engine (0.72.3): - hermes-engine/Pre-built (= 0.72.3) - hermes-engine/Pre-built (0.72.3) - - Instabug (13.4.2) + - Instabug (14.0.0) - instabug-reactnative-ndk (0.1.0): - RCT-Folly (= 2021.07.22.00) - React-Core @@ -476,7 +476,7 @@ PODS: - RCT-Folly (= 2021.07.22.00) - React-Core - RNInstabug (13.4.0): - - Instabug + - Instabug (= 14.0.0) - React-Core - RNReanimated (3.5.4): - DoubleConversion @@ -524,7 +524,6 @@ DEPENDENCIES: - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - 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-dynamic-sampling-callback-base/13.4.2/Instabug.podspec`) - instabug-reactnative-ndk (from `../node_modules/instabug-reactnative-ndk`) - libevent (~> 2.1.12) - OCMock @@ -581,6 +580,7 @@ SPEC REPOS: - fmt - Google-Maps-iOS-Utils - GoogleMaps + - Instabug - libevent - OCMock - SocketRocket @@ -599,8 +599,6 @@ EXTERNAL SOURCES: hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" :tag: hermes-2023-03-20-RNv0.72.0-49794cfc7c81fb8f69fd60c3bbf85a7480cc5a77 - Instabug: - :podspec: https://ios-releases.instabug.com/custom/feature-dynamic-sampling-callback-base/13.4.2/Instabug.podspec instabug-reactnative-ndk: :path: "../node_modules/instabug-reactnative-ndk" RCT-Folly: @@ -706,7 +704,7 @@ SPEC CHECKSUMS: Google-Maps-iOS-Utils: f77eab4c4326d7e6a277f8e23a0232402731913a GoogleMaps: 032f676450ba0779bd8ce16840690915f84e57ac hermes-engine: 10fbd3f62405c41ea07e71973ea61e1878d07322 - Instabug: fdeda93a58be4e3fead76d264962111b8069e2f1 + Instabug: a0beffc01658773e2fac549845782f8937707dc4 instabug-reactnative-ndk: 960119a69380cf4cbe47ccd007c453f757927d17 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 @@ -750,7 +748,7 @@ SPEC CHECKSUMS: ReactCommon: 3ccb8fb14e6b3277e38c73b0ff5e4a1b8db017a9 RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495 RNGestureHandler: 6e46dde1f87e5f018a54fe5d40cd0e0b942b49ee - RNInstabug: f78e975893d4979cc888ab09ff44a1789734caed + RNInstabug: 3c49741cb6facbbd7c7f9c9b35570866eb510abd RNReanimated: ab2e96c6d5591c3dfbb38a464f54c8d17fb34a87 RNScreens: b21dc57dfa2b710c30ec600786a3fc223b1b92e7 RNSVG: 80584470ff1ffc7994923ea135a3e5ad825546b9 @@ -758,6 +756,6 @@ SPEC CHECKSUMS: SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 Yoga: 8796b55dba14d7004f980b54bcc9833ee45b28ce -PODFILE CHECKSUM: 5d05a5f39e6af8a9c3e43e874715bc5f95e203e9 +PODFILE CHECKSUM: 22f06612d89e97260b5d9c5d6ec19e8d00f5d876 COCOAPODS: 1.12.0 diff --git a/ios/native.rb b/ios/native.rb index f4f01e1ae3..6970521416 100644 --- a/ios/native.rb +++ b/ios/native.rb @@ -1,4 +1,4 @@ -$instabug = { :version => '13.4.2' } +$instabug = { :version => '14.0.0' } def use_instabug! (spec = nil) version = $instabug[:version] From 9f2dea1bf4c9950ff7ca47b249d3f62532302b88 Mon Sep 17 00:00:00 2001 From: Ahmed alaa Date: Sun, 10 Nov 2024 17:21:45 +0200 Subject: [PATCH 19/28] feat: upgrade to 14.0.0 --- 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 4af8d1a69e..2772f4bfb0 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -758,4 +758,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 22f06612d89e97260b5d9c5d6ec19e8d00f5d876 -COCOAPODS: 1.12.0 +COCOAPODS: 1.14.0 From 7123d7011a44f98370d9d3962637d6d7ef0ecb4c Mon Sep 17 00:00:00 2001 From: Ahmed alaa Date: Sun, 10 Nov 2024 17:31:37 +0200 Subject: [PATCH 20/28] feat: upgrade to 14.0.0 --- examples/default/ios/Podfile | 2 +- examples/default/ios/Podfile.lock | 2181 +++++++++++++++++++++++------ 2 files changed, 1747 insertions(+), 436 deletions(-) diff --git a/examples/default/ios/Podfile b/examples/default/ios/Podfile index 4d746db417..0280c665f7 100644 --- a/examples/default/ios/Podfile +++ b/examples/default/ios/Podfile @@ -41,6 +41,6 @@ target 'InstabugExample' do # necessary for Mac Catalyst builds :mac_catalyst_enabled => false ) - __apply_Xcode_12_5_M1_post_install_workaround(installer) +# __apply_Xcode_12_5_M1_post_install_workaround(installer) end end diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index 2772f4bfb0..2498cdace7 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -1,15 +1,8 @@ PODS: - - boost (1.76.0) + - boost (1.84.0) - DoubleConversion (1.1.6) - - FBLazyVector (0.72.3) - - FBReactNativeSpec (0.72.3): - - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.72.3) - - RCTTypeSafety (= 0.72.3) - - React-Core (= 0.72.3) - - React-jsi (= 0.72.3) - - ReactCommon/turbomodule/core (= 0.72.3) - - fmt (6.2.1) + - FBLazyVector (0.75.4) + - fmt (9.1.0) - glog (0.3.5) - Google-Maps-iOS-Utils (4.2.2): - Google-Maps-iOS-Utils/Clustering (= 4.2.2) @@ -35,538 +28,1791 @@ PODS: - GoogleMaps/Base (7.4.0) - GoogleMaps/Maps (7.4.0): - GoogleMaps/Base - - hermes-engine (0.72.3): - - hermes-engine/Pre-built (= 0.72.3) - - hermes-engine/Pre-built (0.72.3) + - hermes-engine (0.75.4): + - hermes-engine/Pre-built (= 0.75.4) + - hermes-engine/Pre-built (0.75.4) - Instabug (14.0.0) - instabug-reactnative-ndk (0.1.0): - - RCT-Folly (= 2021.07.22.00) + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety - React-Core - - libevent (2.1.12) + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - OCMock (3.9.4) - - RCT-Folly (2021.07.22.00): + - RCT-Folly (2024.01.01.00): - boost - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - - RCT-Folly/Default (= 2021.07.22.00) - - RCT-Folly/Default (2021.07.22.00): + - RCT-Folly/Default (= 2024.01.01.00) + - RCT-Folly/Default (2024.01.01.00): - boost - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - - RCT-Folly/Futures (2021.07.22.00): + - RCT-Folly/Fabric (2024.01.01.00): - boost - DoubleConversion - - fmt (~> 6.2.1) - - glog - - libevent - - RCTRequired (0.72.3) - - RCTTypeSafety (0.72.3): - - FBLazyVector (= 0.72.3) - - RCTRequired (= 0.72.3) - - React-Core (= 0.72.3) - - React (0.72.3): - - React-Core (= 0.72.3) - - React-Core/DevSupport (= 0.72.3) - - React-Core/RCTWebSocket (= 0.72.3) - - React-RCTActionSheet (= 0.72.3) - - React-RCTAnimation (= 0.72.3) - - React-RCTBlob (= 0.72.3) - - React-RCTImage (= 0.72.3) - - React-RCTLinking (= 0.72.3) - - React-RCTNetwork (= 0.72.3) - - React-RCTSettings (= 0.72.3) - - React-RCTText (= 0.72.3) - - React-RCTVibration (= 0.72.3) - - React-callinvoker (0.72.3) - - React-Codegen (0.72.3): - - DoubleConversion - - FBReactNativeSpec + - fmt (= 9.1.0) + - glog + - RCTDeprecation (0.75.4) + - RCTRequired (0.75.4) + - RCTTypeSafety (0.75.4): + - FBLazyVector (= 0.75.4) + - RCTRequired (= 0.75.4) + - React-Core (= 0.75.4) + - React (0.75.4): + - React-Core (= 0.75.4) + - React-Core/DevSupport (= 0.75.4) + - React-Core/RCTWebSocket (= 0.75.4) + - React-RCTActionSheet (= 0.75.4) + - React-RCTAnimation (= 0.75.4) + - React-RCTBlob (= 0.75.4) + - React-RCTImage (= 0.75.4) + - React-RCTLinking (= 0.75.4) + - React-RCTNetwork (= 0.75.4) + - React-RCTSettings (= 0.75.4) + - React-RCTText (= 0.75.4) + - React-RCTVibration (= 0.75.4) + - React-callinvoker (0.75.4) + - React-Core (0.75.4): - glog - hermes-engine - - RCT-Folly - - RCTRequired - - RCTTypeSafety - - React-Core + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.75.4) + - React-cxxreact + - React-featureflags + - React-hermes - React-jsi - React-jsiexecutor - - React-NativeModulesApple - - React-rncore - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - React-Core (0.72.3): + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/CoreModulesHeaders (0.75.4): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.72.3) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/Default (0.75.4): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/DevSupport (0.75.4): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.75.4) + - React-Core/RCTWebSocket (= 0.75.4) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/CoreModulesHeaders (0.72.3): + - React-Core/RCTActionSheetHeaders (0.75.4): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTAnimationHeaders (0.75.4): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTBlobHeaders (0.75.4): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTImageHeaders (0.75.4): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTLinkingHeaders (0.75.4): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTNetworkHeaders (0.75.4): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTSettingsHeaders (0.75.4): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTTextHeaders (0.75.4): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTVibrationHeaders (0.75.4): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTWebSocket (0.75.4): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.75.4) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-CoreModules (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety (= 0.75.4) + - React-Core/CoreModulesHeaders (= 0.75.4) + - React-jsi (= 0.75.4) + - React-jsinspector + - React-NativeModulesApple + - React-RCTBlob + - React-RCTImage (= 0.75.4) + - ReactCodegen + - ReactCommon + - SocketRocket (= 0.7.0) + - React-cxxreact (0.75.4): + - boost + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.75.4) + - React-debug (= 0.75.4) + - React-jsi (= 0.75.4) + - React-jsinspector + - React-logger (= 0.75.4) + - React-perflogger (= 0.75.4) + - React-runtimeexecutor (= 0.75.4) + - React-debug (0.75.4) + - React-defaultsnativemodule (0.75.4): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-domnativemodule + - React-Fabric + - React-featureflags + - React-featureflagsnativemodule + - React-graphics + - React-idlecallbacksnativemodule + - React-ImageManager + - React-microtasksnativemodule + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - React-domnativemodule (0.75.4): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-FabricComponents + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - React-Fabric (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/animations (= 0.75.4) + - React-Fabric/attributedstring (= 0.75.4) + - React-Fabric/componentregistry (= 0.75.4) + - React-Fabric/componentregistrynative (= 0.75.4) + - React-Fabric/components (= 0.75.4) + - React-Fabric/core (= 0.75.4) + - React-Fabric/dom (= 0.75.4) + - React-Fabric/imagemanager (= 0.75.4) + - React-Fabric/leakchecker (= 0.75.4) + - React-Fabric/mounting (= 0.75.4) + - React-Fabric/observers (= 0.75.4) + - React-Fabric/scheduler (= 0.75.4) + - React-Fabric/telemetry (= 0.75.4) + - React-Fabric/templateprocessor (= 0.75.4) + - React-Fabric/uimanager (= 0.75.4) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/animations (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/attributedstring (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistry (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistrynative (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/components/legacyviewmanagerinterop (= 0.75.4) + - React-Fabric/components/root (= 0.75.4) + - React-Fabric/components/view (= 0.75.4) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/legacyviewmanagerinterop (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/root (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/view (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-Fabric/core (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/dom (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/imagemanager (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/leakchecker (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/mounting (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/observers (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/observers/events (= 0.75.4) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/observers/events (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/scheduler (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/observers/events + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-performancetimeline + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/telemetry (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/templateprocessor (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/uimanager (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/uimanager/consistency (= 0.75.4) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererconsistency + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/uimanager/consistency (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererconsistency + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-FabricComponents (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-FabricComponents/components (= 0.75.4) + - React-FabricComponents/textlayoutmanager (= 0.75.4) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-FabricComponents/components/inputaccessory (= 0.75.4) + - React-FabricComponents/components/iostextinput (= 0.75.4) + - React-FabricComponents/components/modal (= 0.75.4) + - React-FabricComponents/components/rncore (= 0.75.4) + - React-FabricComponents/components/safeareaview (= 0.75.4) + - React-FabricComponents/components/scrollview (= 0.75.4) + - React-FabricComponents/components/text (= 0.75.4) + - React-FabricComponents/components/textinput (= 0.75.4) + - React-FabricComponents/components/unimplementedview (= 0.75.4) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/inputaccessory (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/iostextinput (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/modal (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/rncore (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/safeareaview (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/scrollview (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/text (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/textinput (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/unimplementedview (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/textlayoutmanager (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricImage (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired (= 0.75.4) + - RCTTypeSafety (= 0.75.4) + - React-Fabric + - React-graphics + - React-ImageManager + - React-jsi + - React-jsiexecutor (= 0.75.4) + - React-logger + - React-rendererdebug + - React-utils + - ReactCommon + - Yoga + - React-featureflags (0.75.4) + - React-featureflagsnativemodule (0.75.4): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - React-graphics (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-jsi + - React-jsiexecutor + - React-utils + - React-hermes (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.75.4) + - React-jsi + - React-jsiexecutor (= 0.75.4) + - React-jsinspector + - React-perflogger (= 0.75.4) + - React-runtimeexecutor + - React-idlecallbacksnativemodule (0.75.4): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - React-ImageManager (0.75.4): + - glog + - RCT-Folly/Fabric + - React-Core/Default + - React-debug + - React-Fabric + - React-graphics + - React-rendererdebug + - React-utils + - React-jserrorhandler (0.75.4): + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-debug + - React-jsi + - React-jsi (0.75.4): + - boost + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-jsiexecutor (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.75.4) + - React-jsi (= 0.75.4) + - React-jsinspector + - React-perflogger (= 0.75.4) + - React-jsinspector (0.75.4): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-featureflags + - React-jsi + - React-runtimeexecutor (= 0.75.4) + - React-jsitracing (0.75.4): + - React-jsi + - React-logger (0.75.4): + - glog + - React-Mapbuffer (0.75.4): + - glog + - React-debug + - React-microtasksnativemodule (0.75.4): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - react-native-background-timer (2.4.1): + - React-Core + - react-native-config (1.5.3): + - react-native-config/App (= 1.5.3) + - react-native-config/App (1.5.3): + - React-Core + - react-native-google-maps (1.10.3): + - Google-Maps-iOS-Utils (= 4.2.2) + - GoogleMaps (= 7.4.0) + - React-Core + - react-native-maps (1.10.3): + - React-Core + - react-native-safe-area-context (4.12.0): + - React-Core + - react-native-slider (4.5.5): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug - React-utils - - SocketRocket (= 0.6.1) + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core - Yoga - - React-Core/Default (0.72.3): + - React-nativeconfig (0.75.4) + - React-NativeModulesApple (0.75.4): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - React-callinvoker + - React-Core - React-cxxreact - - React-hermes - React-jsi - - React-jsiexecutor - - React-perflogger + - React-jsinspector - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/DevSupport (0.72.3): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.72.3) - - React-Core/RCTWebSocket (= 0.72.3) + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-perflogger (0.75.4) + - React-performancetimeline (0.75.4): + - RCT-Folly (= 2024.01.01.00) - React-cxxreact - - React-hermes + - React-RCTActionSheet (0.75.4): + - React-Core/RCTActionSheetHeaders (= 0.75.4) + - React-RCTAnimation (0.75.4): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Core/RCTAnimationHeaders - React-jsi - - React-jsiexecutor - - React-jsinspector (= 0.72.3) - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTActionSheetHeaders (0.72.3): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact + - React-NativeModulesApple + - ReactCodegen + - ReactCommon + - React-RCTAppDelegate (0.75.4): + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-CoreModules + - React-debug + - React-defaultsnativemodule + - React-Fabric + - React-featureflags + - React-graphics - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor + - React-nativeconfig + - React-NativeModulesApple + - React-RCTFabric + - React-RCTImage + - React-RCTNetwork + - React-rendererdebug + - React-RuntimeApple + - React-RuntimeCore + - React-RuntimeHermes + - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTAnimationHeaders (0.72.3): - - glog + - ReactCodegen + - ReactCommon + - React-RCTBlob (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes + - RCT-Folly (= 2024.01.01.00) + - React-Core/RCTBlobHeaders + - React-Core/RCTWebSocket - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTBlobHeaders (0.72.3): + - React-jsinspector + - React-NativeModulesApple + - React-RCTNetwork + - ReactCodegen + - ReactCommon + - React-RCTFabric (0.75.4): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-Core + - React-debug + - React-Fabric + - React-FabricComponents + - React-FabricImage + - React-featureflags + - React-graphics + - React-ImageManager - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor + - React-jsinspector + - React-nativeconfig + - React-performancetimeline + - React-RCTImage + - React-RCTText + - React-rendererconsistency + - React-rendererdebug + - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTImageHeaders (0.72.3): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes + - React-RCTImage (0.75.4): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Core/RCTImageHeaders - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) + - React-NativeModulesApple + - React-RCTNetwork + - ReactCodegen + - ReactCommon + - React-RCTLinking (0.75.4): + - React-Core/RCTLinkingHeaders (= 0.75.4) + - React-jsi (= 0.75.4) + - React-NativeModulesApple + - ReactCodegen + - ReactCommon + - ReactCommon/turbomodule/core (= 0.75.4) + - React-RCTNetwork (0.75.4): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Core/RCTNetworkHeaders + - React-jsi + - React-NativeModulesApple + - ReactCodegen + - ReactCommon + - React-RCTSettings (0.75.4): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Core/RCTSettingsHeaders + - React-jsi + - React-NativeModulesApple + - ReactCodegen + - ReactCommon + - React-RCTText (0.75.4): + - React-Core/RCTTextHeaders (= 0.75.4) - Yoga - - React-Core/RCTLinkingHeaders (0.72.3): - - glog + - React-RCTVibration (0.75.4): + - RCT-Folly (= 2024.01.01.00) + - React-Core/RCTVibrationHeaders + - React-jsi + - React-NativeModulesApple + - ReactCodegen + - ReactCommon + - React-rendererconsistency (0.75.4) + - React-rendererdebug (0.75.4): + - DoubleConversion + - fmt (= 9.1.0) + - RCT-Folly (= 2024.01.01.00) + - React-debug + - React-rncore (0.75.4) + - React-RuntimeApple (0.75.4): - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-callinvoker - React-Core/Default + - React-CoreModules - React-cxxreact - - React-hermes + - React-jserrorhandler - React-jsi - React-jsiexecutor - - React-perflogger + - React-jsinspector + - React-Mapbuffer + - React-NativeModulesApple + - React-RCTFabric + - React-RuntimeCore - React-runtimeexecutor + - React-RuntimeHermes + - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTNetworkHeaders (0.72.3): + - React-RuntimeCore (0.75.4): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default + - RCT-Folly/Fabric (= 2024.01.01.00) - React-cxxreact - - React-hermes + - React-featureflags + - React-jserrorhandler - React-jsi - React-jsiexecutor - - React-perflogger + - React-jsinspector - React-runtimeexecutor + - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTSettingsHeaders (0.72.3): - - glog + - React-runtimeexecutor (0.75.4): + - React-jsi (= 0.75.4) + - React-RuntimeHermes (0.75.4): - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-featureflags - React-hermes - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor + - React-jsinspector + - React-jsitracing + - React-nativeconfig + - React-RuntimeCore - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTTextHeaders (0.72.3): + - React-runtimescheduler (0.75.4): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker - React-cxxreact - - React-hermes + - React-debug + - React-featureflags - React-jsi - - React-jsiexecutor - - React-perflogger + - React-rendererconsistency + - React-rendererdebug - React-runtimeexecutor - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTVibrationHeaders (0.72.3): + - React-utils (0.75.4): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTWebSocket (0.72.3): + - RCT-Folly (= 2024.01.01.00) + - React-debug + - React-jsi (= 0.75.4) + - ReactCodegen (0.75.4): + - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.72.3) - - React-cxxreact - - React-hermes + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-FabricImage + - React-featureflags + - React-graphics - React-jsi - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor + - React-NativeModulesApple + - React-rendererdebug - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-CoreModules (0.72.3): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.3) - - React-Codegen (= 0.72.3) - - React-Core/CoreModulesHeaders (= 0.72.3) - - React-jsi (= 0.72.3) - - React-RCTBlob - - React-RCTImage (= 0.72.3) - - ReactCommon/turbomodule/core (= 0.72.3) - - SocketRocket (= 0.6.1) - - React-cxxreact (0.72.3): - - boost (= 1.76.0) + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - ReactCommon (0.75.4): + - ReactCommon/turbomodule (= 0.75.4) + - ReactCommon/turbomodule (0.75.4): - DoubleConversion + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.72.3) - - React-debug (= 0.72.3) - - React-jsi (= 0.72.3) - - React-jsinspector (= 0.72.3) - - React-logger (= 0.72.3) - - React-perflogger (= 0.72.3) - - React-runtimeexecutor (= 0.72.3) - - React-debug (0.72.3) - - React-hermes (0.72.3): + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.75.4) + - React-cxxreact (= 0.75.4) + - React-jsi (= 0.75.4) + - React-logger (= 0.75.4) + - React-perflogger (= 0.75.4) + - ReactCommon/turbomodule/bridging (= 0.75.4) + - ReactCommon/turbomodule/core (= 0.75.4) + - ReactCommon/turbomodule/bridging (0.75.4): - DoubleConversion + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - RCT-Folly/Futures (= 2021.07.22.00) - - React-cxxreact (= 0.72.3) - - React-jsi - - React-jsiexecutor (= 0.72.3) - - React-jsinspector (= 0.72.3) - - React-perflogger (= 0.72.3) - - React-jsi (0.72.3): - - boost (= 1.76.0) + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.75.4) + - React-cxxreact (= 0.75.4) + - React-jsi (= 0.75.4) + - React-logger (= 0.75.4) + - React-perflogger (= 0.75.4) + - ReactCommon/turbomodule/core (0.75.4): - DoubleConversion + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.72.3): + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.75.4) + - React-cxxreact (= 0.75.4) + - React-debug (= 0.75.4) + - React-featureflags (= 0.75.4) + - React-jsi (= 0.75.4) + - React-logger (= 0.75.4) + - React-perflogger (= 0.75.4) + - React-utils (= 0.75.4) + - RNCClipboard (1.14.3): + - React-Core + - RNGestureHandler (2.20.2): - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.72.3) - - React-jsi (= 0.72.3) - - React-perflogger (= 0.72.3) - - React-jsinspector (0.72.3) - - React-logger (0.72.3): - - glog - - react-native-background-timer (2.4.1): - - React-Core - - react-native-config (1.5.1): - - react-native-config/App (= 1.5.1) - - react-native-config/App (1.5.1): - - React-Core - - react-native-google-maps (1.10.3): - - Google-Maps-iOS-Utils (= 4.2.2) - - GoogleMaps (= 7.4.0) - - React-Core - - react-native-maps (1.10.3): - - React-Core - - react-native-safe-area-context (4.7.1): + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety - React-Core - - react-native-slider (4.4.3): + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNInstabug (13.4.0): + - Instabug (= 14.0.0) - React-Core - - React-NativeModulesApple (0.72.3): + - RNReanimated (3.16.1): + - DoubleConversion + - glog - hermes-engine - - React-callinvoker + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety - React-Core - - React-cxxreact - - React-jsi - - React-runtimeexecutor + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-perflogger (0.72.3) - - React-RCTActionSheet (0.72.3): - - React-Core/RCTActionSheetHeaders (= 0.72.3) - - React-RCTAnimation (0.72.3): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.3) - - React-Codegen (= 0.72.3) - - React-Core/RCTAnimationHeaders (= 0.72.3) - - React-jsi (= 0.72.3) - - ReactCommon/turbomodule/core (= 0.72.3) - - React-RCTAppDelegate (0.72.3): - - RCT-Folly + - RNReanimated/reanimated (= 3.16.1) + - RNReanimated/worklets (= 3.16.1) + - Yoga + - RNReanimated/reanimated (3.16.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - - React-CoreModules - - React-hermes + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager - React-NativeModulesApple - - React-RCTImage - - React-RCTNetwork - - React-runtimescheduler + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-RCTBlob (0.72.3): - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.72.3) - - React-Core/RCTBlobHeaders (= 0.72.3) - - React-Core/RCTWebSocket (= 0.72.3) - - React-jsi (= 0.72.3) - - React-RCTNetwork (= 0.72.3) - - ReactCommon/turbomodule/core (= 0.72.3) - - React-RCTImage (0.72.3): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.3) - - React-Codegen (= 0.72.3) - - React-Core/RCTImageHeaders (= 0.72.3) - - React-jsi (= 0.72.3) - - React-RCTNetwork (= 0.72.3) - - ReactCommon/turbomodule/core (= 0.72.3) - - React-RCTLinking (0.72.3): - - React-Codegen (= 0.72.3) - - React-Core/RCTLinkingHeaders (= 0.72.3) - - React-jsi (= 0.72.3) - - ReactCommon/turbomodule/core (= 0.72.3) - - React-RCTNetwork (0.72.3): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.3) - - React-Codegen (= 0.72.3) - - React-Core/RCTNetworkHeaders (= 0.72.3) - - React-jsi (= 0.72.3) - - ReactCommon/turbomodule/core (= 0.72.3) - - React-RCTSettings (0.72.3): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.3) - - React-Codegen (= 0.72.3) - - React-Core/RCTSettingsHeaders (= 0.72.3) - - React-jsi (= 0.72.3) - - ReactCommon/turbomodule/core (= 0.72.3) - - React-RCTText (0.72.3): - - React-Core/RCTTextHeaders (= 0.72.3) - - React-RCTVibration (0.72.3): - - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.72.3) - - React-Core/RCTVibrationHeaders (= 0.72.3) - - React-jsi (= 0.72.3) - - ReactCommon/turbomodule/core (= 0.72.3) - - React-rncore (0.72.3) - - React-runtimeexecutor (0.72.3): - - React-jsi (= 0.72.3) - - React-runtimescheduler (0.72.3): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker - - React-debug - - React-jsi - - React-runtimeexecutor - - React-utils (0.72.3): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-debug - - ReactCommon/turbomodule/bridging (0.72.3): + - RNReanimated/reanimated/apple (= 3.16.1) + - Yoga + - RNReanimated/reanimated/apple (3.16.1): - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.72.3) - - React-cxxreact (= 0.72.3) - - React-jsi (= 0.72.3) - - React-logger (= 0.72.3) - - React-perflogger (= 0.72.3) - - ReactCommon/turbomodule/core (0.72.3): + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNReanimated/worklets (3.16.1): - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.72.3) - - React-cxxreact (= 0.72.3) - - React-jsi (= 0.72.3) - - React-logger (= 0.72.3) - - React-perflogger (= 0.72.3) - - RNCClipboard (1.5.1): - - React-Core - - RNGestureHandler (2.13.4): - - RCT-Folly (= 2021.07.22.00) - - React-Core - - RNInstabug (13.4.0): - - Instabug (= 14.0.0) + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety - React-Core - - RNReanimated (3.5.4): + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNScreens (3.35.0): - DoubleConversion - - FBLazyVector - glog - hermes-engine - - RCT-Folly + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-callinvoker - React-Core - - React-Core/DevSupport - - React-Core/RCTWebSocket - - React-CoreModules - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-RCTActionSheet - - React-RCTAnimation - - React-RCTAppDelegate - - React-RCTBlob + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric - React-RCTImage - - React-RCTLinking - - React-RCTNetwork - - React-RCTSettings - - React-RCTText + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNScreens (3.24.0): + - RNSVG (15.8.0): - React-Core - - React-RCTImage - - RNSVG (13.10.0): - - React-Core - - RNVectorIcons (10.0.0): + - RNVectorIcons (10.2.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety - React-Core - - SocketRocket (0.6.1) - - Yoga (1.14.0) + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - SocketRocket (0.7.0) + - Yoga (0.0.0) DEPENDENCIES: - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) + - 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-reactnative-ndk (from `../node_modules/instabug-reactnative-ndk`) - - libevent (~> 2.1.12) - OCMock - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) + - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) + - RCTRequired (from `../node_modules/react-native/Libraries/Required`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - - React-Codegen (from `build/generated/ios`) - React-Core (from `../node_modules/react-native/`) - React-Core/RCTWebSocket (from `../node_modules/react-native/`) - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) + - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`) + - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`) + - React-Fabric (from `../node_modules/react-native/ReactCommon`) + - React-FabricComponents (from `../node_modules/react-native/ReactCommon`) + - React-FabricImage (from `../node_modules/react-native/ReactCommon`) + - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`) + - React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`) + - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) + - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`) + - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) + - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) + - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) - React-logger (from `../node_modules/react-native/ReactCommon/logger`) + - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) + - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`) - react-native-background-timer (from `../node_modules/react-native-background-timer`) - react-native-config (from `../node_modules/react-native-config`) - react-native-google-maps (from `../node_modules/react-native-maps`) - react-native-maps (from `../node_modules/react-native-maps`) - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - "react-native-slider (from `../node_modules/@react-native-community/slider`)" + - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) + - React-RCTFabric (from `../node_modules/react-native/React`) - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`) + - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) - React-rncore (from `../node_modules/react-native/ReactCommon`) + - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) + - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`) - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) + - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`) - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) + - ReactCodegen (from `build/generated/ios`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - - "RNCClipboard (from `../node_modules/@react-native-community/clipboard`)" + - "RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)" - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) - RNInstabug (from `../node_modules/instabug-reactnative`) - RNReanimated (from `../node_modules/react-native-reanimated`) @@ -577,11 +1823,9 @@ DEPENDENCIES: SPEC REPOS: trunk: - - fmt - Google-Maps-iOS-Utils - GoogleMaps - Instabug - - libevent - OCMock - SocketRocket @@ -592,27 +1836,27 @@ EXTERNAL SOURCES: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" FBLazyVector: :path: "../node_modules/react-native/Libraries/FBLazyVector" - FBReactNativeSpec: - :path: "../node_modules/react-native/React/FBReactNativeSpec" + fmt: + :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec" glog: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-2023-03-20-RNv0.72.0-49794cfc7c81fb8f69fd60c3bbf85a7480cc5a77 + :tag: hermes-2024-08-15-RNv0.75.1-4b3bf912cc0f705b51b71ce1a5b8bd79b93a451b instabug-reactnative-ndk: :path: "../node_modules/instabug-reactnative-ndk" RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" + RCTDeprecation: + :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" RCTRequired: - :path: "../node_modules/react-native/Libraries/RCTRequired" + :path: "../node_modules/react-native/Libraries/Required" RCTTypeSafety: :path: "../node_modules/react-native/Libraries/TypeSafety" React: :path: "../node_modules/react-native/" React-callinvoker: :path: "../node_modules/react-native/ReactCommon/callinvoker" - React-Codegen: - :path: build/generated/ios React-Core: :path: "../node_modules/react-native/" React-CoreModules: @@ -621,16 +1865,44 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/cxxreact" React-debug: :path: "../node_modules/react-native/ReactCommon/react/debug" + React-defaultsnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/defaults" + React-domnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/dom" + React-Fabric: + :path: "../node_modules/react-native/ReactCommon" + React-FabricComponents: + :path: "../node_modules/react-native/ReactCommon" + React-FabricImage: + :path: "../node_modules/react-native/ReactCommon" + React-featureflags: + :path: "../node_modules/react-native/ReactCommon/react/featureflags" + React-featureflagsnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/featureflags" + React-graphics: + :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" React-hermes: :path: "../node_modules/react-native/ReactCommon/hermes" + React-idlecallbacksnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks" + React-ImageManager: + :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" + React-jserrorhandler: + :path: "../node_modules/react-native/ReactCommon/jserrorhandler" React-jsi: :path: "../node_modules/react-native/ReactCommon/jsi" React-jsiexecutor: :path: "../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: - :path: "../node_modules/react-native/ReactCommon/jsinspector" + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" + React-jsitracing: + :path: "../node_modules/react-native/ReactCommon/hermes/executor/" React-logger: :path: "../node_modules/react-native/ReactCommon/logger" + React-Mapbuffer: + :path: "../node_modules/react-native/ReactCommon" + React-microtasksnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks" react-native-background-timer: :path: "../node_modules/react-native-background-timer" react-native-config: @@ -643,10 +1915,14 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-safe-area-context" react-native-slider: :path: "../node_modules/@react-native-community/slider" + React-nativeconfig: + :path: "../node_modules/react-native/ReactCommon" React-NativeModulesApple: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" React-perflogger: :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-performancetimeline: + :path: "../node_modules/react-native/ReactCommon/react/performance/timeline" React-RCTActionSheet: :path: "../node_modules/react-native/Libraries/ActionSheetIOS" React-RCTAnimation: @@ -655,6 +1931,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/AppDelegate" React-RCTBlob: :path: "../node_modules/react-native/Libraries/Blob" + React-RCTFabric: + :path: "../node_modules/react-native/React" React-RCTImage: :path: "../node_modules/react-native/Libraries/Image" React-RCTLinking: @@ -667,18 +1945,30 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/Text" React-RCTVibration: :path: "../node_modules/react-native/Libraries/Vibration" + React-rendererconsistency: + :path: "../node_modules/react-native/ReactCommon/react/renderer/consistency" + React-rendererdebug: + :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" React-rncore: :path: "../node_modules/react-native/ReactCommon" + React-RuntimeApple: + :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios" + React-RuntimeCore: + :path: "../node_modules/react-native/ReactCommon/react/runtime" React-runtimeexecutor: :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" + React-RuntimeHermes: + :path: "../node_modules/react-native/ReactCommon/react/runtime" React-runtimescheduler: :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" React-utils: :path: "../node_modules/react-native/ReactCommon/react/utils" + ReactCodegen: + :path: build/generated/ios ReactCommon: :path: "../node_modules/react-native/ReactCommon" RNCClipboard: - :path: "../node_modules/@react-native-community/clipboard" + :path: "../node_modules/@react-native-clipboard/clipboard" RNGestureHandler: :path: "../node_modules/react-native-gesture-handler" RNInstabug: @@ -695,67 +1985,88 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost: 7dcd2de282d72e344012f7d6564d024930a6a440 - DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 - FBLazyVector: 4cce221dd782d3ff7c4172167bba09d58af67ccb - FBReactNativeSpec: c6bd9e179757b3c0ecf815864fae8032377903ef - fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 - glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b + boost: 4cb898d0bf20404aab1850c656dcea009429d6c1 + DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 + FBLazyVector: 430e10366de01d1e3d57374500b1b150fe482e6d + fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 + glog: 69ef571f3de08433d766d614c73a9838a06bf7eb Google-Maps-iOS-Utils: f77eab4c4326d7e6a277f8e23a0232402731913a GoogleMaps: 032f676450ba0779bd8ce16840690915f84e57ac - hermes-engine: 10fbd3f62405c41ea07e71973ea61e1878d07322 + hermes-engine: ea92f60f37dba025e293cbe4b4a548fd26b610a0 Instabug: a0beffc01658773e2fac549845782f8937707dc4 - instabug-reactnative-ndk: 960119a69380cf4cbe47ccd007c453f757927d17 - libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 + instabug-reactnative-ndk: d765ac289d56e8896398d02760d9abf2562fc641 OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 - RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 - RCTRequired: a2faf4bad4e438ca37b2040cb8f7799baa065c18 - RCTTypeSafety: cb09f3e4747b6d18331a15eb05271de7441ca0b3 - React: 13109005b5353095c052f26af37413340ccf7a5d - React-callinvoker: c8c87bce983aa499c13cb06d4447c025a35274d6 - React-Codegen: 712d523524d89d71f1cf7cc624854941be983c4d - React-Core: 688f88b7f3a3d30b4848036223f8b07102c687e5 - React-CoreModules: 63c063a3ade8fb3b1bec5fd9a50f17b0421558c6 - React-cxxreact: 37765b4975541105b2a3322a4b473417c158c869 - React-debug: 51f11ef8db14b47f24e71c42a4916d4192972156 - React-hermes: 935ae71fb3d7654e947beba8498835cd5e479707 - React-jsi: ec628dc7a15ffea969f237b0ea6d2fde212b19dd - React-jsiexecutor: 59d1eb03af7d30b7d66589c410f13151271e8006 - React-jsinspector: b511447170f561157547bc0bef3f169663860be7 - React-logger: c5b527272d5f22eaa09bb3c3a690fee8f237ae95 + RCT-Folly: 4464f4d875961fce86008d45f4ecf6cef6de0740 + RCTDeprecation: 726d24248aeab6d7180dac71a936bbca6a994ed1 + RCTRequired: a94e7febda6db0345d207e854323c37e3a31d93b + RCTTypeSafety: 28e24a6e44f5cbf912c66dde6ab7e07d1059a205 + React: c2830fa483b0334bda284e46a8579ebbe0c5447e + React-callinvoker: 4aecde929540c26b841a4493f70ebf6016691eb8 + React-Core: 9c059899f00d46b5cec3ed79251f77d9c469553d + React-CoreModules: 9fac2d31803c0ed03e4ddaa17f1481714f8633a5 + React-cxxreact: a979810a3ca4045ceb09407a17563046a7f71494 + React-debug: 3d21f69d8def0656f8b8ec25c0f05954f4d862c5 + React-defaultsnativemodule: 2fa2bdb7bd03ff9764facc04aa8520ebf14febae + React-domnativemodule: 986e6fe7569e1383dce452a7b013b6c843a752df + React-Fabric: 3bc7be9e3a6b7581fc828dc2aa041e107fc8ffb8 + React-FabricComponents: 668e0cb02344c2942e4c8921a643648faa6dc364 + React-FabricImage: 3f44dd25a2b020ed5215d4438a1bb1f3461cd4f1 + React-featureflags: ee1abd6f71555604a36cda6476e3c502ca9a48e5 + React-featureflagsnativemodule: 7ccc0cd666c2a6257401dceb7920818ac2b42803 + React-graphics: d7dd9c8d75cad5af19e19911fa370f78f2febd96 + React-hermes: 2069b08e965e48b7f8aa2c0ca0a2f383349ed55d + React-idlecallbacksnativemodule: e211b2099b6dced97959cb58257bab2b2de4d7ef + React-ImageManager: ab7a7d17dd0ff1ef1d4e1e88197d1119da9957ce + React-jserrorhandler: d9e867bb83b868472f3f7601883f0403b3e3942d + React-jsi: d68f1d516e5120a510afe356647a6a1e1f98f2db + React-jsiexecutor: 6366a08a0fc01c9b65736f8deacd47c4a397912a + React-jsinspector: 0ac947411f0c73b34908800cc7a6a31d8f93e1a8 + React-jsitracing: 0e8c0aadb1fcec6b1e4f2a66ee3b0da80f0f8615 + React-logger: d79b704bf215af194f5213a6b7deec50ba8e6a9b + React-Mapbuffer: b982d5bba94a8bc073bda48f0d27c9b28417fae3 + React-microtasksnativemodule: 2b73e68f0462f3175f98782db08896f8501afd20 react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe - react-native-config: 86038147314e2e6d10ea9972022aa171e6b1d4d8 + react-native-config: 8f7283449bbb048902f4e764affbbf24504454af react-native-google-maps: 1bcc1f9f13f798fcf230db7fe476f3566d0bc0a3 react-native-maps: 72a8a903f8a1b53e2c777ba79102078ab502e0bf - react-native-safe-area-context: 9697629f7b2cda43cf52169bb7e0767d330648c2 - react-native-slider: 1cdd6ba29675df21f30544253bf7351d3c2d68c4 - React-NativeModulesApple: c57f3efe0df288a6532b726ad2d0322a9bf38472 - React-perflogger: 6bd153e776e6beed54c56b0847e1220a3ff92ba5 - React-RCTActionSheet: c0b62af44e610e69d9a2049a682f5dba4e9dff17 - React-RCTAnimation: f9bf9719258926aea9ecb8a2aa2595d3ff9a6022 - React-RCTAppDelegate: e5ac35d4dbd1fae7df3a62b47db04b6a8d151592 - React-RCTBlob: c4f1e69a6ef739aa42586b876d637dab4e3b5bed - React-RCTImage: e5798f01aba248416c02a506cf5e6dfcba827638 - React-RCTLinking: f5b6227c879e33206f34e68924c458f57bbb96d9 - React-RCTNetwork: d5554fbfac1c618da3c8fa29933108ea22837788 - React-RCTSettings: 189c71e3e6146ba59f4f7e2cbeb494cf2ad42afa - React-RCTText: 19425aea9d8b6ccae55a27916355b17ab577e56e - React-RCTVibration: 388ac0e1455420895d1ca2548401eed964b038a6 - React-rncore: 755a331dd67b74662108f2d66a384454bf8dc1a1 - React-runtimeexecutor: 369ae9bb3f83b65201c0c8f7d50b72280b5a1dbc - React-runtimescheduler: 837c1bebd2f84572db17698cd702ceaf585b0d9a - React-utils: bcb57da67eec2711f8b353f6e3d33bd8e4b2efa3 - ReactCommon: 3ccb8fb14e6b3277e38c73b0ff5e4a1b8db017a9 - RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495 - RNGestureHandler: 6e46dde1f87e5f018a54fe5d40cd0e0b942b49ee + react-native-safe-area-context: 142fade490cbebbe428640b8cbdb09daf17e8191 + react-native-slider: 4a0f3386a38fc3d2d955efc515aef7096f7d1ee4 + React-nativeconfig: 8c83d992b9cc7d75b5abe262069eaeea4349f794 + React-NativeModulesApple: 9f7920224a3b0c7d04d77990067ded14cee3c614 + React-perflogger: 59e1a3182dca2cee7b9f1f7aab204018d46d1914 + React-performancetimeline: a9d05533ff834c6aa1f532e05e571f3fd2e3c1ed + React-RCTActionSheet: d80e68d3baa163e4012a47c1f42ddd8bcd9672cc + React-RCTAnimation: bde981f6bd7f8493696564da9b3bd05721d3b3cc + React-RCTAppDelegate: 0176615c51476c88212bf3edbafb840d39ea7631 + React-RCTBlob: 520a0382bf8e89b9153d60e3c6293e51615834e9 + React-RCTFabric: c9da097b19b30017a99498b8c66a69c72f3ce689 + React-RCTImage: 90448d2882464af6015ed57c98f463f8748be465 + React-RCTLinking: 1bd95d0a704c271d21d758e0f0388cced768d77d + React-RCTNetwork: 218af6e63eb9b47935cc5a775b7a1396cf10ff91 + React-RCTSettings: e10b8e42b0fce8a70fbf169de32a2ae03243ef6b + React-RCTText: e7bf9f4997a1a0b45c052d4ad9a0fe653061cf29 + React-RCTVibration: 5b70b7f11e48d1c57e0d4832c2097478adbabe93 + React-rendererconsistency: f620c6e003e3c4593e6349d8242b8aeb3d4633f0 + React-rendererdebug: e697680f4dd117becc5daf9ea9800067abcee91c + React-rncore: c22bd84cc2f38947f0414fab6646db22ff4f80cd + React-RuntimeApple: de0976836b90b484305638616898cbc665c67c13 + React-RuntimeCore: 3c4a5aa63d9e7a3c17b7fb23f32a72a8bcfccf57 + React-runtimeexecutor: ea90d8e3a9e0f4326939858dafc6ab17c031a5d3 + React-RuntimeHermes: c6b0afdf1f493621214eeb6517fb859ce7b21b81 + React-runtimescheduler: 84f0d876d254bce6917a277b3930eb9bc29df6c7 + React-utils: cbe8b8b3d7b2ac282e018e46f0e7b25cdc87c5a0 + ReactCodegen: 4bcb34e6b5ebf6eef5cee34f55aa39991ea1c1f1 + ReactCommon: 6a952e50c2a4b694731d7682aaa6c79bc156e4ad + RNCClipboard: 2821ac938ef46f736a8de0c8814845dde2dcbdfb + RNGestureHandler: 511250b190a284388f9dd0d2e56c1df76f14cfb8 RNInstabug: 3c49741cb6facbbd7c7f9c9b35570866eb510abd - RNReanimated: ab2e96c6d5591c3dfbb38a464f54c8d17fb34a87 - RNScreens: b21dc57dfa2b710c30ec600786a3fc223b1b92e7 - RNSVG: 80584470ff1ffc7994923ea135a3e5ad825546b9 - RNVectorIcons: 8b5bb0fa61d54cd2020af4f24a51841ce365c7e9 - SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 - Yoga: 8796b55dba14d7004f980b54bcc9833ee45b28ce + RNReanimated: f42a5044d121d68e91680caacb0293f4274228eb + RNScreens: c7ceced6a8384cb9be5e7a5e88e9e714401fd958 + RNSVG: 8b1a777d54096b8c2a0fd38fc9d5a454332bbb4d + RNVectorIcons: 6382277afab3c54658e9d555ee0faa7a37827136 + SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d + Yoga: 055f92ad73f8c8600a93f0e25ac0b2344c3b07e6 -PODFILE CHECKSUM: 22f06612d89e97260b5d9c5d6ec19e8d00f5d876 +PODFILE CHECKSUM: 9b2c23282a846e3aee890a82647af37f4f0cceed COCOAPODS: 1.14.0 From 451f0450ad71fb58f0c1255eeea273de862016ae Mon Sep 17 00:00:00 2001 From: Ahmed alaa Date: Mon, 11 Nov 2024 15:47:46 +0200 Subject: [PATCH 21/28] merge dev --- examples/default/ios/Podfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index b05dcb473b..ed870ff82c 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -2067,6 +2067,6 @@ SPEC CHECKSUMS: SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d Yoga: 055f92ad73f8c8600a93f0e25ac0b2344c3b07e6 -PODFILE CHECKSUM: 9116afa418638f45a5fba99099befb7da0049828 +PODFILE CHECKSUM: 9b2c23282a846e3aee890a82647af37f4f0cceed -COCOAPODS: 1.14.0 +COCOAPODS: 1.16.2 From aa8faa8fa825cb3575a760093346d57bbd2f7766 Mon Sep 17 00:00:00 2001 From: Ahmed alaa Date: Mon, 11 Nov 2024 15:53:50 +0200 Subject: [PATCH 22/28] merge dev --- examples/default/ios/Podfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index ed870ff82c..05a8427606 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -1,4 +1,4 @@ -PODS: +dPODS: - boost (1.84.0) - DoubleConversion (1.1.6) - FBLazyVector (0.75.4) @@ -2069,4 +2069,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 9b2c23282a846e3aee890a82647af37f4f0cceed -COCOAPODS: 1.16.2 +COCOAPODS: 1.14.0 From 72dac81e0b520d3c7a12a32fdd86b74ad36a45da Mon Sep 17 00:00:00 2001 From: Ahmed alaa Date: Mon, 11 Nov 2024 15:59:39 +0200 Subject: [PATCH 23/28] merge dev --- 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 05a8427606..67a2f580d4 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -1,4 +1,4 @@ -dPODS: +PODS: - boost (1.84.0) - DoubleConversion (1.1.6) - FBLazyVector (0.75.4) From 6151ba163961304208962c13b2ba663f2eb2f1c4 Mon Sep 17 00:00:00 2001 From: Ahmed alaa Date: Tue, 12 Nov 2024 23:46:35 +0200 Subject: [PATCH 24/28] fix: test case --- .../InstabugSessionReplayTests.m | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m b/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m index 75bb6cf8ac..c3f037e60a 100644 --- a/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m +++ b/examples/default/ios/InstabugTests/InstabugSessionReplayTests.m @@ -98,19 +98,25 @@ - (void)testSetSyncCallback { actualValue = shouldSync; [completionExpectation fulfill]; }; - + + OCMStub([self.mSessionReplay setSyncCallbackWithHandler:[OCMArg checkWithBlock: ^BOOL(void(^handler)(IBGSessionMetadata *metadataObject, SessionEvaluationCompletion completion)) { + handler(mockMetadata, sessionEvaluationCompletion); + return YES; + }]]); + OCMStub([partialMock sendEventWithName:@"IBGSessionReplayOnSyncCallback" body:OCMArg.any]).andDo(^(NSInvocation *invocation) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.bridge evaluateSync:expectedValue]; + + }); }); - - OCMStub([self.mSessionReplay setSyncCallbackWithHandler:[OCMArg checkWithBlock: ^BOOL(void(^handler)(IBGSessionMetadata *metadataObject, SessionEvaluationCompletion completion)) { - handler(mockMetadata, sessionEvaluationCompletion); - return YES; - }]]); - + + + + [self.bridge setSyncCallback]; [self waitForExpectationsWithTimeout:2 handler:nil]; - + OCMVerify([partialMock sendEventWithName:@"IBGSessionReplayOnSyncCallback" body:OCMArg.any]); OCMVerifyAll(self.mSessionReplay); XCTAssertEqual(actualValue, expectedValue); From 1aa675f24da8b06356a5778d776955b902539c97 Mon Sep 17 00:00:00 2001 From: kholood Date: Wed, 13 Nov 2024 10:47:37 +0200 Subject: [PATCH 25/28] chore: add changelog item --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ac1504bba..5fd73c1b3f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## [14.0.0](https://github.com/Instabug/Instabug-React-Native/compare/v13.4.0...14.0.0) (November 11, 2024) +### Added + +- Add support for opting into session syncing ([#1292](https://github.com/Instabug/Instabug-React-Native/pull/1292)). + ### Changed - 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). From ed286eb25a2ddbdf76744c7d1c593a61d23ee95c Mon Sep 17 00:00:00 2001 From: ahmed alaa <154802748+ahmedAlaaInstabug@users.noreply.github.com> Date: Wed, 13 Nov 2024 11:46:57 +0200 Subject: [PATCH 26/28] Update Podfile --- examples/default/ios/Podfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/default/ios/Podfile b/examples/default/ios/Podfile index 0280c665f7..10686bd8a1 100644 --- a/examples/default/ios/Podfile +++ b/examples/default/ios/Podfile @@ -41,6 +41,6 @@ target 'InstabugExample' do # necessary for Mac Catalyst builds :mac_catalyst_enabled => false ) -# __apply_Xcode_12_5_M1_post_install_workaround(installer) + __apply_Xcode_12_5_M1_post_install_workaround(installer) end end From f6f898d7fbbe03e19a0fe0a1cd33e5f2a5f75c9a Mon Sep 17 00:00:00 2001 From: ahmed alaa <154802748+ahmedAlaaInstabug@users.noreply.github.com> Date: Wed, 13 Nov 2024 11:49:06 +0200 Subject: [PATCH 27/28] Update Podfile --- examples/default/ios/Podfile | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/default/ios/Podfile b/examples/default/ios/Podfile index 10686bd8a1..3526171cd4 100644 --- a/examples/default/ios/Podfile +++ b/examples/default/ios/Podfile @@ -41,6 +41,5 @@ target 'InstabugExample' do # necessary for Mac Catalyst builds :mac_catalyst_enabled => false ) - __apply_Xcode_12_5_M1_post_install_workaround(installer) end end From c0c542832398d720a69a09ef022014c21eaf20ee Mon Sep 17 00:00:00 2001 From: Ahmed alaa Date: Wed, 13 Nov 2024 11:57:04 +0200 Subject: [PATCH 28/28] fix: test case --- 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 67a2f580d4..81ba100a5a 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -2067,6 +2067,6 @@ SPEC CHECKSUMS: SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d Yoga: 055f92ad73f8c8600a93f0e25ac0b2344c3b07e6 -PODFILE CHECKSUM: 9b2c23282a846e3aee890a82647af37f4f0cceed +PODFILE CHECKSUM: 63bf073bef3872df95ea45e7c9c023a331ebb3c3 COCOAPODS: 1.14.0