How I Animated and Shipped 50 iOS Spinners in 48 hours

6 min readNov 5, 2020


Late on a Wednesday a few weeks ago I thought to myself, “let’s see if I can make 50 custom iOS loading animations by the end of Sunday…” If I started the next day, that would give me 4 full days to get the job done so that I could start posting them to our Dribbble portfolio. I ended up starting in the afternoon on Thursday, and by lunch on Saturday I was done! It was a marathon of work, but made totally possible using the right tools. Here’s how I did that.

Step 1: Find Inspiration

This is my favourite part. Having a project for which I get to go and spend a lot of time digging through the inspiring work on Dribbble is most definitely a treat. I spent the first part of Thursday afternoon finding really cool spinner animations.

Search & Collect

First, I create a new collection where I will save the animations that are awesome/inspiring/cool. Then, I start searching for great shots by selecting the animations tab, then adding a filter to find relevant designs.

For this project, the filters I used were: #uianimation, #loading, #loaders, #spinners, #loadinganimation.

At this point, my whole goal is to collect awesome stuff, not worrying about how hard or possible it might be to recreate an animation.

I quickly go through the various search results, and as I find shots I like I add them to a collection on my profile. This is a great part of the project, because I get to spend time looking at new trends, seeing new work and looking into people’s profiles, all of which really inspires me and pumps me up for the next phase.

Here are a few really nice ones from my Loading collection:

Oleg Frolov (Left). Aaron Iker (Right).
Valentin Solomon (Left). UI8 (Right).

Queue Them Up

After I have a significant amount of designs in my collection, I start moving them into a Monday board. I do this one at a time so that I can have a closer look at the animation and gauge how difficult it will be to recreate.

As each animation goes into the board, I copy its url and paste it into a linkable column, name it and mark it as Easy, Medium or Hard so that I have a decent idea of how much time it will take to reproduce.

After looking at an animation, if I an idea on how to produce it I will add a note to the entry so that when it comes time to make it I will have a starting point of reference.

If there are multiple animations in a shot I will duplicate the entry for each animation I want to create.

Step 2: Animate

This is the big step, because it’s a lot of editing, tweaking, designing, and repeating a solid process that happens over and over and over again. The goal for this project is to produce and ship 50 Custom iOS ActivityIndicators, and to do that I use Flow to accelerate my ability to get work exported to Swift / Core Animation / Xcode.


Process helps here, and it looks like this:

  1. (Re)create the design and import into Flow.
  2. Animate and Iterate.
  3. Export, Test and Tweak.
  4. Save the final animation file, move on. Don’t Stop

There’s not much to explain about this step other than.

I animate.

And I don’t stop.

And I just keep going.

And I animate.

And I don’t stop.

And I just keep going.

And I animate.

And I don’t stop.

And I just keep going.

And I animate.

And I don’t stop.

And I keep on keep on keep on keep on going…

You get the point, right?

Non-stop animation until all 50 animations are done.


Here’s an example of designing, animating and testing animations.

Designing, animating and exporting the Charting spinner in 90s.

Check out our other examples on the 5048 Showcase.

Step 3: Github

Now that all the fun work is done, I move on to producing the media so that I can upload everything nicely. The strategy here is that I want to produce a project that people can actually use. So putting the software up on Github is a critical first step, because we want to make our animations freely available and reference this project everywhere.

A Github project for my work is important because it makes available all the animations for anyone who wants to use them, and I use it as the centre point around which all my other media posts will be based.

Here’s how I go about publishing this project:

  1. Create a new Xcode project from one of the exported projects
  2. Create a few classes to make it easy to switch between animations
  3. Individually export each animation using Flow’s Custom iOS Activity Indicator option
  4. Import all the animation files (3 per animation, 50 animations = 150 files)
  5. Create a layout with all the spinners
  6. Record all the spinners on my phone
  7. Make an animated GIF in photoshop with a bezel around the animation
  8. Upload the Xcode project to Github
  9. Write the markdown page, including the GIF

Here’s what the final project page looks like:

Step 4: Dribbble

Almost there… The next step for me is to schedule all of my shots on Dribbble. First, I prepare 3 things for each project:

  1. A 1600x1200 mp4 with my animation centred
  2. A zipped version of my animation file.
  3. A description, using a template, of the shot being uploaded.

When all of that is done for each of the 50 animations, I then go into upload mania.

  1. I create a new project called iOS Spinners
  2. I upload/rebound each shot, using its prepared files and description.
  3. I schedule each shot so that there are 2 posted each workday for the next 25 days.

If you’re interested, check out my in-depth article on How We Publish to Dribbble.


This was a fun and challenging project. At times, especially during the uploading sessions, it was incredibly mind-numbing. But, all in all it was pretty awesome to hammer all of this out in such a short amount of time. I discovered some lovely new aesthetics that people are working on, I learned some new animation techniques, and I pushed the limits of Flow. It was awesome.

I really like interacting on Dribbble, and have already seen a few comments and likes come through. I’m looking forward to seeing more, and have a few new projects up my sleeve that I will get to after we launch our upcoming official Figma integration (~ Nov. 24th).

Originally published at on November 5, 2020.




A new class of UI Animation software. Import from Sketch. Animate in Flow. Export production-ready code.