@Observable
class ViewModel {
  var items: [Item] = []
  var isLoading = false
}
func fetchData() async throws {
  let data = try await api.get()
  self.items = data
}
import SwiftUI
struct ContentView: View {
  var body: some View {
    NavigationStack {
      List(items, id: \.id) { item in
        ItemRow(item: item)
      }
    }
  }
}
@State private var isPresented = false
.transition(.asymmetric(
  insertion: .move(edge: .trailing),
  removal: .scale.combined(with: .opacity)
))
withAnimation(.spring()) { ... }
Task {
  await viewModel.loadData()
  isLoading = false
}
.animation(.easeInOut(duration: 0.3))
@Environment(\.dismiss) var dismiss
Button("Close") {
  dismiss()
}

Kamil Buczel

iOS Developer & Mobile Engineer

Building elegant iOS applications since 2014

Experience

Building iOS apps in Swift since 2014
From startups to enterprise systems
Solo developer & large team experience

Philosophy

Clean, adaptable, expandable code
Question-first approach to solutions
Quality that serves real user needs
Swift SwiftUI UIKit Combine MVVM Git