ThunderCollection alternatives and similar libraries
Based on the "Collection View" category.
Alternatively, view ThunderCollection alternatives based on common mentions on social networks and blogs.
-
Carbon
🚴 A declarative library for building component-based user interfaces in UITableView and UICollectionView. -
MSPeekCollectionViewDelegateImplementation
A custom paging behavior that peeks the previous and next items in a collection view -
StableCollectionViewLayout
This layout adjusts a content offset if the collection view is updated. You can insert, delete or reload items and StableCollectionViewLayout will take care of the content offset.
CodeRabbit: AI Code Reviews for Developers

Do you think we are missing an alternative of ThunderCollection or a related project?
README
Thunder Collection
Thunder Collection is a useful framework which enables quick and easy creation of collection views in iOS using a declarative approach. It makes the process of creating complex collection views as simple as a few lines of code; and removes the necessity for having long chains of index paths and if statements.
How It Works
Thunder Collection comprises of two main types of objects:
Items
Collection items are objects that conform to the CollectionItemDisplayable
protocol, this protocol has properties such as: cellClass
, selectionHandler
which are responsible for defining how the cell is configured. As this is a protocol any object can conform to it, which allows you to simply send an array of model objects to the collection view to display your content.
Sections
Collection sections are objects that conform to the CollectionSectionDisplayable
protocol, most of the time you won't need to implement this protocol yourself as Thunder Collection has a convenience class CollectionSection
which can be used in most circumstances. However you can implement more complex layouts using this protocol on your own classes.
Installation
Setting up your app to use ThunderCollection is a simple and quick process. You can choose between a manual installation, or use Carthage.
Carthage
- Add
github "3sidedcube/ThunderCollection" == 1.3.1
to your Cartfile. - Run
carthage update --platform ios
to fetch the framework. - Drag
ThunderCollection
into your project's Linked Frameworks and Libraries section from theCarthage/Build
folder. - Add the Build Phases script step as defined here.
Manual
- Clone as a submodule, or download this repo
- Import ThunderCollection.xcproject into your project
- Add ThunderCollection.framework to your Embedded Binaries.
- Wherever you want to use ThunderCollection use
import ThunderCollection
.
Code Example
A Simple Collection View Controller
Setting up a collection view is massively simplified using thunder collection, in fact, we can get a simple collection view running with just a few lines of code. To create a custom collection view we subclass from CollectionViewController
. We then set up our collection view in the viewDidLoad:
method. In contrast to ThunderCollection no default implementations of CollectionItemDisplayable
are provided, as there is no standard implementation of UICollectionViewCell
like there is with UITableViewCell
.
import ThunderCollection
class MyCollectionViewController: CollectionViewController {
override func viewDidLoad() {
super.viewDidLoad()
// ImageRow not provided by framework!
let imageRow = ImageRow(image: someImage)
let section = CollectionSection(rows: [imageRow])
data = [section]
}
}
Building Binaries for Carthage
Since Xcode 12 there has been issues with building Carthage binaries caused by the inclusion of a secondary arm64 slice in the generated binary needed for Apple Silicon on macOS. This means that rather than simply using carthage build --archive
you need to use the ./carthage-build build --archive
command which uses the script included with this repo. For more information, see the issue on Carthage's github here
We will be investigating moving over to use SPM as an agency soon, and will also look into migrating to use .xcframeworks as soon as Carthage have support for it.
License
See [LICENSE.md](LICENSE.md)
*Note that all licence references and agreements mentioned in the ThunderCollection README section above
are relevant to that project's source code only.