SWIFT

51
P_001 · SWIFT

iOS 푸시 알림 중복 진입을 막는 2층 dedupe 패턴

같은 iOS 푸시가 notification tap, cold launch, pending route 경로로 중복 처리되는 문제를 fingerprint dedupe와 envelope id 소비 추적으로 막은 사례.

MAY 21, 2026 · 6 MIN
#ios#pushnotification#swift
P_002 · SWIFT

RxSwift 코드베이스에서 async/await로 점진 마이그레이션하는 방법

RxSwift 의존이 큰 iOS 프로젝트에서 신규 코드부터 Swift Concurrency로 옮기는 단계별 전략. Repository async 미러, UseCase 공존, 호출자 화면 단위 전환까지.

MAY 21, 2026 · 7 MIN
#swift#rxswift#asyncawait
P_003 · SWIFT

iOS Coordinator에서 푸시 진입을 단일 라우터로 정리한 기록

UIKit MVVM Coordinator 앱에서 list ViewModel이 푸시를 직접 구독하던 구조를 AppNavigationRouter와 async/await 기반 단일 진입점으로 정리한 사례.

MAY 21, 2026 · 7 MIN
#ios#swift#coordinator
P_004 · SWIFT

@MainActor를 클래스에 통째로 붙이면 생기는 fetch 함정

UIKit 때문에 클래스 전체에 @MainActor를 붙였다가 async fetch까지 메인 액터에 묶인 사례. Swift Concurrency에서 UI 빌드와 데이터 fetch 격리를 나누는 방법.

MAY 21, 2026 · 6 MIN
#swift#concurrency#mainactor
P_005 · SWIFT

Swift Concurrency 프로젝트에서 GCD가 여전히 답인 자리들

Concurrency로 통일 중이지만 GCD를 일부러 남긴 자리들 — 폴링, fire-and-forget, RW lock, 그리고 sync 콜백

MAY 20, 2026 · 8 MIN
#swift#concurrency#gcd
P_006 · SWIFT

Firebase RemoteConfig 빼고 GitHub Actions + 정적 JSON으로 갈아탄 후기

단순 broadcast 용도로만 쓰던 Firebase RemoteConfig를 GitHub Actions + 정적 서버 JSON 구조로 갈아탔다. 트레이드오프, 새 구조, 마이그레이션 시 캐시 stale 이슈까지.

MAY 15, 2026 · 5 MIN
#firebase#remoteconfig#github actions
P_007 · SWIFT

SwiftUI에서 PreferenceKey가 안 먹어서 onGeometryChange로 갈아탄 디버깅

SwiftUI ScrollView에서 스크롤 위치에 따라 네비게이션 타이틀을 점진적으로 노출하려는데 PreferenceKey/GeometryReader 측정값이 갱신되지 않았다. onGeometryChange로 갈아탄 디버깅 회고.

MAY 15, 2026 · 7 MIN
#swiftui#scrollview#ongeometrychange
P_008 · SWIFT

SwiftUI에서 NantesLabel 살리기

SwiftUI Text로는 안 되는 자동 링크 탐지, 줄 수 제한, 더 보기 토글을 UIKit NantesLabel을 UIViewRepresentable로 래핑해서 해결한 패턴과 네 가지 함정 정리.

MAY 14, 2026 · 7 MIN
#swiftui#uikit#uiviewrepresentable