Javascript SDKs for Hackle
    Preparing search index...

    Release Notes

    Date: September 4, 2026

    • fix(javascript-sdk): collect timezone independently of orientation

    Date: August 25, 2026

    • feature: support asynchronous WebView bridge invocations

    Date: August 5, 2026

    All breaking changes of the JavaScript SDK 12.0.0 apply here as well, including the removal of the third defaultVariation argument from variation() / variationDetail() and the removal of getExperiment(). See the JavaScript SDK 12.0.0 release notes for the full list.

    The changes below are specific to the React SDK.


    Breaking Changes

    • HackleContext now exposes contextVersion instead of userVersion. Code that reads the context directly with useContext(HackleContext) must be updated.

      // before
      const { hackle, userVersion, initialized } = useContext(HackleContext)
      // after
      const { hackle, contextVersion, initialized } = useContext(HackleContext)
    • The client event "user-updated" has been replaced by "evaluate", and the handler no longer receives a payload.

      // before
      hackleClient.on("user-updated", (user) => { ... })
      // after
      hackleClient.on("evaluate", () => {
      const user = hackleClient.getUser()
      })

      A handler left subscribed to "user-updated" will never be called.

    • The user prop of HackleProvider is now applied by value instead of by reference. It is applied only when its value differs from the last applied value, so an inline object literal no longer re-applies the user on every parent re-render. If you mix the user prop with imperative APIs such as setUserId(), an unrelated re-render no longer silently reverts them.

    • User mutation methods (setUser, setUserId, setDeviceId, setUserProperty, setUserProperties, updateUserProperties, resetUser) now resolve after the workspace has been synchronized, instead of resolving immediately. Awaiting them means the hook values are already up to date.


    Changed

    • Hook values are now re-evaluated when the workspace is updated, so calling fetch() refreshes them.
    • Property comparison now compares array values element by element and uses Object.is otherwise, which removes unnecessary re-evaluations for array-valued user properties.
    • The emitted type declarations no longer rely on the global JSX namespace, so they resolve under @types/react@19 with skipLibCheck: false.

    Added

    • The evaluationMode option is available in createInstance config for remote evaluation mode.

    Date: May 18, 2026

    • feat: expose IAM trigger event to HTML in-app message bridge

    Date: April 8, 2026

    Fix: HttpTransport multibyte UTF-8 characters broken at chunk boundaries


    Date: April 1, 2026


    Date: March 25, 2026

    • HTML In-App Message

    Date: March 19, 2026

    • feature: add HackleSessionPolicy with persistCondition and custom timeout
    • feature: add opt-out tracking support

    Date: January 30, 2026

    • trackPageView & automaticRouteTracking
    • add disable monitoring config

    Date: November 17, 2025

    • Added InAppMessage Timetable

    Date: November 5, 2025

    • supports webapp $page_view, $engagement events.

    Date: October 16, 2025

    • fix sessionId frequency not working issue

    Date: September 25, 2025

    • update @hackler/iam-renderer version
    • update @hackler/javascript-sdk version

    Date: September 25, 2025

    • update javascript sdk version

    Date: September 25, 2025

    • changing inAppMessage size in PC

    Date: September 10, 2025

    • [browser hackleClient] add getDisplayedInAppMessageView method
    • export DefaultBrowserPropertyProvider, #580

    Date: September 8, 2025

    • support inAppMessage delay

    Date: August 29, 2025

    • support browserProperties in web-app integration mode.
    • change api endpoint #571

    Date: July 24, 2025

    • allow setUserId(null) to unset userId
    • web-app-client can send null to app during setUserId

    Date: July 3, 2025

    • support rendering newline in-app-message on [MODAL+TEXT+BUTTON] layout. in PR

    Date: July 1, 2025

    • add hideUserExplorer in webview bridge
    • add crm message subscription

    Date: May 9, 2025

    • getSessionId
    • setUserProperties
    • close
    • getExperiment

    Date: April 29, 2025

    • refactor in-app message experiment structure

    Date: April 18, 2025

    • New method for controlling user's phone number (This is useful if you use KakaoTalk biz message to send notifications or advertisements to your customers.)
      • setPhoneNumber: sets user's phone number. This value is unique for each UserId.
      • unsetPhoneNumber: resets user's phone number to be an empty value.

    Date: March 27, 2025

    • New operator for targeting: user property's existence

    Date: March 24, 2025

    • Added HackleClient.getExperiment method. This method can be used to retrieve A/B test setting information.

    Date: February 17, 2025

    • add event target evaluation

    Date: January 14, 2025

    • convert string to boolean for matching comparison

    Date: January 12, 2025

    • Supports multiple images in in-app messages

    Date: October 2, 2024

    • Fixed NOT_MATCH operation return false even though the user was not included in any cohort

    Date: September 9, 2024

    same as @hackler/javascript-sdk@11.37.0


    Date: August 9, 2024

    • feat: added new in-app message layout (bottom sheet).

    • fix: prevent in-app-message IMAGE layout modal from getting out of focus while message is open.


    Date: July 15, 2024

    • feat: Supports unexposed control group for in-app message A/B testing

    Date: July 5, 2024

    • Synchronize cohorts only when identifiers are updated
    • Use setInterval when scheduling in node

    Date: June 18, 2024

    • feat: Added User Engagement

    Date: June 18, 2024

    Released with the same build version as @hackler/javascript-sdk@11.33.1. Saved for history


    Date: June 3, 2024

    • Flush events after updateUserProperties()

    Date: May 27, 2024

    • feat: Added WebApp mode (native, web_view_wrapper)

    Date: April 16, 2024

    • fix decodeURI, decodeURIcomponent method's malformed URI error

    Date: April 3, 2024

    • Added RemoteConfigEvent dedup

    Date: March 22, 2024

    • Added z-index to in-app-message banner

    Date: March 19, 2024

    • Fix in-app-message modal margin

    Date: March 18, 2024

    • Added in-app-message new layouts
      • added banner layout
      • added outer buttons modal layout

    Date: February 19, 2024

    • Added experiment field to Decision

    Date: February 16, 2024

    • remove iPhone, iOS values from hackle property osName

    Date: February 15, 2024

    • Supports A/B testing in in-app messages.

    • Added HackleClient.fetch() method. This method can be used to manually synchronize workspace configuration.

    • Handling of page visibility changes .


    Date: February 8, 2024

    • add sdkTime when send beacon

    Date: February 7, 2024

    • Forward campaign query params when split url redirect

    Date: February 6, 2024

    • Fix InAppMessage borderColor issue

    Date: January 25, 2024

    • Add exports field to package.json
    • Always add campaign properties to user properties

    Date: January 17, 2024

    • Use disk cache for WorkspaceConfig

    Date: January 16, 2024

    • flush with beacon when split url determined

    Date: January 8, 2024

    • Unable to add falsy value to PropertiesBuilder

    Date: December 18, 2023

    • Added BrowserInitializeDoneEventDispatcher

    • Changed page view event to always emit


    Date: December 4, 2023

    • Fix Node.js entry file directory typo

    Date: December 1, 2023

    • Removed flush event when split url test redirected

    Date: December 1, 2023

    • New added Split URL test support

    • Fix JavaScript "this binding" issue

    • Support UTF-8 decoding to URL Hackle properties targeting