Skip to content

UJ: stopEvents#232

Merged
e271828- merged 4 commits intofeature/user-journeyfrom
uj_stopevents
Jan 30, 2026
Merged

UJ: stopEvents#232
e271828- merged 4 commits intofeature/user-journeyfrom
uj_stopevents

Conversation

@e271828-
Copy link
Contributor

  • expose stopEvents on IHCaptcha and call it from reset/destroy
  • unregister journey sink to stop event collection
  • document stopEvents in README
  • add unit test for sink removal

 - expose stopEvents on IHCaptcha and call it from reset/destroy
  - unregister journey sink to stop event collection
  - document stopEvents in README
  - add unit test for sink removal
@github-actions
Copy link

github-actions bot commented Jan 23, 2026

Diffuse report:

OLD: sdk-main.aar
NEW: sdk-pr.aar

 AAR      │ old      │ new       │ diff      
──────────┼──────────┼───────────┼───────────
      jar │ 59.4 KiB │    87 KiB │ +27.6 KiB 
 manifest │    411 B │     411 B │       0 B 
      res │ 78.2 KiB │  78.2 KiB │       0 B 
    other │    1 KiB │     1 KiB │       0 B 
──────────┼──────────┼───────────┼───────────
    total │  139 KiB │ 166.7 KiB │ +27.6 KiB 

 JAR     │ old │ new │ diff           
─────────┼─────┼─────┼────────────────
 classes │  38 │  59 │  +21 (+21 -0)  
 methods │ 569 │ 764 │ +195 (+197 -2) 
  fields │ 174 │ 255 │  +81 (+81 -0)
AAR
 size   │ diff      │ path          
────────┼───────────┼───────────────
 87 KiB │ +27.6 KiB │ ∆ classes.jar 
────────┼───────────┼───────────────
 87 KiB │ +27.6 KiB │ (total)
JAR
CLASSES:

   old │ new │ diff         
  ─────┼─────┼──────────────
   38  │ 59  │ +21 (+21 -0) 
  
  + com.hcaptcha.sdk.journeylitics.EventKind
  + com.hcaptcha.sdk.journeylitics.FieldKey
  + com.hcaptcha.sdk.journeylitics.InMemorySink
  + com.hcaptcha.sdk.journeylitics.JLConfig
  + com.hcaptcha.sdk.journeylitics.JLEvent
  + com.hcaptcha.sdk.journeylitics.JLSink
  + com.hcaptcha.sdk.journeylitics.Journeylitics_1_1
  + com.hcaptcha.sdk.journeylitics.Journeylitics_1
  + com.hcaptcha.sdk.journeylitics.Journeylitics_10
  + com.hcaptcha.sdk.journeylitics.Journeylitics_2
  + com.hcaptcha.sdk.journeylitics.Journeylitics_3_1
  + com.hcaptcha.sdk.journeylitics.Journeylitics_3
  + com.hcaptcha.sdk.journeylitics.Journeylitics_4
  + com.hcaptcha.sdk.journeylitics.Journeylitics_5
  + com.hcaptcha.sdk.journeylitics.Journeylitics_6
  + com.hcaptcha.sdk.journeylitics.Journeylitics_7
  + com.hcaptcha.sdk.journeylitics.Journeylitics_8
  + com.hcaptcha.sdk.journeylitics.Journeylitics_9
  + com.hcaptcha.sdk.journeylitics.Journeylitics_ListenerLookup
  + com.hcaptcha.sdk.journeylitics.Journeylitics
  + com.hcaptcha.sdk.journeylitics.MetaMapHelper
  

