NVActivityIndicatorView vs SkeletonView
Which should you use? A side-by-side look at what each one does, who it suits, what it costs, how hard it is to set up, and where each falls short.
Open source · MIT
A Swift library of 32 ready-made loading spinner animations for iOS apps.
Open source · MIT
A loading placeholder library for iOS that shows grey skeleton shapes where content will appear.
The short answer
Choose NVActivityIndicatorView if you need…
- iOS developers who want a ready-made loading indicator with many styles
- Developers using Swift in UIKit-based apps
- Teams that already use CocoaPods, Carthage, or Swift Package Manager
Choose SkeletonView if you need…
- iOS developers building apps that load data from the network
- Teams using UITableView or UICollectionView lists that need loading placeholders
- Developers who want a loading state without writing custom animation code
Side-by-side
| NVActivityIndicatorView | SkeletonView | |
|---|---|---|
| Type | Library | Library |
| Price | Free and open source | Free and open source |
| Licence | MIT | MIT |
| GitHub stars | 10.7k | 12.9k |
| Setup difficulty | Beginner | Beginner |
| How you get it | Install with a package manager | Install with a package manager |
| Main language | Swift | Swift |
| Last code update | 8 months ago | 5 months ago |
What each one is
NVActivityIndicatorView
NVActivityIndicatorView is an open-source Swift library that provides a set of loading animations, such as pulsing balls, spinning squares and a pacman-style loader, that iOS developers can drop into an app while content is loading. You can add it in Interface Builder by changing a view's class, or create it in code and choose one of the 32 animation types. It is aimed at developers who want attractive loading indicators without building them from scratch.
SkeletonView
SkeletonView is a Swift library for iOS apps. While data loads, it covers views with animated or solid placeholder shapes so users can see roughly what content is coming. You mark which views should become placeholders, then call one of four show methods on a view or its container.
Best for
NVActivityIndicatorView
- iOS developers who want a ready-made loading indicator with many styles
- Developers using Swift in UIKit-based apps
- Teams that already use CocoaPods, Carthage, or Swift Package Manager
SkeletonView
- iOS developers building apps that load data from the network
- Teams using UITableView or UICollectionView lists that need loading placeholders
- Developers who want a loading state without writing custom animation code
Strengths
NVActivityIndicatorView
- Offers 32 named animation types in one library
- Supports CocoaPods, Carthage, and Swift Package Manager installation
- Released under the permissive MIT license
SkeletonView
- Setup is three steps: import, mark views as skeletonable, show the skeleton
- Supports Swift Package Manager, CocoaPods, and Carthage
- Works with both code and Interface Builder or Storyboards
Not ideal for
NVActivityIndicatorView
- Developers building with SwiftUI, since the README points to a separate project, LoaderUI, for SwiftUI support
- Projects that need a loading indicator for Android or the web, since this is iOS-only
- Teams that want a fully custom animation and do not need a prebuilt set
SkeletonView
- Developers who need Android, web, or cross-platform support, since the README only covers iOS
- Projects that want a simple spinner and do not need placeholders matching the layout
- Apps with very old iOS targets, since the README does not list minimum supported versions
Trade-offs
NVActivityIndicatorView
- The README is focused on iOS UIKit and points to a separate project for SwiftUI
- The README does not state a minimum iOS version or Swift version
- Latest release 5.2.0 has no binaries, and the README notes that 5.0.0 included breaking changes
SkeletonView
- The README is truncated, so details beyond the table view and collection view sections are unclear from this source
- Table and collection support needs extra data source protocol methods to be implemented
- Support for newer iOS or Swift versions is not stated in the README excerpt
Getting started
NVActivityIndicatorView
CocoaPods: add to Podfile
pod 'NVActivityIndicatorView'Carthage: add to Cartfile
github "ninjaprox/NVActivityIndicatorView"SkeletonView
Swift Package Manager (add to Package.swift dependencies)
.package(url: "https://github.com/Juanpe/SkeletonView.git", from: "1.7.0")CocoaPods (Podfile)
pod 'SkeletonView'Frequently asked questions
What is the difference between NVActivityIndicatorView and SkeletonView?
NVActivityIndicatorView: A Swift library of 32 ready-made loading spinner animations for iOS apps. SkeletonView: A loading placeholder library for iOS that shows grey skeleton shapes where content will appear. NVActivityIndicatorView suits ios developers who want a ready-made loading indicator with many styles, while SkeletonView suits ios developers building apps that load data from the network.
Are NVActivityIndicatorView and SkeletonView free?
NVActivityIndicatorView: Free and open source. SkeletonView: Free and open source.
Is NVActivityIndicatorView or SkeletonView more popular?
SkeletonView has more GitHub stars (12.9k) than NVActivityIndicatorView (10.7k). Popularity isn't the same as fit — check which one matches your use case above.
What are other alternatives to NVActivityIndicatorView and SkeletonView?
Other options people compare them with include Hero, Eureka, SwifterSwift, SVProgressHUD, FSCalendar.
Keep comparing
Built from our catalogue entries for both products: open-source details come from each project's README (AI-assisted, refreshed weekly) and GitHub data; AI-tool details are editorial. Spotted something wrong? Let us know from either product's page.