URLSession 취소를 실패 알림으로 보여주지 않기
Swift concurrency에서 URLSession 요청을 취소했는데 에러 토스트가 뜨는 문제를 CancellationError와 URLError.cancelled 기준으로 정리한다.
SwiftUI .task vs .onAppear, 어느 쪽이 안전한가
화면이 사라질 때 비동기 작업이 따라서 취소되느냐의 문제. .task와 .onAppear { Task { } }가 같아 보여도 동작이 갈리는 지점을 정리한다.
@FocusState로 키보드 다루기 — 자주 헷갈리는 자리들
TextField 포커스 이동·키보드 dismiss·초기 포커스 — 매번 갸우뚱하는 자리를 한 번에 정리.
Swift ClosedRange<Date> 한 줄 때문에 한 달간 헤맨 이야기
Swift ClosedRange<Date>의 precondition trap을 따라가다 보니, 진짜 범인은 캘린더 데이터 매핑에서 가드 변수를 안 쓴 한 줄이었다. 데이터·표현 두 레이어로 막은 회고.
Coordinator 패턴에서 부모 없는 외부 진입이 만드는 delegate nil 함정
푸시나 딥링크로 상세 화면을 직접 열 때 부모 Coordinator가 없어 delegate nil로 종료 흐름이 멈춘 문제와 fallback 처리 기록.
실기기에서만 깨진 콜드스타트 푸시 race condition 디버깅 기록
시뮬레이터에서는 멀쩡했지만 실기기 콜드스타트 푸시에서만 상세 화면이 열리지 않던 문제를 네 단계로 추적한 기록.
SwiftUI List에서 onAppear로 페이지네이션 짜다가...
SwiftUI List row의 onAppear에서 곧바로 페이지네이션 API를 호출했다가 동시·중복 호출이 폭주했고 마지막 row 판별 + isLoading guard + cursor 세 개로 정리한 기록
NavigationStack에서 화면이 두 번 쌓이는 세 가지 케이스
SwiftUI NavigationStack에서 같은 화면이 두 번씩 쌓이는 세 가지 케이스와 어떻게 정리했는지 기록
SwiftUI 모달 세 개째부터는 Bool 말고 enum 라우팅으로
SwiftUI에서 modal 여러 개를 각각 @State Bool로 관리하다가 깨진 경험과 Identifiable enum 한 개로 묶어 푼 패턴을 정리한 글