using clojurescript to launch ios/android apps to 1m users · using clojurescript to launch...
TRANSCRIPT
![Page 1: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/1.jpg)
Using ClojureScript to launch iOS/Android apps to 1M usersby Emin Hasanov@hasanove
![Page 2: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/2.jpg)
Using ClojureScript to launch iOS/Android apps to 1M usersby Emin Hasanov@hasanove
![Page 3: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/3.jpg)
![Page 4: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/4.jpg)
You are here
![Page 5: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/5.jpg)
We are thereYou are here
![Page 6: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/6.jpg)
![Page 7: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/7.jpg)
Poland vs Azerbaijanabout 4 times smaller
![Page 8: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/8.jpg)
Azerbaijan
![Page 9: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/9.jpg)
![Page 10: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/10.jpg)
![Page 11: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/11.jpg)
0
1
2
3
4
5
6
7Jul-1
5
Aug-15
Sep-15
Oct-15
Nov-15
Dec-15
Jan-16
Feb-16
Mar-16
Apr-1
6
May-16
Jun-16
Jul-1
6
Aug-16
Sep-16
Oct-16
Nov-16
Dec-16
Jan-17
Monthlysessions (millions)
![Page 12: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/12.jpg)
![Page 13: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/13.jpg)
Key criteriaBe able to launch and iterate quickly
Maintain same codebase for iOS/android apps
Avoid having to use Objective-C or Java
Have access to platform native features
Get fast, native experience on both platforms
![Page 14: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/14.jpg)
Website
50 shades of hybrid
Native app
![Page 15: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/15.jpg)
Website wrapperQuick and easy, same codebase
Worse experience than website, because of user expectations
Does not add much value, except for desktop icon
Yet, not to be underestimated
![Page 16: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/16.jpg)
Semi-nativePart native, part web views
Easy to start, lots of code sharing with website
Need to know native platforms
Slower than native apps for many cases
App store updates still required for any change to native code
![Page 17: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/17.jpg)
Almost nativeReact Native / Xamarin / NativeScript / Others
Develop using same tools, get (almost) native apps
Most of the code shared between ios/android
Most updates do not require app stores
![Page 18: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/18.jpg)
React NativeGreat experience using React on the web
Good support for both iOS and Android
Mature ecosystem and community
Very easy to get started and build apps
Code in JavaScript 😐
![Page 19: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/19.jpg)
Getting started
![Page 20: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/20.jpg)
![Page 21: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/21.jpg)
![Page 22: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/22.jpg)
ClojureScriptRobust, modern, beautiful language
Immutability and concurrency as core concepts
Rich set of data structures
Interactive development with hot code reloading
Lisp!
![Page 23: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/23.jpg)
ClojureScript for Skepticsby Derek Slager
https://www.youtube.com/watch?v=gsffg5xxFQI
![Page 24: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/24.jpg)
A taste of ClojureScript
![Page 25: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/25.jpg)
Simple Made Easyby Rich Hickey
https://www.infoq.com/presentations/Simple-Made-Easy
![Page 26: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/26.jpg)
Example component
![Page 27: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/27.jpg)
Another component
![Page 28: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/28.jpg)
Getting started
![Page 29: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/29.jpg)
![Page 30: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/30.jpg)
![Page 31: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/31.jpg)
![Page 32: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/32.jpg)
![Page 33: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/33.jpg)
Demo
![Page 34: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/34.jpg)
![Page 35: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/35.jpg)
![Page 36: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/36.jpg)
![Page 37: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/37.jpg)
Transit format
![Page 38: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/38.jpg)
Transit formatWorks on top of JSON (and MessagePack)
Supports any data type, many built-in
Arbitrary keys, not just strings
Language-agnostic
![Page 39: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/39.jpg)
Transit example
![Page 40: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/40.jpg)
Updates over the air
![Page 41: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/41.jpg)
CodePushRegister and integrate SDK
Push updates to server
Download in background when app is used
Apply when convenient
Rollback in case of problems
![Page 42: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/42.jpg)
Update over the air$ code-push deployment list
$ code-push release-react
$ code-push deployment history
$ code-push rollback
![Page 43: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/43.jpg)
Results
![Page 44: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/44.jpg)
ResultsLaunched 6 months ago, iOS 8+, Android 4.1+
More than 100,000 installs
15% of the daily sessions are from the app
99.6% crash-free sessions on both platforms
Average rating is above 4.6 (from ~1000 reviews)
![Page 45: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/45.jpg)
“I didn’t like the app, but I’ll giveyou ⭐⭐⭐⭐⭐ for the effort”
![Page 46: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/46.jpg)
Thank you!
![Page 47: Using ClojureScript to launch iOS/Android apps to 1M users · Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove. Using ClojureScript to launch iOS/Android](https://reader034.vdocuments.net/reader034/viewer/2022051815/603c9be680da53014d492673/html5/thumbnails/47.jpg)
Questions?