Our recent data mining revealed that Upsight, a mobile marketing and user behavior tracking platform, was removed from the Pokemon GO source code in the recent 0.37.1 update.

The removal of Upsight is interesting, as it’s a common tool to track user interactions and time spent with certain actions, scenarios and/or features. For example, if you were to test a feature with a subset of users, Upsight would be a great tool to track and analyze how much and in what way your users actually use the feature.

As we all know, there is a Pokemon GO feature that fits the description – the new tracker which is currently tested in San Francisco area! By the looks of it, User Acceptance testing is done for the new tracker and Upsight platform was removed in the new build.

Let’s dive a bit deeper, shall we.

Upsight explained

Upsight is a popular solution for tracking almost anything inside mobile apps:

  • user interaction,
  • time spent in the app,
  • time spent using a feature
  • any kind of custom metrics using the Upsight SDK

The inital Upsight configuration request was data mined months ago by Applidium, and shows clear usage of Upsight for data collection, in app purchases analysis and several other KPIs (Key Performance Indicator ):

{
   "filter": "upsight.monetization.iap",
    ...
},
{
   "filter": "upsight.data_collection",
    ...
}

There are a lot of filters and trackers defined inside the configuration request, but we’re not going to list more for the sake of brevity. Niantic depended on Upsight for tracking a ton of metrics and user actions inside the app.

Upsight package and code references removal

We unwrapped the new APK using dex2jar command line tool and opened it using our good old friend – JD Gui. Upon initial inspection, it was evident that Upsight was removed. It was long debated if Upsight should even be in the Pokemon GO app, as it is commonly used as a marketing/advertisement target platform.

However, thanks to the efforts of Applidium and their initial package reconstruction, we are now aware that Pokemon GO used two types of in game analytics:

  • Crittercism for Unity crash reporting and performance analysis
  • Upsight for user behavior reporting and tracking
Upsight package has been removed
Upsight package has been removed

Further code inspection reveals that Upsight configuration references were also removed. The following lines of code were removed from multiple R.class files:

   public static final int upsight_marketing_content_view_close_button = 2131492907;
   public static final int upsight_marketing_content_view_web_view = 2131492906;

   public static final int upsight_activity_billboard_management = 2130903048;
   public static final int upsight_fragment_billboard = 2130903049;
   public static final int upsight_marketing_content_view = 2130903050;

   public static final int upsight_sdk_build = 2131165250;
   public static final int upsight_sdk_version = 2131165251;

What does this mean?

We believe that the new tracker finished the UAT (User Acceptance Testing) phase and is now awaiting stress and infrastructure testing. We also suspect Niantic removed Upsight due to a huge number of code dependencies it introduces.

There are no estimates on the new tracker release, nor is there any hints on what framework is now used for tracking user behavior. Judging by the code alone, there is none.