Wrap your iPhone screen recordings in a beautiful device frame, add cinematic zoom moments, and export ready-to-share videos.
A native macOS app for turning raw screen recordings into polished marketing clips, social-media posts, and in-app tutorial overlays.
Download Maya for macOS Β· Website
Requires macOS 26.3 (Tahoe) or later. Maya is signed with a Developer ID and notarized by Apple β it opens with a normal double-click, no security workaround needed.
Want the latest unreleased changes? Build from source. Maintainers: see RELEASING.md.
- Drop an iPhone screen recording β Maya wraps it in a clean device mockup with the correct screen cutout and corner radius.
- Multiple devices: iPhone 17 Pro, iPhone 16 Pro, iPhone 15 Pro, each with their official titanium color variants (Cosmic Orange, Deep Blue, Silver, Natural / Black / White / Desert Titaniumβ¦). Switch model and color from the sidebar in one click.
- Generic mode: a brand-agnostic frame with user-defined bezel width and bezel color.
- No frame mode: ship the bare screen recording with rounded corners only.
- A corner radius slider appears in Generic / No-frame modes so you can dial from sharp to stadium.
- The framed phone lives inside a configurable canvas β 1:1, 9:16, 4:5, 4:3 landscape, 16:9 widescreen β so you can target Reels, Shorts, TikTok, YouTube, X, or in-app overlays from a single source.
- Manually scale and reposition the phone on the canvas via slider + drag.
- Optional drop shadow under the phone with controls for color, blur, X/Y offset, and opacity.
A single picker, five modes:
- None β Photoshop-style checkered preview, exports to
.movwith HEVC + alpha. - Solid β brand-aligned palette + custom hex.
- Gradient β eight curated brand presets, all derived from the app's official color (
#6466FA). - Image β drop in any image, scale-to-fill.
- Video Blur β Keynote-style blurred poster of your own video as the backdrop.
Like shots.so for Mac:
- Bottom track: live video thumbnails strip.
- Top track: hover anywhere to drop a zoom event with a
+affordance. - Each zoom event has a start, duration, scale, focus (Top / Center / Bottom), independent zoom-in / zoom-out timing, and a chosen animation curve.
- Drag the block to move it; drag the edges to resize. Everything snaps to 0.25 s intervals and to the playhead when nearby.
- Live tooltips show timestamps while dragging.
- The playhead is scrubbable.
- Selecting a zoom event opens an inline right-side editor panel so every slider tweak updates the canvas in real time β no modal, no lost context.
| Curve | Feel |
|---|---|
| Spring | Soft overshoot, lively (default) |
| Bouncy | More overshoot, playful |
| Smooth | Classic ease in/out |
| Snappy | Fast attack, slow settle |
| Gentle | Soft and organic |
| Linear | Constant rate, mechanical |
Pre-baked combinations of scale + focus + duration + curve: Subtle Pop, Quick Punch, Dramatic, Top Focus, Bottom Focus, Long Hold, Mechanical, Soft Reveal.
- With background β 1080Γ1080 (or your aspect)
.mp4, H.264. Drop straight into Reels / TikTok / Shorts. - Transparent (background set to None) β
.movwith HEVC + alpha channel. Composite the framed phone over any UI inside anotherAVPlayer/AVKitconsumer β perfect for in-app tutorials, Final Cut, Motion. - All zoom animations bake into both exports.
| Key | Action |
|---|---|
| Space | Play / pause |
| M | Mute / unmute |
| β / β | Scrub Β±0.25 s |
| β§+β / β§+β | Scrub Β±1 s |
| β« | Delete selected zoom event |
| β+D | Duplicate selected zoom event |
- SwiftUI + AppKit (custom
NSViewRepresentableforAVPlayerLayer) - AVFoundation:
AVMutableComposition, customAVVideoCompositing,AVAssetExportSession, manualAVAssetReader/AVAssetWriterpipeline for HEVC + alpha - Core Image + Metal for per-frame compositing
- VideoToolbox for HEVC-with-alpha encoder properties
- Swift Concurrency (
@Observable, actors, async/await) β export runs on a dedicated actor so the UI never blocks - App Sandbox with file hard-link/copy adoption strategy (videos are brought into the sandbox container on load so AVFoundation reads work from any thread)
- macOS 26.3 (Tahoe) or later
- Xcode 26.5 or later
- An iPhone screen recording in
.mp4/.movformat
git clone https://github.com/ronaldo-avalos/Maya.git
cd Maya
open Maya.xcodeproj
# In Xcode: βRThis project is in active development and contributions are very welcome. Whether you're an iOS/macOS dev, a designer, or someone who just loves polished tools, there's a place for you.
Maya currently ships iPhone 17 Pro, 16 Pro, and 15 Pro (each with multiple color variants), plus a configurable Generic frame and a No-frame mode. PRs that add more devices are very welcome:
- iPhone 16 / 16 Plus, iPhone 15 / 15 Plus
- iPhone SE
- iPad mini / iPad Pro
- Older models (iPhone 14, 13, 12 family)
- Android devices (Pixel, Galaxy)
To add a frame:
- Drop transparent-screen PNG(s) into
Maya/Assets.xcassets/iphone frames/β one imageset per color variant. - Register the model in
Maya/Models/DeviceFrame.swift(DeviceModel) with the frame aspect, normalized screen rect, corner radius, and aDeviceColorper variant. Append it toDeviceModel.all. - Submit a PR with a screenshot of the result. That's it.
- Undo / Redo for canvas, animations, and background changes (
βZ/ββ§Z). - Saved projects β persist a
.mayaprojdocument on disk so users can come back to a layout. - Animation presets gallery β visual previews of each preset playing on a sample phone in the editor sheet.
- Trim controls on the video track (drag in/out points to crop the recording).
- Click-spot animations β automatically zoom toward where the user tapped in the screen recording (parse the
.mp4metadata if available, or expose a click-to-mark workflow). - Caption / annotation overlays with their own timeline track.
- Watermark toggle for users who want a "Made with Maya" footer.
- A more refined empty state for the canvas before any video is loaded.
- A welcome screen with recent projects.
- Onboarding tooltips for first-launch.
- An export progress sheet with thumbnail preview of the result.
- A keyboard shortcuts cheat sheet accessible from a menu item.
- More gradient and solid color presets that work for non-indigo brands.
- More iPhone screen orientations (currently the compositor assumes portrait recordings).
- HDR pass-through for HDR screen recordings.
- Audio waveform rendering on the timeline.
- Apple Silicon performance profiling of the export pipeline.
- CI with GitHub Actions (build + lint).
- Unit tests for
AnimationSampler,DeviceFramecoordinate math, andBlurPosterCache.
- Fork the repo and create a feature branch:
git checkout -b feature/iphone-16-pro - Code the change. Try to match the existing style β small files, no unnecessary comments, single-responsibility views.
- Test locally (βR). Take a screenshot or short GIF showing the change.
- Open a PR with a clear title, a short description, and the screenshot/GIF.
For larger features, open an issue first so we can align on the approach before you spend hours on it.
Maya/
βββ MayaApp.swift App entry
βββ ContentView.swift Root β EditorView
βββ Models/ State + value types
β βββ Project Root @Observable state (video, canvas, devices, shadow, animationsβ¦)
β βββ DeviceFrame DeviceModel + DeviceColor catalog (iPhone Pro family, Generic, None)
β βββ CanvasAspectRatio 1:1, 9:16, 4:5, 4:3, 16:9 β pixel sizes + chip metadata
β βββ PhoneShadow Drop-shadow parameters (color, blur, offsets, opacity)
β βββ BackgroundOption Solid / gradient / image / video-blur / transparent
β βββ ZoomSegment Per-segment zoom animation spec
βββ Services/ AVFoundation + Core Image plumbing
β βββ DeviceFrameCompositor Custom AVVideoCompositing (per-frame compositing)
β βββ ExportService Actor that runs both .mp4 and .mov exports
β βββ AnimationSampler Envelope math for zoom segments
β βββ BlurPosterCache One-shot blurred-frame cache
β βββ VideoThumbnailGenerator Async timeline thumbnails
βββ Views/ SwiftUI views
β βββ EditorView Top-level layout (sidebar / canvas / timeline / editor panel)
β βββ CanvasView Configurable-ratio canvas with framed phone + background
β βββ FramedDeviceView Composite of video + frame overlay + shadow
β βββ BackgroundPicker Mode tabs + per-mode controls
β βββ SettingsSidebar Left sidebar (recording, canvas, device, transform, background, shadow, export)
β βββ AnimationEditorSheet Right panel for editing a selected zoom event (live preview)
β βββ Timeline/ Ruler, video strip, animations track, draggable playhead
βββ Assets.xcassets/ iPhone frame PNGs + app icon
MIT β see LICENSE.
You can fork, use Maya in personal or commercial projects, and ship derived work. Attribution is appreciated but not required.
- The app's brand color
#6466FAborrows from the Tailwind/Indigo family. - iPhone 15 / 16 / 17 Pro frame PNGs generated by the project owner.
- Built with β€οΈ on macOS Tahoe.
If Maya helps you ship a video, tag @ronaldo-avalos β we'd love to see it.
