# sdwebimage/sdwebimageswiftui architecture

> Architecture diagram of the GitHub repository sdwebimage/sdwebimageswiftui, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sdwebimage/sdwebimageswiftui
- Repository: https://github.com/sdwebimage/sdwebimageswiftui

## Overview

SDWebImageSwiftUI is a SwiftUI image-loading framework built over SDWebImage. An app supplies a URL and view configuration to WebImage; its ImageManager loads and reports image state, which the view presents with placeholders, progress indicators, transitions, and optional animated playback. AnimatedImage provides a native-view path for animated content. The README also documents progressive loading, reusable downloads, request/response modification, transformers, and multiple caches/loaders, primarily as SDWebImage-backed capabilities. Wiring for unsampled view code is inferred only where documented; optional plugin integrations are shown separately.

Main entry points: [`SDWebImageSwiftUI/Classes/WebImage.swift`](https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/WebImage.swift) (WebImage), [`SDWebImageSwiftUI/Classes/AnimatedImage.swift`](https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/AnimatedImage.swift) (AnimatedImage), [`SDWebImageSwiftUI/Classes/ImageManager.swift`](https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/ImageManager.swift) (ImageManager), [`SDWebImageSwiftUI/Classes/ImagePlayer.swift`](https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/ImagePlayer.swift) (ImagePlayer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_views["SwiftUI Views"]
  node_webimage["WebImage<br/>[WebImage.swift]"]
  node_animatedimage["AnimatedImage"]
  node_nativewrapper["Native Image Wrapper"]
end

subgraph group_loading["Loading State"]
  node_imagemanager["ImageManager<br/>[ImageManager.swift]"]
end

subgraph group_playback["Animation Playback"]
  node_imageplayer["ImagePlayer<br/>[ImagePlayer.swift]"]
end

subgraph group_presentation["Presentation"]
  node_indicator["Loading Indicator<br/>[Indicator.swift]"]
  node_transition["Transitions<br/>[Transition.swift]"]
  node_imagebridge["Image Type Bridge<br/>[Image.swift]"]
end

node_app(("App View"))
node_sdmanager["SDWebImage Manager"]
node_sdanimatedplayer["SD Animated Player"]
node_plugins["Coder Plugins"]

node_app -->|"configures view"| node_webimage
node_app -->|"configures view"| node_animatedimage
node_webimage -->|"requests load"| node_imagemanager
node_imagemanager -->|"loads URL"| node_sdmanager
node_sdmanager -.->|"can use coders"| node_plugins
node_webimage -->|"sets up playback"| node_imageplayer
node_imageplayer -->|"controls frames"| node_sdanimatedplayer
node_animatedimage -->|"loads image"| node_sdmanager
node_animatedimage -->|"updates native view"| node_nativewrapper
node_webimage -->|"shows loading state"| node_indicator
node_webimage -->|"applies transition"| node_transition
node_webimage -->|"converts platform image"| node_imagebridge

click node_webimage "https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/WebImage.swift"
click node_animatedimage "https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/AnimatedImage.swift"
click node_imagemanager "https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/ImageManager.swift"
click node_imageplayer "https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/ImagePlayer.swift"
click node_nativewrapper "https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/ImageViewWrapper.swift"
click node_indicator "https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/Indicator/Indicator.swift"
click node_transition "https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/Transition/Transition.swift"
click node_imagebridge "https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/Image.swift"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_webimage,node_animatedimage,node_nativewrapper,node_app toneBlue
class node_imagemanager toneAmber
class node_imageplayer toneMint
class node_indicator,node_transition,node_imagebridge toneRose
class node_sdmanager,node_sdanimatedplayer,node_plugins toneIndigo
```

## Components

### SwiftUI Views

- [WebImage](https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/WebImage.swift): `SDWebImageSwiftUI/Classes/WebImage.swift`
- [AnimatedImage](https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/AnimatedImage.swift): `SDWebImageSwiftUI/Classes/AnimatedImage.swift`
- [Native Image Wrapper](https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/ImageViewWrapper.swift): `SDWebImageSwiftUI/Classes/ImageViewWrapper.swift`

### Loading State

- [ImageManager](https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/ImageManager.swift): `SDWebImageSwiftUI/Classes/ImageManager.swift`

### Animation Playback

- [ImagePlayer](https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/ImagePlayer.swift): `SDWebImageSwiftUI/Classes/ImagePlayer.swift`

### Presentation

- [Loading Indicator](https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/Indicator/Indicator.swift): `SDWebImageSwiftUI/Classes/Indicator/Indicator.swift`
- [Transitions](https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/Transition/Transition.swift): `SDWebImageSwiftUI/Classes/Transition/Transition.swift`
- [Image Type Bridge](https://github.com/sdwebimage/sdwebimageswiftui/blob/master/SDWebImageSwiftUI/Classes/Image.swift): `SDWebImageSwiftUI/Classes/Image.swift`

### Other components

- **App View**
- **SDWebImage Manager**
- **SD Animated Player**
- **Coder Plugins**

## Connections

- App View → WebImage: configures view
- App View → AnimatedImage: configures view
- WebImage → ImageManager: requests load
- ImageManager → SDWebImage Manager: loads URL
- SDWebImage Manager → Coder Plugins: can use coders
- WebImage → ImagePlayer: sets up playback
- ImagePlayer → SD Animated Player: controls frames
- AnimatedImage → SDWebImage Manager: loads image
- AnimatedImage → Native Image Wrapper: updates native view
- WebImage → Loading Indicator: shows loading state
- WebImage → Transitions: applies transition
- WebImage → Image Type Bridge: converts platform image
