SwiftUI 맥 앱 개발, WWDC 26 업데이트 핵심 정리

by DD
19시간 전
조회수 2

WWDC 26에서 SwiftUI 맥 앱 개발 관련 주요 개선 사항이 발표되었습니다.

선택 상태 관리를 위한 `.backgroundProminence` 환경값 도입으로 커스텀 로우 호환성이 향상되었습니다.

드래그 앤 드롭(Drag & Drop) API 개선으로 세션 가시성 확보 및 UI 업데이트가 용이해졌습니다.

키보드 단축키(Keyboard Shortcuts) 지원 격차 해소를 위한 `.onMoveCommand`의 iOS 지원 필요성이 제기되었습니다.

선택 상태 관리를 위한 `.backgroundProminence` 활용

기존 글에서 제기된 `.isEmphasized`와 유사한 기능으로 `.backgroundProminence` 환경값이 추가되었습니다. 이는 List 및 Table 뷰에서 선택 상태에 따라 배경 강조를 자동으로 업데이트하며, 커스텀 로우(Custom Row) 개발 시 향후 List/Table 내부에 배치될 경우를 대비한 호환성 확보에 기여합니다. 다만, List/Table을 사용하지 않는 경우 기존처럼 상태 추적(State Tracking) 및 환경값 전달 방식이 여전히 유효합니다.

드래그 앤 드롭(Drag & Drop) API 개선

새로운 `.onDragSessionUpdated` API는 드래그 세션 시작 시점부터 UI 가시성 확보 및 세션 종료 시 UI 정리를 가능하게 합니다. 이는 AppKit에서 오랫동안 지원해 온 기능으로, SwiftUI의 드래그 앤 드롭 경험을 크게 향상시킬 것으로 기대됩니다. 다만, 실제 적용은 최신 OS 버전 지원 정책에 따라 2년 후가 될 것으로 예상됩니다. 또한, 단순 재정렬을 위한 `.reorderable` 모디파이어도 새롭게 추가되었습니다.

키보드 단축키(Keyboard Shortcuts) API의 플랫폼 간 격차

iOS에서 `.onMoveCommand`를 사용할 수 없어 `.onKeyPress`와 같은 하위 추상화를 사용해야 하는 점이 지적되었습니다. 이는 의도 기반(Intent-based) API의 부재로, 사용자 경험 측면에서 아쉬움을 남깁니다. tvOS에서는 사용 가능한 `.onMoveCommand`가 iPadOS에서는 지원되지 않는 것은 API 가용성 격차(API Availability Gap)로, 크로스 플랫폼 UI 프레임워크의 약속을 약화시키는 요인으로 언급됩니다.

컨텍스트 메뉴(Context Menu) 및 툴바(Toolbar) API 개선 필요성

컨텍스트 메뉴가 열려 있는지 여부를 알 수 없는 문제는 Mac 인터페이스 구축 시 특히 불편함을 야기합니다. iOS와 달리 macOS에서는 상호작용 대상 자체를 시각적으로 표현할 정보가 필요하기 때문입니다. 툴바 API 관련해서는 `.visibilityPriority` 모디파이어가 소개되었으나, 기존에 제기된 오버플로우 메뉴(Overflow Menu) 관리 문제는 해결되지 않았다고 합니다.

SwiftUI의 API 발견 가능성(Discoverability) 문제

커뮤니티에서는 SwiftUI의 높은 API 컴포저빌리티(Composability)에도 불구하고, 수많은 환경값(Environment Values)으로 인해 발견 가능성(Discoverability)이 떨어진다는 의견이 있습니다. 특히 뷰 모디파이어가 종종 환경값을 설정하지만, 그 효과가 문서화되지 않아 트라이 앤 에러(Trial and Error) 방식에 의존하게 되는 경우가 많다고 지적합니다.

UI의 순수 함수(Pure Function) 비유에 대한 비판

일부 개발자들은 UI를 모델의 순수 함수로 간주하는 접근 방식에 대해 비판적입니다. UI는 모델과 상호작용하는 독립적인 개체이며, 이 데이터 흐름(Data Flow)을 숨기려는 시도는 좋지 않은 결과를 초래할 수 있다고 주장합니다. UI는 사용자에게 가장 확실한 부분이며, 모델과의 명확한 통신 메커니즘이 중요하다고 강조합니다.

A WWDC 26 Update on Building a Mac-assed App with SwiftUI