55 free components · MIT licensed

Your app shouldn't
look vibe-coded.

The motion, haptics and accessibility the good apps get right — as production SwiftUI components. Every one is a single file that depends on nothing butSwiftKitUI.swift, so your agent can install one correctly on the first try. Free forever, no sign-up. Point your agent at /ui/llms.txt.

Every preview below runs the same spring values as the Swift component it shows — duration 0.32, bounce 0.12 and four more, used everywhere. Reduce Motion is respected here and on device.

Face ID
Unlock instantly
Push Notifications
Daily at 09:00
Share Analytics
Anonymous only

Toggle

Drag the knob, do not just tap it. Release commits on projected velocity, so a short fast flick still switches, and the track colour crossfades under your finger.

Get the free code →
Home

Custom Tab Bar

One pill, moved by the layout engine rather than an offset you calculate. The label opens with the pill and leaves instantly, so two are never visible at once.

Get the free code →
A
Aster Coffee
Today · 08:12
−$4.80
N
North Yard
Today · 11:47
−$23.15
P
Pico Transit
Yesterday
−$2.40

Section

A titled group of rows that assembles on a stagger instead of appearing at once. Generic over its content, so a section never needs to know what a row is.

Get the free code →
Wi-FiNorth YardOn
Storage42 GB of 128 GB
Sign Out

Row

Leading symbol, title, optional subtitle, and whatever you want trailing. The separator insets to the title so a stack reads as one list, not a pile of boxes.

Get the free code →
Revenue
$0
12.4%

Revenue Card

A trend line that draws itself rather than fading in, over a gradient fill, with the figure counting up to meet it and the last point popping into place.

Get the free code →
0
Score

Gauge

A 270-degree arc that sweeps to its value. The arc carries its own start angle, so the label stays upright without the caller counter-rotating anything.

Get the free code →
Now playing
Liquid Glass

Glass Panel

iOS 26 Liquid Glass with a specular rim, bright at the top-left and gone by the bottom-right. Without that edge, frosted glass just reads as grey.

Get the free code →
$9.99 / month

Segmented Control

The indicator travels between segments instead of cutting, and the value beneath it swaps on the same spring so the two read as one movement.

Get the free code →

Activity Indicator

Three loaders that are not the system spinner: bouncing dots on a stagger, a sweeping arc, and equaliser bars. All stop dead under Reduce Motion.

Get the free code →
70kg
67
68
69
70
71
72
73
74
75
76
77

Wheel Picker

A horizontal ruler for weight, age or tempo. Values snap to centre and tick as they pass, framed by a window rather than a line drawn through them.

Get the free code →
Volume28
Brightness72

Slider

The track thickens and the thumb grows on contact, the same trick that makes the system volume slider feel physical, with haptic ticks across steps.

Get the free code →

Skeleton

Placeholders shaped like the content that is coming, so nothing jumps when it lands. The shimmer is staggered per row and disabled under Reduce Motion.

Get the free code →
Start Free Trial
Maybe later
Delete Account

Button

Five roles on one interruptible spring, so a rapid double-tap retargets mid-flight instead of queueing. The haptic fires on press-down, not release.

Get the free code →
Email
ada@northyard.co
Password
••••••••
That password is too short.

Text Field

The label rises within the box, never onto the border where it would collide with the stroke. The error slot reserves its height so validation never shoves the form.

Get the free code →
swiftui toggle
Cancel

Search Bar

Cancel is width-animated rather than inserted, so the field shrinks smoothly instead of the button popping in and shoving it sideways.

Get the free code →
Enter the code we sent you

Code Field

One hidden field drives visible boxes, which is the only approach that keeps SMS autofill working. Per-box fields look right and silently break it.

Get the free code →
Guests
2

Stepper

Press and hold to repeat, accelerating to a floor so it never runs away. Digits roll rather than pop, because at hold speed a popping label reads as flicker.

Get the free code →
Drag across the stars

Rating

Tap or drag across the stars. Only the star being set pops — popping all of them at once reads as a glitch rather than as feedback.

Get the free code →
SwiftUI
Charts
Glass
Haptics

Chip

