using clojurescript to launch ios/android apps to 1m users · using clojurescript to launch...

47
Using ClojureScript to launch iOS/Android apps to 1M users by Emin Hasanov @hasanove

Upload: others

Post on 09-Oct-2020

12 views

Category:

Documents


0 download

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

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

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
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

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

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
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

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

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
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
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

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
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

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

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

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

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

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

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

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
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
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

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

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

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

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

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

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

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
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
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
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
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

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
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
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
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

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

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

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

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

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

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

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

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

“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

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

Questions?