Добавить объявление

WWDC26: AsyncImage наконец-то научился кэшировать загруженные изображения

Всем привет! На WWDC26 показали то, о чем разработчики просили с момента появления AsyncImage в iOS 15 - поддержку кэширования.

Что изменилось:


Раньше AsyncImage при каждом появлении вьюхи на экране отправлял запрос в сеть, даже если вы только что загрузили данное изображение. Разработчики выкручивались своими силами: писали кастомные обертки, подключали сторонние библиотеки, вручную сохраняли изображения на диск.

В новой версии достаточно указать политику кэширования в URLRequest:

AsyncImage(request: URLRequest(
url: imageURL,
cachePolicy: .returnCacheDataElseLoad
))

Если картинка уже есть в кэше - она берется из него. Никаких дополнительных запросов.

Когда это будет полезно:


Новая возможность пригодится во многих сценариях, например:

  • Ленты новостей и соцсетей: аватарки и прикрепленные изображения не будут перезагружаться при скролле вверх-вниз.

  • Каталоги и маркетплейсы: карточки товаров с фотографиями грузятся один раз и остаются в кэше.

  • Галереи и фотоальбомы: превьюшки не дергают сеть при каждом возврате к списку.

  • Мессенджеры и почтовые клиенты: аватарки контактов и вложенные картинки подгружаются повторно только если действительно изменились.

  • Офлайн-сценарии: при слабом сигнале или полном отсутствии сети пользователь увидит уже загруженные ранее изображения, а не пустые места.

Вывод:


На WWDC26 наконец-то доделали то, что должно было работать с момента появления AsyncImage. Кэширование - базовая вещь, которую в UIKit завезли еще много лет назад. Все это время разработчикам приходилось решать задачу, которая вообще не должна была существовать. Но теперь эта проблема осталась в прошлом.

Седьмой год SwiftUI, а мы все еще радуемся базовым вещам. Но прогресс есть и это здорово.
13.06.2026 31 570