[00:00] (0.08s)
You guys were really curious to hear
[00:01] (1.36s)
about how I design my apps and
[00:02] (2.96s)
specifically how I make them feel 10
[00:04] (4.56s)
times better than the default iOS
[00:06] (6.32s)
experience. I get a ton of compliments
[00:07] (7.92s)
on my app saying that they just feel
[00:09] (9.44s)
different, a little bit more polished,
[00:11] (11.12s)
more fun to use. So today I'm breaking
[00:13] (13.04s)
down some of the advanced techniques I
[00:14] (14.88s)
use to achieve that. If you're new here,
[00:16] (16.48s)
welcome to the channel. My name is Chris
[00:17] (17.84s)
and I build productivity apps. I already
[00:19] (19.76s)
made a video covering the basics of my
[00:21] (21.60s)
design process like mood boarding and
[00:23] (23.44s)
wireframing, but today we're going to be
[00:24] (24.88s)
going a little bit deeper. These are
[00:26] (26.16s)
practical things that I'm doing and
[00:27] (27.68s)
applying to my own apps to really give
[00:29] (29.60s)
them that polished and fun to use feel.
[00:35] (35.28s)
Another way to add dimension to your app
[00:37] (37.12s)
is to make it more interactive and just
[00:39] (39.44s)
have a little bit more movement. Most
[00:40] (40.80s)
apps are pretty static. When you're
[00:42] (42.16s)
clicking on tabs in any of the default
[00:43] (43.76s)
Apple apps, they kind of just appear
[00:45] (45.20s)
instantly. There's no animation,
[00:46] (46.80s)
probably for a good reason. They're
[00:48] (48.00s)
serving a billion users. Maybe it's a
[00:49] (49.44s)
motion sickness thing or an
[00:50] (50.56s)
accessibility thing, but again, we're
[00:52] (52.32s)
not Apple. So, what I like to do is try
[00:54] (54.08s)
to add animation anywhere I feel is
[00:56] (56.08s)
appropriate. So, for example, in my app
[00:57] (57.52s)
Luna, I could have made it where when
[00:58] (58.80s)
you're switching between the tabs, it
[01:00] (60.32s)
just instantly appears like all of the
[01:02] (62.32s)
default iOS apps, but instead, I decided
[01:04] (64.40s)
to actually animate that page change.
[01:06] (66.64s)
When you're switching between different
[01:07] (67.76s)
pages, they actually slide over from the
[01:10] (70.64s)
previous page. I'll slow it down so you
[01:12] (72.24s)
can see this animation better. Granted,
[01:13] (73.76s)
this did take me like 5 days to build
[01:15] (75.36s)
because I didn't have AI at the time,
[01:16] (76.72s)
but I think now with Claude Code, you
[01:18] (78.24s)
can actually get something done like
[01:19] (79.44s)
this in less than an hour. Here's an
[01:20] (80.88s)
even better example of where I went a
[01:22] (82.48s)
little bit above and beyond on the
[01:24] (84.00s)
interactions. So, I have this feature in
[01:25] (85.52s)
Ellie where you can dictate tasks to the
[01:28] (88.00s)
AI assistant that I built. So, something
[01:29] (89.76s)
I spent a lot of time on was a custom
[01:31] (91.60s)
animation sequence. When I slow it down,
[01:33] (93.20s)
you can see a lot of things are
[01:34] (94.32s)
happening here. The send button rotates
[01:36] (96.40s)
into a check mark. The background
[01:38] (98.40s)
expands from the microphone and the
[01:40] (100.24s)
listening text fades with this kind of
[01:42] (102.00s)
spring animation. And all of this stuff
[01:43] (103.68s)
adds up to a really satisfying animation
[01:46] (106.32s)
that I think adds a little bit more to
[01:48] (108.16s)
the experience. This might seem small,
[01:49] (109.76s)
but if you do this a 100 times
[01:51] (111.36s)
throughout your app, it's going to add
[01:52] (112.56s)
up to this very premium experience,
[01:54] (114.32s)
which again makes your app feel way
[01:56] (116.40s)
better than the default iOS apps.
[01:58] (118.08s)
Something I want to point out, too, is
[01:59] (119.12s)
that a lot of this stuff is actually not
[02:00] (120.56s)
as hard as you might think. The cool
[02:01] (121.84s)
part is I actually just vibe coded this
[02:03] (123.36s)
completely with cloud code. I didn't
[02:04] (124.88s)
write a single line of code for this.
[02:06] (126.32s)
I'll give you a tip. When it comes to
[02:07] (127.44s)
complex interactions like this, don't
[02:09] (129.28s)
try to oneshot this and say, "Hey, can
[02:10] (130.88s)
you go animate this for me?" Because
[02:12] (132.72s)
it's not going to come up with anything
[02:14] (134.08s)
this cool and complex. For this one, I
[02:16] (136.00s)
had to break down all the sub animations
[02:17] (137.68s)
that I wanted to happen. Can you make
[02:19] (139.36s)
the arrow rotate into the check mark?
[02:21] (141.04s)
Can you have that background expand from
[02:22] (142.96s)
the microphone? Can you add some of this
[02:24] (144.56s)
fade in fade out for the text? So, I
[02:26] (146.32s)
broke down all the components I wanted
[02:28] (148.16s)
to happen in the interaction and it just
[02:29] (149.84s)
executed it for me flawlessly. Apple has
[02:32] (152.00s)
a really good built-in API for
[02:34] (154.08s)
animations and Claude Code and a lot of
[02:36] (156.08s)
AI coding tools are very well trained on
[02:37] (157.92s)
it. So, you can actually just tell it to
[02:39] (159.12s)
do this stuff for you in plain English
[02:40] (160.64s)
and it has a really high chance of doing
[02:42] (162.24s)
it. But again, the trick is to not
[02:43] (163.68s)
oneshot it and to instead break it down
[02:45] (165.84s)
into steps.
[02:49] (169.36s)
Tip number two is custom illustrations,
[02:51] (171.60s)
especially for things like empty states.
[02:53] (173.68s)
So, this is when your app has no data in
[02:55] (175.68s)
it and it's just kind of an empty
[02:57] (177.04s)
screen. A lot of apps just have a text
[02:58] (178.48s)
that say there's no task for today or
[03:00] (180.24s)
something like that. I want to go a step
[03:01] (181.60s)
beyond that. Add custom illustrations or
[03:04] (184.16s)
even animations to those empty states.
[03:06] (186.48s)
This is something you can actually do
[03:07] (187.76s)
with the AI tools on the market. So, in
[03:09] (189.52s)
my case, for my app, Lily, which is a
[03:11] (191.36s)
meeting assistant app, I have this ghost
[03:13] (193.36s)
mascot. What's really cool with AI tools
[03:15] (195.20s)
like chat GPT, you can actually take a
[03:17] (197.20s)
base mascot like Lily, feed it into chat
[03:19] (199.84s)
GPT, and with the right prompts, you can
[03:21] (201.92s)
actually generate almost an infinite
[03:23] (203.68s)
amount of variations of this mascot. I
[03:26] (206.16s)
actually used it to generate the empty
[03:28] (208.00s)
state for the search page. Now, instead
[03:29] (209.92s)
of it just saying there's no meetings
[03:31] (211.12s)
here, instead there's this illustration
[03:32] (212.96s)
of Lily the Ghost searching for tasks.
[03:35] (215.28s)
Or if there's an active meeting going
[03:36] (216.48s)
on, I can have a custom illustration of
[03:38] (218.48s)
Lily taking notes or sleeping or
[03:40] (220.64s)
drinking coffee or walking my dog Luna.
[03:42] (222.72s)
AI has really opened the door to make
[03:44] (224.24s)
infinite illustrations and it does add a
[03:46] (226.24s)
ton of personality and really makes your
[03:47] (227.76s)
app stand out. My recommendation is to
[03:49] (229.52s)
try to find some sort of artist or
[03:51] (231.20s)
illustrator to make you a base
[03:53] (233.20s)
illustration if you can. My case, I
[03:54] (234.72s)
actually asked my girlfriend Cecilia to
[03:56] (236.16s)
draw up some illustrations for me and
[03:57] (237.76s)
now I have a base mascot to work off of
[03:59] (239.76s)
and make an infinite amount of
[04:00] (240.96s)
variations on. I really do recommend
[04:02] (242.72s)
starting with custom illustrations
[04:04] (244.56s)
because it does make it feel a lot more
[04:06] (246.56s)
original. If you can't do that, you can
[04:08] (248.24s)
use chatt to make these mascots for you.
[04:10] (250.64s)
My advice is to be really creative when
[04:12] (252.88s)
you do this. You're going to feed in
[04:13] (253.92s)
reference images. Try to feed in a bunch
[04:15] (255.68s)
of different reference images. That way,
[04:17] (257.76s)
it just comes up with something a little
[04:19] (259.28s)
bit more unique or really tweak the
[04:21] (261.68s)
prompt and try to get creative to make
[04:23] (263.92s)
it deviate from whatever references
[04:25] (265.76s)
you're putting in. But again, if
[04:26] (266.96s)
possible, I do recommend commissioning
[04:28] (268.64s)
an artist or a graphic designer to do
[04:30] (270.40s)
this for you. It's actually not as
[04:31] (271.84s)
expensive as you might think. If you
[04:32] (272.96s)
want to take it to another level, which
[04:34] (274.24s)
is something I haven't even gotten to
[04:35] (275.76s)
yet, you could animate these custom
[04:37] (277.68s)
illustrations. So, someone was actually
[04:38] (278.88s)
kind enough to take the illustrations
[04:40] (280.32s)
that I made and animate some of them
[04:42] (282.00s)
using Rive. I was really impressed with
[04:43] (283.60s)
the results, and I do plan on adding
[04:44] (284.96s)
these to the app. I haven't tried it
[04:46] (286.08s)
yet, but I already know it's going to
[04:47] (287.12s)
add a whole another layer to the app.
[04:48] (288.48s)
So, that's something I'm going to be
[04:49] (289.52s)
trying soon, and if you can, you should
[04:51] (291.28s)
try it, too.
[04:54] (294.80s)
Another way to add dimension to your app
[04:56] (296.56s)
is haptic feedback. This is when you
[04:58] (298.16s)
click a button, you touch the app, and
[04:59] (299.44s)
the phone kind of subtly vibrates and
[05:01] (301.44s)
gives this physical feedback back to the
[05:03] (303.52s)
user. This is something that adds a lot
[05:05] (305.12s)
of depth and honestly just makes the app
[05:07] (307.20s)
a lot more fun to tap for the user.
[05:08] (308.96s)
Something I noticed is that Apple's
[05:10] (310.32s)
default apps barely use haptics. To be
[05:12] (312.40s)
fair, there probably is a reason they
[05:13] (313.76s)
don't have haptics. They're designing
[05:14] (314.96s)
for a billion users. Maybe it's a
[05:16] (316.40s)
battery thing or an accessibility thing,
[05:18] (318.00s)
but we're not Apple, so we can probably
[05:19] (319.36s)
make choices that they can. So, in my
[05:20] (320.88s)
budgeting app, Luna, almost every single
[05:22] (322.88s)
button click has some sort of haptic
[05:24] (324.80s)
feedback. Here's the key. Not all haptic
[05:26] (326.72s)
feedback is equal or feels the same. You
[05:29] (329.04s)
can actually control the strength of the
[05:30] (330.48s)
vibration in the code. So for certain
[05:32] (332.88s)
buttons, I add a lighter amount of
[05:34] (334.64s)
haptic feedback. And for other buttons,
[05:36] (336.24s)
I do a heavy amount of haptic feedback.
[05:38] (338.24s)
When you're inputting a transaction
[05:39] (339.36s)
where there's a lot of clicks, I really
[05:41] (341.04s)
go light, but then when you're doing
[05:42] (342.24s)
something like changing the tabs, it's a
[05:43] (343.84s)
little bit heavier. I really wish I
[05:45] (345.20s)
could convey what the haptics feel like
[05:46] (346.72s)
in the video, but if you're curious, I'm
[05:48] (348.16s)
not going to stop you from downloading
[05:49] (349.28s)
the app to try it. Concern that I hear
[05:50] (350.96s)
is that if you add a lot of haptic
[05:52] (352.24s)
feedback, it's going to feel annoying.
[05:53] (353.60s)
But I think when you do it correctly in
[05:55] (355.28s)
the right places, it's actually very
[05:57] (357.04s)
satisfying. I think there's just
[05:58] (358.24s)
something addictive about physical
[05:59] (359.68s)
feedback, kind of like clicking a pen,
[06:01] (361.28s)
you just kind of want to tap around. If
[06:02] (362.64s)
you can get people clicking around your
[06:03] (363.76s)
app for fun, I think that's only a
[06:05] (365.12s)
positive thing.
[06:08] (368.80s)
Icons. It's something a lot of people
[06:10] (370.16s)
overlook, but when you get it right, it
[06:11] (371.92s)
feels really good. And more importantly,
[06:13] (373.52s)
if you get it wrong, your app just does
[06:15] (375.12s)
not feel that good. When you're building
[06:16] (376.32s)
an iOS app, most apps use SF symbols,
[06:18] (378.72s)
which is the default icon set that Apple
[06:20] (380.80s)
gives you, which are completely fine.
[06:22] (382.32s)
There's nothing wrong with them, but
[06:23] (383.68s)
they are pretty generic and almost every
[06:25] (385.68s)
single app uses them. When I was
[06:27] (387.20s)
studying a lot of the best apps out
[06:28] (388.56s)
there and trying to figure out how to
[06:29] (389.76s)
make mine stand out, I realized that
[06:31] (391.44s)
picking really good icons and spending a
[06:33] (393.60s)
lot of time on them made a huge
[06:35] (395.04s)
difference. I spend a lot of time
[06:36] (396.56s)
looking for the right icon pack for my
[06:38] (398.88s)
app. One of my favorites that I use,
[06:40] (400.32s)
which I'm actually using in Luna, my
[06:42] (402.00s)
budgeting app, is called Hero Icons. And
[06:44] (404.16s)
specifically, I'm using the thin version
[06:45] (405.76s)
of the icons. It's minimal, clean, and
[06:48] (408.08s)
free, and you really can't go wrong
[06:49] (409.76s)
using something like this. But there's
[06:51] (411.28s)
tons of icon packs out there that you
[06:53] (413.12s)
can use. The first mistake that I see
[06:54] (414.56s)
people making is picking the wrong icon
[06:56] (416.56s)
style. Even with something like Hero
[06:58] (418.08s)
icons, which all the icons look amazing.
[07:00] (420.08s)
The style of icons really does make a
[07:01] (421.92s)
difference. So, let's take a look at the
[07:03] (423.04s)
tab bar in Luna, which is my budgeting
[07:04] (424.72s)
app. I'm using the thin version of the
[07:07] (427.36s)
icon pack here. You can see it looks
[07:09] (429.60s)
very clean, very minimal. Watch what
[07:11] (431.76s)
happens if I just switch to the thick
[07:13] (433.52s)
versions of this. To some people, this
[07:15] (435.20s)
might not be a big deal, but the
[07:16] (436.72s)
differences in using the thin and the
[07:18] (438.40s)
heavy versions actually really does
[07:20] (440.08s)
change the entire feel of this tab bar,
[07:22] (442.32s)
which then changes the feel of the app.
[07:23] (443.92s)
So, depending on what kind of feeling
[07:25] (445.44s)
you're going for, I think picking the
[07:26] (446.96s)
right icon set makes a big difference.
[07:28] (448.72s)
Usually, it boils down to are you going
[07:30] (450.24s)
to pick icons with simple and minimal
[07:32] (452.40s)
lines? Are you going to pick icons that
[07:34] (454.00s)
are more filled and heavy, or are you
[07:35] (455.76s)
going to pick icons that are very
[07:37] (457.20s)
complicated and have many lines? All
[07:39] (459.04s)
three of these do send a different
[07:40] (460.16s)
message to the user. So, choosing is
[07:41] (461.76s)
very important. But the most important
[07:43] (463.36s)
thing to do when you do pick a style is
[07:45] (465.20s)
to stay consistent with the style. This
[07:47] (467.12s)
is a very common thing I see a lot of
[07:48] (468.40s)
apps do is mixing and matching icon
[07:50] (470.24s)
styles which really make the app feel
[07:51] (471.92s)
less cohesive. So looking back at Luna's
[07:54] (474.16s)
tab bar, it's again very clean minimal
[07:56] (476.32s)
icons. Watch what happens when I swap
[07:58] (478.48s)
two of the icons to a heavier version.
[08:00] (480.72s)
It's not as uniform as the version where
[08:02] (482.80s)
it was all minimal icons. So when you
[08:04] (484.72s)
pick a style, making sure to stay
[08:06] (486.40s)
consistent across really does make a big
[08:08] (488.56s)
difference. But there is actually a time
[08:10] (490.00s)
when you can use style. So here's
[08:11] (491.28s)
another tip. it's to potentially use a
[08:13] (493.36s)
different style to show different
[08:14] (494.96s)
states. So, for example, in the tab bar,
[08:17] (497.20s)
when I click something on Luna, it
[08:18] (498.88s)
starts out as the thin version, but I
[08:20] (500.72s)
actually use the heavier and filled out
[08:22] (502.32s)
version of the icon when it's selected,
[08:24] (504.24s)
which actually does make a big
[08:25] (505.28s)
difference. So, here's what it looks
[08:26] (506.32s)
like in the app now with the heavier
[08:28] (508.00s)
version. And here's what it would have
[08:29] (509.28s)
looked like if I didn't use that version
[08:30] (510.88s)
and just highlighted it. It's really
[08:32] (512.32s)
subtle, but I think it does add some
[08:33] (513.84s)
depth. Apple doesn't even do stuff like
[08:35] (515.28s)
this. Check out the phone app. When you
[08:36] (516.56s)
click on the different tabs, they're
[08:37] (517.92s)
using the exact same icon style, but
[08:40] (520.00s)
just changing the color, which does
[08:41] (521.44s)
work, but again is a little bit basic.
[08:43] (523.36s)
Spending a little bit more details on
[08:44] (524.64s)
what icon style you're going to use for
[08:46] (526.16s)
the active and the non-active state,
[08:48] (528.08s)
which icon pack are you using. All of
[08:49] (529.76s)
this stuff adds up and it will make the
[08:51] (531.36s)
app feel even better than the Apple
[08:53] (533.12s)
default apps.
[08:56] (536.80s)
So, the last tip I'm going to give you,
[08:58] (538.16s)
which answers one of the most common
[08:59] (539.68s)
questions I get, which is, how do I come
[09:01] (541.60s)
up with these good designs? How do I
[09:03] (543.12s)
just elevate the feeling of my app in
[09:05] (545.28s)
general? and it is to expose yourself to
[09:07] (547.84s)
really good design constantly because
[09:10] (550.00s)
it's not a one-time thing. I really do
[09:11] (551.84s)
think that it is a process to get better
[09:14] (554.00s)
and elevate your taste. And I have two
[09:15] (555.60s)
specific places that I go to do this.
[09:17] (557.36s)
Number one is Twitter. There's a ton of
[09:19] (559.52s)
really good talented designers on
[09:21] (561.04s)
Twitter. So, I recommend just go finding
[09:22] (562.80s)
them, following a bunch of designers,
[09:24] (564.56s)
and then you'll just see a bunch of
[09:25] (565.84s)
their stuff on your feed and bookmark
[09:27] (567.44s)
everything that you like. But constant
[09:29] (569.12s)
exposure like this is really important.
[09:30] (570.88s)
And the second one is a website called
[09:32] (572.56s)
Mobin. So, huge thank you to them for
[09:34] (574.16s)
actually sponsoring this video. If
[09:35] (575.52s)
you've been following along, you know
[09:36] (576.64s)
that they are my favorite design
[09:38] (578.48s)
resource. Even if they weren't
[09:39] (579.60s)
sponsoring, I would recommend them
[09:40] (580.96s)
anyway. I absolutely love them. But if
[09:42] (582.80s)
you're not familiar, it is a huge design
[09:45] (585.04s)
resource that just has thousands of app
[09:47] (587.12s)
screenshots. So, you can see how some of
[09:48] (588.96s)
the best apps are doing their layouts,
[09:50] (590.96s)
how they're doing their tab bars, what
[09:52] (592.40s)
icons they're using. It really helps you
[09:54] (594.32s)
answer these questions. I use Mobin in
[09:56] (596.08s)
two ways. Sometimes I just scroll
[09:57] (597.68s)
through for inspiration. Again, if you
[09:59] (599.44s)
want to elevate your design taste, you
[10:00] (600.96s)
can just go through Mobin, scroll for a
[10:02] (602.56s)
couple minutes a day. Guarantee if you
[10:04] (604.08s)
just do this, you will naturally just
[10:05] (605.68s)
start picking up on certain patterns and
[10:07] (607.60s)
just elevate your taste. You're going to
[10:09] (609.04s)
figure out what you like, what you don't
[10:10] (610.64s)
like, what color palettes make sense,
[10:12] (612.56s)
what icons people are using that you
[10:14] (614.56s)
resonate with. You'll discover this just
[10:16] (616.16s)
by browsing something like Mobin. Even
[10:17] (617.92s)
just doing it once a week will have a
[10:19] (619.28s)
pretty big impact. I think I also use
[10:20] (620.64s)
Mobin to answer very specific questions
[10:22] (622.32s)
like going back to the icons. What icon
[10:24] (624.48s)
set should I use for my app? I like to
[10:26] (626.24s)
go in Mobin, see the different icons
[10:27] (627.84s)
that apps are using and really figure
[10:29] (629.52s)
out, okay, which one matches the
[10:31] (631.52s)
aesthetic that I'm going for. So, you
[10:33] (633.12s)
can use Mobin to answer questions like
[10:34] (634.64s)
that. It's very cataloged. Just search
[10:36] (636.80s)
tab bar on Mobin. It'll show you a ton
[10:39] (639.04s)
of different examples of tab bars. It's
[10:40] (640.88s)
my favorite place to browse, find some
[10:42] (642.80s)
design inspiration, and just elevate my
[10:44] (644.88s)
design sense. A little bit more general
[10:46] (646.32s)
of a tip, but if you do this, it's
[10:48] (648.32s)
almost impossible not to get better at
[10:50] (650.56s)
design.
[10:53] (653.92s)
So, these were the top tips I have for
[10:55] (655.68s)
making your app feel a lot better than
[10:57] (657.44s)
the default iOS apps. Again, it's not
[10:59] (659.60s)
one big thing. It's actually a bunch of
[11:01] (661.36s)
small things that when you put them
[11:03] (663.04s)
together really do add up. I probably
[11:05] (665.12s)
have a lot more tips that I can share,
[11:06] (666.48s)
but these are the ones I had off the top
[11:07] (667.84s)
of my head. So, I hope you guys found
[11:09] (669.28s)
them helpful. If I can make something
[11:10] (670.72s)
like a finance app feel fun to use, you
[11:12] (672.72s)
can definitely do it for your own app,
[11:14] (674.00s)
too. But, thank you guys so much for
[11:15] (675.04s)
watching. If you want to see my general
[11:16] (676.40s)
design process, I'll leave a link to
[11:17] (677.76s)
that in the description below so you can
[11:19] (679.36s)
see things like how I do mood boarding,
[11:21] (681.04s)
how I do wireframing. But if you like
[11:22] (682.48s)
this kind of content, check out my
[11:23] (683.68s)
Instagram and Tik Tok. I post almost
[11:25] (685.36s)
every other day about building
[11:26] (686.48s)
productivity apps. And obviously, if you
[11:28] (688.24s)
like this content, don't forget to
[11:29] (689.60s)
subscribe. But thank you guys so much
[11:30] (690.72s)
for watching and I'll see you guys in
[11:32] (692.16s)
the next video.
[11:34] (694.00s)
[Music]