Emerge Tools Profile picture
May 18 โ€ข 8 tweets โ€ข 4 min read Twitter logo Read on Twitter
So, what does the @OpenAI ChatGPT iOS app look like under the hood? Well we took a look at a decrypted build

๐Ÿงต How the ChatGPT iOS app is made
Overall install size is 41.9 MB and has a fairly simple structure. Here's our X-Ray treemap Treemap of ChatGPT iOS app....
The main thing that stands out is they're shipping 18 MB worth of debug symbols in the app. Nothing stood out when we sifted through

It's best practice to strip these out and is particularly easy to do since they only need to strip from their main app binary A highlight of 18MB of bina...
ChatGPT isn't linking any dynamic frameworks, helping keep it's size small. We can see some modules they're linking statically

@mixpanel for analytics
@datadoghq for logging
@getsentry for performance monitoring
@RevenueCat for payments
@auth0 for authentication
+ others Modules in the binary. Can ...
We also took a look at their startup using ETTrace ๐Ÿ‘€๐Ÿ‘€๐Ÿ‘€
Their overall startup time is very fast, really only initializing a few of their included frameworks with no obvious bottlenecks Flamechart of ChatGPT's sta...
You can use ETTrace as a local and open-source way to profile any iOS app, check it out here
github.com/emergeTools/etโ€ฆ
Right now, it looks like the app just forwards the query / responses to and from OpenAI's servers. Nothing of note, but we'll definitely be monitoring any updates to the app and waiting for the Android version ๐Ÿค–

โ€ข โ€ข โ€ข

Missing some Tweet in this thread? You can try to force a refresh
ใ€€

Keep Current with Emerge Tools

Emerge Tools Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @emergetools

May 17
What happens to an app's performance when it goes from react native -> native?

The @peacock app just made the switch on iOS & Android and had a significant change in size and startup time

๐Ÿงต Performance impact of switching to native
A quick primer

RN let's you create mobile apps for Android and iOS using js & react. 1 codebase, 2 apps. It has an active community & there are certainly reasons you'd want to use RN

That said, if performance is important, native is going to be better
A few reasons

- JS is an interpreted language vs. native (Swift & Kotlin) is compiled
- RN is *mostly* singled threaded. Concurrency is complex and not as performant
- Native has easier access to device & OS features. RN requires more libraries to achieve functionality
Read 12 tweets
Jan 17
Notable iOS app size changes (install size) over the last week

๐Ÿ“ˆ Increases
@BestBuy: +26.3 MB
@indeedjobs: +26.2 MB
@github: +10.6 MB

๐Ÿ“‰ Decreases
@Shopify: -24.5 MB
@Reddit: -24.0 MB
@googlechrome: -19.9 MB

๐Ÿงต How Best Buy could've avoided the increase altogether
Best Buy v22.12.10 (previous)
Install Size: 148.6 MB

Best Buy v23.1.10 (latest)
Install Size: 174.9 MB

The difference in size between the two is due to the latest release being built with Xcode 14
We've written extensively about Xcode 14 deprecating bitcode causing significant size increases in iOS apps

thread on Xcode 14 & @BeReal_App ๐Ÿ‘‡

Read 6 tweets
Jan 12
The @CandyCrushSaga iOS app (v 1.243.0) is made up of over 22k files

Over 90% of the files are under 4 KB

๐Ÿงต Why having many small files = size bloat
+ how Candy Crush could cut it's install size by almost 20%
The candy crush iOS app has an install size of 264.8 MB

55.5 MB of the app is "levels", which are made up of .txt files like `episode190Level3.txt` that define a level in JSON format Emerge X-ray graph of candy...Emerge X-ray showing many l...
Here's an example from the smallest file `episode1level8.txt`

In total, the contents of the file are less than 1 KB, but the file takes up 4 KB in the app bundle that's downloaded on user's phones JSON of a level.txt fileEmerge X-Ray showing episod...
Read 9 tweets
Jan 10
Inspired by this @Kelset tweet, let's take a look at how the @discord iOS app increased by 54.2 MB (36%) install size in version 158.0

Discord Version 157.0 measured at 148.7 MB install size.

More than a third of the app was from main.jsbundle (RN) Image
Version 158.0 had 202.9 MB install size (+54.2 MB)

Most of the size increase came from adding images, including this 12.8 MB gif
Read 9 tweets
Jan 4
The largest iOS apps all have a common problem

Localization files account for
23% (74 MB) of @Uber
23% (30 MB) of @WhatsApp
17% (53 MB) of @MicrosoftTeams
17% (50 MB) of Nike Run Club

๐Ÿงต Here's how Airbnb reduced the size of localizations by 82% with the help of Emerge
First, a quick primer on localization files

Localization files are used to store translations of text in your app. Each file is a list of key-value pairs for text that need translating. These files exist for every language your app supports Example of key value pairs ...
When a user downloads your app, every localization file is included in the app bundle

At runtime, the OS loads the localization file of the user's preferred language

So despite most users only using one language, the files for all supported languages are downloaded
Read 21 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(