Version 3.0.0 is a major release that brings full React Native New Architecture (TurboModules) support, a complete Kotlin native rewrite, real-time battery monitoring, and a native requestDefaultLauncher() API — while keeping backward compatibility with the legacy bridge on React Native 0.60+.
Highlights
- New Architecture ready — TurboModule + Legacy dual implementation, auto-selected at runtime
- Real-time battery events —
startListeningForBatteryChanges()withonBatteryStatusChanged - Default launcher dialog —
requestDefaultLauncher()via Android RoleManager (API 29+) - Kotlin native layer — modular managers for battery, app install/removal, and launcher utilities
- 52 unit tests + GitHub Actions CI
- Redesigned example app on React Native 0.85 with live battery UI
- Complete README overhaul — use cases, API reference, compatibility matrix, screenshots
Install
npm install react-native-launcher-kit@3.0.0
# or
yarn add react-native-launcher-kit@3.0.0Breaking Changes
Development environment
- Node.js ≥ 20.19.4 required for library development (CI and
@react-native/babel-preset@0.85) - Dev dependencies upgraded to React Native 0.85.3
Source structure
- Internal
src/folders renamed to lowercase:helper/,installedApps/,interfaces/,utils/ - No public API changes — only affects contributors who import internal paths directly
React Native 0.82+
- New Architecture is always enabled on RN 0.82+. The library handles this automatically via
LauncherKitModuleNew.
New Features
Real-time battery monitoring
import { RNLauncherKitHelper } from 'react-native-launcher-kit';
RNLauncherKitHelper.startListeningForBatteryChanges((status) => {
console.log(`${status.level}% — charging: ${status.isCharging}`);
});
RNLauncherKitHelper.stopListeningForBatteryChanges();Request default launcher
// Shows system picker on Android 10+, home chooser on older versions
await RNLauncherKitHelper.requestDefaultLauncher();Requires
CATEGORY_HOMEintent filter in your app'sAndroidManifest.xml. See README.
Improved native reliability
- App listing works without an active Activity (background-safe)
- Alarm app opens on MIUI, Samsung, and stock Android with fallbacks
- Safer event emission with
hasActiveReactInstance()guards
Compatibility
| React Native | Architecture | Supported |
|---|---|---|
| 0.82+ | New Architecture (always enabled) | Yes |
| 0.71 – 0.81 | New Architecture (newArchEnabled=true) |
Yes |
| 0.71 – 0.81 | Legacy Architecture (newArchEnabled=false) |
Yes |
| 0.60 – 0.70 | Legacy (auto-linking) | Yes |
Android Setup (Host App)
Add to your app's AndroidManifest.xml:
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>For launcher apps using requestDefaultLauncher():
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>Release Branch Changes
This release branch (release/v3.0.0) includes the following on top of develop:
| File | Change |
|---|---|
package.json |
Version 2.1.0 → 3.0.0, SEO keywords, updated description |
README.md |
Use cases, full API reference, screenshots, Expo note |
screenshots/ |
Replaced GIF with 3 PNG screenshots |
example/src/App.tsx |
Version label update |
example/yarn.lock |
Dependency sync |
Full Changelog (since v2.1.0)
Architecture & Native
- Migrate Android module to Kotlin with shared
LauncherKitModulecontract - Add
LauncherKitModuleNew(TurboModule) andLauncherKitModuleLegacy(bridge) - Add
BatteryEventManagerfor live battery status events - Add
requestDefaultLauncherviaRoleManagerwith pre-Android 10 fallback - Modernize Android Gradle build for RN 0.82+
- Add alarm intent query in library manifest
JavaScript / TypeScript
- Expand TurboModule codegen spec with battery and launcher methods
- Add
startListeningForBatteryChanges/stopListeningForBatteryChanges - Add
BatteryStatusCallbacktype andAppEvents.BATTERY_STATUS_CHANGED - Colocate unit tests under each module (52 tests total)
- Rename
src/directories to lowercase for Linux CI
Tooling
- Upgrade dev toolchain to React Native 0.85
- Add GitHub Actions CI (lint + test on Node 20)
- Add
build:distscript for npm publish packaging - Require Node ≥ 20.19.4
Example App
- Upgrade to React Native 0.85 scaffold (Android + iOS)
- Redesign UI with live battery monitoring and app detail panel
- Add React Testing Library component tests
Documentation
- Complete README rewrite with compatibility table and API reference
- Add 3 screenshots replacing the demo GIF
Migration Guide (v2.x → v3.0.0)
-
Update the package:
yarn add react-native-launcher-kit@3.0.0
-
Rebuild native code:
cd android && ./gradlew clean && cd .. npx react-native run-android
-
Enable New Architecture (optional, recommended for RN 0.71–0.81):
# android/gradle.properties newArchEnabled=true
-
Add Android permissions if not already present (see above).
-
Adopt new APIs (optional):
- Replace polling
getBatteryStatus()withstartListeningForBatteryChanges()for live updates - Use
requestDefaultLauncher()instead of onlyopenSetDefaultLauncher()for better UX
- Replace polling
No changes required to existing getApps(), launchApplication(), or app install/removal listeners.
Publish
yarn install --frozen-lockfile
yarn lint
yarn test
yarn build:dist
cd dist && npm publish