Skip to content

Release v1.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 22 Oct 05:40
· 15 commits to main since this release
dda01a7

clerk-android-api 1.3.0, clerk-android-ui 1.3.0 and clerk-android-telemetry 1.1.2.

Security

  • The SDK refuses the eight compromised eMudhra intermediate certificates (CVE-2026-111943, #1163). The Frontend API client and the default telemetry client fail the TLS handshake when the server's chain holds one of them, before any request is sent. This follows OkHttp's mitigation. It matters on devices without Google Play Services, which Google's automatic update doesn't reach.
  • proxyUrl must be an https URL (#1135). Clerk.initialize now throws IllegalArgumentException when proxyUrl uses http, has no scheme or host, or contains credentials, a query or a fragment. The API client also refuses cleartext connections.

Behaviour changes

  • An app that sets proxyUrl to an http:// URL crashes at Clerk.initialize (#1135). Use an https proxy, including in development.
  • NativeMagicLinkManager gains an abstract startEmailLinkSignIn(email, emailAddressId) (#1159). The SDK only uses its own implementation. A third-party implementation of the interface would need to add the method.

Deprecations

  • The Clerk.publishableKey setter (#1142). It never reconfigured the SDK. Use Clerk.switchConfiguration(context, publishableKey). The getter is unchanged.

New

  • Session.hasMaximumLifetime tells sessions with no maximum lifetime (expireAt == 0) apart from ones with a deadline (#960).
  • Clerk.auth.startEmailLinkSignIn(email, emailAddressId) sends the link to a specific email address (#1159).

Fixes

  • Sign-in:
    • The email link goes to the address the user picked, not the first one listed (#1159, fixes #1158).
    • The code field no longer shows Verifying when there is no sign-in (#1161).
  • Sessions:
    • Proactive token refresh starts when a session becomes active after initialize, and no longer polls pending sessions (#1136).
    • When organization selection is forced, the SDK switches to another session without an organization (#1134).
  • Biometrics:
    • Keystore failures return as ClerkResult.Failure instead of throwing (#1130).
    • The prebuilt profile forgets local biometric credentials when it deletes an account (#1132).
  • Organizations:
    • Organization screens keep their state across rotation (#1139).
    • OrganizationSwitcher reloads its account list after creating an organization (#1116).
    • A pending invitation shows the role name (#1117).
    • Domains and members empty states are inset (#1107).
  • UI:
    • Setup-MFA backup codes are shown before the next session task (#1083).
    • Long text field values stay on one line (#1120).
    • A disabled ClerkButton fades once, in its own colours, and the Add domain row is themed (#1137).
  • Dependencies:
    • androidx.test no longer reaches app classpaths (#1131).
    • kotlinx-serialization-json is updated to 1.12.0 (#1155).

Telemetry 1.1.2

  • The default client refuses the compromised eMudhra intermediates (#1163).
  • Event throttling no longer swallows coroutine cancellation (#1157).
All changes

What's Changed

  • fix(ui): inset the organization domains and members empty states by @mikepitre in #1107
  • docs(verify): show a before and after of every screen a change touches by @mikepitre in #1110
  • ci: restore the Gradle home on pull requests through setup-gradle alone by @mikepitre in #1111
  • docs(verify): map the organization profile and fix drift in the Android verify skill by @mikepitre in #1112
  • fix(verify): pair each missing before screenshot with its own test, and make a remote before run by @mikepitre in #1113
  • fix(verify): pair a before failure screenshot by full spec path by @mikepitre in #1114
  • fix(ui): show the role name on a pending invitation by @mikepitre in #1117
  • fix(verify): wait out the iOS frame lag after host.fill types by @mikepitre in #1115
  • feat(verify): post only the marked part of an evidence video, paced for a reviewer by @mikepitre in #1118
  • fix(ui): reload OrganizationSwitcher's account list after it creates an organization by @mikepitre in #1116
  • test(ui): record the invitations tab golden with the role name by @mikepitre in #1121
  • test(ui): fail every Coil load in snapshot tests so avatars render the same every run by @mikepitre in #1123
  • ci: compare Paparazzi snapshots in the PR unit-test job by @mikepitre in #1122
  • test(verify): seed organizations from specs to reach the verified-domains empty state and the Requests tab by @mikepitre in #1124
  • ci: post to Slack when a failed check blocks a release by @mikepitre in #1125
  • feat(verify): draw each tap in the posted evidence video by @mikepitre in #1126
  • test(verify): run the Android lanes with animations on by @mikepitre in #1127
  • fix(ui): show setup-MFA backup codes before the next session task by @claude[bot] in #1083
  • fix(verify): keep tap pulses ahead of the change in remote and edge cases, and add host.back by @mikepitre in #1128
  • test(verify): accept a recorder start answer a few milliseconds short of its wait by @mikepitre in #1144
  • test(verify): type short, readable names and passwords in the e2e specs by @mikepitre in #1143
  • test(verify): tighten the recorder start lower bound to 95 ms by @mikepitre in #1145
  • ci: split the :source:ui unit tests into two parallel jobs by @mikepitre in #1146
  • ci: run every workflow on GitHub's free runners by @mikepitre in #1148
  • fix(verify): upload e2e evidence when the runs directory holds a run tag claim by @mikepitre in #1147
  • ci: fail a PR that changes English text without its translations by @mikepitre in #1150
  • docs(agents): put PR evidence in the description, in before and after tables by @mikepitre in #1152
  • fix(verify): bound run timeouts and keep doctor checks when a probe fails by @mikepitre in #1153
  • test(e2e): clean up the timeout test's child in finally by @mikepitre in #1156
  • build(detekt): flag suspend code that swallows cancellation by @mikepitre in #1157
  • fix(ui): send the sign-in email link to the address the user picked by @swolfand in #1159
  • ci: release clerk-android-api to Maven Central on dispatched releases by @swolfand in #1129
  • chore(deps): keep androidx.test out of app classpaths and tidy the version catalog by @swolfand in #1131
  • fix(api): return biometric Keystore failures as ClerkResult instead of throwing by @swolfand in #1130
  • test(api): refuse shared-session snapshot to differently signed siblings and pin the keystore fallback by @swolfand in #1141
  • fix(ui): keep organization screens' state across rotation by @swolfand in #1139
  • fix(api): switch to another session without an organization when organization selection is forced by @swolfand in #1134
  • fix(api): require an https proxyUrl and refuse cleartext connections by @swolfand in #1135
  • fix(ui): forget local biometric credentials when the prebuilt profile deletes an account by @swolfand in #1132
  • feat(api): expose whether sessions have a maximum lifetime by @swolfand in #960
  • fix(api): start token refresh when a session becomes active after initialization by @swolfand in #1136
  • fix(api): deprecate the Clerk.publishableKey setter and stop reading Clerk.client through runCatching by @swolfand in #1142
  • ci: assemble telemetry, the workbench and the quickstart and custom-flows samples on pull requests by @swolfand in #1138
  • fix(ui): fade a disabled ClerkButton once, in its own colours, and theme the Add domain row by @swolfand in #1137
  • fix(ui): keep the sign-in code field out of Verifying when there is no sign-in by @swolfand in #1161
  • chore(deps): update gradle to v9.8.2 by @renovate[bot] in #1154
  • fix(deps): update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.12.0 by @renovate[bot] in #1155
  • fix(deps): update asm to v9.11.1 by @renovate[bot] in #1151
  • fix(ui): keep long text field values on one line by @MatrixAlain in #1120
  • fix(api): refuse servers that present the compromised eMudhra intermediates by @swolfand in #1163
  • chore(release): bump clerk-android to 1.3.0 and telemetry to 1.1.2 by @swolfand in #1164

New Contributors

Full Changelog: v1.2.1...v1.3.0