🦄 Limited offer — get lifetime access:$75$60
Rive.rivLottie.json

Animated Icons for iOS / Swift

Unicorn Icons supports both Rive and Lottie on iOS via Swift Package Manager — no CocoaPods required. Rive is the recommended format for interactive icons: RiveViewModel integrates directly with SwiftUI and supports hover, tap, and custom state machine inputs. Lottie renders JSON animations via LottieAnimationView for simpler playback-only use cases.

Animated icons

View all icons →

Browse by category

Animated icons across 24 categories, all available in Rive and Lottie formats.

Rive integration

Rive icons include interactive state machines for hover and click — no extra animation code required. GPU-accelerated with smaller file sizes than Lottie.

1

Install rive-ios

// Xcode → Project → Package Dependencies → Add Package
// https://github.com/rive-app/rive-ios
2

Add the animation

import RiveRuntime
import SwiftUI

struct RiveIcon: View {
  @State private var riveVM = RiveViewModel(
    fileName: "your_icon",
    stateMachineName: "State Machine 1"
  )
  var body: some View {
    riveVM.view().frame(width: 64, height: 64)
  }
}

Lottie integration

Use Lottie for simple playback-only animations or when integrating with existing Lottie-based tooling.

1

Install lottie-ios

// Xcode → Project → Package Dependencies → Add Package
// https://github.com/airbnb/lottie-ios
2

Add the animation

import Lottie
import SwiftUI

struct LottieIcon: UIViewRepresentable {
  func makeUIView(context: Context) -> LottieAnimationView {
    let view = LottieAnimationView(name: "your_icon")
    view.contentMode = .scaleAspectFit
    view.loopMode = .loop
    view.play()
    return view
  }
  func updateUIView(_ uiView: LottieAnimationView, context: Context) {}
}

Other platforms