Continue PDIAP-12284 / PDIAP-15836 validation and cleanup for SwiftUI-host vs UIKit-host routing and dismissal sequencing.
Findings
May 13 refreshed communication confirmed Quy said PDIAP-12284 and PDIAP-15836 can both remain In Progress together; no immediate Jira restructuring is required.
SampleApp validation support was refined so the app can exercise both host scenarios explicitly: UIKit host through initialViewController(...) and SwiftUI host through makeInitialFlowView(...).
XFlowSDK routing should remain entrypoint-aware: the SwiftUI entrypoint prepares SwiftUI host state and clears UIKit bridge state, while the UIKit entrypoint prepares UIKit host state. This prevents endActivity from publishing to the SwiftUI dismissal subject when no XFlowDismissalHost subscriber exists.
Follow-up SampleApp changes removed the local AnyView state/storage approach and moved SwiftUI-host rendering behind a ViewBuilder-style flowContent path. This keeps AnyView out of SampleApp and leaves type erasure only at boundaries that truly require it, such as the existing XFlowViewMaker public boundary if still needed.
Current SampleApp host-mode validation still appears to depend on a deprecated enable-swift-ui toggle. Next source review should align SampleApp flag evaluation with the Fid4-style path for the specific rollback flag that enables the UIKit host, while keeping SwiftUI as the default path.
Jeff recommended broadening Fid4 validation before opening/reviewing the PRs: test as many current Fid4 XFlow entry and dismissal points as possible in both host modes, with particular attention to AO flows.
The next Copilot-assisted validation step should compare the previously created Confluence entry-point list against the current Fid4/XFlow/XFlowViewMaker code, identify stale or still-valid entry points, and add temporary searchable logs to confirm which entry path, host mode, and dismissal path each run uses.
Validation To Run
In SampleApp, validate UIKit-host mode by turning Use SwiftUI off, launching a flow, completing to endActivity, and confirming dismissal uses UIKit dismiss completion and returns to the list.
In SampleApp, validate SwiftUI-host mode by turning Use SwiftUI on, launching the same flow, completing to endActivity, and confirming dismissal goes through XFlowDismissalHost lifecycle sequencing and returns to the list.
Repeat both modes back-to-back without restarting the app to guard against stale singleton/default host-mode state.
Re-run Fid4 AccountLink validation in default SwiftUI-host and forced UIKit-host modes after the SampleApp changes settle.
After updating SampleApp flag evaluation, validate that the explicit UIKit-host rollback flag selects the UIKit path and that the default/missing/false value selects the SwiftUI path, matching Fid4 behavior as closely as the sample infrastructure allows.
In Fid4, validate a broader entry/dismissal matrix in both host modes, especially AO flows, using temporary logs to confirm entry point, resolved host mode, dismissal mechanism, delegate callbacks, and session cleanup. Remove those logs before PR publication.