> ## Documentation Index
> Fetch the complete documentation index at: https://docs.renaiss.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrate to the EOA beta

> Move from alpha Safe clients or /client/v2 imports to the root EOA SDK.

These migration instructions target `@renaiss-protocol/client@0.1.0-beta.3`, which makes the package root the entry point for the `/v2` HTTP API. It is a breaking prerelease change for the alpha root API. Check [release availability](/quickstart#install) before installing.

## Choose a version

Pin your existing alpha version exactly until you have migrated its wallet and authentication flows. For example, an app using `0.1.0-alpha.2` can keep that release with:

```bash theme={null}
npm install --save-exact @renaiss-protocol/client@0.1.0-alpha.2
```

Do not rely on `^0.1.0-alpha.2` to stay on the alpha API: that range also admits `0.1.0-beta.3`.

After migrating and confirming the beta version is published, install the version these guides cover:

```bash theme={null}
npm install --save-exact @renaiss-protocol/client@0.1.0-beta.3
```

## Existing EOA integrations

Use root imports:

```ts theme={null}
import {
  BNB_TESTNET,
  createGachaClient,
  createMarketplaceClient,
  createRedemptionClient,
} from '@renaiss-protocol/client';
import { signerFrom } from '@renaiss-protocol/client/viem';
```

The `@renaiss-protocol/client/v2` package subpath has been removed. Update every EOA client import to `@renaiss-protocol/client`; there is no compatibility alias. The optional viem adapter stays at `@renaiss-protocol/client/viem`.

Each client requires an explicit `baseUrl`. Pass the matching network and keep all pre-signing validation; changing an import does not change the HTTP routes or approval requirements.

## Existing alpha integrations

| Previous integration | EOA beta |
| - | - |
| `createPublicClient` and `createSecureClient` | Flow-specific Gacha, Marketplace and Redeem clients |
| Renaiss user API key | Your application's account session and EOA signer |
| Safe wallet setup | Direct EOA ownership and action signatures |
| Builder key in secure-client options | Server-side builder key or an authenticated backend proxy |
| Shipping access | Explicit wallet verification and a scoped in-memory session |

`createPublicClient`, `createSecureClient`, `createBuilderClient` and `createSigningClient` are no longer exported. Safe addresses and v1 signatures cannot be reused as EOA signing payloads. The SDK does not transfer assets out of an existing Safe.

## Remove configuration requests

| Removed call or field | Replacement |
| - | - |
| `fetchMarketplaceConfig()` | Selected network's `.marketplace` constants |
| `fetchRedemptionConfig()` | Selected network's `.redemption` constants |
| Config response `walletSessionUri` | Explicit `walletSessionIssuer` client option |

Remove the loading and error states for the two `/config` endpoints. Keep server calls for shipping eligibility, quotes and checkout preparation. Update the SDK when network constants change; never substitute an unexpected response value to bypass signing validation.

## Shipping verification

Register your frontend's exact origins and configure the API issuer separately. Pass `origin` to `connectRedemptionWallet`. The readable shipping challenge includes validation metadata in the nonce response's `context`; sign the original message without appending that metadata.

The current SDK also accepts the previous challenge format with signed SIWE resources. Upgrade the SDK before switching the API to the readable format. Follow [authentication](/authentication) for timing, logout and wallet-change handling.

## Validate before switching traffic

Test each enabled flow with a wallet that has no Renaiss account. Cover a price change, rejected signature, expired shipping challenge, wallet/chain switch and a lost response after payment. Reconcile an uncertain transaction before allowing another submission.

Use [testnet](/contracts) first. When switching to mainnet, update the network constants, API base URL, builder credential and wallet-session issuer together.
