Web extensions
How to use the SDK in MV3 Chrome extensions with persistent permit storage.
Steps
1. Understand the problem
2. Use chromeSessionStorage for permit persistence
chromeSessionStorage for permit persistenceimport { ZamaSDK, indexedDBStorage, chromeSessionStorage } from "@zama-fhe/sdk";3. Configure the SDK with both storage backends
import { createConfig } from "@zama-fhe/sdk/viem";
import { web } from "@zama-fhe/sdk/web";
import { sepolia, type FheChain } from "@zama-fhe/sdk/chains";
const mySepolia = {
...sepolia,
relayerUrl: "https://your-app.com/api/relayer/11155111",
} as const satisfies FheChain;
const config = createConfig({
chains: [mySepolia],
publicClient,
walletClient,
storage: indexedDBStorage, // encrypted transport key pair — persistent
permitStorage: chromeSessionStorage, // signed permits — ephemeral
relayers: { [mySepolia.id]: web() },
});
const sdk = new ZamaSDK(config);4. Benefits of this setup
5. Browser close behavior
Next steps
Last updated