Skip to content

feat: user journey#221

Merged
e271828- merged 12 commits intomainfrom
feature/user-journey
Mar 20, 2026
Merged

feat: user journey#221
e271828- merged 12 commits intomainfrom
feature/user-journey

Conversation

@CAMOBAP
Copy link
Copy Markdown
Collaborator

@CAMOBAP CAMOBAP commented Nov 16, 2025

No description provided.

@CAMOBAP CAMOBAP self-assigned this Nov 16, 2025
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Nov 16, 2025

Diffuse report:

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

 AAR      │ old       │ new       │ diff      
──────────┼───────────┼───────────┼───────────
      jar │  65.6 KiB │  94.7 KiB │ +29.1 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 │ 145.2 KiB │ 174.3 KiB │ +29.1 KiB 

 JAR     │ old │ new │ diff           
─────────┼─────┼─────┼────────────────
 classes │  40 │  61 │  +21 (+21 -0)  
 methods │ 603 │ 800 │ +197 (+203 -6) 
  fields │ 188 │ 270 │  +82 (+82 -0)
AAR
 size     │ diff      │ path          
──────────┼───────────┼───────────────
 94.7 KiB │ +29.1 KiB │ ∆ classes.jar 
──────────┼───────────┼───────────────
 94.7 KiB │ +29.1 KiB │ (total)
JAR
CLASSES:

   old │ new │ diff         
  ─────┼─────┼──────────────
   40  │ 61  │ +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           
  ─────┼─────┼────────────────
   603 │ 800 │ +197 (+203 -6) 
  
  + com.hcaptcha.sdk.HCaptcha access_200(HCaptcha) → InMemorySink
  + com.hcaptcha.sdk.HCaptcha access_300(HCaptcha, long)
  + com.hcaptcha.sdk.HCaptcha access_400(HCaptcha) → Handler
  + com.hcaptcha.sdk.HCaptcha access_500(HCaptcha, Object)
  + com.hcaptcha.sdk.HCaptcha access_600(HCaptcha, HCaptchaException)
  + 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, HCaptchaRenderMode, String, String, Boolean, IHCaptchaRetryPredicate, long, Boolean, Boolean, Boolean)
  + com.hcaptcha.sdk.HCaptchaConfig access_1700() → 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 clearEvents()
  + com.hcaptcha.sdk.journeylitics.InMemorySink emit(JLEvent)
  + com.hcaptcha.sdk.journeylitics.InMemorySink getAndClearEvents() → List
  + com.hcaptcha.sdk.journeylitics.InMemorySink getEvents() → 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() → bo
...✂

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Nov 16, 2025

Benchmark report:

Test name Time ms. (median) Allocations (median)
com.hcaptcha.sdk.HCaptchaBenchmarkTest.EMULATOR_UNLOCKED_benchmarkInvisibleVerification +705.09 +918
com.hcaptcha.sdk.HCaptchaBenchmarkTest.EMULATOR_UNLOCKED_benchmarkInvisibleVerificationColdRun +831.75 +1442
com.hcaptcha.sdk.HCaptchaBenchmarkTest.EMULATOR_UNLOCKED_benchmarkInvisibleSetup +6.49 +514
com.hcaptcha.sdk.HCaptchaDebugInfoTest.EMULATOR_UNLOCKED_benchmarkDebugInfo -12.20 -5535
com.hcaptcha.sdk.HCaptchaDebugInfoTest.EMULATOR_UNLOCKED_benchmarkDebugSys +63.10 +2

@CAMOBAP CAMOBAP force-pushed the feature/user-journey branch from e504325 to 0318e64 Compare November 23, 2025 23:19
@CAMOBAP CAMOBAP marked this pull request as ready for review January 19, 2026 07:41
@CAMOBAP CAMOBAP requested review from DSergiu and e271828- January 19, 2026 07:41
@CAMOBAP CAMOBAP force-pushed the feature/user-journey branch from e9dc40c to cdba194 Compare January 19, 2026 19:46
Comment thread compose-sdk/src/main/java/com/hcaptcha/sdk/journeylitics/ComposeAnalytics.kt Outdated
Comment thread sdk/src/main/java/com/hcaptcha/sdk/journeylitics/InMemorySink.java Outdated
Comment thread sdk/src/main/java/com/hcaptcha/sdk/journeylitics/InMemorySink.java Outdated
Comment thread sdk/src/main/java/com/hcaptcha/sdk/HCaptcha.java Outdated
Comment thread sdk/build.gradle Outdated
e271828- and others added 3 commits January 30, 2026 14:48
* 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>
- Verify user-journey events clear only on success, persist across tokens without destroy, and require re-setup after destroy
# Conflicts:
#	example-app/src/main/java/com/hcaptcha/example/MainActivity.java
#	example-app/src/main/res/layout/activity_main.xml
#	example-app/src/main/res/values/strings.xml
#	example-compose-app/src/main/java/com/hcaptcha/example/compose/ComposeActivity.kt
#	sdk/src/main/java/com/hcaptcha/sdk/HCaptcha.java
@e271828- e271828- merged commit 390918a into main Mar 20, 2026
12 checks passed
@e271828- e271828- deleted the feature/user-journey branch March 20, 2026 12:09
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