GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — fix(ios): preserve lazy controller loading during layout invalidation by rafaelaugustos · Pull Request #11587 · NativeScript/NativeScript

Conversation

@rafaelaugustos

@rafaelaugustos rafaelaugustos commented Oct 25, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

PR Checklist

  • The PR title follows the contribution guidelines.
  • There is an issue for this bug: iOS: prebuilt Frame tree with inherited CSS direction triggers UIKit targetNode assertion #11586.
  • CLA signing previously declared by this contributor in fix(android/application): open windows after the original activity finishes #11552 and feat(android): prototype Frame-owned interactive back previews #11558.
  • All reported CI checks pass; local and native validation details are below.
  • Tests for the changes are included.

What is the current behavior?

When a Frame is attached below a direction-bearing root before Application.run(), inherited CSS direction calls requestLayout(). Reading viewController.view there eagerly loads the navigation controller before UIApplicationMain; on iOS 18.6 the resulting app terminates on TextField focus with the UIKit gesture-graph targetNode assertion.

What is the new behavior?

Use viewIfLoaded when invalidating the controller view. Layout flags, ancestor propagation and invalidation of already loaded native views remain intact. Android already invalidates only an existing native view; no public API or declaration changes are needed.

Fixes #11586.

Validation

  • New unloaded-controller regression fails on the original implementation; all 7 requestLayout tests pass with the fix.
  • Full npx nx run core:test --skip-nx-cache: 568 passed, 1 skipped, 44 files passed.
  • Core 9.1.3 fixture with this exact block change: prebuilt inherited LTR and explicit pre-startup requestLayout() pass keyboard editing and cancelled/committed native Back on iPhone/iPad simulators running 18.6.
  • NativeScript-Vue 3.1.2 only: direction/no-direction controls pass on iOS 18.6.
  • Published vue-router-ns rc.3: inherited LTR and tabs controls pass on iOS 18.6 and 26.0.
  • Explicitly forcing controller.view before startup still crashes with the patch: the negative control isolates early view loading, without CSS direction.
  • Added two real-native assertions in apps/automated; that complete app suite was not run. Interaction coverage comes from the external Core/Vue/router fixture and XCTest runner linked below.
  • Physical iPhone unavailable during this pass; dynamic RTL and arbitrary navigation hosts were not certified.

Reproduction, reversible pinned-dependency patch, XCTest sources and results: rafaelaugustos/vue-router-ns#160 (companion reproduction and evidence PR).

Video

Actual iOS 18.6 simulator recording using the published router with only this Core correction: inherited LTR, tabs control, tabs with inherited LTR. Each flow types into a TextField, reverses native Back while preserving the draft, then completes Back.

core-lazy-controller-navigation.mp4

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@rafaelaugustos
fix(ios): preserve lazy controller loading during layout invalidation
91337f9
@nx-cloud

nx-cloud Bot commented Oct 25, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit 7fc7511

Command Status Duration Result
nx test apps-automated -c=android ✅ Succeeded 3m 53s View ↗
nx run-many --target=test --configuration=ci --... ✅ Succeeded 10s View ↗

💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗


☁️ Nx Cloud last updated this comment at 2026-11-12 02:21:02 UTC

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@pkg-pr-new

pkg-pr-new Bot commented Oct 25, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@nativescript/core@11587
npm i https://pkg.pr.new/@nativescript/vite@11587
npm i https://pkg.pr.new/@nativescript/webpack@11587

commit: 7fc7511

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@rafaelaugustos rafaelaugustos mentioned this pull request Oct 25, 2026
test(ios): validate the Core lazy-controller fix for inherited direction rafaelaugustos/vue-router-ns#160
Merged
@rafaelaugustos
rafaelaugustos marked this pull request as ready for review October 25, 2026 16:40
@rafaelaugustos rafaelaugustos closed this in rafaelaugustos/vue-router-ns#160 Oct 25, 2026
@rafaelaugustos rafaelaugustos reopened this Oct 25, 2026
This was referenced Oct 25, 2026
docs: review 1.0 readiness and add Spanish / Simplified Chinese rafaelaugustos/vue-router-ns#161
Merged
chore: prepare 0.1.0-rc.4 release rafaelaugustos/vue-router-ns#162
Merged
[iOS 26] Inset Frame cannot start native content Back with default navigation #11589
Open
chore: adopt NativeScript-Vue 3.1.3 with native window acceptance rafaelaugustos/vue-router-ns#172
Merged
@rafaelaugustos
Merge branch 'main' into fix/ios-request-layout-lazy-controller
bd2f3de
@rafaelaugustos rafaelaugustos mentioned this pull request Oct 30, 2026
fix(ios): preserve native content Back for default Frame navigation #11590
Open
5 tasks done
@rafaelaugustos
Merge branch 'main' into fix/ios-request-layout-lazy-controller
7fc7511

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

iOS: prebuilt Frame tree with inherited CSS direction triggers UIKit targetNode assertion

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@rafaelaugustos
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.