InnoRouter: SwiftUI를 위한 타입 안전 내비게이션 프레임워크
왜 다시 봐야 할까요? 처음 NavigationStack를 도입했을 때 SwiftUI 내비게이션은 분명 좋아졌습니다. 하지만 앱이 커지면 문제는 다시 생깁니다. path 상태가 여러 화면과 feature에 흩어집니다. 인증, 딥링크, 로깅, 정책 판단이 화면 코드에 섞입니다. “A에서 B로 간다”는 흐름을 테스트 가능한 데이터로 다루기...
왜 다시 봐야 할까요? 처음 NavigationStack를 도입했을 때 SwiftUI 내비게이션은 분명 좋아졌습니다. 하지만 앱이 커지면 문제는 다시 생깁니다. path 상태가 여러 화면과 feature에 흩어집니다. 인증, 딥링크, 로깅, 정책 판단이 화면 코드에 섞입니다. “A에서 B로 간다”는 흐름을 테스트 가능한 데이터로 다루기...
들어가며 초기 버전의 InnoNetwork를 설명할 때는 보통 “Swift Concurrency 기반 타입 안전 HTTP 클라이언트”라는 표현을 썼습니다. 지금도 틀린 말은 아니지만, 3.0.1 기준으로는 그 설명만으로 부족합니다. 현재 공개 패키지는 아래 세 제품으로 나뉩니다. InnoNetwork InnoNetworkDownload ...
왜 다시 봐야 할까요? 기존 InnoFlow 소개 글은 분명 맞는 설명이었습니다. 다만 중심이 v2 시절 문법에 머물러 있었습니다. reducer를 reduce(into:action:)로 직접 작성하는 방식 Store.binding(\.field, ...) 중심의 예제 2.0.0 패키지 버전 phase-driven modeling을...
들어가며 InnoDI를 처음 소개했을 때는 “Swift Macro로 DI 보일러플레이트를 줄여주는 라이브러리”라는 설명이 중심이었습니다. 그 설명도 여전히 틀리지는 않지만, 3.0.1 기준의 실제 공개 surface를 보면 지금의 핵심은 정적 dependency graph와 scope validation입니다. 즉, InnoDI는 런타임 servi...

서론 이제 마지막으로 실제 현업에서 사용할 수 있을 정도의 프로젝트를 만들어보려고 합니다. 여러명이 동시에 개발한다고 가정하고, 최소 2개 이상의 피쳐가 존재한다고 생각하고 진행할 예정입니다. 지난 블로그 에서 볼 수 있듯 아래와 같은 프로젝트 구조를 기반으로 Tuist Project를 생성하려고 합니다. 프로젝트 생성전에 먼저 모듈 추가...