Overview
Various additional bug fixes and under-the-hood improvements
What's Changed
Feature Development
- [PM-37642] feat: Add debug menu flag to disable self-host premium checks by @andrebispo5 in #2657
- [PM-35367] chore: Fix TestHarness app build & update tests. by @morganzellers-bw in #2647
- [BWA-99] feat: Add next TOTP code preview to BWA by @KatherineInCode in #2527
- [PM-7854] feat: Hide Send tab when disableSend policy is active by @fedemkr in #2667
- [PM-37721] feat: Add upgrade to premium button on Attachments premium alert by @andrebispo5 in #2666
- [PM-37697] feat: Show "Continue to web app?" alert when tapping Manage plan by @andrebispo5 in #2671
- [PM-37719] feat: Upcoming charge is not read as a dollar amount by VoiceOver by @andrebispo5 in #2678
- [PM-33550] feat: Rename modal add items text by @morganzellers-bw in #2685
- [PM-32809] feat: wire Bank Account through BitwardenSdk by @SaintPatrck in #2576
- [PM-24224] feat: Support v2 encryption on password account registration by @matt-livefront in #2684
- [PM-37998] feat: Update Cancel Premium confirmation dialog to match new design by @andrebispo5 in #2709
- [PM-32807] feat: wire Driver's License through BitwardenSdk by @SaintPatrck in #2577
- [PM-38180] feat: Announce external link on Manage plan and Cancel Premium buttons by @andrebispo5 in #2718
- [PM-38119] feat: Fix Send "Specific people" upgrade to premium flow by @andrebispo5 in #2720
- [PM-37967] feat: Show premium canceled status in plan screen by @andrebispo5 in #2716
- [PM-37997] feat: Hide cancel premium button when plan status is update payment by @andrebispo5 in #2725
- [PM-38183] feat: Add expired and pending cancellation premium plan states by @andrebispo5 in #2721
- 🍒 [PM-38394] fix: Update settings plan row visibility by @andrebispo5 in #2742
🐛 Bug fixes
- [PM-35295] fix: Prevent iOS autofill from clearing BitwardenTextField via local state buffer by @matt-livefront in #2633
- [PM-10548] fix: Biometric auth setting being reset on logout. by @morganzellers-bw in #2628
- [PM-28227] fix: Keep keyboard alive in autofillText mode via SwiftUI @focusstate anchor by @fedemkr in #2599
- [PM-37920] fix: Align Plan screen cart summary with web by @SaintPatrck in #2683
- [PM-24114] fix: Prevent noActiveAccount errors when viewing pre-login Settings by @matt-livefront in #2691
- [PM-37885] fix: Check camera permission before opening card scanner by @fedemkr in #2712
- [PM-38174] fix: Remove excess bold from past due status description by @andrebispo5 in #2719
- [PM-37719] fix: Fix VoiceOver announcing "Star Star" in upcoming charge description by @andrebispo5 in #2710
⚙️ Maintenance
- Crowdin Pull by @bw-ghapp[bot] in #2659
- [PM-35680] chore: Convert ExporterClientProtocol to AutoMockable by @matt-livefront in #2653
- [PM-36604] test: Fix flaky WatchServiceTests by @KatherineInCode in #2617
- [PM-36966] test: Fix non-deterministic ordering in ErrorReportBuilderTests by @KatherineInCode in #2624
- [PM-37604] tool: Add fix-ellipsis subcommand to fix-localizable-strings by @KatherineInCode in #2652
- [PM-35680] chore: Convert CryptoClientProtocol to AutoMockable by @matt-livefront in #2663
- [PM-35435] ci: Stop applying Change Type labels based on changed files by @vvolkgang in #2649
- [PM-35680] chore: Convert AuthClientService to AutoMockable by @matt-livefront in #2668
- chore: Moves SerialWorker to BitwardenKit. by @morganzellers-bw in #2669
- [PM-37809] chore: Fix trivial warnings by @fedemkr in #2673
- [PM-35680] chore: Convert StateClientProtocol to AutoMockable by @matt-livefront in #2675
- [PM-13621] ci: Enable xcodegen Renovate manager for SPM dependencies by @KatherineInCode in #2679
- [PM-37957] test: Fix SerialWorkerTests captured var concurrency warnings by @KatherineInCode in #2690
- [PM-37973] chore: Remove unreachable catch branch after EmptyInputValidator typed throw by @matt-livefront in #2689
- [PM-35680] chore: Convert ClientFido2Service to AutoMockable by @matt-livefront in #2687
- [PM-37819] refactor: Persist WrappedAccountCryptographicState directly by @matt-livefront in #2677
- [PM-38178] ci: Increase test execution time allowance to 3 seconds by @KatherineInCode in #2714
- [PM-37995] chore: Add pre-commit hook to lint changed Swift files by @matt-livefront in #2694
- [PM-37995] chore: Fix lint and build warnings by @matt-livefront in #2715
- [PM-37960] test: Fix BillingAPIServiceTests timeout by using MockAccountTokenProvider by @KatherineInCode in #2711
📦 Dependency Updates
- Update public suffix list by @github-actions[bot] in #2660
- Update SDK to f705e9b (3.0.0-6241-ba67235) by @bw-ghapp[bot] in #2646
- [deps]: Update gh minor by @renovate[bot] in #2650
- Update SDK to f65b246 (3.0.0-6336-b1ab270) by @bw-ghapp[bot] in #2676
- Update SDK to f30028b (3.0.0-6362-291a28e) by @bw-ghapp[bot] in #2686
- [deps]: Update SwiftProtobuf to v1.38.0 by @renovate[bot] in #2704
- Update SDK to 0169a48 (3.0.0-6438-025e5d8) by @bw-ghapp[bot] in #2707
🎨 Other
- [PM-35680] Move VaultClientService into BitwardenKit by @matt-livefront in #2680
- llm: Capture review learnings on alphabetization, comments, localization, and what-not-to-test by @SaintPatrck in #2612
- llm: Document line wrapping style in CLAUDE.md by @KatherineInCode in #2682
Full Changelog: v2026.5.0-bwa...v2026.5.1-bwa
Builds Source: https://github.com/bitwarden/ios/actions/runs/26956145153