Skip to content

feat: migrate to vanilla RN app and upgrade to 0.87 - #1158

Merged
troZee merged 4 commits into
masterfrom
feat/rn-87-vanilla
Oct 8, 2026
Merged

troZee merged 4 commits into
masterfrom
feat/rn-87-vanilla

Conversation

@krozniata

@krozniata krozniata commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

Summary

Migrates example to vanilla RN app and upgrades it to v0.87.1

Also fixes Typescript in example as it was missing tsconfig

Test Plan

What's required for testing (prerequisites)?

What are the steps to reproduce (after prerequisites)?

Compatibility

OS Implemented
iOS ✅❌
Android ✅❌

Checklist

  • I have tested this on a device and a simulator
  • I added the documentation in README.md
  • I updated the typed files (TS and Flow)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🔵 Needs a closer look

The broad native-project replacement requires human validation, and the new iOS launch screen still displays an inconsistent temporary app name.

Review effort: Balanced
Findings: 1 Medium severity

Open (1)
What changed in this PR

Migrates the example from React Native Test App to standalone React Native 0.87.1 Android and iOS projects, while updating library tooling and codegen APIs.

Changes:

  • Adds vanilla Android and iOS example projects and removes visionOS support.
  • Upgrades React Native, React, TypeScript, navigation, and testing dependencies.
  • Updates Metro, Babel, TypeScript, linting, native dependencies, and CI builds.
File Description
tsconfig.json Updates TypeScript and module resolution settings.
src/​PagerViewNativeComponent.ts Uses public React Native codegen exports.
package.json Upgrades tooling and Jest configuration.
example/​visionos/​Podfile.lock Removes the visionOS lockfile.
example/​visionos/​Podfile Removes visionOS CocoaPods configuration.
example/​src/​component/​NavigationPanel/​types.ts Replaces an alias with a relative import.
example/​react-native.config.js Configures local library autolinking.
example/​package.json Upgrades and simplifies example dependencies.
example/​metro.config.js Adds monorepo-aware Metro configuration.
example/​ios/​PrivacyInfo.xcprivacy Removes the obsolete privacy manifest location.
example/​ios/​Podfile.lock Locks React Native 0.87 iOS dependencies.
example/​ios/​Podfile Adds vanilla React Native CocoaPods setup.
example/​ios/​PagerViewExample/​PrivacyInfo.xcprivacy Normalizes the app privacy manifest.
example/​ios/​PagerViewExample/​LaunchScreen.storyboard Adds the iOS launch screen.
example/​ios/​PagerViewExample/​Info.plist Adds iOS application metadata.
example/​ios/​PagerViewExample/​AppDelegate.swift Adds the React Native iOS entry point.
example/​ios/​PagerViewExample.xcworkspace/​contents.xcworkspacedata References the standalone Xcode project.
example/​ios/​PagerViewExample.xcodeproj/​xcshareddata/​xcschemes/​PagerViewExample.xcscheme Adds the shared Xcode scheme.
example/​ios/​PagerViewExample.xcodeproj/​project.pbxproj Defines the native iOS application project.
example/​index.js Registers the example component directly.
example/​Gemfile.lock Updates locked Ruby tooling.
example/​Gemfile Adds Ruby standard-library dependencies.
example/​babel.config.js Switches to the Worklets Babel plugin.
example/​app.json Removes React Native Test App configuration.
example/​android/​settings.gradle Adds vanilla React Native Gradle settings.
example/​android/​gradlew.bat Updates the Windows Gradle wrapper script.
example/​android/​gradlew Updates the Unix Gradle wrapper script.
example/​android/​gradle/​wrapper/​gradle-wrapper.properties Upgrades Gradle.
example/​android/​gradle.properties Updates React Native Android build properties.
example/​android/​build.gradle Adds the standalone Android root build.
example/​android/​app/​src/​main/​res/​values/​styles.xml Adds the Android application theme.
example/​android/​app/​src/​main/​res/​values/​strings.xml Adds the Android application name.
example/​android/​app/​src/​main/​res/​drawable/​rn_edit_text_material.xml Adds React Native edit-text styling.
example/​android/​app/​src/​main/​java/​com/​pagerviewexample/​MainApplication.kt Updates React Native application initialization.
example/​android/​app/​src/​main/​java/​com/​pagerviewexample/​MainActivity.kt Cleans up the Android activity.
example/​android/​app/​src/​main/​AndroidManifest.xml Adds the Android application manifest.
example/​android/​app/​proguard-rules.pro Adds application ProGuard rules.
example/​android/​app/​debug.keystore Adds example debug signing credentials.
example/​android/​app/​build.gradle Defines the Android application build.
example/​.gitignore Removes obsolete bundle-output exclusions.
example/​.bundle/​config Configures local Ruby dependencies.
.prettierrc.js Removes the redundant Prettier configuration.
.github/​workflows/​ios.yml Relies on the native iOS build for bundling.
.github/​workflows/​android.yml Relies on the native Android build for bundling.
.flowconfig Removes obsolete Flow configuration.
.eslintrc.js Updates ignored paths and globals.
Files not reviewed (1)
  • example/ios/PagerViewExample.xcworkspace/contents.xcworkspacedata: Generated file

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread example/ios/PagerViewExample/LaunchScreen.storyboard Outdated
@krozniata
krozniata requested a balanced review from Copilot October 6, 2026 14:04
@krozniata
krozniata marked this pull request as ready for review October 6, 2026 14:09

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Release scripts cannot resolve the example CLI, and the published typings silently drop React Native 0.79 compatibility.

Review effort: Balanced
Findings: 1 High severity

