# Migrating to 1.0.0

Release 2026-10-15 moves `context-module`, `device-signer-kit-ethereum` and the BOM / version catalog
(`sdk-bom`, `sdk-version-catalog`) to **1.0.0**. It contains breaking changes. This page lists what to
change in your application.

> **Note:** `device-management-kit` and `signer-utils` only receive fixes (0.0.5) and need no code change, except
> for the `ProductId` change below. Keep all modules on the same BOM version.

## Ethereum Signer

### Cancelled operations return `EthereumErrors.CancelByUser`

When the user rejects a signature or an address check on the device, the failure reason is now
`EthereumErrors.CancelByUser` instead of `ConditionNotSatisfied`.

```kotlin
is DeviceActionResult.Failure -> when (result.reason) {
    EthereumErrors.CancelByUser -> showCancelledByUser() // was: ConditionNotSatisfied
    else -> showError(result.reason)
}
```

### Already signed transactions are accepted

`signTransaction` no longer rejects a transaction that already carries a signature: the signature is
dropped and the transaction is signed again. No change is needed unless you worked around the rejection.

## Context Module

### Transaction checks use the shared `ClearSigningContext.TransactionCheck`

`EthereumClearSigningContext.TransactionCheck` is removed. Match on `ClearSigningContext.TransactionCheck`
instead, as for Solana.

### Solana context request

- `SolanaContextRequest.txCheckSupported` is removed.
- `SolanaContextRequest` now carries `transactionCheckFrom` and `transactionCheckRawTx` to request a
  transaction check. `SolanaContextLoader` can then return `ClearSigningContext.TransactionCheck`.
- `resolveSolanaContextLoader()` now returns a non-null `SolanaContextLoader`: remove any null handling.

## Device Management Kit (Android USB)

`ProductId` is now a data class instead of a value class. Code that relied on value-class semantics
(for example unwrapping it as its underlying value) must construct and read it as a regular class.

## iOS

The generated Koin modules are no longer exported to the Objective-C / Swift framework. Remove any
reference to them from your Swift code.

The Device Management Kit, the signers and the Context Module are shipped in a single
`LedgerDeviceManagementKit` XCFramework. If your project still links `LedgerDMK` or `SignerEth`, replace
them with `LedgerDeviceManagementKit` and `import LedgerDeviceManagementKit`.
