[TCA] 04. TCA의 네비게이션 방식에 대해 알아보자.
·
iOS/TCA
TCA 공식 문서에 스택 기반 네비게이션 가이드가 있으니 참고하면 좋을 것 같다. Documentation pointfreeco.github.io StackState?StackState는 TCA에서 네비게이션 스택을 표현하기 위한 상태 타입이다. SwiftUI의 NavigationStack과 함께 사용되어 상태 기반 네비게이션을 구현한다. 쉽게 설명하자면, SwiftUI의 NavigationStack을 상태로 옮겨놓은 것이라고 생각하면 된다. 1. 배열과 유사한 구조var path: StackState = .init()state.path.append(.detail(.init())) // pushstate.path.removeLast() // popstate.path..
[리팩토링] 03. 구조개선 - App진입점을 TCA로 컨버팅
·
탭탭 - TapTap/리팩토링
컨버팅 필요성?기존 탭탭 앱 진입점은 TCA 구조가 적용되어 있지 않은 일반적인 SwiftUI 방식으로 구현되어 있었습니다. 예를 들어, WindowGroup 안에서 launchState에 따라 SplashView, 온보딩, 홈 화면을 swift로 분기하고, DispatchQueue나 .alert를 직접 사용하여 상태를 관리하는 식이었습니다. 이 방식 자체가 성능상 문제를 일으키거나 기능상의 제약이 있는 것은 아니었지만, 앱 전체 구조의 일관성이 떨어지고 상태 관리가 흩어져 유지보수가 어려워진다는 단점이 있었습니다. 그래서 앱 진입점도 TCA 기반으로 통일하여 상태와 이벤트를 일관되게 관리할 수 있도록 리팩토링하게 되었습니다. AppFeature 구현먼저, 앱 진입점에서 사용할 Reducer를 구현해야 ..
[개발일지] 03. 신기하고 재밌는 탭탭 온보딩! 어떻게 구현했을까요?
·
탭탭 - TapTap/개발일지
탭탭 온보딩탭탭은 사파리 익스텐션을 기반으로 동작하는 서비스입니다. 그래서 사용자가 처음 앱을 접했을 때, 사파리 확장 프로그램 설정 방법이나 문장을 하이라이트하는 방식처럼 다소 낯설 수 있는 기능들을 온보딩에서 가이딩을 통해 안내하고 있습니다. 특히 하이라이트 온보딩은 단순한 설정 화면이 아니라 실제 사용 흐름을 따라가며 보여주는 인터랙션 중심으로 구성되어 있습니다. 두 번 탭 → 드래그 → 색상 선택 → 메모 추가까지, 사용자가 자연스럽게 기능을 이해할 수 있도록 꽤 많은 애니메이션과 뷰 이동이 포함돼 있습니다. 이번 글에서는 이처럼 상태가 복잡하게 얽혀 있고, 특정 영역만 움직여야하는 탭탭의 온보딩 화면을 SwiftUI로 어떻게 구현했는지, 그리고 그 과정에서 겪었던 이슈들과 해결 방법들을 정리해보..