Skip to content

feat: react native 87 support + chore work - #7

Merged
troZee merged 9 commits into
mainfrom
feat/rn-87-support
Aug 21, 2026
Merged

feat: react native 87 support + chore work#7
troZee merged 9 commits into
mainfrom
feat/rn-87-support

Conversation

@troZee

@troZee troZee commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

@troZee
troZee requested a lite review from Copilot August 20, 2026 17:00

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the library and example app to support React Native 0.87, modernizing the iOS Hermes integration and refreshing the example’s iOS/Android build tooling, while adding an Android-focused Maestro E2E regression flow.

Changes:

  • Refactor iOS native module to use CallInvoker + Hermes IHermes interface and start observing timezone changes when the TurboModule is initialized.
  • Upgrade the example app to React Native 0.87.0 (plus related iOS/Android project updates).
  • Add a Maestro Android regression flow and a root e2e:android script to run it.

Reviewed changes

Copilot reviewed 20 out of 22 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
skills-lock.json Adds skill lock metadata for the Maestro testing skill.
package.json Adds e2e:android script for running the new Maestro flow.
lefthook.yml Removes commit-msg commitlint hook configuration.
ios/TimezoneHermesFix.mm Migrates to CallInvoker-based runtime access and Hermes IHermes timezone reset API; adjusts notification handling.
example/src/App.tsx Simplifies StatusBar usage in the example UI.
example/package.json Bumps React/React Native and adds lint/test tooling for the example app.
example/jest.config.js Switches Jest preset to @react-native/jest-preset.
example/ios/TimezoneHermesFixExample/PrivacyInfo.xcprivacy Updates accessed API categories/reasons entries.
example/ios/TimezoneHermesFixExample/Info.plist Adds iPad-specific supported orientations.
example/ios/TimezoneHermesFixExample.xcodeproj/project.pbxproj Updates Xcode project settings/build phases for RN 0.87 toolchain expectations.
example/ios/Podfile.lock Updates CocoaPods lockfile for RN 0.87 pod graph and facades.
example/ios/Podfile Removes explicit RCT_NEW_ARCH_ENABLED environment toggle.
example/index.js Adds global LogBox suppression (currently too broad).
example/android/gradle/wrapper/gradle-wrapper.properties Updates Gradle wrapper distribution version.
example/android/gradle.properties Enables edge-to-edge and adds AGP opt-out flags.
example/android/build.gradle Updates SDK/build tools and Kotlin version declarations.
example/android/app/src/main/AndroidManifest.xml Makes usesCleartextTraffic configurable via placeholder (currently unresolved).
example/android/app/build.gradle Updates default Proguard config file for release builds.
.maestro/timezone-refresh.android.yaml Adds Android Maestro flow validating Hermes timezone cache refresh after system timezone change.
.agents/skills/maestro-mobile-testing/SKILL.md Adds a Maestro testing skill document used by agents.
Suppressed comments (1)

.maestro/timezone-refresh.android.yaml:93

  • This assertion matches a fully formatted locale-dependent time string (from toLocaleTimeString()), which is likely to vary by device locale / 12h vs 24h settings and can make the flow flaky. Assert the stable offset value relative to the timezone label instead.
- assertVisible: '6:50:36 AM - TimezoneOffset 420'

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread example/android/app/src/main/AndroidManifest.xml
Comment thread .maestro/timezone-refresh.android.yaml Outdated
Comment thread example/index.js
@troZee
troZee requested a lite review from Copilot August 20, 2026 17:10

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 22 changed files in this pull request and generated 1 comment.

Suppressed comments (1)

example/index.js:5

  • LogBox.ignoreAllLogs() disables all React Native LogBox warnings for the example app, which can hide actionable warnings/errors during development and when validating this library in the example.

Prefer removing this, or at least scoping it to specific noisy messages under __DEV__ with LogBox.ignoreLogs([...]).

import { LogBox } from 'react-native';
LogBox.ignoreAllLogs();

Comment thread example/android/app/build.gradle
@troZee
troZee requested a lite review from Copilot August 20, 2026 18:33

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 21 out of 24 changed files in this pull request and generated no new comments.

Suppressed comments (4)

example/index.js:5

  • LogBox.ignoreAllLogs() suppresses all warnings/errors, which can mask real issues when validating the example app (and makes debugging failing E2E runs harder). It’s better to remove it, or ignore only specific known-noisy warnings behind a dev-only guard.
import { AppRegistry } from 'react-native';
import App from './src/App';
import { name as appName } from './app.json';
import { LogBox } from 'react-native';
LogBox.ignoreAllLogs();

example/android/app/build.gradle:88

  • usesCleartextTraffic is now configurable via a manifest placeholder, but it’s still set to "true" in defaultConfig, which applies to release builds too. Consider defaulting cleartext traffic to false for release builds (keep it enabled only for debug/devserver) to avoid shipping an insecure network policy in the example app.
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"
        manifestPlaceholders = [usesCleartextTraffic: "true"]
    }

README.md:11

  • The support matrix now references a 0.5.x release line, but the package.json in this PR is still versioned at 0.4.0. Please align the README with the version you intend to publish (either bump the package version/release notes, or adjust the table to match the current versioning).
| 0.1.x - 0.3.x   | 0.80.2 - 0.81.x      |
| 0.4.x           | 0.82.x - 0.86.x      |
| 0.5.x           | 0.87.x and above     |

README.md:11

  • This library is consumed via TurboModuleRegistry.getEnforcing(...) (TurboModule/New Architecture). The README currently reads like a general drop-in native module; please document that it requires Hermes and the React Native New Architecture (TurboModules) to be enabled so users don’t hit runtime module-not-found crashes.
## 🚀 React Native Support

| Library Version | React Native Version |
| --------------- | -------------------- |
| 0.1.x - 0.3.x   | 0.80.2 - 0.81.x      |
| 0.4.x           | 0.82.x - 0.86.x      |
| 0.5.x           | 0.87.x and above     |

@troZee
troZee merged commit 0bcd39b into main Aug 21, 2026
11 checks passed
@troZee
troZee deleted the feat/rn-87-support branch August 21, 2026 04:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants