Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Aeastr/Loupe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Loupe Icon

Loupe

A SwiftUI debugging toolkit for visualizing renders, layouts, and measurements.

Swift 6.0+ iOS 17+ macOS 14+ tvOS 17+ watchOS 10+ visionOS 1+

Overview

Loupe provides runtime debugging tools for SwiftUI applications. Visualize render cycles, inspect layout bounds, track positions, and overlay precision grids—all with minimal setup and zero impact on production builds.

Render Debugging

  • .debugRender() - Visualize when views re-render with colored backgrounds
  • .debugCompute() - Visualize when views re-initialize with red flashes
  • RenderCheck - Batch debugging wrapper for multiple views

Layout Inspection

  • VisualLayoutGuide - Display bounds, safe area insets, and dimensions
  • DraggablePositionView - Track coordinates with draggable overlays
  • VisualGridGuide - Overlay precision alignment grids

Container Shapes (iOS 26+)

  • VisualCornerInsetGuide - Visualize ConcentricRectangle and container shapes

Installation

dependencies: [
    .package(url: "https://github.com/Aeastr/Loupe.git", from: "1.0.0")
]
import Loupe

Usage

Render Debugging

See when views re-render or re-compute:

Text("Count: \(count)")
    .debugRender()      // Shows re-renders with colored backgrounds
    .debugCompute()     // Shows re-computations with red flashes

Batch debug multiple views:

RenderCheck {
    Text("A")
    Text("B")
    Text("C")
}

Full documentation →

Layout Inspection

Display bounds, safe area insets, and dimensions:

ZStack {
    Color.blue
        .overlay {
            VisualLayoutGuide("Content Area")
        }
}

Enable dragging and persistence:

VisualLayoutGuide("Debug View")
    .visualLayoutGuideInteractions(dragEnabled: true, persistenceEnabled: true)

Full documentation →

Position Tracking

Monitor coordinates with draggable overlays:

DraggablePositionView("Tracker")
    .draggablePositionViewInteractions(dragEnabled: true)

Full documentation →

Grid Overlays

Add precision alignment grids:

VisualGridGuide("8pt Grid", squareSize: 8, fit: .exact)
    .ignoresSafeArea()

Full documentation →

Container Shapes (iOS 26+)

Visualize ConcentricRectangle and container shapes:

VisualCornerInsetGuide("Container Shape")
    .padding(20)
    .containerShape(RoundedRectangle(cornerRadius: 32))

Full documentation →

How It Works

All debugging tools are conditionally compiled with #if DEBUG. They are automatically excluded from release builds—no manual cleanup required, no performance impact in production.

  • debugRender() uses a Canvas that generates a random color on each render
  • debugCompute() uses a LocalRenderManager that triggers a red flash on view initialization
  • VisualLayoutGuide uses onGeometryChange for efficient size/inset tracking with automatic collision detection
  • VisualGridGuide calculates optimal square sizes using GCD for perfect tiling

Contributing

Contributions welcome. Please feel free to submit a Pull Request.

License

MIT. See LICENSE for details.

About

A SwiftUI debugging toolkit for visualizing renders, layouts, and measurements.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages