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 attempt at removing the
idea of traditional tabs. Built using UIKit and SwiftUI, it relies on nested
ScrollViews, something Apple’s HIG usually discourages.
- Allow smooth scrolling into a nested ScrollView from an outer ScrollView while
retaining inertia and gesture recognition. - Allow users to abort or scroll out of the inner ScrollView without jank.
- Coordinate locking and unlocking scroll offset's based on a single gesture.
- & Many other edge cases.
This was possibly the most difficult thing to build and at the same time the most
compelling. By crafting a clever way for scrolling to go infinitely in either
direction while still having designated break points via bounce, you get the "feel"
of segmentation within an app, without the abrupt context switching of traditional
tabs.
I also see a place for this type of interface as the perfect foundation for a more
idealistic chat interface. Sidebar's feel archaic and antithetical to the primary
goal of a chatbot, which is to make the user feel as if they are having a long
standing conversation with something intelligent.
When you have a conversation with a person, you are never "opening a new tab" when
you want to shift the topic to something else. Ideas naturally ebb and flow as the
conversation evolves. Context switching is natural when going human <->
human, and should feel as such going human <-> machine. You can imagine an
effortless gesture dragging down to reveal past conversations rendered as custom
views.
The challenge of knowing when to "refresh" context should be handled by the model
itself in most cases.
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.
- 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.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.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.
Screen.Recording.2026-01-09.at.11.37.02.PM.mov
Attempt at recreating MetroUI's beautiful Turnstile animation/transition in SwiftUI/UIKit.
The key trick to the effect is how Microsoft designers approached making the cells appear as if they were flipping inside singular 3D space, without actually needing to render a 3D view. Each cell's leading-center edge is anchored to the leading edge of the container screen, not anchored to itself. Without this, you get an effect where the cells appear to flip out towards the screen in a very jarring POV perspective, rather than appearing as if they are flipping within a singular space.
There is also a variability to the stagger as each cell flips out of view one by one, to give some naturalism to the effect. I tried my best to get it to feel as 1:1 as possible but I am still mising finer grained values. I do believe this interface was far ahead of it's time, especially in terms of simplicity.
Ref: https://matthiasshapiro.com/basic-windows-phone-7-motion-design/
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
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.44.33.AM.mp4
Swift port of the Python circlify library. Generates Apollonian circle packings
algorithmically for layout or data visualization.
Random sketches...