Emerge Tools Profile picture
Mar 8, 2024 9 tweets 4 min read Read on X
Finding accessibility issues in an app is an incredibly manual task that can take hours depending on the size. Which seems like a perfect place for ✨AI ✨

🧵Surfacing accessibility issues in the @Drizly app w/ AI 🧠
A quick background - our Snapshots product turns Previews into snapshots. A recent feature gives the ability to use AccessibilitySnapshot w/ one line

You don't need to write test code to get snapshot tests or to snapshot VoiceOver elements
Code snippet showing `emergeAccessibility(true)` on a PreviewProvider
Drizly Preview with annotations of VO elements
We can take snapshots for any app leaking Previews into production, which @Drizly (and many other apps) are. We were able to generate 86 snapshots for Drizly

We then fed these images into an AI we're working on to detect accessibility errors. Here's what we found
20 screenshots are using file names and file paths, which can be confusing when read by VoiceOver

Here are examples where the VoiceOver has to read
gifting/guided/close
gifting/address_circle
onboarding_v2/two

Snapshot with "gifting/address_circle" as VO
Snapshot with "gifting/guided/close", "gifting/guided/brand_logo", "gifting/guided/brand_logo_three" as VO
Snapshot with "onboarding_v2/two" as VO
VoiceOver reads "underscore" and "slash" aloud, so a user hears "gifting slash guided slash close. Button"

Here's an example of Drizly's home page with these elements read aloud
We found 6 screenshots with insufficient description for interactive elements

Notice VO w/ just "Button", but no accompanying text to read what the button does
Screenshot w/ two elements with just "Button" as VO
Screenshot with element with just "Button" as VO
We found another 7 screenshots where there was no accompanying VO text

Notice the "X" icon in the top left has no accompanying VO

Some of these might be expected as they look like empty inputs. This is an area where the AI can continue to improve
Screenshot with two empty VO elements
Screenshot with four empty VO elements
Wrapping up - here is the count of manually verified issues the AI caught

20 previews w/ non-human text
7 previews w/ insufficient description
6 previews w/ empty VO text
It's still early days of this work, and it's by no means perfect, but we're very encouraged by the results we've seen so far. We'll continue to refine our accuracy and expand what we can help catch 🔬

If you're interested in learning more about this work, please get in touch!

• • •

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 2
Ok, time for a bit of a rabbit hole

...or should we say... Deere hole 🤦

🧵 Looking through the @JohnDeere apps. (Pepe Silvia warning...iykyk)

p.s. l10n = localization
Some context - we were poking around our localization data and John Deere's "TractorPlus" & "Ops Center" jumped out

🚜 TractorPlus is 412 MB - 115 MB (32%) is l10n

⚙️ Ops Center is 276 MB - 114 MB (42%) is l10n

So why did this jump out?
Firstly, apps like FedEx (160 MB l10n) or Garmin Connect (90 MB) inefficiently use localizations

@Tinder recently wrote how they used Emerge to reduce size of l10n by 95%


@Airbnb did a similar optimization - we'll link to a few 🧵s at the bottommedium.com/tinder/how-the…
Read 13 tweets
Apr 14
ask and you shall receive 🫡

🧵 figuring out why @telepass is almost half a GB Image
For those who are unfamiliar with it, Telepass is an electronic toll collection system used primarily in Italy and other parts of Europe. Here's the general breakdown

It's a flutter app 🪽
Total install size - 457 MB
Frameworks - 417 MB 🫨
Main app target - 25 MB Image
91% of install size is due to frameworks, 293 of them to be exact

There are a number of reasons that apps would have so many frameworks, but usually it's to support complex functionality in the app, or to make the app more modular and independent for teams working in parallel
Read 9 tweets
Mar 25
What app has added the most number of dynamic frameworks in the last 3 months?

Hint: it's an old friend of ours 🤖
It's @EufyOfficial, who we wrote about a few months ago

They've added a bunch of new frameworks, but its not just that they've added a lot that's interesting, its *what* they've been adding 👀 Image
Of the new frameworks, they've added~20 RN frameworks and a handful of Flutter frameworks

Not ideal to keep adding both RN & Flutter 🤔 Image
Image
Read 7 tweets
Mar 24
When we tweet about RN apps that have room for improvement, we often used the General Motor apps as an example

WELL NO MORE 👏👏👏

🧵 How General Motors shrunk app size by ~70% Image
We wrote a deep dive on the four GM apps roughly a year ago

In it, we detailed how they could reduce EACH app by ~200 MB
The apps went above that, reducing app size by ~300 MB

The main optimization came from renivubg TardisHybridContainer, which is where the vast majority of bloat came from in each app. Basically this was a mess of a dynamic framework w/ inefficient assets + a large jsbundle
Read 7 tweets
Mar 18
What's truly wild here is that at the beginning of 2024, the T-Life app was 37.3 MB

It's now at 475 MB

🧵 How to 10x your app size Image
Image
General breakdown

Dynamic Frameworks: 195 MB
Main app binary: 159 MB
Asset catalog: 69 MB

fwiw, each of those are bigger than the entire app was ~14 months ago 🕵 Image
basically this is what T-Life did over the last year

The app used to have a few UI & Games bundles + a slim binary and that was it

Now it's largest dynamic framework (AzureCommunicationCalling) is bigger than the entire app used to be at 65 MB
Read 9 tweets
Feb 6
Got a few requests for this!

Let's break down the @binance crypto app 💰 Image
So there's two versions of the app we're looking at, the US version and another version shipped under "Binance Switzerland"

From what we saw, the US app is only for the US, and every other country gets the app from Binance Switzerland, probably due to different regulations Image
Image
🇺🇸 US version weighs in at 303 MB
Main app target - 98 MB
Plugins - 94 MB 👀 we'll come back to this one
Frameworks - 55 MB Image
Read 16 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!

:(