Hero 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 for custom iOS and tvOS screen transitions, set up declaratively.
Open source · MIT
A loading placeholder library for iOS that shows grey skeleton shapes where content will appear.
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 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
| Hero | SkeletonView | |
|---|---|---|
| Type | Library | Library |
| Price | Free and open source | Free and open source |
| Licence | MIT | MIT |
| GitHub stars | 22.5k | 12.9k |
| Setup difficulty | Intermediate | Beginner |
| How you get it | Install with a package manager | Install with a package manager |
| Main language | Swift | Swift |
| Last code update | 22 months ago | 5 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.
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
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
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
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
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
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
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
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
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
Hero
Add to Podfile, then install (CocoaPods)
pod 'Hero'Install pods (CocoaPods)
pod installSkeletonView
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 Hero and SkeletonView?
Hero: A Swift library for custom iOS and tvOS screen transitions, set up declaratively. SkeletonView: A loading placeholder library for iOS that shows grey skeleton shapes where content will appear. Hero suits ios developers who want custom screen transitions without writing uikit animation code by hand, while SkeletonView suits ios developers building apps that load data from the network.
Are Hero and SkeletonView free?
Hero: Free and open source. SkeletonView: Free and open source.
Which is easier to set up, Hero or SkeletonView?
SkeletonView is easier to get started with (rated beginner); Hero is rated intermediate and usually needs more setup.
Is Hero or SkeletonView more popular?
Hero has more GitHub stars (22.5k) than SkeletonView (12.9k). Popularity isn't the same as fit — check which one matches your use case above.
What are other alternatives to Hero and SkeletonView?
Other options people compare them with include NVActivityIndicatorView, Material, RAMAnimatedTabBarController, FoldingCell, react-content-loader.
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.