SDK
技术栈每一层都有 SDK
面向 iOS、Android 和 Web 的客户端 SDK;面向 Go、Node.js、Python 和 Java 的服务端 SDK。它们共享同一个保证:FortressFlag 出故障也绝不会拖垮你的应用 - 每一次读取都会解析成一个值,而不是抛出异常。
客户端 SDK
iOS (Swift)
swift · spm按设备拉取 flag,并带一份持久的本地缓存:每一次读取先回落到这台设备最后看到的值,再回落到 false - 它还会生成按设备计费所依据的那个稳定、尊重隐私的设备标识,这个标识在你的应用家族中共用,且绝不从硬件标识符推导。
Android (Kotlin)
kotlin · minSdk 26同样的持久缓存和同样的失效安全回落链,用 Kotlin 原生实现:isEnabled 这类方法从不抛异常。它遵循和 iOS 相同的跨平台设备标识契约 - 一个随机的假名标识符,绝不从硬件 ID 推导。
Web / JavaScript
typescript · zero deps面向浏览器的零依赖 TypeScript:没有调用会抛异常,也没有 promise 会 reject - 故障、断网和广告拦截器都会解析成一个值。用 navigator.webdriver 声明自己是自动化的浏览器照常服务,但从不计费。
服务端 SDK
Go
go · zero deps用 ffs_ 服务端密钥轮询 ruleset 导出,并在进程内本地求值 - 每次 flag 判断都不走网络,求值从不返回错误,也从不 panic。
Node.js
typescript · esm · node 22+同样的契约和同样的本地求值,用 TypeScript 写成。仅 ESM,零运行时依赖 - Node 22+ 上的 CommonJS 依然可以用 require() 加载它。轮询器绝不会在你的代码跑完之后还让进程活着。
Python
pure stdlib · 3.11+纯标准库,同步 API 在 asyncio 应用里也是安全的 - 求值就是一次内存读取,没有任何东西要 await。轮询器是守护线程,绝不阻塞解释器退出。
Java
java 17+ · zero deps零依赖,连 JSON 也是 - 有界的解析器就住在 SDK 里,你的依赖树里不会多出任何东西。boolValue 这类 getter 从不抛异常,守护轮询器也绝不阻塞 JVM 退出。