


오늘 새벽에 있었던 WWDC 2025에서 드디어,, 애플의 Foundation Models가 공개됐다. Foundation Models 프레임워크는 macOS, iOS, iPadOS, visionOS에서 동작하는 애플의 온디바이스 LLM에 접근할 수 있도록 해주는 새로운 Swift api이다.
@Generable를 사용해 온디바이스 LLM을 쉽게 활용할 수 있고, Apple Intelligence의 다양한 기능을 앱에 손쉽게 적용할 수 있다. 단, OS가 26.0 이상이어야 한다.
애플에서 특히 강조한 부분은, 모든 데이터 처리는 기기 내에서 이루어져 개인정보가 안전하게 보호되고, 인터넷 연결 없이도 동작할 수 있다는 점이었다.
예를 들어, 내가 Foundation Models를 활용해 메모장 앱을 개발한다고 할 때, 기존 사용자의 메모 내용을 LLM 모델로 분석해 요약해주거나, 중요한 내용을 자동으로 추출하는 기능을 쉽게 추가할 수 있다. 이뿐만 아니라, 사용자가 입력한 메시지를 분석해 맞춤형 알람 메시지를 생성하는 알람 앱이나, 다양한 apple intelligence 기반 기능을 앱에 적용하는 것도 가능하다고 생각된다.
이번 WWDC 2025에 발표된 Foundation Models를 사용하면, 코드 몇 줄만으로도 apple intelligence 기능을 빠르게 추가할 수 있어서 개발의 다양성과 확장성이 크게 증가된다고 생각이 들었다.

또한 WWDC 2025에서 가장 인상 깊었던 변화 중 하나는 SwiftUI에서 WebView가 공식적으로 지원된다는 점이었다. 이전까지는 SwiftUI에서 웹 콘텐츠를 보여주기 위해 반드시 UIKit의 WKWebView를 UIViewRepresentable로 래핑하거나, 써드파티 라이브러리를 사용해야 했다. 이 과정에서 SwiftUI의 선언적 패러다임과 맞지 않는 부분이 많았고, delegate 패턴을 변환하거나 상태를 동기화하는 데 번거로움이 많았었다.
그러나 이제는 SwiftUI에서 바로 WebView를 사용할 수 있게 되면서, UIKit이나 외부 라이브러리의 의존성을 완전히 벗어날 수 있게 되었다. SwiftUI만으로 네이티브하게 웹 콘텐츠를 앱에 통합할 수 있다는 점이 정말 반가웠고, SwiftUI를 주로 사용하는 iOS 개발자라면 누구나 환영하는 소식이라고 생각이 들었다.
간단한 사용법
이제 아래와 같이 단 한 줄로 웹 페이지를 띄울 수 있다.
struct ContentView: View {
var body: some View {
WebView(url: URL(string: "https://apple.com")!)
}
}
WebPage를 통한 상태 관리
WebView와 함께 제공되는 WebPage 클래스를 활용하면, 웹페이지의 제목, 로딩 상태, 진행률 등 다양한 정보를 관찰하고 SwiftUI 뷰와 연동할 수 있다.
예를 들어, 웹페이지의 타이틀이 바뀌면 네비게이션 타이틀도 자동으로 갱신된다.
@Observable
class ArticleViewModel {
let webPage = WebPage()
func loadArticle(url: URL) {
webPage.load(URLRequest(url: url))
}
}
struct ArticleView: View {
@State private var model = ArticleViewModel()
var body: some View {
NavigationView {
WebView(webPage: model.webPage)
.navigationTitle(model.webPage.title ?? "Loading...")
.onAppear {
model.loadArticle(url: articleURL)
}
}
}
}
고급 기능 지원
커스텀 URL 스킴 처리, js 실행, 사용자 에이전트 변경 등 다양한 WebKit 기능을 그대로 활용할 수 있고, 웹페이지와의 상호작용, 네비게이션 정책 결정, js 대화상자 커스터마이징 등도 WebPage의 프로토콜을 통해 구현할 수 있다.
SwiftUI의 리액티브 특성 극대화
WebPage의 상태가 바뀔 때마다 SwiftUI 뷰가 자동으로 업데이트되어, 기존 UIKit 래핑 방식보다 훨씬 자연스럽고 효율적인 코드 구성이 가능하다.
이제는 써드파티 라이브러리 및 UIKit 브릿지 코드 없이, SwiftUI 코드만으로 네이티브하게 웹 콘텐츠를 앱에 통합할 수 있게 되었다. 특히, 웹페이지의 상태 변화에 따라 SwiftUI 뷰가 자연스럽게 반응하는 구조는 SwiftUI의 강점을 극대화하는 부분이라고 생각된다.
마지막으로 SwiftUI에서 WebView가 공식 지원된다는 것은, 단순히 새로운 컴포넌트가 추가된 것 이상의 의미가 있다고 생각이 들었다. 이제 SwiftUI를 주로 사용하는 iOS 개발자들은 UIKit이나 외부 라이브러리의 종속성 없이, 더욱 일관되고 강력한 앱을 만들 수 있게 되었다.