I Couldn’t Find a Decent SwiftUI Progress Indicator, So I Built One
Pierre Janineh

Pierre Janineh @pierrejanineh

About: Embracing Best Practices in the Tech Landscape

Joined:
Apr 18, 2025

I Couldn’t Find a Decent SwiftUI Progress Indicator, So I Built One

Publish Date: May 11
0 0

There’s something weirdly satisfying about watching a progress indicator — that little animated bar or ring that quietly says, “hang in there, I’m working on it.”

Recently, while building a SwiftUI app, I needed just that. Nothing fancy — just a clean, customizable way to show progress.

So I did what any iOS dev would do: I hit Google in search of a quick fix.

And… nothing useful.

Well, not nothing, but what I found didn’t fit. Most of the options were:

  • UIKit-based (I’m building for SwiftUI — and tvOS, at that)
  • Archived and no longer maintained (looking at you, ProgressKit and RPCircularProgress)
  • Or simply too rigid to adapt to my needs

I didn’t want to shoehorn UIKit components into a SwiftUI-first app. Especially not when trying to build something smooth and native.

So I built my own.


🚀 Introducing: ProgressUI

Image description

A simple, expressive progress indicator library built entirely with SwiftUI.

It supports:

  • Determinate and indeterminate progress
  • Custom shapes and animations
  • Easy styling to match your app’s look and feel
  • A clean, composable API — no UIKit glue required

And it’s not just an experiment — I’m already using it in a real-world SwiftUI app for tvOS (StorageAnalysis), where it plays a key role in the user experience.


🛠️ A Simple Example

Getting started with ProgressUI is really straightforward. Here’s a quick example of how you might use it in a SwiftUI view:

import ProgressUI

struct CompletionProgressView: View {
    @State private var progress: CGFloat = 0.2

    var body: some View {
        VStack {
            ProgressUI(progress: $progress)
                .setAnimation(.bouncy)

            Button("Increase progress") {
                progress += 0.1
            }
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Why I’m Sharing This

I don’t think I’m the only one who’s opened Xcode, dropped in a ProgressView, and thought,
“This is fine… but I wish it looked better. And animated. And fit my brand.”

So if you’ve ever been there — or you’re there now — give ProgressUI a look.

It’s open source. It works in production.
And hopefully, it saves you a few hours and a few head scratches.

✌️ Pierre
github.com/PierreJanineh-com/ProgressUI

Comments 0 total

    Add comment