Hackle React Native SDK client interface

Provides methods for A/B testing, feature flags, remote config, event tracking, and user management.

interface ReactNativeSDKClient {
    variation(experimentKey: number): Promise<string>;
    variation(experimentKey: number, user?: null | User): Promise<string>;
    variationSync(experimentKey: number): string;
    variationSync(experimentKey: number, user?: null | User): string;
    variationDetail(experimentKey: number): Promise<ReactNativeDecision>;
    variationDetail(experimentKey: number, user?: null | User): Promise<ReactNativeDecision>;
    variationDetailSync(experimentKey: number): ReactNativeDecision;
    variationDetailSync(experimentKey: number, user?: null | User): ReactNativeDecision;
    isFeatureOn(featureKey: number): Promise<boolean>;
    isFeatureOn(featureKey: number, user?: null | User): Promise<boolean>;
    isFeatureOnSync(featureKey: number): boolean;
    isFeatureOnSync(featureKey: number, user?: null | User): boolean;
    featureFlagDetail(featureKey: number): Promise<ReactNativeFeatureFlagDecision>;
    featureFlagDetail(featureKey: number, user?: null | User): Promise<ReactNativeFeatureFlagDecision>;
    featureFlagDetailSync(featureKey: number): ReactNativeFeatureFlagDecision;
    featureFlagDetailSync(featureKey: number, user?: null | User): ReactNativeFeatureFlagDecision;
    track(event: Event): void;
    track(event: Event, user?: null | User): void;
    remoteConfig(): Promise<HackleRemoteConfig>;
    remoteConfig(user?: null | User): Promise<HackleRemoteConfig>;
    remoteConfigSync(): HackleRemoteConfig;
    remoteConfigSync(user?: null | User): HackleRemoteConfig;
    onReady(): Promise<void>;
    getUser(): Promise<User>;
    setUser(user: User): Promise<void>;
    setUserId(userId: undefined | null | string): Promise<void>;
    setDeviceId(deviceId: string): Promise<void>;
    setUserProperty(key: string, value: PropertyValue): Promise<void>;
    setUserProperties(properties: {
        [key: string]: PropertyValue;
    }): Promise<void>;
    updateUserProperties(operations: PropertyOperations): Promise<void>;
    updatePushSubscriptions(operations: HackleSubscriptionOperations): Promise<void>;
    updateSmsSubscriptions(operations: HackleSubscriptionOperations): Promise<void>;
    updateKakaoSubscriptions(operations: HackleSubscriptionOperations): Promise<void>;
    resetUser(): Promise<void>;
    setPhoneNumber(phoneNumber: string): Promise<void>;
    unsetPhoneNumber(): Promise<void>;
    showUserExplorer(): Promise<void>;
    hideUserExplorer(): Promise<void>;
    fetch(): Promise<void>;
    isInvocableString(command: string): Promise<boolean>;
    bridgeInvoke(command: string): Promise<string>;
    setInAppMessageListener(listener: null | HackleInAppMessageListener): void;
    setBackButtonDismissesInAppMessageView(dismisses: boolean): Promise<void>;
    on<K>(eventName: K, fn: EventReceiver<HackleReactNativeSdkTypeClientEventMap[K]>): void;
    off<K>(eventName: K, fn: EventReceiver<HackleReactNativeSdkTypeClientEventMap[K]>): void;
    emit<K>(eventName: K, params: HackleReactNativeSdkTypeClientEventMap[K]): void;
}

Hierarchy

  • Emitter<HackleReactNativeSdkTypeClientEventMap>
    • ReactNativeSDKClient

