DSM-PICK / DSM-PICK/PiCK_iOS_ADMIN

TCA 2.0 점진 마이그레이션 계획 수립 및 파일럿 적용

Open
#134 1 comment 0 reactions 1 assignee View on GitHub

@leejh08 is already working on this.

Since Apr 13, 2026.

♻️refactor 🛠️chore
Dominant language
Swift
Stars
2
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Describe

[개요] Point-Free의 TCA 2.0 beta preview를 기준으로 현재 프로젝트의 TCA 1.x 스타일 구현을 점진적으로 마이그레이션한다.

참고 문서

배경

  • 현재 프로젝트는 Reducer, Reduce, Effect, .publisher, WithViewStore, viewStore.binding(get:send:) 중심의 1.x 스타일을 넓게 사용 중이다.
  • 전면 전환은 변경 범위와 회귀 위험이 커서 부담이 크므로, feature 단위의 점진 전환 전략으로 진행한다.

목표

  • 빅뱅 마이그레이션 없이 feature 단위로 TCA 2.0 스타일을 도입할 수 있는 기반을 마련한다.
  • 파일럿 feature 1개를 선정해 실제 변환 패턴을 검증한다.
  • 이후 반복 가능한 체크리스트와 코드 패턴을 정리한다.

진행안

  1. 의존성 및 마이그레이션 경로 확인
  • 현재 사용 중인 TCA 버전/호환 shim/모듈 구성을 확인한다.
  • ComposableArchitecture2 도입 가능 여부와 단계별 적용 방법을 정리한다.
  1. 파일럿 feature 선정
  • 변경 범위가 작고 테스트가 있는 feature를 우선 선정한다.
  • 후보: ChangePassword, Signin, OutList
  1. 파일럿 변환
  • Reducer/Reduce -> @Feature/Update
  • Effect 반환 기반 비동기 처리 -> store.addTask, store.modify 중심으로 전환
  • 필요 시 response action/중간 액션 축소
  • WithViewStore/ViewStore 기반 view -> 최신 store 바인딩 방식으로 전환
  1. 검증 및 가이드화
  • 기존 테스트를 유지 또는 보강해 회귀를 방지한다.
  • 변환 전후 패턴, 주의사항, feature 선정 기준을 정리한다.

완료 조건

  • 파일럿 feature 1개 이상이 TCA 2.0 스타일로 전환되어 있다.
  • 전환 과정에서 필요한 규칙과 반복 패턴이 문서화되어 있다.
  • 남은 feature에 대한 우선순위와 후속 작업 기준이 정리되어 있다.

비목표

  • 전체 feature를 한 번에 2.0으로 전환하지 않는다.
  • 초반부터 모든 신규 통신 패턴(events, preferences, triggers, spawn)을 도입하지 않는다.

Additional

[추가사항]

  • Point-Free 글은 beta preview 기준이므로, 실제 적용 시 최종 공개 API와 차이가 있는지 다시 확인이 필요하다.
  • 파일럿 결과를 바탕으로 다음 이슈를 feature별로 분리하는 방식이 적절하다.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.