Skip to content

Release v3.0.0

Latest

Choose a tag to compare

@louaySleman louaySleman released this 31 May 20:00
9ddc6e5

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 eventsstartListeningForBatteryChanges() with onBatteryStatusChanged
  • Default launcher dialogrequestDefaultLauncher() 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.0

Breaking 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_HOME intent filter in your app's AndroidManifest.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.03.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 LauncherKitModule contract
  • Add LauncherKitModuleNew (TurboModule) and LauncherKitModuleLegacy (bridge)
  • Add BatteryEventManager for live battery status events
  • Add requestDefaultLauncher via RoleManager with 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 BatteryStatusCallback type and AppEvents.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:dist script 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)

  1. Update the package:

    yarn add react-native-launcher-kit@3.0.0
  2. Rebuild native code:

    cd android && ./gradlew clean && cd ..
    npx react-native run-android
  3. Enable New Architecture (optional, recommended for RN 0.71–0.81):

    # android/gradle.properties
    newArchEnabled=true
  4. Add Android permissions if not already present (see above).

  5. Adopt new APIs (optional):

    • Replace polling getBatteryStatus() with startListeningForBatteryChanges() for live updates
    • Use requestDefaultLauncher() instead of only openSetDefaultLauncher() for better UX

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

Links