Methods

  • Gets the variation key for an A/B test experiment asynchronously

    Parameters

    • experimentKey: number

      The experiment key identifier

    Returns Promise<string>

    Promise resolving to the variation key (e.g., "A", "B")

  • Parameters

    • experimentKey: number
    • Optionaluser: null | User

    Returns Promise<string>

    Use variation(experimentKey) with setUser(user) instead

  • Gets the variation key for an A/B test experiment synchronously

    Parameters

    • experimentKey: number

      The experiment key identifier

    Returns string

    The variation key (e.g., "A", "B")

  • Parameters

    • experimentKey: number
    • Optionaluser: null | User

    Returns string

    Use variationSync(experimentKey) with setUser(user) instead

  • Gets detailed decision information for an A/B test experiment asynchronously

    Parameters

    • experimentKey: number

      The experiment key identifier

    Returns Promise<ReactNativeDecision>

    Promise resolving to decision details including variation, reason, and parameters

  • Parameters

    • experimentKey: number
    • Optionaluser: null | User

    Returns Promise<ReactNativeDecision>

    Use variationDetail(experimentKey) with setUser(user) instead

  • Gets detailed decision information for an A/B test experiment synchronously

    Parameters

    • experimentKey: number

      The experiment key identifier

    Returns ReactNativeDecision

    Decision details including variation, reason, and parameters

  • Parameters

    • experimentKey: number
    • Optionaluser: null | User

    Returns ReactNativeDecision

    Use variationDetailSync(variationDetailSync) with setUser(user) instead

  • Checks if a feature flag is enabled asynchronously

    Parameters

    • featureKey: number

      The feature flag key identifier

    Returns Promise<boolean>

    Promise resolving to true if the feature is enabled, false otherwise

  • Parameters

    • featureKey: number
    • Optionaluser: null | User

    Returns Promise<boolean>

    Use isFeatureOn(featureKey) with setUser(user) instead

  • Checks if a feature flag is enabled synchronously

    Parameters

    • featureKey: number

      The feature flag key identifier

    Returns boolean

    True if the feature is enabled, false otherwise

  • Parameters

    • featureKey: number
    • Optionaluser: null | User

    Returns boolean

    Use isFeatureOnSync(featureKey) with setUser(user) instead

  • Tracks an event

    Parameters

    • event: Event

      The event to track with a key, and properties

    Returns void

  • Parameters

    • event: Event
    • Optionaluser: null | User

    Returns void

    Use track(event) with setUser(user) instead

  • Gets the remote config asynchronously

    Returns Promise<HackleRemoteConfig>

    Promise resolving to remote config object for retrieving configuration values

  • Parameters

    • Optionaluser: null | User

    Returns Promise<HackleRemoteConfig>

    Use remoteConfig() with setUser(user) instead

  • Gets the remote config synchronously

    Returns HackleRemoteConfig

    Remote config object for retrieving configuration values

  • Parameters

    • Optionaluser: null | User

    Returns HackleRemoteConfig

    Use remoteConfigSync() with setUser(user) instead

  • Waits for the SDK to be fully initialized

    Returns Promise<void>

    Promise that resolves when the SDK is ready

  • Gets the current user object

    Returns Promise<User>

    Promise resolving to the current user

  • Sets the current user

    Parameters

    • user: User

      The user object to set

    Returns Promise<void>

    Promise that resolves when the user is set

  • Sets the user ID

    Parameters

    • userId: undefined | null | string

      The user ID to set, or null/undefined to clear

    Returns Promise<void>

    Promise that resolves when the user ID is set

  • Sets the device ID

    Parameters

    • deviceId: string

      The device ID to set

    Returns Promise<void>

    Promise that resolves when the device ID is set

  • Sets a user property

    Parameters

    • key: string

      The property key

    • value: PropertyValue

      The property value

    Returns Promise<void>

    Promise that resolves when the property is set

  • Sets user properties

    Parameters

    • properties: {
          [key: string]: PropertyValue;
      }

      Object containing property key-value pairs

      • [key: string]: PropertyValue

    Returns Promise<void>

    Promise that resolves when the properties are set

  • Updates user properties using operations

    Parameters

    • operations: PropertyOperations

      Property operations to apply

    Returns Promise<void>

    Promise that resolves when the operations are applied

  • Updates push notification subscription preferences

    Parameters

    • operations: HackleSubscriptionOperations

      Subscription operations to apply

    Returns Promise<void>

    Promise that resolves when the subscriptions are updated

  • Updates SMS subscription preferences

    Parameters

    • operations: HackleSubscriptionOperations

      Subscription operations to apply

    Returns Promise<void>

    Promise that resolves when the subscriptions are updated

  • Updates Kakao subscription preferences

    Parameters

    • operations: HackleSubscriptionOperations

      Subscription operations to apply

    Returns Promise<void>

    Promise that resolves when the subscriptions are updated

  • Resets the current user to an anonymous state

    Returns Promise<void>

    Promise that resolves when the user is reset

  • Sets the user's phone number

    Parameters

    • phoneNumber: string

      The phone number to set

    Returns Promise<void>

    Promise that resolves when the phone number is set

  • Removes the user's phone number

    Returns Promise<void>

    Promise that resolves when the phone number is unset

  • Shows the user explorer UI for debugging

    Returns Promise<void>

    Promise that resolves when the user explorer is shown

  • Hides the user explorer UI

    Returns Promise<void>

    Promise that resolves when the user explorer is hidden

  • Manually fetches the latest configuration from the server

    Returns Promise<void>

    Promise that resolves when the fetch is complete

  • Checks if a command string can be invoked via bridge

    Parameters

    • command: string

      The command string to check

    Returns Promise<boolean>

    Promise resolving to true if the command is invocable, false otherwise

  • Invokes a command via the bridge

    Parameters

    • command: string

      The command string to invoke

    Returns Promise<string>

    Promise resolving to the command result string

  • Sets the in-app message listener for handling in-app message events

    Parameters

    • listener: null | HackleInAppMessageListener

      The listener to handle in-app message events, or null to remove

    Returns void

  • Configures whether the back button dismisses in-app message views (Android only)

    Parameters

    • dismisses: boolean

      True to allow back button to dismiss, false otherwise

    Returns Promise<void>

    Promise that resolves when the setting is applied

  • Type Parameters

    • K extends "user-updated"

    Parameters

    • eventName: K
    • fn: EventReceiver<HackleReactNativeSdkTypeClientEventMap[K]>

    Returns void

  • Type Parameters

    • K extends "user-updated"

    Parameters

    • eventName: K
    • fn: EventReceiver<HackleReactNativeSdkTypeClientEventMap[K]>

    Returns void

  • Type Parameters

    • K extends "user-updated"

    Parameters

    • eventName: K
    • params: HackleReactNativeSdkTypeClientEventMap[K]

    Returns void