Launching Answers growth dashboard: understand your app’s growth

by Steve Wilber, Product Manager

In the mobile industry, the adage “if you’re not growing, you’re shrinking” is as true as ever. Today, there are more than 2 million apps available in the app stores, meaning that competition is fierce and growth isn’t easy. In fact, 13 of the top apps in the U.S. saw their growth rate decline by ~20% this year. Mobile teams know that they cannot simply build an app and expect users to flock to it - they need to actively monitor and grow their users.

To help mobile teams understand their user growth, we’re announcing a new growth analytics dashboard. With this new dashboard, you can answer important questions like: “How many new users did my app gain this week vs. the last? Are they completing key actions inside my app? Are they sharing my app with their friends?”

Understand your user growth in real-time

It’s important for product managers and app marketers to stay on top of their new users count everyday and measure their progress each week. That’s why the new growth dashboard features three key data points at the very top:

  • cumulative number of new users today
  • new users count at this same time last week
  • percentage change based on today’s count versus last week’s

By combining this data, your dashboard gives you an instant snapshot of how your app has been growing today and how well you’re performing comparing to the same point last week. It also helps you understand your growth trend for the week and whether you’re improving overall on a weekly basis!

Know the quality of your new users

The key to sustainable growth is not just getting new users, but ensuring they are taking meaningful actions in your app. With the new growth dashboard, you can now see the percentage of new users who performed a key performance indicator (KPI) each day. This helps you measure how engaged your new users are and see if your daily marketing efforts are attracting one-time users or highly engaged users.

Highly engaged users will come back to your app more often, so another way to gauge user quality is to look at your new user retention. The new growth dashboard helps you keep tabs on the percentage of new users that came back to your app after a day, a week and 30 days of installing your app. If the retention rate on a given day is higher or lower than expected vs. the week before, we’ll call this to your attention. This way you can address any issues quickly if there are any!

From our friends at Ticketmaster:

We believe that winners like scoreboards, and this new growth dashboard has been our favorite scoreboard for our mobile app development and QA teams. Retention is a valuable metric that is less sensitive to concert on-sale dates and the growth dashboard has provided us with several new metrics for us to follow how our fans are engaging with our apps in real-time.

Measure and optimize your organic viral growth

For many mobile-driven businesses, in-app referrals can be one of the most effective channels for user growth. Studies have shown that up to 50% of all buying decisions are a result of word-of-mouth referrals. To help you measure your app’s virality, the new growth dashboard shows you how many users are sharing your app’s content or inviting their friends to download your app. One big question remains though: Are their friends actually installing your app from those invites?

The new growth dashboard gives you the answer via its viral installs graph. Powered by Branch (a multi-channel, deep linking and attribution tool), the viral installs chart shows you how many installs came from the invites sent or content shared by your users with their friends. It also gives you the power to drill into which channel is more successful so you can double down on the one that gives you the highest return.

Your command center for growth in 2017

We’ve built this new dashboard to help you understand your user growth and know where to invest your marketing efforts. With 2017 on the horizon, we hope this dashboard will empower you and your team to march into the new year stronger than ever. Here’s to next year!

Building an energy-efficient analytics SDK for iOS

By Stephen Panaro, Software Engineer

The primary goal of any analytics SDK is to gather accurate data. Answers goes a step further by putting an equal focus on timeliness. Correct analytics are one thing, but tracking them in real-time is a super power. Is your latest release stable and well-adopted? Is your 24-hour sale driving more purchases? We’ll give you the answer immediately so you can take appropriate action. To deliver this real-time insight, we have to pay special attention to how we design Answers for iOS, tvOS, and macOS.

Low power as a feature

We could have built Answers to make a network request for every app event as it happens. This would have been the most timely SDK, but it would have also drained battery life. Or, we could have designed Answers to collect large batches of events and sacrifice all timeliness for great battery life. Instead, we took a balanced approach in between these two extremes. It has served Answers well, but we wanted to revisit our implementation to see how much better we could make it.

With Answers 1.3 for Apple platforms, we introduced several new power optimizations throughout the SDK. We prioritized application performance and user battery life while keeping latency as low as we could. In some cases, these optimizations produced significant power gains. This allowed us to have a large impact on battery life with a negligible aggregate impact on Answers’ latency. In the next section, we’ll walk through some of the improvements we made to enable these gains.

Limit networking

