Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


A React-inspired view framework for iOS.

Subscribe to updates I use componentkit

Statistics on componentkit

Number of watchers on Github 4272
Number of open issues 14
Average time to close an issue 7 days
Main language Objective-C++
Average time to merge a PR 3 days
Open pull requests 52+
Closed pull requests 53+
Last commit over 1 year ago
Repo Created over 4 years ago
Repo Last Updated over 1 year ago
Size 15 MB
Homepage http://www.compon...
Organization / Authorfacebook
Latest Release0.21
Page Updated
Do you use componentkit? Leave a review!
View open issues (14)
View componentkit activity
View on github
Fresh, new opensource launches ๐Ÿš€๐Ÿš€๐Ÿš€
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating componentkit for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


Build Status

ComponentKit is a view framework for iOS that is heavily inspired by React. It takes a functional, declarative approach to building UI. It was built to power Facebook's News Feed and is now used throughout the Facebook iOS app.

Quick start

ComponentKit is available to install via Carthage. To get started add the following to your Cartfile:

github "facebook/ComponentKit" ~> 0.21

Opening the Xcode projects

ComponentKit has a few dependencies that need to be installed via Carthage. Before you open any of the Xcode projects in this repo, make sure you run:

carthage checkout

If Carthage isn't installed, you easily install it via Homebrew:

brew install carthage

If you can't use Homebrew, Carthage provides other installation methods.

To get started with the example app:

open Examples/WildeGuess/WildeGuess.xcodeproj

Build and run the WildeGuess target to try it out!

If you're interested in viewing only the ComponentKit source code in Xcode:

open ComponentKit.xcodeproj

Learn more


See the CONTRIBUTING file for how to help out.


ComponentKit is BSD-licensed. We also provide an additional patent grant.

The files in the /Examples directory are licensed under a separate license as specified in each file; documentation is licensed CC-BY-4.0.

componentkit open issues Ask a question     (View All Issues)
  • about 3 years How can I assign accessibility labels for the CKLabelComponent?
  • about 3 years Question - Insetting a CKTextComponent text
  • about 3 years Potential race condition in function registerAnnounceableEventsForController of CKComponentScopeRoot ?
  • about 3 years CKCompositeComponent returns nil with non-empty view configuration
  • about 3 years [Question] Creating Scrollable Component
  • over 3 years Gesture recognizers can fire on unmounted views
  • over 3 years Unmount doesn't call attribute unapplicator
  • over 3 years Investigate easier ways to generate new stateful components during layout
  • over 3 years Investigate improving (or removing) support for memoization
  • over 3 years Investigate improvements to better handle device rotation
  • over 3 years Improve component appearance and disappearance events
  • over 3 years Remove CKComponentDataSource
  • over 3 years CKComponentAction doesn't follow nested hosting views
  • over 3 years Improve Component Controllers
  • almost 4 years CKRecursiveComponentReflow doesn't work with Transactional Data Source
  • about 4 years CKStatefulViewComponentController leaks context object
  • about 4 years UICollectionView orientation change - the behavior of the UICollectionViewFlowLayout is not defined
  • over 4 years When children vector is empty, don't allocate a vector
  • over 4 years Equivalent remount issue reappearing with CKCollectionViewTransactionalDataSource
  • over 4 years Question - How to handle UICollectionView with items of different size
  • over 4 years Not clear how to account for state of sub-components in memoization
  • over 4 years Replace CKIntegerArrayHash length parameter
  • over 4 years Add tracking of hit rate for Component and layout memoization
  • over 4 years std::hash not defined on CKComponentSize, CKComponentViewConfiguration
  • over 4 years Hard to modify input view parameters before passing to newWithView:
  • over 4 years What about a Flux demo
  • over 4 years Allow reversing layout ltr / rtl direction in CKStackLayoutComponent
  • over 4 years Question - How to animate device orientation changes
  • over 4 years Support justify-content: space-between and space-around
componentkit open pull requests (View All Pulls)
  • Changed iphone simulator number in the build script to 9.2
  • Adds generics to CKTransactionalComponentDataSourceChangeset
  • Implement memoization for the CKTransactionalComponentDataSource
  • Add CKComponentBoundsAnimation to CKCollectionViewTransactionalDataSource
  • Add support for CKComponentBoundsAnimation to CKComponentHostingView
  • Fix hostingview initial size issue.
  • Weak supplementary view
  • Delete legacy datasource
  • Remount transactional data source
  • Subspec test helper libs
  • Updated iOS simulator version to 9.2
  • Switch from CocoaPods to Carthage for development
  • Adds description implementation for CKTransactionalComponentDataSourcโ€ฆ
  • Update
  • Adds CK::intersperse helper method
  • Consider supplementary views in collection view bounds animation
  • Don't dispatch the deleter off the main thread if the layout vector is empty
  • Added function to verify validity of changeset
  • Include instructions in the README that explain how to open the Xcode projects
  • Fix Travis CI for good
  • Add tvOS as a deployment target to the Podspec
  • Add test for faulty layout logic
  • Flex factor support
  • Ratio layout fixes
  • Update
  • Update
  • Update
  • Fix linker warnings
  • Migrate WildeGuess to CKCollectionViewTransactionalDataSource
  • Do not limit Travis CI builds to master
  • Update docs on component to controller data flow
  • Re-attach existing cells using new state to support animations in reloads
  • Include missing tvOS tests
  • Make actions typesafe through templated type
  • Implement memoization for the CKTransactionalComponentDataSource
  • Fix crash on unmounted component delegate attributes
  • RFC: Typed Props Component
  • Add call operator
  • Reduce type bloat by removing sub-struct
  • Lift memoization out of core
  • Update umbrella header with missing components
  • Add CKComponentViewContext fields documentation
  • Add an in-depth section to animations docs
  • Remove CKComponentDataSource
  • Add support for attributed titles to button components
  • Mark promotion constructor explicit
  • Assert when scopes are accessed when no threadlocalscope is available.
  • Remove target/selector actions
  • Check viewClass being a subclass of a UIView
  • WIP Incremental mount
  • Moving CKStackLayout to Flexbox
  • RFC: Render Method in ComponentKit
componentkit questions on Stackoverflow (View All Questions)
  • remove cell separator in ComponentKit containerView
  • How are properties of components accessed in componentkit?
  • ComponentKit how push view controllers CKComponentController
  • ComponentKit Can't call super newWithView after subclassing CKCompositeComponent
  • ComponentKit - How to vertically align components inside a horizontal stack layout
componentkit list of languages used
Other projects in Objective-C++