Conversation
There was a problem hiding this comment.
Pull request overview
Expo(React Native/TypeScript) 기반 프로젝트를 제거하고, SwiftUI 기반의 KillingPart iOS 앱 기본 골격(스플래시 → 온보딩 → 로그인 → 메인 탭)을 새로 구성하는 PR입니다.
Changes:
- Expo/TypeScript 설정 및 샘플 앱 코드 일괄 제거
- SwiftUI 앱 플로우(View/ViewModel/Service/Resources) 및 Xcode 프로젝트 추가
- README / .gitignore를 iOS(Swift) 프로젝트 기준으로 정리
Reviewed changes
Copilot reviewed 52 out of 67 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| tsconfig.json | Expo/TS 설정 파일 삭제 |
| scripts/reset-project.js | Expo 템플릿 초기화 스크립트 삭제 |
| postcss.config.mjs | Tailwind/PostCSS 설정 삭제 |
| package.json | Expo/Node 의존성 및 스크립트 삭제 |
| nativewind-env.d.ts | NativeWind 타입 참조 파일 삭제 |
| metro.config.js | Metro/NativeWind 번들러 설정 삭제 |
| hooks/use-theme-color.ts | Expo 템플릿 훅 삭제 |
| hooks/use-color-scheme.web.ts | Expo 템플릿 훅 삭제 |
| hooks/use-color-scheme.ts | Expo 템플릿 훅 삭제 |
| global.css | Tailwind/NativeWind 글로벌 CSS 삭제 |
| eslint.config.js | Expo ESLint 설정 삭제 |
| constants/theme.ts | Expo 템플릿 테마/폰트 상수 삭제 |
| components/ui/icon-symbol.tsx | Expo 템플릿 UI 컴포넌트 삭제 |
| components/ui/icon-symbol.ios.tsx | Expo 템플릿 UI 컴포넌트 삭제 |
| components/ui/collapsible.tsx | Expo 템플릿 UI 컴포넌트 삭제 |
| components/themed-view.tsx | Expo 템플릿 UI 컴포넌트 삭제 |
| components/themed-text.tsx | Expo 템플릿 UI 컴포넌트 삭제 |
| components/parallax-scroll-view.tsx | Expo 템플릿 UI 컴포넌트 삭제 |
| components/hello-wave.tsx | Expo 템플릿 UI 컴포넌트 삭제 |
| components/haptic-tab.tsx | Expo 템플릿 UI 컴포넌트 삭제 |
| components/external-link.tsx | Expo 템플릿 UI 컴포넌트 삭제 |
| app/modal.tsx | Expo Router 화면 삭제 |
| app/_layout.tsx | Expo Router 루트 레이아웃 삭제 |
| app/(tabs)/index.tsx | Expo Router 탭 화면 삭제 |
| app/(tabs)/explore.tsx | Expo Router 탭 화면 삭제 |
| app/(tabs)/_layout.tsx | Expo Router 탭 레이아웃 삭제 |
| app.config.ts | Expo app config 삭제 |
| README.md | SwiftUI 기반 프로젝트 설명으로 교체 |
| KillingPartUITests/KillingPartUITestsLaunchTests.swift | UI 테스트 런치 스냅샷 테스트 추가 |
| KillingPartUITests/KillingPartUITests.swift | UI 테스트 기본 템플릿 추가 |
| KillingPartTests/KillingPartTests.swift | 단위 테스트 템플릿(Testing) 추가 |
| KillingPart/Views/Screens/Splash/SplashView.swift | Splash 화면(placeholder) 추가 |
| KillingPart/Views/Screens/RootFlowView.swift | 앱 루트 플로우 스위칭 뷰 추가 |
| KillingPart/Views/Screens/Onboarding/OnboardingView.swift | 온보딩 화면 추가 |
| KillingPart/Views/Screens/Main/MainTabView.swift | 메인 탭(Home/Add) 화면 추가 |
| KillingPart/Views/Screens/Auth/LoginView.swift | 로그인 화면 추가 |
| KillingPart/Views/Components/PrimaryButton.swift | 공용 Primary 버튼 컴포넌트 추가 |
| KillingPart/ViewModels/AppFlowViewModel.swift | 앱 플로우/로그인 상태 ViewModel 추가 |
| KillingPart/Utils/AppSpacing.swift | 공용 spacing 상수 추가 |
| KillingPart/Services/AuthenticationService.swift | 목업 인증 서비스 추가 |
| KillingPart/Resources/Fonts/fonts.placeholder | 폰트 리소스 placeholder 추가 |
| KillingPart/Resources/Fonts/AppFont.swift | 공용 폰트 스타일 정의 추가 |
| KillingPart/Resources/Colors/AppColors.swift | 공용 컬러 팔레트 정의 추가 |
| KillingPart/Resources/Assets/assets.placeholder | 에셋 리소스 placeholder 추가 |
| KillingPart/Models/AppFlowStep.swift | 앱 플로우 스텝 enum 추가 |
| KillingPart/KillingPartApp.swift | SwiftUI App 엔트리포인트 추가 |
| KillingPart/KillingPart.entitlements | entitlements 파일 추가 |
| KillingPart/Extensions/Color+Hex.swift | HEX → Color 변환 extension 추가 |
| KillingPart/Assets.xcassets/Contents.json | Asset catalog 메타 추가 |
| KillingPart/Assets.xcassets/AppIcon.appiconset/Contents.json | AppIcon catalog 메타 추가 |
| KillingPart/Assets.xcassets/AccentColor.colorset/Contents.json | AccentColor catalog 메타 추가 |
| KillingPart.xcodeproj/project.xcworkspace/contents.xcworkspacedata | Xcode workspace 파일 추가 |
| KillingPart.xcodeproj/project.pbxproj | Xcode 프로젝트 설정 추가 |
| .vscode/settings.json | VS Code 설정 삭제 |
| .vscode/extensions.json | VS Code 추천 확장 삭제 |
| .gitignore | iOS/Xcode 중심 ignore로 변경 |
Files not reviewed (1)
- KillingPart.xcodeproj/project.xcworkspace/contents.xcworkspacedata: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator"; | ||
| SWIFT_EMIT_LOC_STRINGS = YES; | ||
| SWIFT_VERSION = 5.0; | ||
| TARGETED_DEVICE_FAMILY = "1,2,7"; | ||
| XROS_DEPLOYMENT_TARGET = 2.5; |
There was a problem hiding this comment.
This target is described as an iOS app, but the build settings declare SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator" and include macOS/visionOS deployment targets. If you don't intend to ship as a multi-platform app (macOS/visionOS), restrict SUPPORTED_PLATFORMS (and related deployment targets/entitlements) to iOS to avoid unexpected build/signing behavior and store submission implications.
| IPHONEOS_DEPLOYMENT_TARGET = 18.5; | ||
| LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; | ||
| "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; | ||
| MACOSX_DEPLOYMENT_TARGET = 14.0; |
There was a problem hiding this comment.
IPHONEOS_DEPLOYMENT_TARGET is set to 18.5. If the product requirement isn't strictly iOS 18.5+, this will significantly reduce device coverage and can also break builds on environments that don't have that SDK installed. Consider lowering the deployment target to the minimum supported iOS version for the project, or document why 18.5 is required.
| enum AppFlowStep { | ||
| case splash | ||
| case onboarding | ||
| case login | ||
| case main | ||
| } |
There was a problem hiding this comment.
RootFlowView uses .animation(..., value: viewModel.currentStep), which requires the value to conform to Equatable. AppFlowStep currently has no Equatable conformance, so this will fail to compile. Make AppFlowStep conform to Equatable (or change the animation trigger to an Equatable value).
| <key>com.apple.security.app-sandbox</key> | ||
| <true/> | ||
| <key>com.apple.security.files.user-selected.read-only</key> | ||
| <true/> |
There was a problem hiding this comment.
The entitlements file enables macOS App Sandbox capabilities (com.apple.security.*). This is not a valid entitlement set for an iOS app and can cause code signing/App Store validation problems. If this target is iOS-only, remove these sandbox entitlements (or split entitlements per platform/target).
| <key>com.apple.security.app-sandbox</key> | |
| <true/> | |
| <key>com.apple.security.files.user-selected.read-only</key> | |
| <true/> |
설명
스위프트 개발환경설정