Selection animates on the same spring as the toggle and the tab bar, so a filter row feels like the same control family rather than a neighbour.

Get the free code →

Colour Picker

A fixed brand palette, not an infinite wheel. The selection ring sits outside the swatch so the colour being chosen is never altered by its own UI.

Get the free code →
Swift Kit Pro
Lifetime access
One padding scale, one radius, one shadow — so a screen of cards reads as one surface.

Card

One padding scale for every card. Without it each screen picks its own and they drift apart by a few points until nothing lines up.

Get the free code →
NeutralProLiveBetaExpired3

Badge

Tones resolve to real tinted colours rather than opacity over a solid, because opacity composites against whatever is behind it and drifts between screens.

Get the free code →

Icon Bubble

The tinted container every settings row, feature list and empty state reinvents slightly differently. The box scales with the glyph so it stays balanced.

Get the free code →
A
J
M
A
J
M
T
S
+7

Avatar

Initials are coloured deterministically from the name, so one person is one colour everywhere. The presence dot is ringed to read as cut out, not stuck on.

Get the free code →

Neumorphic Card

Two shadows, light from the top-left and dark from the bottom-right. The illusion only holds when the card and its background are the same colour.

Get the free code →

Floating Action Button

Actions fan out on a stagger so the menu unfolds rather than simply appearing, and the icon rotates into a close affordance so no second button is needed.

Get the free code →
No messages yet
When someone writes to you, it lands here.
Refresh

Empty State

The screen you get when there is nothing to show. Most apps ship a blank view here, which reads as a bug rather than as a state.

Get the free code →

Confetti

Pieces squash on a sine wave so they tumble edge-on like paper. Pieces that only translate and spin look like falling stickers.

Get the free code →
68%

Progress Ring

Determinate and indeterminate. The spinning mode rotates one fixed arc rather than re-trimming a path every frame, which is far cheaper on older devices.

Get the free code →
Tap to refresh the feed

Tooltip

The arrow is part of the bubble shape, not a rotated square behind it. A rotated square shows a seam wherever the bubble is translucent.

Get the free code →
Delete project?
This removes every file. It cannot be undone.
Cancel
Delete

Alert

A styled alert that can carry a text field, presented as an overlay so the backdrop dims your actual app rather than the system scrim.

Get the free code →
Share
Copy link
Add to favourites
Export PDF

Bottom Sheet

It rises, it does not fade. Dismissal projects the flick, so a short fast swipe closes it the way a long drag would, and the top rubber-bands.

Get the free code →
What is included?
Every component, every variant, the full source, and a year of updates.
Commercial use?

Accordion

The chevron rotates on the same spring as the height change, so the two read as one movement. The body fades rather than sliding up through the header.

Get the free code →
Components
Animations
Screens

Carousel

Off-centre cards shrink and dim continuously as they move, driven by real scroll position rather than by a selected index, so they respond mid-gesture.

Get the free code →
Order placed
Mon · 09:14
Payment confirmed
Mon · 09:15
Out for delivery
Arriving today
Delivered
By 18:00

Timeline

The connector is drawn by the step above it and stops at the row edge, so the line never overshoots past the final node — the giveaway of a hand-rolled one.

Get the free code →
Settings
Settings

Navigation Bar

The background fades in as content scrolls under it rather than sitting on an opaque slab from the first pixel. It takes an offset; it never owns your scroll view.

Get the free code →
Menu
Home
Library
Settings

Side Menu

The app is pushed and scaled behind the drawer, not merely dimmed. Scaling is what sells the depth — it reads as the app stepping back.

Get the free code →
Page 1

Page Indicator

The active dot stretches into a capsule instead of only changing colour, and each dot is tappable, so it doubles as navigation.

Get the free code →

Pull to Refresh

The arc fills in proportion to the pull, so the gesture tells you how much further to go, and ticks once as you cross the commit point.

Get the free code →
Saved to your library

Toast

Drops in over the app, never inside your layout, with the tick popping a beat after the banner settles. Swipe it away early or let it time out.

Get the free code →
Anything fail overnight?
It finished at 04:12.
Two rows were rejected for a null tenant id — 1,284,003 records in 38 minutes.

