Fixed in https://github.com/badbundle/vault-app/pull/645 (merged as 4a4f8e1f).
Cause: it wasn't the .id(displayedStep) step swap; the bug happened without it too. Each row's .sheet was chained onto its Section, and a section applies modifiers to each of its parts, the footer included. That bound two sheets to one tap. SwiftUI presented one, then tried to replace it with the other, and UIKit refused, so nothing appeared.
Fix:
- The Tags row and the Encryption/Password row now carry their sheet on the row button.
- The note page's Select Text sheet (#637) moved onto its row too.
Regression test: SectionPresentationTests scans the sources for sheet, fullScreenCover or popover chained onto a Section, and fails on the old code. It shares a generalised ViewCallScanner with VAULT-54's SecretTextInputDeclarationTests.
Checked in the simulator: every sheet row opened on the first tap after moving between steps both ways. That covered create (note, code and recovery phrase) and edit, with Reduce Motion off and on, and no presentation warnings were logged.