[{"data":1,"prerenderedAt":142},["ShallowReactive",2],{"doc:\u002Fdocs\u002Fbrowser-and-device-support":3},{"page":4,"toc":135,"updated":141},{"path":5,"title":6,"seoTitle":7,"description":8,"blocks":9},"\u002Fdocs\u002Fbrowser-and-device-support","Browser and device support","Supported Browsers, Devices and Frameworks","The browsers, operating systems, frameworks and server runtimes Fingerly SDKs support, and how privacy-focused browsers are handled.",[10,15,18,49,51,54,56,59,79,82,103,106,133],{"type":11,"level":12,"text":13,"id":14},"heading",2,"Browsers","browsers",{"type":16,"text":17},"p","The browser SDK supports every browser that runs ES2020 with `fetch` and `AbortController`.",{"type":19,"columns":20,"rows":24},"table",[21,22,23],"Browser","Supported","Tested on",[25,29,32,36,39,42,45],[26,27,28],"Chrome and Chromium browsers","Current versions","Chrome 151",[30,27,31],"Edge","",[33,34,35],"Firefox","Current versions, including strict tracking protection","Firefox 154",[37,27,38],"Safari on macOS","Safari 26.5",[40,27,41],"Safari on iOS and iPadOS","iOS 26",[43,27,44],"Brave","Brave with Shields",[46,47,48],"Tor Browser","Current versions, all security levels","Standard and Safest",{"type":16,"text":50},"Serve pages over HTTPS. The SDK runs on insecure pages, but several signals are only available in a secure context. `localhost` counts as secure during development.",{"type":11,"level":12,"text":52,"id":53},"Privacy-focused browsers","privacy-focused-browsers",{"type":16,"text":55},"Browsers that resist fingerprinting are still identified where they allow it, and scored either way. When a browser gives too little to identify anyone, the response has `identifiable: false`, the `fingerprint_suppressed` signal fires, and the request costs less. The SDK never triggers a permission prompt in these browsers either.",{"type":11,"level":12,"text":57,"id":58},"Mobile","mobile",{"type":19,"columns":60,"rows":63},[61,62],"SDK","Minimum",[64,67,70,73,76],[65,66],"[iOS](\u002Fdocs\u002Fsdks\u002Fios)","iOS 13, tvOS 13, Mac Catalyst 13",[68,69],"[Android](\u002Fdocs\u002Fsdks\u002Fandroid)","Android 5.0 (API 21)",[71,72],"[React Native](\u002Fdocs\u002Fsdks\u002Freact-native)","React Native 0.74, iOS 13, Android 5.0",[74,75],"[Flutter](\u002Fdocs\u002Fsdks\u002Fflutter)","Flutter 3.10, iOS 13, Android 5.0",[77,78],"[Lynx](\u002Fdocs\u002Fsdks\u002Flynx)","Lynx 4.1, iOS 13, Android 6.0",{"type":11,"level":12,"text":80,"id":81},"Web frameworks","web-frameworks",{"type":19,"columns":83,"rows":84},[61,62],[85,88,91,94,97,100],[86,87],"[React](\u002Fdocs\u002Fsdks\u002Freact)","React 19",[89,90],"[Next.js](\u002Fdocs\u002Fsdks\u002Fnextjs)","Next.js 15, React 19",[92,93],"[Vue](\u002Fdocs\u002Fsdks\u002Fvue)","Vue 3.3",[95,96],"[Nuxt](\u002Fdocs\u002Fsdks\u002Fnuxt)","Nuxt 3",[98,99],"[Svelte](\u002Fdocs\u002Fsdks\u002Fsvelte)","Svelte 5",[101,102],"[Angular](\u002Fdocs\u002Fsdks\u002Fangular)","Angular 19",{"type":11,"level":12,"text":104,"id":105},"Server","server",{"type":19,"columns":107,"rows":108},[61,62],[109,112,115,118,121,124,127,130],[110,111],"[Node.js](\u002Fdocs\u002Fsdks\u002Fnode)","Node.js 18.16, or any runtime with web `fetch`",[113,114],"[Python](\u002Fdocs\u002Fsdks\u002Fpython)","Python 3.9",[116,117],"[Go](\u002Fdocs\u002Fsdks\u002Fgo)","Go 1.21",[119,120],"[Java](\u002Fdocs\u002Fsdks\u002Fjava)","Java 11",[122,123],"[.NET](\u002Fdocs\u002Fsdks\u002Fdotnet)",".NET 6",[125,126],"[PHP](\u002Fdocs\u002Fsdks\u002Fphp)","PHP 8.1",[128,129],"[Ruby](\u002Fdocs\u002Fsdks\u002Fruby)","Ruby 3.1",[131,132],"[Rust](\u002Fdocs\u002Fsdks\u002Frust)","Rust 1.75, Tokio",{"type":16,"text":134},"Any other language can use the [HTTP API](\u002Freference\u002Foverview) directly.",[136,137,138,139,140],{"id":14,"text":13,"level":12},{"id":53,"text":52,"level":12},{"id":58,"text":57,"level":12},{"id":81,"text":80,"level":12},{"id":105,"text":104,"level":12},"2026-09-17T08:28:36.000Z",1789667797516]