На WWDC25 компания Apple представила новые компоненты WebView и WebPage, которые значительно упрощают интеграцию веб-контента в SwiftUI приложения, которые доступны с iOS 18.4.
✅ Что нового?
1️⃣ WebPage: удобная загрузка и управление.
Отслеживание состояния:
@State private var isLoading: Bool = false
@State private var progress: Double = 0.0
WebPage(url: URL(string: "https://t.me/hardworkerIT"))
.onLoadingChanged { loading in
isLoading = loading
}
.onProgressChanged { progress in
self.progress = progress
}
Обработка событий навигации (currentNavigationEvent), таких как ошибки, перенаправления, завершение загрузки.
2️⃣ Сохранение контента.
Теперь есть возможность сохранения веб-контента в следующих форматах:
🔹 Снимки экрана (PNG/JPEG).
🔹 PDF.
🔹 Веб-архивы (полное сохранение страницы).
WebPage(url: someURL)
.saveSnapshot(as: .pdf) { result in
switch result {
case .success(let data):
// Сохраняем PDF
case .failure(let error):
print("Ошибка: \(error)")
}
}
3️⃣ WebArchiveView — просмотр сохранённых веб-страниц.
Есть возможность отображения сохраненных страниц:
WebArchiveView(data: archivedData)
4️⃣ Дополнительные возможности:
🔹 Скролл к определённому элементу на странице.
🔹 Расширенное взаимодействие с JavaScript.
🔹 Кастомные обработчики для ссылок и форм.
🤔 Зачем это нужно?
🔸 Проще, чем WKWebView — не нужно писать обёртки для SwiftUI.
🔸 Нативные состояния загрузки — больше никаких кастомных индикаторов.
🔸 Готовые решения для экспорта и архивирования.
⚠️ Ограничения:
🔹 Требуется iOS 18.4+ / macOS 15.4+.
🔹 Для сложных сценариев (например, кастомные схемы URL) всё ещё может потребоваться WKWebView.
Больше информации доступно в официальной документации.
💡 Вывод:
Новые API делают работу с веб-контентом в SwiftUI такой же простой, как и с любыми другими вью. Теперь встраивать браузеры, документацию или веб-интерфейсы стало ещё удобнее!
➡️ Подписаться на канал
Мобильный трудоголик

