Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
React, ComponentKit and React Native
Search
Paul Taykalo
July 06, 2015
Programming
2
410
React, ComponentKit and React Native
History of React, ComponentKit, React Native, when should I use it, how it works under the hood
Paul Taykalo
July 06, 2015
Tweet
Share
More Decks by Paul Taykalo
See All by Paul Taykalo
There's no virus on Mac
paultaykalo
0
300
On guard of surce code
paultaykalo
0
160
Source Code as Input
paultaykalo
0
89
Reactive Programming Workshop
paultaykalo
0
110
Why we are (not) writing tests in iOS
paultaykalo
1
250
Lost in maintenance in Swift
paultaykalo
0
470
Как в короткое время силами существующей команды без дизайнера выпустить мультиплатформенное приложение
paultaykalo
0
140
Code Generators In Swift (Part 2)
paultaykalo
2
190
Applications that broke... somewhere
paultaykalo
1
81
Other Decks in Programming
See All in Programming
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
2.2k
俺流レスポンシブコーディング 2025
tak_dcxi
13
8.3k
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
110
NUMA環境とコンテナランタイム ― youki における Linux Memory Policy 実装
n4mlz
1
210
AIコーディングエージェント(skywork)
kondai24
0
140
【CA.ai #3】ワークフローから見直すAIエージェント — 必要な場面と“選ばない”判断
satoaoaka
0
230
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
150
ゲームの物理 剛体編
fadis
0
310
DSPy Meetup Tokyo #1 - はじめてのDSPy
masahiro_nishimi
1
160
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
680
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
110
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
6
290
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Speed Design
sergeychernyshev
33
1.4k
Thoughts on Productivity
jonyablonski
73
5k
Designing Experiences People Love
moore
143
24k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Statistics for Hackers
jakevdp
799
230k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
91
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
The Cult of Friendly URLs
andyhume
79
6.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
[SF Ruby Conf 2025] Rails X
palkan
0
480
Transcript
ComponentKit and React Native Paul Taykalo, ComponentKit and React Native,
Stanfy, 2015 1
What is it about? » React.js, ComponentKit, React native »
Native vs Javascript » UI, do you speak it? Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 2
Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 3
React.js Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 4
React.js Simple “Simply express how your app should look at
any given point in time, and React will automatically manage all UI updates when your underlying data changes.” Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 5
React.js Declarative “When the data changes, React conceptually hits the
"refresh" button, and knows to only update the changed parts.” Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 6
React.js Implementation » Just the UI » Virtual DOM* »
Data Flow Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 7
Few months later... Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 8
Awesome! It works! Let's do it Native Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 9
UIWebView? Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 10
UIWebView? Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 11
PhoneGap + React.js Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 12
Native vs Javascript Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 13
(HTML + JS) vs (UIKit + ObjC) Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 14
Screw IT! Paul Taykalo, ComponentKit and React Native, Stanfy, 2015
15
Let's do it native! Paul Taykalo, ComponentKit and React Native,
Stanfy, 2015 16
Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 17
ComponentKit Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 18
ComponentKit » UIKit » Components » One-Way DataFlow » ObjectiveC++
Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 19
Write once, run everywhere Java, Sun Microsystems Learn once, use
everywhere React, Facebook Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 20
React.js var HelloMessage = React.createClass({ render: function() { return <div>Hello
{this.props.name}</div>; } }); React.render( <HelloMessage name="John" />, document.getElementById('container') ); Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 21
ComponentKit @implementation HelloMessageComponent + (instancetype)newWithName:(NSString*)name { return [super newWithComponent: [CKLabelComponent
newWithLabelAttributes:{ .string = [NSString stringWithFormat:@"Hello %@", @name], } viewAttributes:{} ]; } @end Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 22
Declarative vs Imperative Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 23
Declarative Write what result do you want Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 24
Imperative Write how to get the result Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 25
A bit complex example declarative + (instancetype)newWithStory:(FBStory *)story { return
[super newWithComponent: [FBStackLayoutComponent newWithView:{} size:{} style:{.alignItems = FBStackLayoutAlignItemsStretch} children:{ {[FBHeaderComponent newWithStory:story]}, {[FBMessageComponent newWithStory:story]}, {[FBAttachmentComponent newWithStory:story]}, {[FBLikeBarComponent newWithStory:story]}, }]]; } Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 26
A bit complex example imperative @implementation FBStoryView { FBHeaderView *_headerView;
FBMessageView *_messageView; FBAttachmentView *_attachmentView; FBLikeBarView *_likeBarView; } - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { _headerView = [[FBHeaderView alloc] init]; _messageView = [[FBMessageView alloc] init]; _attachmentView = [[FBAttachmentView alloc] init]; _likeBarView = [[FBLikeBarView alloc] init]; [self addSubview:_headerView]; [self addSubview:_messageView]; [self addSubview:_attachmentView]; [self addSubview:_likeBarView]; } return self; } - (CGSize)sizeThatFits:(CGSize)size { return CGSizeMake(size.width, [_headerView sizeThatFits:CGSizeMake(size.width, CGFLOAT_MAX)].height + [_messageView sizeThatFits:CGSizeMake(size.width, CGFLOAT_MAX)].height + [_attachmentView sizeThatFits:CGSizeMake(size.width, CGFLOAT_MAX)].height + [_likeBarView sizeThatFits:CGSizeMake(size.width, CGFLOAT_MAX)].height); } - (void)layoutSubviews { CGFloat width = [self bounds].size.width; CGFloat y = 0; CGFloat headerHeight = [_headerView sizeThatFits:CGSizeMake(width, CGFLOAT_MAX)].height; [_headerView setFrame:CGRectMake(0, y, width, headerHeight)]; y += headerHeight; CGFloat messageHeight = [_messageView sizeThatFits:CGSizeMake(width, CGFLOAT_MAX)].height; [_messageView setFrame:CGRectMake(0, y, width, messageHeight)]; y += messageHeight; CGFloat attachmentHeight = [_attachmentView sizeThatFits:CGSizeMake(width, CGFLOAT_MAX)].height; [_attachmentView setFrame:CGRectMake(0, y, width, attachmentHeight)]; y += attachmentHeight; CGFloat likeBarHeight = [_likeBarView sizeThatFits:CGSizeMake(width, CGFLOAT_MAX)].height; [_likeBarView setFrame:CGRectMake(0, y, width, likeBarHeight)]; y += likeBarHeight; } Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 27
A bit complex example imperative Paul Taykalo, ComponentKit and React
Native, Stanfy, 2015 28
Immutability One does not simply mutate component Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 29
StateLess* Components tend to be stateless Paul Taykalo, ComponentKit and
React Native, Stanfy, 2015 30
Virtual "DOM" in ComponentKit How to render all stuff that
user written Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 31
Component tree -> (Magic) -> UIKit tree Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 32
Component is not an UIView Not Every Component backed up
with UIView Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 33
ComponentKit Layout Paul Taykalo, ComponentKit and React Native, Stanfy, 2015
34
Autolayout ? Manual Layout? Paul Taykalo, ComponentKit and React Native,
Stanfy, 2015 35
Autolayout ? Manual Layout? FlexBox* Paul Taykalo, ComponentKit and React
Native, Stanfy, 2015 36
ComponentKit is awesome Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 37
ComponentKit downsides Paul Taykalo, ComponentKit and React Native, Stanfy, 2015
38
ComponentKit downsides » Native (I cannot write for Android) »
I need to compile it each time I change something » I cannot share the code Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 39
Let's back to Javascript Paul Taykalo, ComponentKit and React Native,
Stanfy, 2015 40
Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 41
React Native Paul Taykalo, ComponentKit and React Native, Stanfy, 2015
42
Oh, I know! Javascript + HTML again? Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 43
React Native Native Code Bridge Javascript Paul Taykalo, ComponentKit and
React Native, Stanfy, 2015 44
React Native Native Code Bridge Javascript Paul Taykalo, ComponentKit and
React Native, Stanfy, 2015 45
React Native Native Code Bridge Javascript Paul Taykalo, ComponentKit and
React Native, Stanfy, 2015 46
React Native Native Code Bridge Javascript Paul Taykalo, ComponentKit and
React Native, Stanfy, 2015 47
Nah, It cannot be fast! Paul Taykalo, ComponentKit and React
Native, Stanfy, 2015 48
Nah, It cannot be fast! It cannot run faster that
native Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 49
Nah, It renders in UIWebView It's slow! Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 50
Nah, It renders in UIWebView It's slow! It uses UIKit
for rendering Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 51
Nah, I know Native -> JS communication is one-threaded and
synchronous Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 52
Nah, I know Native -> JS communication is one-threaded and
synchronous React Native uses calls batching React Native is fully asynchronous Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 53
Nah, I know that... Paul Taykalo, ComponentKit and React Native,
Stanfy, 2015 54
Stop it! Decide for yourself React Native Playground iOS App
Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 55
React Native Playground iOS App Paul Taykalo, ComponentKit and React
Native, Stanfy, 2015 56
React Native Template Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 57
React Native Development Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 58
React Native Development » Live Reload » Debugging Javascript in
Browers » FPS Monitor (Javscrip and UI) » Inspect UI Elements (UIView deubgging) » Profiling » Modules Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 59
Ok, I get it What is there any cons? Paul
Taykalo, ComponentKit and React Native, Stanfy, 2015 60
React Native » Animations » Native Components » Complex gesture
recognizers » Extensive computations » new Paradigm Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 61
Where to start from? Paul Taykalo, ComponentKit and React Native,
Stanfy, 2015 62
Where to start from? » M(V)VM » React.js » ComponentKit
» React Native Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 63
So can Javascript be fast? Paul Taykalo, ComponentKit and React
Native, Stanfy, 2015 64
So can Javascript be fast? It can be fast enough
:) Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 65
Links » https://code.facebook.com/posts/1014532261909640/ react-native-bringing-modern-web-techniques-to- mobile/ » http://www.reactnative.com/ » https://developer.mozilla.org/en-US/docs/Web/ Guide/CSS/Flexible_boxes
» http://www.objc.io/issues/22-scale/facebook/ » https://code.facebook.com/posts/1014532261909640/ Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 66
Links » https://speakerdeck.com/frantic/react-native- under-the-hood » http://www.objc.io/issues/22-scale/facebook/ Paul Taykalo, ComponentKit and
React Native, Stanfy, 2015 67
Component Kit and React Native by Paul Taykalo, Stanfy Paul
Taykalo, ComponentKit and React Native, Stanfy, 2015 68