App icon for AllTrails

AllTrails

January 24, 2024

🏆 AllTrails won the 2023 iPhone app of the year 🏆

And maybe more importantly, AllTrails holds the distinction of being loved by almost every member of the Emerge team. We'll go through how the iOS app changed in 2023, but it's a change in the Android app that leaves us with more questions than answers.

The iOS App

Unlike our past deep dives, which highlight an app’s architecture and technical changes, the most significant changes in the AllTrails app seems to be a design-oriented shift in the type of assets they include in the app. A change in late 2022 signaled what was to come in 2023.

Late 2022 Change

At the end of 2022, AllTrails decreased its app size by 50MB, a 25% reduction. AllTrails removed 55 MB of assets, notably by removing four “pro-” PDF files that seemed to be used to upsell pro features:

  • pro-carousel-distance-header-small.pdf - 16.8 MB
  • pro-carousel-map-download-header-small.pdf - 15.4 MB
  • pro-carousel-header.pdf - 9.1 MB
  • pro-carousel-distance-header.pdf - 8.9 MB

pro-carousel-map-download-header.pdf

pro-carousel-map-download-header.pdf

pro-carousel-map-download-header-small.pdf

pro-carousel-map-download-header-small.pdf

pro-carousel-header.pdf

pro-carousel-header.pdf

pro-carousel-distance-header.pdf

pro-carousel-distance-header.pdf

These four assets took up ~50 MB by themselves (why files were 10 MB - 15 MB in the first place is worth asking). Below, our X-Ray diff shows just how many assets AllTrails removed between v16.3 and v17.0. Red nodes represent size decreases, while green nodes are increases.

X-Ray diff between v16.3 & v17.0
X-Ray diff between v16.3 & v17.0
The asset catalog was ~38% of the AllTrails app in v16.3. In v17.0, this reduced to ~13% of the app.
v16.3 (Nov '22)v17.0 (Dec '22)
Original ImageNew Image

2023 Changes

It seems simple to point out, but one of the biggest changes for AllTrails was the increased use of video and interactive features. At the start of 2023, there were two .mp4 files in the app. AllTrails quadrupled that and now has eight videos in the app.

The new video files include:

  • PlusUpsellHeader-3DMaps.mp4 - 3.0 MB
  • flyover-preview.mp4 - 2.4 MB
  • PlusUpsellHeader-TrailPreviews.mp4 - 1.1 MB
  • PlusUpsellHeader-OfflineMaps.mp4 - 286.7 kB
  • PlusUpsellHeader-DistanceAway.mp4 - 225.3 kB
  • mini-distance-away.mp4 - 90.1 kB

These videos show off "plus" features in the app, and some are direct replacements for the PDFs removed at the end of 2022. We also see new .json files like alltrailsv2-vector-pre-rebrand.json, which contains Mapbox animation data. Mapbox is the SDK that helps enable the “Trail Previews” feature highlighted in the award announcement.

GIF of Trail Preview Feature
GIF of Trail Preview Feature
// snippet of alltrailsv2-vector-pre-rebrand.json
{
  "version": 8,
  "name": "AllTrails Terrain 2020 - en_imperial",
  "metadata": {
    "mapbox:type": "default",
    "mapbox:origin": "outdoors-v11",
    "mapbox:autocomposite": true,
    "mapbox:groups": {
      "Terrain, terrain-labels": {
        "name": "Terrain, terrain-labels",
        "collapsed": true
      },
      "Transit, transit-labels": {
        "name": "Transit, transit-labels",
        "collapsed": true
      },
      "Administrative boundaries, admin": {
        "name": "Administrative boundaries, admin",
        "collapsed": true
      },
      "b05bde0d52c7b94cc170ae519c6f9ba2": {
        "name": "POIs - custom"
      },
      ...
    }
  }
}

AllTrails clearly emphasized creating a more interactive and engaging experience, and it paid off well. The AllTrails changes in 2023 weren't purely cosmetic. Some other changes to mention:

  • At the start of the year, AllTrails had no app extensions (minus the Watch extension). The app now ships three: NotificationContentExtension, AllTrailsWidgetExtension, and BrazeNotificationServiceExtension.
    Plugins in AllTrails app
    Plugins in AllTrails app
  • Speaking of Braze, AllTrails reduced the size of dynamically linked frameworks from 75 MB to 65 MB. They did this by completely removing frameworks and shifting some, like Braze and Apptentive, to be statically linked.

The Android App

Now for an interesting change we don't see often. The Android app had a similar shift as iOS to include more videos, but what’s most notable is that the AllTrails app appears to no longer be splitting APKs in a "normal" manner. Either they are splitting APKs manually, or have disabled a portion of automatic APK splitting, an uncommon practice.

Check out our Split APK glossary for background on how split APKs work.

At the start of the year, the AllTrails app had a very “normal” looking .aab, producing four split APKs. This changed in version 17.9.1. The app started shipping three split APKs, with all architectures included in the base.apk. The app increased from a 40.5 MB download size to a 54.7 MB download size, a 35% jump.

Size Tracker graph showing significant size increase in v17.9.1
Size Tracker graph showing significant size increase in v17.9.1

So, what does this mean? When a user downloads the AllTrails app, they download native libraries (.so files) for every Application Binary Interface (ABI), even though a single device will only ever use the applicable .so file for one ABI. Most apps on the Play Store ship .aab’s and use automatic APK splitting, which optimizes for a specific user’s device architecture, screen density, or locale. In less common cases, some apps still ship a universal APK, which contains all architectures, densities, and locales supported, in a single, large APK.

More simply, instead of shipping native libraries for a single architecture as part of a split APK, AllTrails is shipping native libraries for all four architectures in its base APK.

v17.8.1 (May '23)v17.9.1 (May '23)
Original ImageNew Image

AllTrails has the density and locale split APKs, suggesting that AllTrails switched to manually splitting APKs, a legacy practice, or disabled ABI splitting. This practice brings download size bloat, something strange to see in a larger app.

Many people likely download the AllTrails app at trailheads with less-than-ideal network conditions, making the extra download size more significant. We’d love to hear from anyone on the AllTrails team to learn more about why the team chose to ship native libraries for all architectures, so get in touch if you know!

Analysis Links

Here are the links to all build analysis pages referenced:

Sign up for our newsletter 🛸

Never miss a post or product update

Related articles



2024 © Emerge Tools, Inc. All rights reserved.