FAQ
Frequently asked questions
How is this different from writing a plugin or a platform channel?
Instead of writing native code per API, you select APIs and get typed bindings that call them directly through JNI, objc_msgSend or JSI — no message serialization. Measured per-call costs are on the Compatibility page.
Does generating the whole SDK make my app bigger?
For Flutter, no: unused bindings are tree-shaken, and a release APK using one API is the same size whether one API or the whole SDK was generated. For React Native, yes: Metro bundles everything, so generate only what you use.
What happens with APIs the tool cannot express yet?
They are skipped with a reason code (for example E003 generics, E004 callbacks or blocks) that why-skipped and coverage report. Nothing is silently dropped.
Can I call private or hidden APIs?
No. Hidden and non-SDK Android APIs and private Objective-C selectors are never generated.
Can I publish the generated bindings?
The default policy keeps them in your project. Redistribution has not had legal review; see Legal.
Is it production-ready?
Not yet. It is in beta (0.1.0-beta.1): the vertical slices are tested on an emulator and a simulator, not on physical devices, and generated APIs may change between beta releases.
Where is it published?
The CLI and the Dart runtimes are on pub.dev (native_api_bindgen, native_api_runtime, native_api_ui). Prebuilt CLI binaries are on GitHub Releases and in the Homebrew tap (brew install lkrjangid1/tap/native-api-bindgen). The React Native runtime is on npm as native-api-bindgen-runtime.