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

# V0.4.0

# Monaco Protocol SDK v0.4.0

## Custom RPC Configuration & Network Flexibility

This release introduces configurable RPC endpoints and custom network support, giving developers full control over their infrastructure and network connectivity.

### What's New

**Required RPC Configuration**

* **Custom RPC Endpoint**: `seiRpcUrl` is now a required parameter when initializing the SDK
* **Rate Limit Control**: Each application can now use their own RPC provider to avoid shared rate limits
* **Network Flexibility**: Pass custom Monaco network configurations for different environments

**Breaking Changes**

* The SDK now requires `seiRpcUrl` to be provided during initialization
* This change affects all SDK instantiations in both TypeScript and React packages

### Why This Change?

Public RPC endpoints are heavily rate-limited and can cause reliability issues in production applications. By requiring each application to configure their own RPC provider, Monaco SDK enables:

* **Better Performance**: Dedicated RPC endpoints provide consistent performance
* **No Rate Limiting**: Avoid throttling from shared public endpoints
* **Production Ready**: Use premium RPC providers for mission-critical applications
* **Custom Infrastructure**: Full control over your blockchain connectivity

### Technical Details

**TypeScript SDK - New Initialization**

```typescript theme={null}
import { MonacoSDK } from '@0xmonaco/core';
import { createWalletClient, custom } from 'viem';
import { seiTestnet } from 'viem/chains';

const walletClient = createWalletClient({
  chain: seiTestnet,
  transport: custom(window.ethereum)
});

// New: seiRpcUrl is now required
const sdk = new MonacoSDK({
  walletClient,
  network: 'testnet',
  seiRpcUrl: 'https://evm-rpc.sei-apis.com' // Your RPC endpoint
});
```

**React Package - MonacoProvider Updates**

```typescript theme={null}
import { MonacoProvider } from '@0xmonaco/react';

function App() {
  return (
    <MonacoProvider
      clientId="your-client-id"
      network="testnet"
      seiRpcUrl="https://evm-rpc.sei-apis.com" // Your RPC endpoint
    >
      <YourApp />
    </MonacoProvider>
  );
}
```

**Custom Network Configuration**

For advanced use cases, you can now pass custom network configurations:

```typescript theme={null}
import { MonacoSDK, MonacoNetwork } from '@0xmonaco/core';

const customNetwork: MonacoNetwork = {
  apiBaseUrl: 'https://your-custom-api.com',
  wsBaseUrl: 'wss://your-custom-ws.com',
  chainId: 1328, // Sei testnet
  vaultAddress: '0x...',
};

const sdk = new MonacoSDK({
  walletClient,
  network: customNetwork, // Pass custom network object
  seiRpcUrl: 'https://your-rpc-provider.com'
});
```

### RPC Provider Options

You can use various RPC providers for Sei:

**Sei Public RPCs** (Rate Limited)

* Testnet: `https://evm-rpc.sei-apis.com`
* Mainnet: `https://evm-rpc.sei-apis.com` (update to mainnet endpoint)

**Recommended Providers** (For Production)

* See [Sei's official RPC providers list](https://docs.sei.io/learn/rpc-providers) for recommended providers
* Self-hosted Sei nodes for maximum control

### Migration from v0.3.x

**Before (v0.3.x)**

```typescript theme={null}
const sdk = new MonacoSDK({
  walletClient,
  network: 'testnet'
});
```

**After (v0.4.0)**

```typescript theme={null}
const sdk = new MonacoSDK({
  walletClient,
  network: 'testnet',
  seiRpcUrl: 'https://evm-rpc.sei-apis.com' // Required
});
```

**React Migration**

**Before (v0.3.x)**

```typescript theme={null}
<MonacoProvider 
  clientId="your-client-id"
  network="testnet"
>
  <App />
</MonacoProvider>
```

**After (v0.4.0)**

```typescript theme={null}
<MonacoProvider 
  clientId="your-client-id"
  network="testnet"
  seiRpcUrl="https://evm-rpc.sei-apis.com"
>
  <App />
</MonacoProvider>
```

### Environment Variables Best Practice

Store your RPC URL in environment variables:

```typescript theme={null}
// .env
VITE_SEI_RPC_URL=https://evm-rpc.sei-apis.com

// Your code
const sdk = new MonacoSDK({
  walletClient,
  network: 'testnet',
  seiRpcUrl: import.meta.env.VITE_SEI_RPC_URL
});
```

### Packages Updated

* `@0xmonaco/core@0.4.0`
* `@0xmonaco/types@0.4.0`
* `@0xmonaco/contracts@0.4.0`
* `@0xmonaco/react@0.4.0`

### Installation

```bash theme={null}
npm install @0xmonaco/core@0.4.0
npm install @0xmonaco/react@0.4.0  # For React applications
```

### Breaking Changes Summary

| Change | Impact | Migration |
| - | - | - |
| `seiRpcUrl` now required | High - Affects all SDK initializations | Add `seiRpcUrl` parameter to SDK constructor |
| `network` parameter enhanced | Low - Backward compatible | Optionally use custom network objects |

### Documentation Updates

* [Build a Trading App](/examples/build-trading-app) - Integration guide with RPC configuration
* [Quickstart](/quickstart) - New SDK initialization examples
* [TypeScript SDK](/sdk/typescript/intro) - Complete setup guide
* [React SDK](/sdk/react/intro) - MonacoProvider configuration

### Related Changes

This SDK release corresponds to infrastructure improvements:

* Better separation between Monaco API and blockchain RPC
* Improved reliability through dedicated RPC endpoints
* Foundation for multi-network support
* Enhanced developer control over infrastructure

### Support

If you need help choosing an RPC provider or configuring your SDK, join our Discord community or contact the Monaco Protocol team.

***

*Note: While public Sei RPCs work for development and testing, we strongly recommend using a dedicated RPC provider for production applications to ensure reliability and performance.*


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.