Skip to content

Deferred: revisit the iPhone NavigationStack shell #28

Description

@tabmail-kmyi

Summary

Preserve and defer the idea of replacing the iPhone root NavigationSplitView with a path-driven NavigationStack.

The original local experiment targeted a SwiftUI compact-mode race where rapid mailbox navigation or foreground return could leave stale/blank content, incomplete transitions, or mismatched SwiftUI/UIKit lifecycle state. Current main still uses NavigationSplitView, but it has since accumulated additional navigation contracts and targeted mitigations, so the historical implementation is reference material, not a merge candidate.

This issue is intentionally deferred. Revisit it only if compact-mode navigation remains user-visible or split-view-specific workarounds continue accumulating.

Preserved branch and artifacts

Everything needed to revisit the experiment now lives in this repository:

The two documents are byte-identical preservation copies. The patch was verified in a disposable worktree to reconstruct the original two modified Swift files exactly at the experiment's source base.

Why it cannot be applied directly

Since the experiment, navigation gained behavior that the old patch does not model, including:

  • real programmatic message and Account pushes under ADR-IOS-054;
  • account-scoped notification-tap resolution, sentinel IDs, and unresolved-tap handling;
  • richer locally-authored and server-draft open authority;
  • additional settings, template, sheet, and cover routes;
  • lifecycle guards for collapsed-split-view quirks.

The original plan also says “not started” even though an implementation patch exists, and its build, regression, and physical-device checklists remain incomplete. The historical claim that the shell replacement fixes the framework bug is therefore unproven.

Revisit requirements

When this work is resumed:

  • Start from the then-current main; do not cherry-pick or blindly apply the preserved patch.
  • Re-inventory every route and modal entry point, including mailbox rows, chat/email pills, notifications, agent toasts, Account/settings/plan, templates, drafts, sheets, and covers.
  • Preserve all current ADR-IOS-054 and notification-resolution semantics.
  • Prefer a typed route model rather than heterogeneous raw String path values.
  • Add focused route/path transition tests.
  • Run the full current suite with a warning-clean build.
  • Complete the preserved physical-iPhone rapid-navigation matrix on the supported iOS version.
  • Confirm which split-view-specific state and workarounds can actually be removed.
  • Require the original blank/stuck rapid-navigation reproduction to remain absent across repeated device attempts.

Current action

None. Keep this issue open with the deferred label; there is no PR, merge, or release attached to this preservation branch.

Metadata

Metadata

Assignees

No one assigned

    Labels

    deferredOpen work intentionally deferred by owner decisionenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions