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.
Communication iconsBusiness & legal iconsArrows iconsEnergy iconsEmoji iconsFilm & video iconsGraphs iconsFood & drinks iconsE commerce iconsDate & time iconsCelebration iconsHealth iconsLoaders iconsMaps & location iconsScience & Education iconsProgramming iconsMusic & audio iconsTravel iconsMarketing iconsTransport iconsWeather iconsUi iconsFinance iconsTechnology icons
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-ios2
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-ios2
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) {}
}