Debug common SwiftUI issues in the Leavn app:
Common Issues
1. View Not Updating
Check:
- Is ViewModel using
@Observablemacro? - Are properties marked
@MainActorif needed? - Is view observing the right object?
Fix:
// Ensure ViewModel is @Observable
@Observable
class MyViewModel {
var state: String = "" // Auto-tracked
}
// Ensure view observes it @State var viewModel = MyViewModel() // Not @StateObject
### 2. Binding Not Working
**Check:**
- Is the binding two-way?
- Is the source value actually mutable?
- Is there a `@Binding` vs `@State` mismatch?
**Fix:**
```swift
// Correct binding chain
@State var value: String
TextField("", text: $value) // $ creates Binding
3. Modal/Sheet Won't Dismiss
Check:
- Is
@Environment(\.dismiss)being called? - Is
isPresentedbinding being set to false? - Are there multiple presentation modifiers conflicting?
Fix:
@Environment(\.dismiss) var dismiss
Button("Close") {
isPresented = false // Update binding
dismiss() // Call environment dismiss
}
4. Performance Issues
Check:
- Are views too complex? (use
Self._printChanges()) - Unnecessary re-renders?
- Heavy computations in body?
Fix:
- Extract subviews
- Use
@Statesparingly - Move logic to ViewModel
Return specific fixes for the reported SwiftUI issue.