Android Native Modules

React Native 8 min min read Updated: Aug 03, 2026 Advanced
Android Native Modules
Advanced Topic 6 of 18

Android Native Modules

Writing a custom Android native module allows you to expose Java or Kotlin functionality directly to your React Native JavaScript code. This tutorial walks through creating a basic Android native module.

Creating the Native Module Class

java public class ToastModule extends ReactContextBaseJavaModule { ToastModule(ReactApplicationContext context) { super(context); } @Override public String getName() { return "ToastModule"; } @ReactMethod public void show(String message) { Toast.makeText(getReactApplicationContext(), message, Toast.LENGTH_SHORT).show(); } }

Registering the Module Package

java public class ToastPackage implements ReactPackage { @Override public List createNativeModules(ReactApplicationContext context) { return Collections.singletonList(new ToastModule(context)); } }

Adding the Package to MainApplication

java @Override protected List getPackages() { List packages = new PackageList(this).getPackages(); packages.add(new ToastPackage()); return packages; }

Calling the Module from JavaScript

javascript import { NativeModules } from 'react-native'; const { ToastModule } = NativeModules; ToastModule.show('Hello from Android!');

Returning Values with Promises

java @ReactMethod public void getDeviceName(Promise promise) { promise.resolve(Build.MODEL); }

Rebuilding the App

After adding or modifying native modules, you must fully rebuild the Android app rather than relying on Fast Refresh, since native code changes require recompilation.

bash npx react-native run-android

Conclusion

Writing custom Android native modules allows you to expose Java or Kotlin functionality directly to your React Native JavaScript code, enabling access to platform-specific capabilities not available through pure JavaScript.

Get Newsletter

Subscibe to our newsletter and we will notify you about the newest updates on Edugators