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.