METHODS:

   old │ new │ diff           
  ─────┼─────┼────────────────
   569 │ 764 │ +195 (+197 -2) 
  
  + com.hcaptcha.sdk.HCaptcha stopEvents()
  + com.hcaptcha.sdk.HCaptchaConfig _default_userJourney() → Boolean
  + com.hcaptcha.sdk.HCaptchaConfig <init>(String, Boolean, Boolean, Boolean, String, String, String, String, String, String, String, String, HCaptchaSize, HCaptchaOrientation, HCaptchaTheme, String, String, Boolean, IHCaptchaRetryPredicate, long, Boolean, Boolean, Boolean)
  + com.hcaptcha.sdk.HCaptchaConfig access_1600() → Boolean
  + com.hcaptcha.sdk.HCaptchaConfig getUserJourney() → Boolean
  + com.hcaptcha.sdk.HCaptchaConfig setUserJourney(Boolean)
  + com.hcaptcha.sdk.HCaptchaConfig_HCaptchaConfigBuilder userJourney(Boolean) → HCaptchaConfig_HCaptchaConfigBuilder
  + com.hcaptcha.sdk.HCaptchaVerifyParams <init>(String, String, String, Object)
  + com.hcaptcha.sdk.HCaptchaVerifyParams getUserJourney() → Object
  + com.hcaptcha.sdk.HCaptchaVerifyParams setUserJourney(Object)
  + com.hcaptcha.sdk.HCaptchaVerifyParams_HCaptchaVerifyParamsBuilder userJourney(Object) → HCaptchaVerifyParams_HCaptchaVerifyParamsBuilder
  + com.hcaptcha.sdk.IHCaptcha stopEvents()
  + com.hcaptcha.sdk.journeylitics.EventKind _values() → EventKind[]
  + com.hcaptcha.sdk.journeylitics.EventKind <clinit>()
  + com.hcaptcha.sdk.journeylitics.EventKind <init>(String, int, String)
  + com.hcaptcha.sdk.journeylitics.EventKind getValue() → String
  + com.hcaptcha.sdk.journeylitics.EventKind valueOf(String) → EventKind
  + com.hcaptcha.sdk.journeylitics.EventKind values() → EventKind[]
  + com.hcaptcha.sdk.journeylitics.FieldKey _values() → FieldKey[]
  + com.hcaptcha.sdk.journeylitics.FieldKey <clinit>()
  + com.hcaptcha.sdk.journeylitics.FieldKey <init>(String, int, String)
  + com.hcaptcha.sdk.journeylitics.FieldKey getJsonKey() → String
  + com.hcaptcha.sdk.journeylitics.FieldKey valueOf(String) → FieldKey
  + com.hcaptcha.sdk.journeylitics.FieldKey values() → FieldKey[]
  + com.hcaptcha.sdk.journeylitics.InMemorySink <init>()
  + com.hcaptcha.sdk.journeylitics.InMemorySink emit(JLEvent)
  + com.hcaptcha.sdk.journeylitics.InMemorySink getAndClearEvents() → List
  + com.hcaptcha.sdk.journeylitics.JLConfig <clinit>()
  + com.hcaptcha.sdk.journeylitics.JLConfig <init>()
  + com.hcaptcha.sdk.journeylitics.JLConfig <init>(boolean, boolean, boolean, boolean, boolean, boolean, boolean, List)
  + com.hcaptcha.sdk.journeylitics.JLConfig <init>(JLSink)
  + com.hcaptcha.sdk.journeylitics.JLConfig getSinks() → List
  + com.hcaptcha.sdk.journeylitics.JLConfig isEnableClicks() → boolean
  + com.hcaptcha.sdk.journeylitics.JLConfig isEnableScreens() → boolean
  + com.hcaptcha.sdk.journeylitics.JLConfig isEnableScrolls() → boolean
  + com.hcaptcha.sdk.journeylitics.JLConfig isEnableSearch() → boolean
  + com.hcaptcha.sdk.journeylitics.JLConfig isEnableSliders() → boolean
  + com.hcaptcha.sdk.journeylitics.JLConfig isEnableTextInputs() → boolean
  + com.hcaptcha.sdk.journeylitics.JLConfig isEnableToggles() → boolean
  + com.hcaptcha.sdk.journeylitics.JLEvent <init>(EventKind, String)
  + com.hcaptcha.sdk.journeylitics.JLEvent <init>(EventKind, String, Map)
  + com.hcaptcha.sdk.journeylitics.JLEvent <init>(long, EventKind, String, Object)
  + com.hcaptcha.sdk.journeylitics.JLEvent getKind() → EventKind
  + com.hcaptcha.s
...✂

@github-actions
Copy link

github-actions bot commented Jan 23, 2026

Benchmark report:

Test name Time ms. (median) Allocations (median)
com.hcaptcha.sdk.HCaptchaBenchmarkTest.EMULATOR_UNLOCKED_benchmarkInvisibleVerification +387.86 +917
com.hcaptcha.sdk.HCaptchaBenchmarkTest.EMULATOR_UNLOCKED_benchmarkInvisibleVerificationColdRun +476.56 +1248
com.hcaptcha.sdk.HCaptchaBenchmarkTest.EMULATOR_UNLOCKED_benchmarkInvisibleSetup +0.24 +321.25
com.hcaptcha.sdk.HCaptchaDebugInfoTest.EMULATOR_UNLOCKED_benchmarkDebugInfo -6.40 -5574
com.hcaptcha.sdk.HCaptchaDebugInfoTest.EMULATOR_UNLOCKED_benchmarkDebugSys +24.87 -20

@e271828- e271828- requested a review from CAMOBAP January 23, 2026 15:25
@e271828- e271828- merged commit f89b831 into feature/user-journey Jan 30, 2026
11 checks passed
@e271828- e271828- deleted the uj_stopevents branch January 30, 2026 19:48
Copy link

@saeed3222ad-coder saeed3222ad-coder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SaEEd and it will not be able to do this for a few weeks and it will

Copy link

@saeed3222ad-coder saeed3222ad-coder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • - @image

e271828- added a commit that referenced this pull request Mar 20, 2026
* feat: user journey

* chore: update timestamp and support string/map metadata

* Fix journeylitics hooks and compose analytics tracking

* fix: upgrade benchmark job os to macos-15

* refactor: clean up

* journeylitics: fix global sink handling + press scope unlock; add tests (#231)

* UJ: stopEvents (#232)

* Add stopEvents API for user journey tracking

 - expose stopEvents on IHCaptcha and call it from reset/destroy
  - unregister journey sink to stop event collection
  - document stopEvents in README
  - add unit test for sink removal

* lint

* Update README.md

* feat: update Journeylitics.start to accept Activity and throttle scroll events

---------

Co-authored-by: Aliaksandr Babrykovich <aliaksandr.babrykovich@callstack.com>

* improve event lifecycles for UJ (#234)

- Verify user-journey events clear only on success, persist across tokens without destroy, and require re-setup after destroy

---------

Co-authored-by: Aliaksandr Babrykovich <aliaksandr.babrykovich@callstack.com>
Co-authored-by: Sergiu Danalachi <danalachi.sergiu@gmail.com>
Co-authored-by: e271828- <e271828-@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants