using clojurescript to launch ios/android apps to 1m users€¦ · key criteria be able to launch...
TRANSCRIPT
![Page 1: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/3.jpg)
![Page 4: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/4.jpg)
You are here
![Page 5: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/5.jpg)
We are thereYou are here
![Page 6: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/6.jpg)
![Page 7: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/7.jpg)
Poland vs Azerbaijanabout 4 times smaller
![Page 8: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/8.jpg)
Azerbaijan
![Page 9: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/9.jpg)
![Page 10: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/10.jpg)
![Page 11: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/12.jpg)
![Page 13: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/14.jpg)
Website
50 shades of hybrid
Native app
![Page 15: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/19.jpg)
Getting started
![Page 20: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/20.jpg)
![Page 21: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/21.jpg)
![Page 22: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/24.jpg)
A taste of ClojureScript
![Page 25: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/26.jpg)
Example component
![Page 27: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/27.jpg)
Another component
![Page 28: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/28.jpg)
Getting started
![Page 29: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/29.jpg)
![Page 30: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/30.jpg)
![Page 31: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/31.jpg)
![Page 32: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/32.jpg)
![Page 33: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/33.jpg)
Demo
![Page 34: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/34.jpg)
![Page 35: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/35.jpg)
![Page 36: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/36.jpg)
![Page 37: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/37.jpg)
Transit format
![Page 38: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/39.jpg)
Transit example
![Page 40: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/40.jpg)
Updates over the air
![Page 41: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/43.jpg)
Results
![Page 44: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/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€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/46.jpg)
Thank you!
![Page 47: Using ClojureScript to launch iOS/Android apps to 1M users€¦ · Key criteria Be able to launch and iterate quickly Maintain same codebase for iOS/android apps Avoid having to use](https://reader035.vdocuments.us/reader035/viewer/2022062920/5f020f207e708231d4025f4f/html5/thumbnails/47.jpg)
Questions?