Repository navigation
fix(ios): preserve native content Back for default Frame navigation - #11590
Open
rafaelaugustos wants to merge 1 commit into
Open
rafaelaugustos wants to merge 1 commit into
rafaelaugustos wants to merge 1 commit into
Conversation
|
View your CI Pipeline Execution ↗ for commit b3d8ad7
💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗ ☁️ Nx Cloud last updated this comment at |
commit: |
rafaelaugustos
marked this pull request as ready for review
October 27, 2026 19:49
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Checklist
What is the current behavior?
Default Frame navigation always installs a delegate exposing the optional custom animation callback. On iPadOS 26, that prevents native content-pop input beside an inset navigation area, even when the callback returns nil. A plain UIKit control at the same inset accepts the gesture; exposing only that callback reproduces the failure. Full-width screen-edge Back still works with Core's existing gesture policy.
What is the new behavior?
Use a delegate with only didShow for navigation without a configured animated transition. Keep the existing animation/interaction callbacks on a separate NSObject delegate for configured transitions. Store the selected delegate on each Page's controller so the existing Page lifecycle restores it after Back. Both delegates share the unchanged didShow bookkeeping; no gesture delegate or recognition rule is replaced.
Clear stale transition metadata when a reused Page is navigated with default animation, and release both shared delegate references when the last Frame is disposed. No public API or declaration changes are required. Android uses fragment transitions and has no corresponding UIKit delegate path.
Fixes #11589.
Validation
npx nx run core:test --skip-nx-cache: 571 passed, 1 skipped, 45 files passed.apps/automatedregression ran in an isolated consumer using the same test/helper execution bodies. It verifies the native selector surface and restoration across default → fade → default → Back → Back. The complete iOSapps/automatedapp suite was not run.The native consumer uses Core 9.1.3 with only this PR's built
ui/frame/index.ios.jssubstituted, iOS runtime 9.1.0 and Xcode 27.0. No other unpublished Core patch is used. Physical iPad, Stage Manager and newer OS versions were not tested.Native validation sources, commands, hashes and logs. The published baseline and standalone UIKit isolation remain available in vue-router-ns #170.
CI status: the Android native job and dependency review passed. The iOS job passed its unit-test step, then stopped before native app tests because the runner had no simulator matching the requested iPhone 16 Pro (
No devices found for the matching requirements). The local iPad validation above is separate from this infrastructure blocker.Video
Actual iPadOS 26 simulator recording with the correction: editing a draft, cancelling content Back, committing Back, then navigating through fade, slide, a custom instance and a shared transition. The content stays inset 280 points; returning from each default page restores the custom delegate before the next Back.
core-native-content-back.mp4