myntra’s android app — under the hood

I spent a few hours yday looking under the hood of retail marketplace apps in India. The most interesting findings were all from myntra. From a tech/product/design perspective, myntra’s app stood out. A list of all the sdks/libraries they use is listed below with a brief description.

Bolts SDK (https://github.com/BoltsFramework/Bolts-Android)

This is a sdk developed by fb/parse & is used extensively in the facebook app as well. It is used a lot for parallelizing tasks & making the UX experience really smooth.

Butterknife library (https://github.com/JakeWharton/butterknife)

Makes injecting code very easy & hence boilerplate coding very easy. Leads to quicker development & more concise code. Similar functionality is also provided by roboguice (https://github.com/roboguice/roboguice) & dagger as well (https://github.com/square/dagger) Myntra uses both butterknife as well as robospice.

Apsalar SDK (http://apsalar.com/)

Mostly used for ad attribution tracking & audience management.

Crashlytics (https://get.fabric.io/crashlytics)

A lot of companies have started moving from tools like crittercism to crashlytics. It is probably the best way to understand & fix the crashes in your app. It might be better to integrate the entire fabric sdk which support twitter identity sdk as well.

Esoteric Software (https://github.com/EsotericSoftware)

It is a small gaming apps company which has open sourced a lot of their libraries. Most interesting are kryo, minlog & reflectasm. Core tech libraries. Mainly used to drive speed of the code. these libraries help clone objects, code generation & minimal logging.

facebook sdk (https://developers.facebook.com/docs/android)

Used for facebook login, sharing products/links on facebook, handling app link invites, deep app linking & ads.

google sdk (https://developers.google.com/android/reference/packages)

If you end up using the entire google services libraries, there is a very good possibility that you might exceed 65k methods forcing you to get to a multidex architecture (flipkart uses the most google services) Myntra isn’t using gms but the gms services are ads, analytics, appindexing, auth, cast, drive, fitness, games, gcm, identity, location, maps, nearby, panorama, plus, tagmanager, safetynet, wallet & wearable.

Greycellofp(https://github.com/myntra/droid-uiscrollview)

This is developed & open sourced by myntra mainly to make the scroll super smooth. You can see all the myntra open sourced libraries athttps://github.com/myntra

Iconify (https://github.com/JoanZapata/android-iconify)

This is a font library. Makes the text looks awesome!

Rounded Images (https://github.com/pungrue26/SelectableRoundedImageView/)

For making images to have rounded corner

Localytics (http://www.localytics.com/)

App marketing & analytics. The app marketing market is crowded with tools & libraries but localytics stands out by bringing analytics with push management, attribution & a/b testing. Expensive but probably worth it!

Nineoldandroids (nineoldandroids.com)

Loved this concept & execution. Makes developing for android 1.0 to honeycomb (3.0) easy. The % of people on these platforms is quite low but using this library saves them a lot of time in development & gives the users good experience.

Snackbar (https://github.com/nispok/snackbar)

You don’t have to use this anymore as google supports this in standard libraries already. (http://developer.android.com/reference/android/support/design/widget/Snackbar.html)

Image loader (https://github.com/nostra13/Android-Universal-Image-Loader)

Makes loading, caching & displaying images smooth & easy

Parse (https://parse.com/products/android)

I am not sure why myntra would be using parse but parse is a beautiful BaaS to drive your prototypes & small apps.

Scheduling jobs (https://github.com/path/android-priority-jobqueue)

Makes async tasks easier. Looks like different teams are using different jobs scheduling, task management tools.

Edit text library (https://github.com/rengwuxian/MaterialEditText)

Super quick way to support material design edit text.

Snappydb (https://github.com/nhachicha/SnappyDB)

Lightweight key value database for android. This is the most recommended key value store for android apps. Most people avoid sqlite in favor of snappydb, activeandroid, sprinkles, sugarorm…

Square libraries (https://github.com/square)

Square has avery good set of libraries for android development. retrofit is a great rest client. picasso is a great image loading & caching library. okhttp is a great http/spdy client. There are like 100+ libraries across android, rails, ide, ssl, sql etc…

Castorflex (https://github.com/castorflex)

Lots of UI goodies in castorflex libraries. Smoother progress bars, circular progress bars, vertical view pager are the interesting libraries.

Sephiroth (not the game, https://github.com/sephiroth74)

Again a bunch of image handling tools & animations. Libraries are for zooming images, android wheel, floating action menu, reveal animations etc..

okio (https://github.com/square/okio)

Core tech. An IO api for java.

objenesis (http://objenesis.org/)

Core tech. creating objects of a class.

They have done great work in making the app experience awesome by using the right libraries/sdks but ended up increasing the apk size by including 2 large jpg image & a few uncompressed pngs! (about 10–12 of them). This looks like an oversight for a team that has made great use of the android ecosystem.

How much of the ecosystem are you tapping in your app development? What interesting libraries/sdks do you use?

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.