@snapcap/native

A browser-free Snapchat client.

Native Node bridge to web.snapchat.com. No Playwright, no Frida, no rooted phone.

Pure Node, no browser

Loads Snap's web JavaScript bundle and 814 KB of WASM directly in Node, with happy-dom shimming the Chrome APIs the bundle expects. No Playwright. No headless Chromium. No emulator.

Native attestation

Runs Snap's kameleon Emscripten module in Node and generates the same attestation token a real browser would. Snap's anti-fraud accepts it because it's the actual code path, not a forgery.

Browser-shaped persistence

Hand the client a DataStore — file, memory, Redis, KMS, whatever — and cookies plus the bundle's sandboxed local/session/IndexedDB writes (including its own wrapped E2E identity) all land under stable keys. Cold start ~5 s; warm start ~100 ms.

gRPC-Web for free

Every Snap RPC client and protobuf encoder/decoder is shipped in the bundle. snapcap reuses them in-place — no .proto files, no codegen, no schema drift.

One-line API

await client.authenticate() then client.friends.list(). Login, bearer rotation, cookie jar, and gRPC framing all live under the surface.

Multi-account ready

Each SnapcapClient owns its own per-instance Sandbox — vm.Context, happy-dom Window, shimmed I/O, bundle bring-up caches. One Node process drives many accounts simultaneously, each with its own DataStore and browser fingerprint, at a fraction of the memory Playwright would burn.

Released under the MIT license.