Open (1)
Resolved since last review (1)
Files not reviewed (1)
  • example/ios/PagerViewExample.xcworkspace/contents.xcworkspacedata: Generated file
Previously missed (1)

In code that hasn't changed since last review

Medium severity Generated declarations require unsupported React Native 0.79 typings

src/​PagerViewNativeComponent.ts:4

This changes the published declaration to depend on top-level CodegenTypes and codegen helper exports, but React Native 0.79 (the previous development baseline) does not expose those in its top-level typings while this package still declares react-native: "*". TypeScript consumers on 0.79 will therefore fail to resolve the generated declarations. Either retain compatible declaration imports or raise and document the minimum React Native peer version as a breaking compatibility change.

Comment thread package.json Outdated
Comment on lines +35 to +36
"example:android:release": "cd example; react-native run-android --mode \"Release\" --appId com.pagerviewexample --active-arch-only",
"example:ios:release": "cd example; react-native run-ios --mode \"Release\"",
@krozniata
krozniata requested review from MrRefactor and troZee October 7, 2026 08:46
@krozniata
krozniata added this pull request to stack #1160 October 7, 2026 10:39
@github-actions

github-actions Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

🟢 e2e: 11 passed

All 11 tests in 9 files
Test Time
🟢 tests/basic-pager.e2e.ts · 3 passed 1m 43s
🟢 basic pager › in LTR › pages horizontally 32.0s
🟢 basic pager › in LTR › pages vertically 30.0s
🟢 basic pager › in RTL › pages horizontally with the reversed gesture 40.5s
🟢 tests/issues/issue-1083-modal-set-page.e2e.ts · 1 passed 12.1s
🟢 setPage called behind a native-stack modal lands on the requested page 12.1s
🟢 tests/issues/issue-1098-nested-pager.e2e.ts · 1 passed 13.4s
🟢 outer pager stays responsive after its page count changes around a nested pager 13.4s
🟢 tests/material-top-bar.e2e.ts · 1 passed 10.1s
🟢 material top tabs survive a native-stack push and pop 10.1s
🟢 tests/nested-pager-view.e2e.ts · 1 passed 10.2s
🟢 nested horizontal and vertical pagers scroll independently 10.2s
🟢 tests/on-page-selected.e2e.ts · 1 passed 10.9s
🟢 onPageSelected fires an alert for every page change 10.9s
🟢 tests/scrollable-pager-view.e2e.ts · 1 passed 15.7s
🟢 pager inside a ScrollView keeps its page across vertical scrolls 15.7s
🟢 tests/smoke.e2e.ts · 1 passed 7.3s
🟢 horizontal pager pages with the panel buttons 7.3s
🟢 tests/tab-view-inside-scroll-view.e2e.ts · 1 passed 11.1s
🟢 TabView inside a ScrollView swipes tabs and scrolls the page 11.1s

e2e 0.18.0 · 3m 14s · android · run artifacts

@github-actions

github-actions Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

🟢 e2e: 13 passed

All 13 tests in 11 files
Test Time
🟢 tests/basic-pager.e2e.ts · 3 passed 2m 3s
🟢 basic pager › in LTR › pages horizontally 34.9s
🟢 basic pager › in LTR › pages vertically 29.8s
🟢 basic pager › in RTL › pages horizontally with the reversed gesture 58.1s
🟢 tests/issues/issue-1083-modal-set-page.e2e.ts · 1 passed 18.7s
🟢 setPage called behind a native-stack modal lands on the requested page 18.7s
🟢 tests/issues/issue-1096-keyboard-shrink.e2e.ts · 1 passed 22.8s
🟢 keyboard avoidance does not shrink the page under the keyboard 22.8s
🟢 tests/issues/issue-1098-nested-pager.e2e.ts · 1 passed 30.2s
🟢 outer pager stays responsive after its page count changes around a nested pager 30.2s
🟢 tests/issues/issue-1142-search-bar-inset.e2e.ts · 1 passed 22.6s
🟢 FlatList inside the pager gets the search bar safe-area insets 22.6s
🟢 tests/material-top-bar.e2e.ts · 1 passed 20.4s
🟢 material top tabs survive a native-stack push and pop 20.4s
🟢 tests/nested-pager-view.e2e.ts · 1 passed 15.6s
🟢 nested horizontal and vertical pagers scroll independently 15.6s
🟢 tests/on-page-selected.e2e.ts · 1 passed 20.8s
🟢 onPageSelected fires an alert for every page change 20.8s
🟢 tests/scrollable-pager-view.e2e.ts · 1 passed 29.7s
🟢 pager inside a ScrollView keeps its page across vertical scrolls 29.7s
🟢 tests/smoke.e2e.ts · 1 passed 12.2s
🟢 horizontal pager pages with the panel buttons 12.2s
🟢 tests/tab-view-inside-scroll-view.e2e.ts · 1 passed 18.6s
🟢 TabView inside a ScrollView swipes tabs and scrolls the page 18.6s

e2e 0.18.0 · 5m 36s · ios · run artifacts

Comment thread .github/workflows/ios.yml
path: example/ios/Pods
key: ${{ hashFiles('example/ios/Podfile.lock') }}

- name: Bundle app

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

❤️

Comment thread example/.bundle/config
@@ -0,0 +1,2 @@
BUNDLE_PATH: "vendor/bundle"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

could you check, if this file should be added?

@@ -1,44 +1,27 @@
package com.pagerviewexample;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

xD

<item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR.

@troZee troZee Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

krozniata and others added 4 commits October 8, 2026 08:35
@troZee
troZee merged commit b8a46da into master Oct 8, 2026
8 checks passed
@troZee
troZee deleted the feat/rn-87-vanilla branch October 8, 2026 08:06
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.

3 participants