First, we turned our focus to Answers’ networking. Networking can have a substantial power impact, which made it a great place to look for optimizations. A simple way to reduce its impact is by limiting the number of requests you make. Answers has always done this by sending data in batches. For our latest release, we try even harder to ensure that app events that occur close in time to each other are sent in the same batch. This is most beneficial for heavy users of Answers Events, especially when events are logged in bursts. We also tuned our retry policy to help prevent us from making requests that are unlikely to succeed.

Background uploads

It’s impossible to talk about power-efficient networking without mentioning NSURLSession’s background uploading capability. We’ve used this capability for several years in crash reporting and seen really good power and reliability wins, so we wanted to bring those to Answers. Unfortunately, we found some issues with the background uploading API in iOS 10. Because of that, it is currently only suitable for extremely low volume networking. We hope to enable it in a future release when these issues have been addressed.

Low power mode

Next, we took advantage of NSProcessInfo’s lowPowerModeEnabled property, which notifies apps when a device enters low power mode. Introduced in iOS 9, this is a very strong indication that the user wants battery life to be maximized. When devices are in low power mode, Answers retries network requests less frequently. On macOS, we take similar action when thermal conditions are elevated. This is an easy way to further reduce our power impact, and is particularly effective when networking conditions are poor. We also have plans to expand our adoption of low power mode to other parts of the SDK.

Quality of service

In addition to the low power mode API, we also adopted two easy to use APIs to better inform the OS of the priority of Answers’ work. First, we made sure to set the qualityOfService property of our NSOperationQueues. This was a one-line change and makes sure that Answers always defers to your app’s needs. We also made extensive use of NSProcessInfo’s activity APIs to help the OS understand what we’re doing and how our work should be prioritized. As an added benefit, this makes it more obvious what Answers’ threads are doing if you happen to catch them in a debugger.

Optimized timers

Finally, we wanted to improve our usage of timers. Answers has always relied on timers because we have to make sure we periodically relay any events back to our system. In this release, we updated our timers to fire less frequently. We also now choose a timer’s tolerance value based on its duration to help the OS schedule work more efficiently. On macOS, we’ve adopted NSBackgroundActivityScheduler. This is similar to a timer but takes into account even more system conditions when scheduling work. We discovered this API while reading Apple’s Energy Efficiency guidelines, which has many other useful tips.

Same Answers, more battery

When we started to plan for Answers 1.3, we knew improving energy efficiency and satisfying Answers’ design goals would be challenging. Being accurate and being real-time are inherently power-hungry, but they’re essential to Answers so we were determined to find a solution.

We stepped back, took a holistic look at Answers and identified our best opportunities for improvement. Fortunately, there was a large overlap between the problems we wanted to solve and the problems that Apple supplies a solution for as a part of iOS. This was fantastic on two fronts: it let us write less code and in many cases, it unlocked optimizations that wouldn’t be possible otherwise.

We’re thrilled with how this approach turned out and are even more excited to share these changes with you in the latest Answers release. We hope that this makes it easier for you to build the best apps with the lowest impact on your users’ battery.

If you’re interested in further reducing your app’s impact on battery life, we encourage you to incorporate these best practices into your development workflow. Most are simple to learn and implement and the more apps that adopt them, the greater impact they will have. Plus, no one wants their app to be at the top of the battery section as the worst offender in Settings!

Introducing OOM reporting: a new dimension to app quality

by Sean Curran, Software Engineer

Stability issues can derail the success of even the best apps – glitchy software repels people. We know that app quality is one of your top priorities and crashes are your worst nightmare, which is why Crashlytics will always alert you when issues arise. We’ll even help you pinpoint their root cause so you can fix issues fast – we’ve got your back!

Today, we’re extending our crash coverage to include out-of-memory (OOM) reporting on iOS. Now, you can see stability from a whole new angle by understanding the impact OOM events have on your app experience.

What’s an OOM event and when does it occur?

Unexpected app terminations degrade your app experience and interrupt your user’s session. One type of app termination you’re probably familiar with is crashes, but there’s another unexpected termination that warrants your attention called an OOM event.

An OOM event is an app termination that occurs when a mobile device runs out of memory. All apps need memory to work, but there is only a finite amount available on each device. When an app needs more memory and there isn’t any available, the operating system terminates the app session. To your users, this looks like any other crash, however in reality, this is an OOM event.

