SwingStudio

Your swing. Captured. Analyzed. Perfected.

The app for iPhone, iPad, and Mac that turns every practice session into a coaching session—automatically.

Scroll
60s buffer

Always recording.
Never miss a swing.

A dual-file AVAssetWriter system maintains a rolling ~60-second capture buffer. When a swing is detected, the clip is automatically extracted—no need to hit record. Just swing. Clip duration is configurable from 3 to 45 seconds. And if auto-detection isn't what you want, a "Save Last Swing" button lets you manually grab the most recent clip on demand.

Camera Studio

iPhone films.
iPad coaches.

Connect your iPhone as a camera and iPad as a studio using peer-to-peer connectivity. Asymmetric discovery means each device knows its role instantly. Video streams in real-time; clips transfer automatically.

threshold

Your swing,
found automatically.

Vision pose estimation runs at ~15 frames per second, feeding a heuristic energy detection pipeline. When motion energy crosses the threshold, your swing is detected and a clip is extracted—automatically, every time. Choose from swing alerts—an audible chime or a camera flash—so you know it was captured without ever looking at the screen.

32°

Draw on your swing.
See what matters.

Lines, circles, boxes, angle measurements—all in multiple colors with three line thickness options and full undo/redo. Annotations overlay your video so you can mark positions, trace paths, and measure angles frame by frame. When you export, annotations are burned directly into the video frames—your markup travels with the clip.

Two swings. One screen.
Every difference visible.

Load any two clips into a two-up comparison view with independent playback controls. Swap panels with a tap to flip your perspective. Share annotation mode across both panels to mark up differences in real time.

Study the swings
you admire.

Import professional swing videos from your Photos library or Files. Tag them, favorite them, and study them alongside your own clips in the comparison view.

Every session.
Organized. Searchable.

An Instagram-style feed of your practice sessions with filter chips, grid and feed view toggle, and date-grouped organization. Search by tags or notes to surface exactly what you need. Import sessions from Photos or Files to consolidate your entire swing library in one place. Find any swing from any session instantly.

.mov

Share your progress.
Annotations included.

Export any clip as a video with your annotations composited directly into the frames. Lines, circles, angles—all burned in, frame by frame. Then share via Messages, AirDrop, or save to your camera roll. Your markup travels with the video.

# #driver #driver #fade #practice

Tag it. Find it.
Instantly.

Add notes to any session or clip with inline #hashtag support. Tags are extracted automatically, deduplicated, and searchable. Start typing a tag and autocomplete suggests matches from your history. Filter your entire library by any tag in seconds.

240 fps

240 frames per second.
Every micro-movement.

Capture at up to 240fps for frame-by-frame slow motion of your fastest moves. Choose from 240, 120, or 60fps. Pair with configurable video quality—from balanced 720p to maximum 4K detail—and optional compression that runs in the background without interrupting capture.

iPhone. iPad. Mac.
Your swing, everywhere.

SwingStudio runs natively on iPhone, iPad, and Mac. Capture at the range on your iPhone, review on your iPad courtside, then take your clips home and analyze every frame on the big screen. On Mac, dive deep into offline analysis—annotations, comparisons, and frame-by-frame review on a display built for detail.

Built for serious
practice.

60+ seconds Capture Buffer

Dual-file AVAssetWriter rotation maintains ~35-second segments for a continuous rolling buffer. Extract configurable clips from 3 to 45 seconds on demand.

Up to 240fps Frame Rate

Choose from 240, 120, or 60 fps capture. Frame rate is prioritized in the capture pipeline to ensure consistent slow-motion playback quality.

720p to 4K Video Quality

Three quality presets: Balanced (720p), High, and Max Detail (4K). Background compression runs without interrupting active capture.

~15 fps Pose Estimation

Apple Vision framework processes 11 joint groups on a dedicated background queue at approximately 15 frames per second, feeding the detection pipeline in real time.

4 algorithms Swing Detection

Four heuristic algorithms: v1 and v1.1 for face-on, v1-dtl and v1.1-dtl for down-the-line. Multi-joint confirmation reduces false positives with configurable energy thresholds and cooldown periods.

Sound or Flash Swing Alerts

Get notified when a swing is detected with either an audible chime or a camera torch flash. Configurable per device so you never need to check the screen.

Peer-to-peer Connectivity

Multipeer Connectivity with asymmetric discovery. JPEG video streaming at 1-30 fps between devices. Automatic role assignment and disconnect recovery.

4 tools Annotations

Lines, circles, boxes, and angle measurements. Six color options, three line thicknesses, full undo/redo stack. Annotations persist per frame.

Composited Export

Custom AVVideoCompositing pipeline burns annotations frame-by-frame into the exported video. Trim applied, shared via the system share sheet.

Two-up Comparison

Independent playback per panel with panel swap. Up to 5x zoom with shared annotation mode and visibility controls across both panels.

#hashtags Notes & Tags

Inline hashtag detection with autocomplete from your tag history. Tags are deduplicated and searchable across your entire clip library.

Import Reference Library

Import reference swings from Photos or Files with automatic metadata extraction. Fully compatible with the comparison view for side-by-side study.

Feed + Grid Session History

Toggle between feed and grid views. Filter chips, date-grouped sections, tag search, and session import from Photos or Files.

iOS 17+ / macOS Platform

iPhone, iPad, and Mac. Built with SwiftUI and @Observable. AsyncStream throughout, no Combine. Actor-based concurrency with protocol-driven dependency injection.