Reviewing Changes
Instructions
Follow this process to review code changes for Bitwarden iOS:
Step 1: Understand Context
Start with high-level assessment of the change's purpose and approach. Read PR/commit descriptions and understand what problem is being solved.
Step 2: Verify Compliance
Systematically check each area against Bitwarden standards documented in CLAUDE.md:
- •
Architecture: Follow patterns in
Docs/Architecture.md- •Unidirectional data flow Coordinators + Processors (using SwiftUI)
- •Dependency Injection using
ServiceContainer - •Repository pattern and proper data flow
- •
Style: Adhere to Code Style
- •Naming conventions, code organization, formatting
- •Swift/SwiftUI guidelines
- •
Compilation: Analyze for potential build issues
- •Import statements and dependencies
- •Type safety and null safety
- •API compatibility and deprecation warnings
- •Resource/SDK references and requirements
- •
Testing: Verify appropriate test coverage
- •Unit tests for business logic and utility functions
- •Snapshot/View inspector tests for user-facing features when applicable
- •Test coverage for edge cases and error scenarios
- •
Security: Given Bitwarden's security-focused nature
- •Proper handling of sensitive data
- •Secure storage practices (Keychain)
- •Authentication and authorization patterns
- •Data encryption and decryption flows
- •Zero-knowledge architecture preservation
Step 3: Document Findings
Identify specific violations with file:line_number references. Be precise about locations.
Step 4: Provide Recommendations
Give actionable recommendations for improvements. Explain why changes are needed and suggest specific solutions.
Step 5: Flag Critical Issues
Highlight issues that must be addressed before merge. Distinguish between blockers and suggestions.
Step 6: Acknowledge Quality
Note well-implemented patterns (briefly, without elaboration). Keep positive feedback concise.
Review Anti-Patterns (DO NOT)
- •Be nitpicky about linter-catchable style issues
- •Review without understanding context - ask for clarification first
- •Focus only on new code - check surrounding context for issues
- •Request changes outside the scope of this changeset
Examples
Good Review Format
## Summary This PR adds biometric authentication to the login flow, implementing unidirectional data flow pattern with proper state management. ## Critical Issues - `BitwardenShared/UI/Auth/Login/LoginView.swift:25` - No `scrollView` added, user can't scroll through the view. - `BitwardenShared/Core/Auth/Services/AuthService.swift:120` - You must not use `try!`, change it to `try` in a `do...catch` block or throwing function. ## Suggested Improvements - Consider extracting biometric prompt logic to separate struct - Add missing tests for biometric failure scenarios - `BitwardenShared/UI/Auth/Login/LoginView.swift:43` - Consider using existing `BitwardenTextField` component ## Good Practices - Proper comments documentation - Comprehensive unit test coverage - Clear separation of concerns ## Action Items 1. Add scroll view in `LoginView` 2. Change `try!` to `try` in `AuthService` 3. Consider adding tests for error flows
What to Focus On
DO focus on:
- •Architecture violations (incorrect patterns)
- •Security issues (data handling, encryption)
- •Missing tests for critical paths
- •Compilation risks (type safety, null safety)
DON'T focus on:
- •Minor formatting (handled by linters)
- •Personal preferences without architectural basis
- •Issues outside the changeset scope