Browser support
Which browser the SDK is tested in, and what each browser feature it uses is for.
Only Chrome is tested. The SDK's browser tests run in headless Chrome, on a cross-origin isolated page. No other browser runs them, so no other browser is known to work. If your app supports another browser, test it there yourself.
Phones are not tested either. Proving uses every core and a lot of memory. A phone may also pause a tab in the background, which stops a proof that is running.
What a browser must offer
loadNimbusSdk checks for most of these before it loads. If one is missing, it throws a
NimbusSdkError with reason unsupported-browser that names each one.
| Feature | What the SDK uses it for | Checked when it loads |
|---|---|---|
| Cross-origin isolation | Shared memory, so the prover runs on every core | Yes |
WebAssembly | The SDK's cryptography and the prover | Yes |
fetch | Every request to Solana, the services and your site | Yes |
crypto.getRandomValues | Fresh randomness for each payment | Yes |
crypto.subtle | Checking the SHA-256 of the SDK's files | Yes |
indexedDB and IDBKeyRange | The private balance on the device, and the cached circuit files | Yes |
navigator.locks | Stopping two tabs registering at once, and marking which payments are running | Yes |
navigator.storage | Asking the browser to keep the private balance, and reading its quota | Yes |
| Module Web Workers | Running proofs off the page's main thread | No |
sessionStorage or localStorage | Remembering the sign-in, if you keep it for the tab or the browser | No |
navigator.locks.query | Telling a stopped payment from a running one | No |
When a feature is missing
Without module workers, the SDK loads, but the first proof fails.
Without Web Storage, opening a session throws unsupported-browser. This applies only to the tab
and browser stores. The memory store needs no storage.
Without navigator.locks.query, every payment still runs. A sync then cannot tell which stopped
payments to release, so their funds stay reserved until you release them.
Some private windows refuse IndexedDB or Web Storage. The SDK then throws unsupported-browser,
and its message names what the browser refused.
Next
Last updated