Skip to content

Hero vs Material

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.

Material

Open source · MIT

A Swift UI framework for iOS apps with Material Design-style components and animations.

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 Material if you need…

  • iOS developers who want Material Design-style components without building them from scratch
  • Developers maintaining existing Swift projects that already use Material
  • Projects that need Material's card, text field, or navigation drawer components

Side-by-side

HeroMaterial
TypeLibraryLibrary
PriceFree and open sourceFree and open source
LicenceMITMIT
GitHub stars22.5k12k
Setup difficultyIntermediateIntermediate
How you get itInstall with a package managerInstall with a package manager
Main languageSwiftSwift
Last code update22 months ago4 years 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.

Material

Material is a UI/UX framework for building iOS apps in Swift. It provides ready-made interface components such as cards, text fields, navigation drawers, toolbars, and floating action menus, styled after Google's Material Design look. It also uses the separate Motion library to handle animations and transitions.

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

Material

  • iOS developers who want Material Design-style components without building them from scratch
  • Developers maintaining existing Swift projects that already use Material
  • Projects that need Material's card, text field, or navigation drawer components

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

Material

  • Covers many common components (cards, drawers, tabs, search bar, snackbar) in one package
  • Includes sample projects in a separate repository to learn from
  • MIT license permits use in commercial projects

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

Material

  • Teams starting a new app today, since the README lists iOS 8.0+ and Swift 4.0+ and the last push was in May 2022
  • Android or cross-platform projects, since this is iOS-only
  • Developers who need SwiftUI support, which the README does not mention

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

Material

  • The README targets old tooling (iOS 8.0+, Xcode 8.0+) and the last push is from 2022
  • Documentation is mostly sample links and GIFs; the README gives little API detail
  • The latest release lists no binaries, so you install through a dependency manager or by copying source

Getting started

Hero

Add to Podfile, then install (CocoaPods)

pod 'Hero'

Install pods (CocoaPods)

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

Material

Install CocoaPods

gem install cocoapods

Install the pod (after adding pod 'Material', '~> 3.1.0' to your Podfile)

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

Frequently asked questions

What is the difference between Hero and Material?

Hero: A Swift library for custom iOS and tvOS screen transitions, set up declaratively. Material: A Swift UI framework for iOS apps with Material Design-style components and animations. Hero suits ios developers who want custom screen transitions without writing uikit animation code by hand, while Material suits ios developers who want material design-style components without building them from scratch.

Are Hero and Material free?

Hero: Free and open source. Material: Free and open source.

Is Hero or Material more popular?

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

What are other alternatives to Hero and Material?

Other options people compare them with include NVActivityIndicatorView, SkeletonView, RAMAnimatedTabBarController, FoldingCell, SnapKit.

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.