Our approach to solving a hard problem: intelligent heuristics

OOM events are difficult to report because iOS doesn’t provide any direct mechanism to detect them and they can be caused by factors beyond your app environment and control, such as your app’s memory usage. But because of how important it is to understand your rate of OOM events, we took on this challenge and added OOM reporting to Crashlytics for iOS devices.

Here’s how it works: When you enable the Crashlytics and Answers Kits available on Fabric, we get a stream of live data about your app’s performance. Then, we apply a server-side process of elimination to this data stream to detect OOM events in your app. This detection is based on an intelligent heuristic, inspired by the work of two talented engineers. In other words, we analyze your app’s event stream to come up with an explanation of why it terminated and if we can’t match it up it to a known reason for termination, we count it as an OOM event. And, since no changes to the Answers SDK were required, you will automatically get OOM reporting without needing to do any work (as long as you have both Crashlytics and Answers installed).

This is an example of how your app analytics and stability kits can work together to unlock powerful new insight – something neither kit could do alone.

At Pinterest, we're shipping iOS app updates every two weeks to millions of people. Using the new OOM insights, we've been able to track our memory optimizations and have confidence in the stability of each release.

- Scott Goodson, Head of Core Experience

New line of sight into the impact of OOM events on app quality

Our new OOM reporting dashboard will help you understand if OOM events are a problem for your app. Now, you’ll be able to see the overall percentage of app sessions that were unaffected by OOM events across your builds. You can even drill down and see the percentage of OOM-free sessions for individual builds. This will help you answer important questions like, “Is my app being terminated more on one build than another?” and “Is my app seeing more or less OOM-free sessions over the last week?”

We’ll also give you a sortable, daily device breakdown so you can compare the raw OOM counts and the percent of OOM-free sessions across different iOS devices. Once you know which iOS device experiences the most OOM events, you can better triage and spend your time investigating problems on your most used devices. After you roll out a fix, you can monitor the number of OOM events on that device to see if your solution helped reduce them. You may even learn that there are some low-end devices that you simply can’t support.

This additional information paints a clearer picture of your app stability across devices and provides clues for troubleshooting.

Finally, we’ll show you the total number (i.e., the raw counts) of OOM events across all of your builds versus your top three builds. Use this graph to understand the prevalence and magnitude of OOM events.

Don’t let OOM events crash your app party 🎉

Our mission is to ensure that there are no more sad, unstable apps. By adding OOM reporting into Crashlytics, we’re giving you even more insight into the quality of your app. Don’t be blindsided by OOM issues that disrupt your users’ app experiences (and maybe even cause them to flee!). Monitor your OOM-free sessions, promptly identify when OOM events become a problem, and get valuable direction on where to start your troubleshooting by going to the OOMs page from your Crashlytics dashboard. Check it out and let us know what you think!

Get Crashlytics Now

Introducing fastlane plugins: A new way to create powerful actions

By Hemal Shah, Product Manager

Introducing fastlane plugins

The beauty of open source software is that innovation can come from anyone, anywhere, and at any time. Over the past year and a half, the fastlane community has embraced this opportunity to make fastlane even better. These community-contributed additions, including approximately 80% of all fastlane actions and spaceship, have already saved millions of precious developer hours!

We love developing fastlane with you and want to empower you with more freedom to help mobile developers and strengthen your bond with them. Today, we’re introducing fastlane plugins – a new, faster way to create actions and connect directly with the fastlane community.


A whole new way to move fastlane forward

fastlane is comprised of hundreds of actions that make app deployment a breeze. From helping you distribute your beta builds to posting notifications in Slack channels, the possibilities of what you can automate to save time are endless! And because fastlane is open, everyone has the power to build on top of it.

Up until now, new actions that were proposed by our passionate community were merged into the main repository. To use them, all fastlane customers would need to upgrade their gems to the latest version. We’re excited to announce we’ve made this process even smoother with the new fastlane plugins architecture.

Think of fastlane plugins like building blocks; they’re a new, modular way to create and distribute actions independently of fastlane itself. In other words, these plugins allow actions to be added faster because they aren’t bundled into the main fastlane repository. Everyone has the power to invent, share, and deploy new plugins in this new architecture without waiting for PRs to be approved and gems to be updated – they’re your fast pass to making a dent in the mobile development universe! And everyone also gets instant access to tons of new actions. So, whether you’re a plugin creator or consumer or both, fastlane plugins are a win-win for the entire fastlane family.