Chat Bubble

New

Body and tail are one continuous path, so the border follows the silhouette instead of running around two shapes. Consecutive messages group: corners tighten and only the last keeps its tail.

Get the free code →
Assistant

Streaming Text

New

Tokens arrive in bursts of one then forty; this drains toward them at a bounded catch-up rate, so the reply reads at a steady cadence. The caret blinks only while waiting on the model.

Get the free code →
Message

Chat Composer

New

One corner, three jobs — dictate when empty, send when there is a draft, stop while the model answers. The field grows to a line limit then scrolls, so send is never pushed off screen.

Get the free code →
Migration report

The run finished at 04:12. Two rows were rejected for a null tenant_id.

  • 1,284,003 records in 38 minutes
  • Peak of 9,400 rows/sec

Markdown View

New

Real blocks — headings, lists, quotes, fenced code — with inline parsing handed to Foundation so bold still works inside a bullet. An unterminated fence renders as an open code block.

Get the free code →
SWIFT
Copy
// Streaming is just a sequence of partial strings.
func stream(_ prompt: String) async throws {
var reply = ""
for try await chunk in client.send(prompt) {
reply += chunk

Code Block

New

Copy confirms in place without resizing the button. Four token classes claimed in priority order, so a keyword inside a string stays a string. Long lines scroll rather than wrap.

Get the free code →
Thinking1.4s
Looking at the Q3 revenue table.

Reasoning Block

New

Shows the line the model is currently on instead of a spinner, replaced as it moves. Collapsed it costs one line; when reasoning ends the header settles into the measured duration.

Get the free code →
search_web
q3 saas churn benchmarks 2026

Tool Call Card

New

Names the action an agent is taking while it takes it. The bar is indeterminate on purpose — a tool call has no measurable progress, so it proves the app is alive without pretending.

Get the free code →

Annual plans now account for 61% of new subscriptions1, up from 44% in Q22.

openviewpartners.com
SaaS Benchmarks 2026

Citation Chip

New

Sized to sit inside a sentence without breaking its rhythm, with a fixed width so one- and two-digit citations do not jitter the line. Opens a popover, not a screen.

Get the free code →
4.0Kof 25K tokens
21.0K tokens left this month.Upgrade

Token Meter

New

Changes colour at 70% and again at 90%, where the copy changes and the upgrade action appears. A prompt to upgrade at 15% is an advert; the same prompt at 92% is help.

Get the free code →
Haiku 4.5Fast
Quick answers and short edits.
Sonnet 5Balanced
The default. Handles most work.
Opus 5Powerful
Long documents and hard reasoning.

Model Picker

New

Plain-language subtitles and a badge for the trade — fast, balanced, powerful — with the raw identifier kept small. Locked models are shown, not hidden.

Get the free code →
Summarise this thread
Draft a reply
Find the contract terms
What changed since Friday?

Prompt Suggestions

New

Starter prompts on a 45ms stagger, wrapped by a real flow layout rather than a grid — so a short chip and a long one are not forced to the same width.

Get the free code →

Voice Orb

New

Forty-four bars in one Canvas draw, driven by fast attack and slow release — the envelope a VU meter has. Two incommensurate waves stop the ring pumping uniformly.

Get the free code →

Revenue grew 12% this quarter and churn fell to 1.8%. The gain is concentrated in annual plans, which now account for 61% of new subscriptions — up from 44% in Q2.

Message Actions

New

Copy confirms with a tick in place, and the rating is exclusive and latching — tapping the lit thumb clears it. Deliberately quiet: it sits under every reply.

Get the free code →
PDF

Attachment Tray

New

A progress ring on each thumbnail rather than one shared bar, because three uploads at three speeds cannot be described by a single percentage.

Get the free code →
Q3 revenue teardown
Annual plans are 61% of new subscriptions.
16:42
Migration rollback plan
Two rows rejected for a null tenant id.
Yesterday
Onboarding copy
Shorter second screen, permission ask later.
Fri

Conversation Row

New

A timestamp that adapts to age — a time today, a weekday this week, a date beyond. Unread is carried by weight and a dot, never by colour alone.

Get the free code →