From b1e5760303a6111be108ed3664dcfe10b0570ebb Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Mon, 13 Oct 2025 13:09:29 -0700 Subject: [PATCH 1/6] feat: add startEmbeddedImpression method to manage embedded message impressions --- .../reactnative/RNIterableAPIModuleImpl.java | 4 +++ .../newarch/java/com/RNIterableAPIModule.java | 5 ++++ .../oldarch/java/com/RNIterableAPIModule.java | 5 ++++ .../components/Embedded/Embedded.styles.ts | 12 +++++++- example/src/components/Embedded/Embedded.tsx | 30 +++++++++++++++---- example/src/constants/styles/typography.ts | 5 ++++ src/api/NativeRNIterableAPI.ts | 1 + src/core/classes/IterableApi.ts | 8 +++++ .../classes/IterableEmbeddedManager.ts | 22 ++++++++++++++ 9 files changed, 86 insertions(+), 6 deletions(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java index 61781ecd2..df7a8eab5 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java @@ -666,6 +666,10 @@ public void endEmbeddedSession() { IterableApi.getInstance().getEmbeddedManager().getEmbeddedSessionManager().endSession(); } + public void startEmbeddedImpression(String messageId, int placementId) { + IterableApi.getInstance().getEmbeddedManager().getEmbeddedSessionManager().startImpression(messageId, placementId); + } + public void getEmbeddedPlacementIds(Promise promise) { IterableLogger.d(TAG, "getEmbeddedPlacementIds"); try { diff --git a/android/src/newarch/java/com/RNIterableAPIModule.java b/android/src/newarch/java/com/RNIterableAPIModule.java index ade1996f6..180dc2d21 100644 --- a/android/src/newarch/java/com/RNIterableAPIModule.java +++ b/android/src/newarch/java/com/RNIterableAPIModule.java @@ -239,6 +239,11 @@ public void endEmbeddedSession() { moduleImpl.endEmbeddedSession(); } + @Override + public void startEmbeddedImpression(String messageId, double placementId) { + moduleImpl.startEmbeddedImpression(messageId, (int) placementId); + } + @Override public void getEmbeddedPlacementIds(Promise promise) { moduleImpl.getEmbeddedPlacementIds(promise); diff --git a/android/src/oldarch/java/com/RNIterableAPIModule.java b/android/src/oldarch/java/com/RNIterableAPIModule.java index 468c2e4e4..a149a8079 100644 --- a/android/src/oldarch/java/com/RNIterableAPIModule.java +++ b/android/src/oldarch/java/com/RNIterableAPIModule.java @@ -243,6 +243,11 @@ public void endEmbeddedSession() { moduleImpl.endEmbeddedSession(); } + @ReactMethod + public void startEmbeddedImpression(String messageId, double placementId) { + moduleImpl.startEmbeddedImpression(messageId, (int) placementId); + } + @ReactMethod public void getEmbeddedPlacementIds(Promise promise) { moduleImpl.getEmbeddedPlacementIds(promise); diff --git a/example/src/components/Embedded/Embedded.styles.ts b/example/src/components/Embedded/Embedded.styles.ts index 9dc6aea47..56241c676 100644 --- a/example/src/components/Embedded/Embedded.styles.ts +++ b/example/src/components/Embedded/Embedded.styles.ts @@ -1,5 +1,5 @@ import { StyleSheet } from 'react-native'; -import { button, buttonText, container, hr } from '../../constants'; +import { button, buttonText, container, hr, link } from '../../constants'; const styles = StyleSheet.create({ button, @@ -11,7 +11,17 @@ const styles = StyleSheet.create({ gap: 16, paddingHorizontal: 16, }, + embeddedTitle: { + fontSize: 16, + fontWeight: 'bold', + lineHeight: 20, + }, + embeddedTitleContainer: { + display: 'flex', + flexDirection: 'row', + }, hr, + link, text: { textAlign: 'center' }, utilitySection: { paddingHorizontal: 16, diff --git a/example/src/components/Embedded/Embedded.tsx b/example/src/components/Embedded/Embedded.tsx index 2be959133..4e6f84d03 100644 --- a/example/src/components/Embedded/Embedded.tsx +++ b/example/src/components/Embedded/Embedded.tsx @@ -48,6 +48,18 @@ export const Embedded = () => { }); }, [getPlacementIds]); + const startEmbeddedImpression = useCallback( + (message: IterableEmbeddedMessage) => { + console.log(`🚀 > Embedded > message:`, message); + Iterable.embeddedManager.startImpression( + message.metadata.messageId, + // TODO: check if this should be changed to a number, as per the type + Number(message.metadata.placementId) + ); + }, + [] + ); + return ( EMBEDDED @@ -63,19 +75,19 @@ export const Embedded = () => { Placement ids: [{placementIds.join(', ')}] - Sync embedded messages + Sync messages Get placement ids - Start embedded session + Start session - End embedded session + End session - Get embedded messages + Get messages @@ -83,7 +95,15 @@ export const Embedded = () => { {embeddedMessages.map((message) => ( - Embedded message + + Embedded message | + startEmbeddedImpression(message)} + > + Start impression + + + metadata.messageId: {message.metadata.messageId} metadata.placementId: {message.metadata.placementId} elements.title: {message.elements?.title} diff --git a/example/src/constants/styles/typography.ts b/example/src/constants/styles/typography.ts index 09b6c2405..f419eb45b 100644 --- a/example/src/constants/styles/typography.ts +++ b/example/src/constants/styles/typography.ts @@ -57,3 +57,8 @@ export const requiredStar: TextStyle = { ...label, color: colors.textDestructive, }; + +export const link: TextStyle = { + color: colors.textInteractive, + textDecorationLine: 'underline', +}; diff --git a/src/api/NativeRNIterableAPI.ts b/src/api/NativeRNIterableAPI.ts index a9b32a400..4388f0711 100644 --- a/src/api/NativeRNIterableAPI.ts +++ b/src/api/NativeRNIterableAPI.ts @@ -153,6 +153,7 @@ export interface Spec extends TurboModule { getEmbeddedMessages( placementIds: number[] | null ): Promise; + startEmbeddedImpression(messageId: string, placementId: number): void; // Wake app -- android only wakeApp(): void; diff --git a/src/core/classes/IterableApi.ts b/src/core/classes/IterableApi.ts index 52f54db80..e23b0cd1f 100644 --- a/src/core/classes/IterableApi.ts +++ b/src/core/classes/IterableApi.ts @@ -535,6 +535,14 @@ export class IterableApi { return RNIterableAPI.endEmbeddedSession(); } + /** + * Starts an embedded impression. + */ + static startEmbeddedImpression(messageId: string, placementId: number) { + IterableLogger.log('startEmbeddedImpression: ', messageId, placementId); + return RNIterableAPI.startEmbeddedImpression(messageId, placementId); + } + /** * Get the embedded placement IDs. */ diff --git a/src/embedded/classes/IterableEmbeddedManager.ts b/src/embedded/classes/IterableEmbeddedManager.ts index 1e2806e68..da2b7d0d6 100644 --- a/src/embedded/classes/IterableEmbeddedManager.ts +++ b/src/embedded/classes/IterableEmbeddedManager.ts @@ -101,4 +101,26 @@ export class IterableEmbeddedManager { endSession() { return IterableApi.endEmbeddedSession(); } + /** + * Starts an embedded impression. + * + * An impression represents the on-screen appearances of a given embedded message, + * in context of a session. + * + * Each impression tracks: + * - The total number of times a message appears during a session. + * - The total amount of time that message was visible, across all its + * appearances in the session. + * + * Be sure to start and pause impressions when your app goes to and from the + * background, too. + * + * @example + * ```typescript + * IterableEmbeddedManager.startImpression(messageId, placementId); + * ``` + */ + startImpression(messageId: string, placementId: number) { + return IterableApi.startEmbeddedImpression(messageId, placementId); + } } From ed9b4adf0536c89801e0dc8efb1eb0b7bec219c3 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Mon, 13 Oct 2025 13:17:03 -0700 Subject: [PATCH 2/6] feat: add pauseEmbeddedImpression method to manage embedded message impressions --- .../reactnative/RNIterableAPIModuleImpl.java | 4 ++++ .../newarch/java/com/RNIterableAPIModule.java | 5 +++++ .../oldarch/java/com/RNIterableAPIModule.java | 5 +++++ example/src/components/Embedded/Embedded.tsx | 16 +++++++++++++++- src/api/NativeRNIterableAPI.ts | 3 ++- src/core/classes/IterableApi.ts | 8 ++++++++ .../classes/IterableEmbeddedManager.ts | 18 ++++++++++++++++++ 7 files changed, 57 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java index df7a8eab5..9a0f84f73 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java @@ -670,6 +670,10 @@ public void startEmbeddedImpression(String messageId, int placementId) { IterableApi.getInstance().getEmbeddedManager().getEmbeddedSessionManager().startImpression(messageId, placementId); } + public void pauseEmbeddedImpression(String messageId) { + IterableApi.getInstance().getEmbeddedManager().getEmbeddedSessionManager().pauseImpression(messageId); + } + public void getEmbeddedPlacementIds(Promise promise) { IterableLogger.d(TAG, "getEmbeddedPlacementIds"); try { diff --git a/android/src/newarch/java/com/RNIterableAPIModule.java b/android/src/newarch/java/com/RNIterableAPIModule.java index 180dc2d21..457788ba8 100644 --- a/android/src/newarch/java/com/RNIterableAPIModule.java +++ b/android/src/newarch/java/com/RNIterableAPIModule.java @@ -244,6 +244,11 @@ public void startEmbeddedImpression(String messageId, double placementId) { moduleImpl.startEmbeddedImpression(messageId, (int) placementId); } + @Override + public void pauseEmbeddedImpression(String messageId) { + moduleImpl.pauseEmbeddedImpression(messageId); + } + @Override public void getEmbeddedPlacementIds(Promise promise) { moduleImpl.getEmbeddedPlacementIds(promise); diff --git a/android/src/oldarch/java/com/RNIterableAPIModule.java b/android/src/oldarch/java/com/RNIterableAPIModule.java index a149a8079..fb6c76d76 100644 --- a/android/src/oldarch/java/com/RNIterableAPIModule.java +++ b/android/src/oldarch/java/com/RNIterableAPIModule.java @@ -248,6 +248,11 @@ public void startEmbeddedImpression(String messageId, double placementId) { moduleImpl.startEmbeddedImpression(messageId, (int) placementId); } + @ReactMethod + public void pauseEmbeddedImpression(String messageId) { + moduleImpl.pauseEmbeddedImpression(messageId); + } + @ReactMethod public void getEmbeddedPlacementIds(Promise promise) { moduleImpl.getEmbeddedPlacementIds(promise); diff --git a/example/src/components/Embedded/Embedded.tsx b/example/src/components/Embedded/Embedded.tsx index 4e6f84d03..97addf49c 100644 --- a/example/src/components/Embedded/Embedded.tsx +++ b/example/src/components/Embedded/Embedded.tsx @@ -50,7 +50,7 @@ export const Embedded = () => { const startEmbeddedImpression = useCallback( (message: IterableEmbeddedMessage) => { - console.log(`🚀 > Embedded > message:`, message); + console.log(`startEmbeddedImpression`, message); Iterable.embeddedManager.startImpression( message.metadata.messageId, // TODO: check if this should be changed to a number, as per the type @@ -60,6 +60,14 @@ export const Embedded = () => { [] ); + const pauseEmbeddedImpression = useCallback( + (message: IterableEmbeddedMessage) => { + console.log(`pauseEmbeddedImpression:`, message); + Iterable.embeddedManager.pauseImpression(message.metadata.messageId); + }, + [] + ); + return ( EMBEDDED @@ -102,6 +110,12 @@ export const Embedded = () => { > Start impression + | + pauseEmbeddedImpression(message)} + > + Pause impression + metadata.messageId: {message.metadata.messageId} diff --git a/src/api/NativeRNIterableAPI.ts b/src/api/NativeRNIterableAPI.ts index 4388f0711..6e03cb2b7 100644 --- a/src/api/NativeRNIterableAPI.ts +++ b/src/api/NativeRNIterableAPI.ts @@ -149,11 +149,12 @@ export interface Spec extends TurboModule { syncEmbeddedMessages(): void; startEmbeddedSession(): void; endEmbeddedSession(): void; + startEmbeddedImpression(messageId: string, placementId: number): void; + pauseEmbeddedImpression(messageId: string): void; getEmbeddedPlacementIds(): Promise; getEmbeddedMessages( placementIds: number[] | null ): Promise; - startEmbeddedImpression(messageId: string, placementId: number): void; // Wake app -- android only wakeApp(): void; diff --git a/src/core/classes/IterableApi.ts b/src/core/classes/IterableApi.ts index e23b0cd1f..bbe687605 100644 --- a/src/core/classes/IterableApi.ts +++ b/src/core/classes/IterableApi.ts @@ -543,6 +543,14 @@ export class IterableApi { return RNIterableAPI.startEmbeddedImpression(messageId, placementId); } + /** + * Pauses an embedded impression. + */ + static pauseEmbeddedImpression(messageId: string) { + IterableLogger.log('pauseEmbeddedImpression: ', messageId); + return RNIterableAPI.pauseEmbeddedImpression(messageId); + } + /** * Get the embedded placement IDs. */ diff --git a/src/embedded/classes/IterableEmbeddedManager.ts b/src/embedded/classes/IterableEmbeddedManager.ts index da2b7d0d6..6e1a6bfbc 100644 --- a/src/embedded/classes/IterableEmbeddedManager.ts +++ b/src/embedded/classes/IterableEmbeddedManager.ts @@ -123,4 +123,22 @@ export class IterableEmbeddedManager { startImpression(messageId: string, placementId: number) { return IterableApi.startEmbeddedImpression(messageId, placementId); } + + /** + * Pauses an embedded impression. + * + * An impression represents the on-screen appearances of a given embedded message, + * in context of a session. + * + * And impression should be paused when the message is no longer visible, + * including when your app goes to the background. + * + * @example + * ```typescript + * IterableEmbeddedManager.pauseImpression(messageId); + * ``` + */ + pauseImpression(messageId: string) { + return IterableApi.pauseEmbeddedImpression(messageId); + } } From c942457f43cf791721214ab066d6de269c3fd4e3 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Tue, 18 Nov 2025 23:29:17 -0800 Subject: [PATCH 3/6] feat: add logging for start and pause embedded impression methods in RNIterableAPIModuleImpl --- .../com/iterable/reactnative/RNIterableAPIModuleImpl.java | 2 ++ src/embedded/classes/IterableEmbeddedManager.ts | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java index d02da8827..10fa97f03 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java @@ -659,10 +659,12 @@ public void endEmbeddedSession() { } public void startEmbeddedImpression(String messageId, int placementId) { + IterableLogger.d(TAG, "startEmbeddedImpression"); IterableApi.getInstance().getEmbeddedManager().getEmbeddedSessionManager().startImpression(messageId, placementId); } public void pauseEmbeddedImpression(String messageId) { + IterableLogger.d(TAG, "pauseEmbeddedImpression"); IterableApi.getInstance().getEmbeddedManager().getEmbeddedSessionManager().pauseImpression(messageId); } diff --git a/src/embedded/classes/IterableEmbeddedManager.ts b/src/embedded/classes/IterableEmbeddedManager.ts index 6557ae2ab..458b700ff 100644 --- a/src/embedded/classes/IterableEmbeddedManager.ts +++ b/src/embedded/classes/IterableEmbeddedManager.ts @@ -41,7 +41,7 @@ export class IterableEmbeddedManager { * Syncs embedded local cache with the server. * * When your app first launches, and each time it comes to the foreground, - * Iterable's iOS SDK automatically refresh a local, on-device cache of + * Iterable's Native SDKs automatically refresh a local, on-device cache of * embedded messages for the signed-in user. These are the messages the * signed-in user is eligible to see. * @@ -84,7 +84,7 @@ export class IterableEmbeddedManager { /** * Starts a session. * - * As session is a period of time when a user is on a screen or page that can + * A session is a period of time when a user is on a screen or page that can * display embedded messages. * * When a user comes to a screen or page in your app where embedded messages @@ -104,7 +104,7 @@ export class IterableEmbeddedManager { * * When a user leaves a screen in your app where embedded messages are * displayed, the session should be ended. This causes the SDK to send - * session and impression data back to the server. + * session an impression data back to the server. * * A session is tracked when it is ended, so you should be able to find * tracking data after this method is called. From da20dcffff58cf8891c9fd080c5c0e02f0f198e2 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Tue, 18 Nov 2025 23:31:35 -0800 Subject: [PATCH 4/6] test: add unit tests for sync and impression methods in IterableEmbeddedManager --- src/__mocks__/MockRNIterableAPI.ts | 8 ++ .../classes/IterableEmbeddedManager.test.ts | 129 ++++++++++++++++++ 2 files changed, 137 insertions(+) diff --git a/src/__mocks__/MockRNIterableAPI.ts b/src/__mocks__/MockRNIterableAPI.ts index fc7ed502f..74ee90741 100644 --- a/src/__mocks__/MockRNIterableAPI.ts +++ b/src/__mocks__/MockRNIterableAPI.ts @@ -137,6 +137,14 @@ export class MockRNIterableAPI { .fn() .mockResolvedValue([1, 2, 3] as number[]); + static syncEmbeddedMessages = jest.fn(); + + static getEmbeddedMessages = jest.fn().mockResolvedValue([]); + + static startEmbeddedImpression = jest.fn(); + + static pauseEmbeddedImpression = jest.fn(); + // set messages function is to set the messages static property // this is for testing purposes only static setMessages(messages: IterableInAppMessage[]): void { diff --git a/src/embedded/classes/IterableEmbeddedManager.test.ts b/src/embedded/classes/IterableEmbeddedManager.test.ts index c05e38533..690ddcc5d 100644 --- a/src/embedded/classes/IterableEmbeddedManager.test.ts +++ b/src/embedded/classes/IterableEmbeddedManager.test.ts @@ -64,6 +64,16 @@ describe('IterableEmbeddedManager', () => { }); }); + describe('syncMessages', () => { + it('should call IterableApi.syncEmbeddedMessages', () => { + // WHEN syncMessages is called + embeddedManager.syncMessages(); + + // THEN IterableApi.syncEmbeddedMessages is called + expect(MockRNIterableAPI.syncEmbeddedMessages).toHaveBeenCalledTimes(1); + }); + }); + describe('getPlacementIds', () => { it('should call IterableApi.getEmbeddedPlacementIds', async () => { // WHEN getPlacementIds is called @@ -79,6 +89,37 @@ describe('IterableEmbeddedManager', () => { }); }); + describe('getMessages', () => { + it('should call IterableApi.getEmbeddedMessages with placement IDs', async () => { + // GIVEN some placement IDs + const placementIds = [1, 2, 3]; + + // WHEN getMessages is called + const result = await embeddedManager.getMessages(placementIds); + + // THEN IterableApi.getEmbeddedMessages is called with the placement IDs + expect(MockRNIterableAPI.getEmbeddedMessages).toHaveBeenCalledTimes(1); + expect(MockRNIterableAPI.getEmbeddedMessages).toHaveBeenCalledWith( + placementIds + ); + + // AND the result is returned + expect(result).toEqual([]); + }); + + it('should call IterableApi.getEmbeddedMessages with null', async () => { + // WHEN getMessages is called with null + const result = await embeddedManager.getMessages(null); + + // THEN IterableApi.getEmbeddedMessages is called with null + expect(MockRNIterableAPI.getEmbeddedMessages).toHaveBeenCalledTimes(1); + expect(MockRNIterableAPI.getEmbeddedMessages).toHaveBeenCalledWith(null); + + // AND the result is returned + expect(result).toEqual([]); + }); + }); + describe('startSession', () => { it('should call IterableApi.startEmbeddedSession', () => { // WHEN startSession is called @@ -98,5 +139,93 @@ describe('IterableEmbeddedManager', () => { expect(MockRNIterableAPI.endEmbeddedSession).toHaveBeenCalledTimes(1); }); }); + + describe('startImpression', () => { + it('should call IterableApi.startEmbeddedImpression with messageId and placementId', () => { + // GIVEN a message ID and placement ID + const messageId = 'message-123'; + const placementId = 456; + + // WHEN startImpression is called + embeddedManager.startImpression(messageId, placementId); + + // THEN IterableApi.startEmbeddedImpression is called with the correct parameters + expect(MockRNIterableAPI.startEmbeddedImpression).toHaveBeenCalledTimes( + 1 + ); + expect(MockRNIterableAPI.startEmbeddedImpression).toHaveBeenCalledWith( + messageId, + placementId + ); + }); + + it('should handle multiple impression starts', () => { + // GIVEN multiple messages + const messageId1 = 'message-1'; + const placementId1 = 100; + const messageId2 = 'message-2'; + const placementId2 = 200; + + // WHEN startImpression is called multiple times + embeddedManager.startImpression(messageId1, placementId1); + embeddedManager.startImpression(messageId2, placementId2); + + // THEN IterableApi.startEmbeddedImpression is called twice + expect(MockRNIterableAPI.startEmbeddedImpression).toHaveBeenCalledTimes( + 2 + ); + expect(MockRNIterableAPI.startEmbeddedImpression).toHaveBeenNthCalledWith( + 1, + messageId1, + placementId1 + ); + expect(MockRNIterableAPI.startEmbeddedImpression).toHaveBeenNthCalledWith( + 2, + messageId2, + placementId2 + ); + }); + }); + + describe('pauseImpression', () => { + it('should call IterableApi.pauseEmbeddedImpression with messageId', () => { + // GIVEN a message ID + const messageId = 'message-123'; + + // WHEN pauseImpression is called + embeddedManager.pauseImpression(messageId); + + // THEN IterableApi.pauseEmbeddedImpression is called with the correct parameter + expect(MockRNIterableAPI.pauseEmbeddedImpression).toHaveBeenCalledTimes( + 1 + ); + expect(MockRNIterableAPI.pauseEmbeddedImpression).toHaveBeenCalledWith( + messageId + ); + }); + + it('should handle multiple impression pauses', () => { + // GIVEN multiple message IDs + const messageId1 = 'message-1'; + const messageId2 = 'message-2'; + + // WHEN pauseImpression is called multiple times + embeddedManager.pauseImpression(messageId1); + embeddedManager.pauseImpression(messageId2); + + // THEN IterableApi.pauseEmbeddedImpression is called twice + expect(MockRNIterableAPI.pauseEmbeddedImpression).toHaveBeenCalledTimes( + 2 + ); + expect(MockRNIterableAPI.pauseEmbeddedImpression).toHaveBeenNthCalledWith( + 1, + messageId1 + ); + expect(MockRNIterableAPI.pauseEmbeddedImpression).toHaveBeenNthCalledWith( + 2, + messageId2 + ); + }); + }); }); From 49f5e2f646ccba78b0db75f086dbca272c532d92 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Tue, 18 Nov 2025 23:51:05 -0800 Subject: [PATCH 5/6] docs: add internal usage note to setEnabled method in IterableEmbeddedManager --- src/embedded/classes/IterableEmbeddedManager.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/embedded/classes/IterableEmbeddedManager.ts b/src/embedded/classes/IterableEmbeddedManager.ts index c6064fb62..7f9a08c3f 100644 --- a/src/embedded/classes/IterableEmbeddedManager.ts +++ b/src/embedded/classes/IterableEmbeddedManager.ts @@ -31,6 +31,7 @@ export class IterableEmbeddedManager { /** * Sets whether the embedded manager is enabled. * + * @internal This method is for internal SDK use only and should not be called by SDK consumers. * @param enabled - Whether the embedded manager is enabled. */ setEnabled(enabled: boolean) { From 718a158c1b0895f0f84f52e5bf211903da7ffe86 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Tue, 18 Nov 2025 23:51:51 -0800 Subject: [PATCH 6/6] docs: clarify internal usage note for setEnabled method in IterableEmbeddedManager --- src/embedded/classes/IterableEmbeddedManager.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/embedded/classes/IterableEmbeddedManager.ts b/src/embedded/classes/IterableEmbeddedManager.ts index 7f9a08c3f..03013ed40 100644 --- a/src/embedded/classes/IterableEmbeddedManager.ts +++ b/src/embedded/classes/IterableEmbeddedManager.ts @@ -31,7 +31,9 @@ export class IterableEmbeddedManager { /** * Sets whether the embedded manager is enabled. * - * @internal This method is for internal SDK use only and should not be called by SDK consumers. + * @internal This method is for internal SDK use only and should not be called + * by SDK consumers, as it is meant to be called at initialization time. + * * @param enabled - Whether the embedded manager is enabled. */ setEnabled(enabled: boolean) {