I’m pumped to see where developers take fastlane via plugins. This gives people the chance to quickly create actions useful to their workflow, and then easily share them with the world.

Complete ownership of your masterpiece

You’re the boss of your plugin. From concept (what cool actions can you dream of?) to coding (#shipit) and promotion (share it with the world!), you’ll have control of your plugin’s design and destiny. Once your plugin is live, you’ll get to hear feedback from other fastlane customers and interact with them directly. This is your golden opportunity to showcase your talent and collect some good karma by giving back to the community!

To start creating new plugins, simply type fastlane new_plugin in your terminal and fastlane will walk you through the whole set-up.

fastlane new_plugin

Once you’re done, fastlane will generate the code that is necessary to activate your plugin and get it ready to publish to the world! Plus, this code will be all set to run on CI for automatic build and testing.


Easily discover actions

Rest assured, new and existing plugins won’t be buried out of sight because fastlane can quickly discover external plugins created by community contributors.

To see the wealth of new actions available to you, type “fastlane search_plugins” in your terminal. If you have a specific problem or task in mind, just add a keyword to the end of this query (type fastlane search_plugins [keyword]) for more targeted search results.

fastlane search_plugin

We also regularly update this page on GitHub with a list of all fastlane plugins. Some of our favorite plugins include github_status (to check on the status of GitHub’s APIs), and upload_folder_to_s3 (to store assets and artifacts in S3 on AWS). There’s even a fastlane plugin that plays victory music called tunes!


Instant access to new plugins – no updates needed!

You can create, use, and update plugins independently of the fastlane release cycle. There’s no need to update fastlane first, these plugins will work seamlessly with your existing version!

To install new plugins, just type fastlane add_plugin [name]. Within seconds, fastlane will retrieve the necessary code and generate the configuration files so you can immediately add the new plugin action into your local project.  

fastlane add_plugin


Onward and upward to a brighter future

We built fastlane plugins to empower you to make a meaningful and immediate impact. Together, let’s make fastlane even better. We can’t wait to see the amazing new actions our community builds! And remember, we love seeing your work so Tweet us a link to your new plugin once it’s ready to rock.


Branch now available on Fabric: Grow your app with deep linking

By Jonathan Zazove, Product Manager

Update: Fabric has deprecated the third party kits as of August 2, 2018. See our help doc to learn more.

Since launching Fabric in 2014, we’ve partnered with some of the best mobile app tools to help you solve the biggest challenges in building your mobile business. Some of the challenges we’ve heard from you is that user acquisition data is often fragmented between different marketing channels, and sharing your app across those channels is really cumbersome. This makes marketing your app difficult, and you wouldn't know if you're converting users effectively.

To solve that, we’re announcing a brand new integration today: Branch, a powerful, multi-channel deep linking and attribution tool for growing your apps, is now available on Fabric.

Know which marketing channels work for your growth

While in-app analytics tools help you understand user engagement within your app, they don’t tell you which channels your users actually came from nor give you the ability to track that data. Branch’s deep links have solved this by carrying your referral data through multiple channels (i.e., web, app store) and the app install process. Now, by integrating Branch with Answers – our mobile analytics tool within Fabric (ranked #1 by SourceDNA) – you can easily start using mobile deep links to gain insights about where your user growth is coming from and how to optimize your marketing campaigns right within your Fabric dashboard.

Because Branch works with Answers right out of the box, you can instantly see which channel/content is driving the most installs – without any additional work on your part. You’ll also know right away how your current users are sharing your app which is vital to your business’s growth (we know first hand how important evangelists are from our own community!)

See Branch’s announcement to learn more about how it works.

Seamless installation for engineering teams

As with our other partner SDKs (e.g., Amazon, Stripe, Optimizely), we'll automatically provision your Branch keys so you can easily onboard your app if you already have an account with  Branch (if not, we can create one for you here). You can also install the Branch SDK or update to the latest version with a simple click on Fabric.

From our friends at 8Tracks:

Fabric's one-click-install and update functionality allows us to be sure that we’ll never miss a critical update for our SDKs. It’s the platform we trust when managing our SDKs!


We’re absolutely thrilled to get this into your hands so you can start optimizing your campaigns and get the most bang for the marketing buck. We look forward to continue helping you build and grow your mobile business!