# siteline/swiftui-introspect architecture

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

- Interactive diagram: https://gitdiagram.com/siteline/swiftui-introspect
- Repository: https://github.com/siteline/swiftui-introspect

## Overview

SwiftUI Introspect is a Swift package that lets application code customize the native UIKit/AppKit view or controller backing a SwiftUI view. The workflow is: a consumer applies `.introspect` with a view type and supported OS versions; the modifier installs invisible boundary/inspection views; a selector searches the relevant native hierarchy; and the customization closure receives a matching platform entity. The tree and README document a broad set of controls, containers, navigation, and presentation adapters. Some adapter implementations were not sampled, so their internal search details are not expanded here.

Main entry points: [`Sources/IntrospectableViewType.swift`](https://github.com/siteline/swiftui-introspect/blob/main/Sources/IntrospectableViewType.swift) (Introspectable type), [`Sources/Introspect.swift`](https://github.com/siteline/swiftui-introspect/blob/main/Sources/Introspect.swift) (Introspect modifier), [`Sources/IntrospectionSelector.swift`](https://github.com/siteline/swiftui-introspect/blob/main/Sources/IntrospectionSelector.swift) (Target selector), [`Sources/IntrospectionView.swift`](https://github.com/siteline/swiftui-introspect/blob/main/Sources/IntrospectionView.swift) (Inspection view)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Public API"]
  node_introspect["Introspect modifier<br/>[Introspect.swift]"]
  node_viewtype["Introspectable type"]
end

subgraph group_runtime["Introspection runtime"]
  node_selector["Target selector"]
  node_inspection["Inspection view"]
  node_platformview["Platform abstractions<br/>[PlatformView.swift]"]
  node_markers["View markers<br/>[Introspect.swift]"]
end

subgraph group_platform["Platform selection"]
  node_versions["Version predicates"]
  node_platformversions["OS version checks"]
end

subgraph group_adapters["View adapters"]
  node_controls["Control adapters"]
  node_collections["Collection adapters"]
  node_navigation["Navigation adapters"]
  node_presentation["Presentation adapters"]
  node_otheradapters["Other view adapters"]
end

node_consumer(("SwiftUI app code"))
node_swiftui["SwiftUI hierarchy"]
node_native["UIKit / AppKit"]
node_customize(("Customization closure"))

node_consumer -->|"applies modifier"| node_introspect
node_consumer -->|"provides closure"| node_customize
node_introspect -->|"accepts type"| node_viewtype
node_introspect -->|"selects supported OS"| node_versions
node_versions -->|"checks availability"| node_platformversions
node_introspect -->|"installs markers"| node_markers
node_markers -->|"bracket view"| node_swiftui
node_introspect -->|"embeds inspector"| node_inspection
node_inspection -->|"invokes selector"| node_selector
node_selector -->|"searches hierarchy"| node_native
node_inspection -->|"passes matched target"| node_customize
node_selector -->|"uses platform entities"| node_platformview
node_controls -->|"defines supported types"| node_viewtype
node_collections -->|"defines supported types"| node_viewtype
node_navigation -->|"defines supported types"| node_viewtype
node_presentation -->|"defines supported types"| node_viewtype
node_otheradapters -->|"defines supported types"| node_viewtype
node_versions -->|"provides selected selector"| node_selector

click node_introspect "https://github.com/siteline/swiftui-introspect/blob/main/Sources/Introspect.swift"
click node_viewtype "https://github.com/siteline/swiftui-introspect/blob/main/Sources/IntrospectableViewType.swift"
click node_versions "https://github.com/siteline/swiftui-introspect/blob/main/Sources/PlatformViewVersion.swift"
click node_platformversions "https://github.com/siteline/swiftui-introspect/blob/main/Sources/PlatformVersion.swift"
click node_selector "https://github.com/siteline/swiftui-introspect/blob/main/Sources/IntrospectionSelector.swift"
click node_inspection "https://github.com/siteline/swiftui-introspect/blob/main/Sources/IntrospectionView.swift"
click node_platformview "https://github.com/siteline/swiftui-introspect/blob/main/Sources/PlatformView.swift"
click node_markers "https://github.com/siteline/swiftui-introspect/blob/main/Sources/Introspect.swift"
click node_controls "https://github.com/siteline/swiftui-introspect/tree/main/Sources/ViewTypes"
click node_collections "https://github.com/siteline/swiftui-introspect/tree/main/Sources/ViewTypes"
click node_navigation "https://github.com/siteline/swiftui-introspect/tree/main/Sources/ViewTypes"
click node_presentation "https://github.com/siteline/swiftui-introspect/tree/main/Sources/ViewTypes"
click node_otheradapters "https://github.com/siteline/swiftui-introspect/tree/main/Sources/ViewTypes"

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_introspect,node_viewtype,node_consumer,node_swiftui toneBlue
class node_selector,node_inspection,node_platformview,node_markers toneAmber
class node_versions,node_platformversions toneMint
class node_controls,node_collections,node_navigation,node_presentation,node_otheradapters toneRose
class node_native,node_customize toneIndigo
```

## Components

### Public API

- [Introspect modifier](https://github.com/siteline/swiftui-introspect/blob/main/Sources/Introspect.swift): `Sources/Introspect.swift`
- [Introspectable type](https://github.com/siteline/swiftui-introspect/blob/main/Sources/IntrospectableViewType.swift): `Sources/IntrospectableViewType.swift`

### Introspection runtime

- [Target selector](https://github.com/siteline/swiftui-introspect/blob/main/Sources/IntrospectionSelector.swift): `Sources/IntrospectionSelector.swift`
- [Inspection view](https://github.com/siteline/swiftui-introspect/blob/main/Sources/IntrospectionView.swift): `Sources/IntrospectionView.swift`
- [Platform abstractions](https://github.com/siteline/swiftui-introspect/blob/main/Sources/PlatformView.swift): `Sources/PlatformView.swift`
- [View markers](https://github.com/siteline/swiftui-introspect/blob/main/Sources/Introspect.swift): `Sources/Introspect.swift`

### Platform selection

- [Version predicates](https://github.com/siteline/swiftui-introspect/blob/main/Sources/PlatformViewVersion.swift): `Sources/PlatformViewVersion.swift`
- [OS version checks](https://github.com/siteline/swiftui-introspect/blob/main/Sources/PlatformVersion.swift): `Sources/PlatformVersion.swift`

### View adapters

- [Control adapters](https://github.com/siteline/swiftui-introspect/tree/main/Sources/ViewTypes): `Sources/ViewTypes`
- [Collection adapters](https://github.com/siteline/swiftui-introspect/tree/main/Sources/ViewTypes): `Sources/ViewTypes`
- [Navigation adapters](https://github.com/siteline/swiftui-introspect/tree/main/Sources/ViewTypes): `Sources/ViewTypes`
- [Presentation adapters](https://github.com/siteline/swiftui-introspect/tree/main/Sources/ViewTypes): `Sources/ViewTypes`
- [Other view adapters](https://github.com/siteline/swiftui-introspect/tree/main/Sources/ViewTypes): `Sources/ViewTypes`

### Other components

- **SwiftUI app code**
- **SwiftUI hierarchy**
- **UIKit / AppKit**
- **Customization closure**

## Connections

- SwiftUI app code → Introspect modifier: applies modifier
- SwiftUI app code → Customization closure: provides closure
- Introspect modifier → Introspectable type: accepts type
- Introspect modifier → Version predicates: selects supported OS
- Version predicates → OS version checks: checks availability
- Introspect modifier → View markers: installs markers
- View markers → SwiftUI hierarchy: bracket view
- Introspect modifier → Inspection view: embeds inspector
- Inspection view → Target selector: invokes selector
- Target selector → UIKit / AppKit: searches hierarchy
- Inspection view → Customization closure: passes matched target
- Target selector → Platform abstractions: uses platform entities
- Control adapters → Introspectable type: defines supported types
- Collection adapters → Introspectable type: defines supported types
- Navigation adapters → Introspectable type: defines supported types
- Presentation adapters → Introspectable type: defines supported types
- Other view adapters → Introspectable type: defines supported types
- Version predicates → Target selector: provides selected selector
