Skip to main content

Available Networks

Access networks enabled in your Dynamic dashboard:
import DynamicSDKSwift

let sdk = DynamicSDK.instance()

// EVM networks (Ethereum, Polygon, Base, etc.)
for network in sdk.networks.evm {
    print("\(network.name) - Chain ID: \(network.chainId.value)")
}

// Solana networks
for network in sdk.networks.solana {
    print("\(network.name)")
}

Get Current Network

func getCurrentNetwork(wallet: BaseWallet) async throws -> String {
    let network = try await sdk.wallets.getNetwork(wallet: wallet)
    return String(describing: network.value.value)
}

Resolve Network Name

func getNetworkName(wallet: BaseWallet) async -> String {
    guard let network = try? await sdk.wallets.getNetwork(wallet: wallet) else {
        return "Unknown"
    }

    let rawId = String(describing: network.value.value)

    if wallet.chain.uppercased() == "EVM" {
        return sdk.networks.evm.first {
            String(describing: $0.chainId.value) == rawId
        }?.name ?? "Chain \(rawId)"
    }

    if wallet.chain.uppercased() == "SOL" {
        return sdk.networks.solana.first {
            String(describing: $0.networkId.value) == rawId
        }?.name ?? rawId
    }

    return rawId
}

Switch Network

func switchNetwork(wallet: BaseWallet, to network: GenericNetwork) async {
    do {
        try await sdk.wallets.switchNetwork(wallet: wallet, network: network)
        print("Switched to \(network.name)")
    } catch {
        print("Failed to switch network: \(error)")
    }
}

Example Usage

// Get first available Polygon network and switch to it
if let polygon = sdk.networks.evm.first(where: { $0.name.contains("Polygon") }) {
    await switchNetwork(wallet: myWallet, to: polygon)
}

Error Handling

do {
    try await sdk.wallets.switchNetwork(wallet: wallet, network: network)
} catch {
    let desc = error.localizedDescription.lowercased()

    if desc.contains("rejected") {
        print("User rejected network switch")
    } else if desc.contains("unsupported") {
        print("Network not supported")
    } else {
        print("Switch failed: \(error)")
    }
}

Next Steps