@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.