Design is not just what it looks like and feels like. Design is how it works.
I think it may be wiser for iOS engineers to focus more on the "flow" of how you use an app, rather than simpler things like typography and layout. Many of these prototypes explore what I personally consider to be design engineering, which is less about how things "look", and more about how they function. As general guidelines, slide transitions should not exist as screens are too wide now. Animations and screen space transitions should only occur along the Y or Z-axes. Text should be big and bold. Titlebar's and footers should not exist, as clipping content so abruptly feels distasteful to the rounded edges of the screen.
Visual abstraction, in the form of navigation hierarchy for example, introduces complexity not only for the user but for us as well. Ever written a navigation router? As a designer/engineer, ask yourself why do you need to push the user into an entirely new screen state to simply express a few words, or showcase a new view or piece of content. Why do you think it justifiable then, to write the code and subsequent viewmodel's to maintain that screen state and wire it into the flow across your application. It's not that I believe navigation should disappear entirely, but that navigation as is, is excessive, and the less of it there is, the better both for the user and developer.
Screen_Recording_2025-10-03_at_12.10.38.AM.mp4
Internally known as "LemonadeView", this was Apple’s first Photos interface without traditional tabs. Built using UIKit and SwiftUI, it relies on nested ScrollViews, something Apple’s HIG usually discourages.
The challenge:
- Allow smooth scrolling into a nested ScrollView from an outer ScrollView while keeping inertia.
- Allow users to abort or scroll out of the inner ScrollView without jank.
Achieved using custom scroll logic instead of reverse-engineering Apple’s full scroll physics.
screen_recording_2025-10-03_at_12.25.52.am.1080p.mp4
Rethinks the side-to-side navigation of apps like Twitter or Threads. Tapping a thread animates it vertically into view, sliding up or down like a drawer, and threads can be stacked and restored interactively.
Hybrid architecture:
- SwiftUI handles state and transitions using MatchedGeometryEffect and ObservableObject.
- UIKit manages heavy view rendering for better performance.
Screen_Recording_2025-10-03_at_12.32.47.AM.mp4
An interaction model that lets users "leave their mark" on a track or album. Each swipe direction produces a different keyframe animation synced with Metal shaders.
- Swipe left: "Heartbreak" animation with ripple shader (via Janum Trivedi’s Wave package).
- Swipe right: "Heartbeat" animation with dynamic keyframes.
Includes a retargeting method and custom Metal ripple effect inspired by WWDC’s Metal Shader demo.
Screen_Recording_2025-10-03_at_12.37.48.AM.mp4
Recreates the iridescent shimmer seen in bird feathers, a port of KhronosGroup’s physical model. Implemented in Metal and rendered with SceneKit on a 3D ellipsoid.
Originally designed as a profile card (inspired by Artifact’s medallion UI). Supports engraving of text or shapes via CoreImage filters and Objective-C headers.
Screen_Recording_2025-10-03_at_12.42.07.AM.mp4
A Metal-driven holographic sticker effect. Uses the Vision API to:
- Trace image contours and draw white strokes around them.
- Extract contour data directly for dynamic edge highlighting.
Explores how Metal shaders can drive realistic, depth-rich animations instead of simple gradient tricks.
Screen_Recording_2025-10-03_at_12.44.33.AM.mp4
Swift port of the Python circlify library. Generates Apollonian circle packings algorithmically for layout or data visualization.
Screen_Recording_2025-10-03_at_12.50.33.AM.mp4
A liquid, morphing interface inspired by the Dynamic Island, created before Apple’s own "Liquid Glass". Built entirely in SwiftUI using the Canvas API (not Metal).
Acts as a tab bar replacement, with fluid, glass-like animations resembling Apple’s later LiquidGlass in SwiftUI.
Screen_Recording_2025-10-03_at_12.53.04.AM.mp4
A card deck paging view with subtle tilt and rotation effects. Designed to fix clipping artifacts common in stacked card interfaces. Smooth transitions and dynamic depth achieved through custom geometry and animation timing.
attaches an AuxiliaryView to a UIContextMenu, the main code responsible for attaching the view is thanks to DominicGo - surprisingly it doesn't use any private api's the slightly annoying part was hooking into the native context menu gesture to allow a user to be able to simply hold and drag without lifting a finger to select something. keeps the natural friction spring physics intact without needing to manually add another gesture on top
Random sketches...