Skip to content

Hero vs NVActivityIndicatorView

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.

Hero

Open source · MIT

A Swift library for custom iOS and tvOS screen transitions, set up declaratively.

NVActivityIndicatorView

Open source · MIT

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

The short answer

Choose Hero if you need…

  • iOS developers who want custom screen transitions without writing UIKit animation code by hand
  • Developers who want shared-element style transitions between matching views
  • Teams building Swift apps that use UINavigationController, UITabBarController, or modal presentations
  • Developers who prefer setting up animations in code or in the storyboard

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

Side-by-side

HeroNVActivityIndicatorView
TypeLibraryLibrary
PriceFree and open sourceFree and open source
LicenceMITMIT
GitHub stars22.5k10.7k
Setup difficultyIntermediateBeginner
How you get itInstall with a package managerInstall with a package manager
Main languageSwiftSwift
Last code update22 months ago8 months ago

What each one is

Hero

Hero is a Swift library that makes custom animations between screens (view controllers) in iOS apps easier to build. It sits on top of UIKit's transition APIs, which the README describes as cumbersome, and lets developers match views across screens using a heroID and describe changes with heroModifiers. Developers use it to add polished transitions without writing low-level animation code.

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.

Best for

Hero

  • iOS developers who want custom screen transitions without writing UIKit animation code by hand
  • Developers who want shared-element style transitions between matching views
  • Teams building Swift apps that use UINavigationController, UITabBarController, or modal presentations
  • Developers who prefer setting up animations in code or in the storyboard

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

Strengths

Hero

  • Declarative API: views are matched with a simple heroID property instead of manual animation code
  • Works with Auto Layout, programmatic layout, UICollectionView, UITableView, and navigation or tab bar controllers, per the README
  • Actively maintained on GitHub with about 22,000 stars, MIT license, and a documented usage guide

NVActivityIndicatorView

  • Offers 32 named animation types in one library
  • Supports CocoaPods, Carthage, and Swift Package Manager installation
  • Released under the permissive MIT license

Not ideal for

Hero

  • Projects that only need the standard iOS transitions, since the built-in ones may already be enough
  • Developers building for Android, web, or other platforms, since the library is for iOS and tvOS only
  • Anyone expecting a visual tool that needs no coding, since usage is through Swift code or storyboard settings

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

Trade-offs

Hero

  • Limited to iOS and tvOS; not usable on other platforms
  • The README is brief and points to an external wiki for detailed documentation
  • Some behavior needs extra setup, such as the global coordinate space modifier for views being covered during a transition

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

Getting started

Hero

Add to Podfile, then install (CocoaPods)

pod 'Hero'

Install pods (CocoaPods)

pod install
Step-by-step guide: how to use Hero

NVActivityIndicatorView

CocoaPods: add to Podfile

pod 'NVActivityIndicatorView'

Carthage: add to Cartfile

github "ninjaprox/NVActivityIndicatorView"
Step-by-step guide: how to use NVActivityIndicatorView

Frequently asked questions

What is the difference between Hero and NVActivityIndicatorView?

Hero: A Swift library for custom iOS and tvOS screen transitions, set up declaratively. NVActivityIndicatorView: A Swift library of 32 ready-made loading spinner animations for iOS apps. Hero suits ios developers who want custom screen transitions without writing uikit animation code by hand, while NVActivityIndicatorView suits ios developers who want a ready-made loading indicator with many styles.

Are Hero and NVActivityIndicatorView free?

Hero: Free and open source. NVActivityIndicatorView: Free and open source.

Which is easier to set up, Hero or NVActivityIndicatorView?

NVActivityIndicatorView is easier to get started with (rated beginner); Hero is rated intermediate and usually needs more setup.

Is Hero or NVActivityIndicatorView more popular?

Hero has more GitHub stars (22.5k) than NVActivityIndicatorView (10.7k). Popularity isn't the same as fit — check which one matches your use case above.

What are other alternatives to Hero and NVActivityIndicatorView?

Other options people compare them with include Material, SkeletonView, RAMAnimatedTabBarController, FoldingCell, Eureka.

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.