Migration from removed client APIs¶
Release v0.4.0 replaced controller-owned client state with explicit platform, flow, transport, and application layers. The new shape makes trust and lifecycle ownership visible but requires coordinated source changes.
| Removed integration | Replacement |
|---|---|
webauthn-client-android / webauthn-client-ios |
webauthn-client-platform, normally constructed via webauthn-client-defaults |
webauthn-network-ktor-client |
webauthn-client-ktor-kotlinx, or neutral webauthn-client-ktor with a custom codec |
PasskeyController |
PasskeyFlow plus application-owned UI state |
PasskeyServerClient |
RegistrationBackend and AuthenticationBackend |
rememberPasskeyController |
rememberPasskeyFlow plus product state |
PasskeyFinishResult |
Default-contract result or your own backend output type |
| Parsed platform responses | RawRegistrationResponse and RawAuthenticationResponse |
Migration order¶
- Align all artifacts to the same release and replace removed coordinates.
- Construct
PasskeyClientthrough platform defaults. - Move start and finish HTTP calls into backend contract implementations.
- Replace controller presentation state with screen/view-model state.
- Map
CeremonyFailure.PlatformandAlreadyInProgressdeliberately. - Let backend and callback exceptions follow your application policy.
- Update the server finish boundary to accept raw responses and derive signed client data internally.
- Run registration and authentication across each supported app identity and backend version.
Behavioral differences to test¶
- Concurrent calls are rejected rather than queued.
- User cancellation stays a typed platform failure.
- Backend exceptions are not automatically converted into a library transport error.
- Opaque backend continuation state must survive start → finish unchanged.
- The application owns loading, prompt, finishing, navigation, and retry state.
For release details, read the changelog.