Skip to content

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.

NVActivityIndicatorView

Open source · MIT

A Swift library of 32 ready-made loading spinner animations for iOS apps.

SkeletonView

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

NVActivityIndicatorViewSkeletonView
TypeLibraryLibrary
PriceFree and open sourceFree and open source
LicenceMITMIT
GitHub stars10.7k12.9k
Setup difficultyBeginnerBeginner
How you get itInstall with a package managerInstall with a package manager
Main languageSwiftSwift
Last code update8 months ago5 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"
Step-by-step guide: how to use 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'
Step-by-step guide: how to use 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.