Introducing Velocity Alerts

Since the birth of Crashlytics, our passion has always been to help you fix the most prevalent issues quickly and painlessly. Just last month, we released badges to help you hone in on crashes that stand out against the rest.

Today, we’re thrilled to introduce Velocity Alerts: intelligent, proactive alerting on the most critical issues happening in your app. Now, you truly know when you need to take action right away.

 

Powered by the #1 mobile analytics solution

While our system already distills and prioritizes your crashes based on their impact, there was more we could do to make your life even easier. By combining your app’s crash data with usage analytics from Answers, our new Velocity Alerts enable you to triage unexpected, high-impact issues with minimal effort.

Now, once you’ve enabled Answers as part of Crashlytics, our system will proactively check to see if there is a statistically significant number of sessions that have ended due to a crash related to one issue on a particular build. If so, we'll let you know if that issue is a hot patch candidate and needs your attention immediately right on your dashboard. You’ll also get an email alert in your inbox as well as a push notification if you’re using the Fabric mobile app (Android support coming soon). With Crashlytics, you’ll never miss a critical bug!

While at it, we’ve also redesigned all of our notification emails so important information are even more clear and actionable.

We couldn’t be happier to release this so you can sit back, relax and just focus on building the best app. If you’re already using Crashlytics with Answers, Velocity Alerts are automatically enabled for you. If not, get started with Answers!

Introducing the ability to log NSErrors

At last year’s Flight conference, we opened beta access to one of our new tools at Crashlytics Labs: the ability to log NSErrors on iOS, OS X, and tvOS. Beyond actionable insights into errors when an app or game crashes, we wanted to empower you to optimize your user experience even when your app isn’t crashing. Since Flight, we’ve been building this out, while releasing other major features such as Crashlytics for tvOS along the way.

Kicking off the new year strong, we’re excited to share today that we’re officially releasing the ability to log NSErrors on iOS, OS X and tvOS with Crashlytics!

Total Visibility Beyond Crashes

Crashes aren't the only adverse events that can take place in a running app. Errors might occur in the background and affect the behavior or performance while the app is running, leading to poor user experience or other serious problems later. Knowing about these non-fatal errors can help you monitor and address problems before they become more serious, or uncover issues that might be due to a server/back end problem.

With Crashlytics, we’ve extended the #1 crash reporting experience so you can easily log and fix the most critical non-fatal errors on Apple devices — all in real-time. Just like for crashes, you’ll have everything you need: in-depth stack traces, cross version analysis, device/OS breakdowns, among all the other features you already know. 

To get started with the new feature, simply go to your Crashlytics dashboard and select the “Non-Fatals” filter option. Now, all your non-fatal errors will be grouped by their error domain and code, and you'll see the NSLocalizedDescription right there in the list. 

We couldn’t be happier to get this new feature into your hands and look forward to the awesome apps you’ll be building this year. Happy coding!

  

Why We Are Converting to React

 

I feel weird writing about React. I’m not a contributor or upstanding community member. I’m not even an early adopter – we only started working React into Crashlytics about six months ago.

I’m a fan, though. A huge fan. And even though I thought I was the last person to this party, I keep running into frontend developer pals who haven’t given React a try.

Let’s change that!

The models who couldn’t save themselves

My React fervor was sparked by a bug I wrote. I work on Beta by Crashlytics, and much of our web frontend is written in Backbone. Late last summer, our dialog for managing groups of testers regressed: every so often, it would stop working. Any attempt to edit the group’s name, or add or remove testers, would be met with the same error in the JavaScript console: A “url” property or function must be specified.

How could this be? I had a Group model object, a whole collection of them in fact. You can see them right there in the sidebar. They each had their IDs, and their collection was very clear about how to turn those IDs into URLs. And yet, somehow “save” was broken. Why wasn’t it making its URL?

Let’s be clear, this is my bug. And –  full disclosure  –  I wrote it when converting some other parts of the UI to React. I was finding the Backbone Collection’s “set” method to be too chatty announcing change events, so, for the code that updated our global Group collection in response to a periodic server poll, I changed over to “reset” instead. It even seemed more correct, in my mind: make the groups list exactly like the latest state from the server.

Unfortunately, “reset” works by first emptying the collection of its existing models, then re-populating it. That emptying carries the consequence that those previous occupants — such as the Group object that the editing UI had a reference to — would be orphaned, no longer a member of anything. No parent collection meant no “url” method, and that meant no way to save.

I felt a bit stupid for having caused such a regression, but that was eclipsed by my frustration that such a bug was even possible. Model objects that are capable of saving themselves had already been a pet peeve of mine due to how they hindered testability, but now I found model objects that could arbitrarily lose their ability to save themselves in the middle of my program!

This was a mutation bug on steroids: an object’s functionality changing not even due to local state modifications, but by whether or not another object was holding a reference to it. How could I reason about behavior if this possibility was lurking in my code? What automated test would have even exercised this?

I was determined. I was vengeful. It was now time to, as they say, React all the things.

The DOM Doctors

Doubling down on a new UI rendering library might seem a strange way to solve a model logic problem, but React has the remarkable power to send ripples of correctness through your codebase. Consciously or not, libraries like Backbone end up encoding assumptions about how views work in their data classes. If we fundamentally changed how rendering happens, why wouldn’t that affect how we managed data?

If you’ve heard anything about React, it’s probably that it has a “virtual DOM” that makes its HTML fast using an efficient tree diff algorithm. If you’re like me, the first time you heard that you may have dismissed it. My HTML isn’t slow.

And maybe it’s not that slow, but only because we frontend developers learned not to push it. We joined together our template strings for one big innerHTML splat at the outset and then just modified individual elements going forward. We couldn’t conceive of being so callous as to re-render an entire dialog just because a group’s name changed. We were good programmers, we were precise. We were surgeons, jQuery was our scalpel, and when the “name changed” event came in we made only the tiniest incision in the page to bring it up-to-date.

There’s another reason for why we stepped lightly in the tree: DOM elements are stateful beyond how we created them. They have focus, or scroll positions, or in-progress edits. Some cavalier re-rendering wouldn’t just be slow, it would stomp user data at the same time. And that, at least, was unacceptable.

These constraints had a profound effect on our code. We couldn’t just write the state of what our UI should look like (“the button is disabled because a network request is in progress”). Instead, we were condemned to write the state transitions between those UIs. On network request start? Add class “disabled.” On complete? Remove class “disabled.” If we were lucky, we found all the ways that state tended to linger on our pages. On showing a form? Remove any error messages from the last time we showed this form.

Testing this style of code is both painful and approximate. On top of exercising your initial rendering, you need to test your transitions. They need plausible prior states just to run, but to have good coverage you need to test them against each important variation of prior state that your application is capable of getting itself into. A “finite” state machine perhaps, but only in theory.

Spared from Change

Enter React. The real benefit of that O(n) tree-diffing algorithm isn’t performance per se. It’s that it frees us from having to hand-write every state transition in our UI. Besides reducing drudgery, that actually eliminates the entire class of leaky-state bugs mentioned above. If you declare that your UI is a dialog with an active button and no error message, React will transition to exactly that, performing DOM manipulations that ensure that your button is active and no error message is seen. Any vestiges of previous state are cleansed with no extra effort on your part.

Fundamentally, your old state transition code was a function over your application data, but also over the previous state of the UI. That’s why you needed to consider varied “prior states” when testing. In contrast, your React rendering code is a function over just the application data. You can imagine how much more pleasant that makes your tests.

The real answer to how “just” a view library can affect your data handling is that React is a view library because that’s all that it needs to be. When I talked about the Backbone data classes having assumptions about the way you displayed your UI, I was thinking of mutation handling and attribute-level change events. If you’re writing minimal state transitions, that kind of information is important for doing precise DOM surgery. If you’re writing a React component, though, where declaring UI state is cheap and getting to it is fast, the only notification you really need is “something has changed, probably.”

Since all you need are coarse-grained change notifications, your data objects can be correspondingly simpler. One could argue that React even works best on just plain hashes and arrays. All you need is for a data source to hand your component hierarchy the latest values, and everything flows efficiently from there. No mutation-tracking, self-saving, collection-inhabiting model objects necessary.

Efficient coarse updating also enables what may be my favorite part of React: props and state.

In a correctly-written React component, the only inputs to the UI rendering method are its “props” and its “state.” These are exposed as a pair of hashes on the component object, and changes to either of them cause the component to re-render. (Something has changed, probably.)

The difference between the two is how they change. “props” can be thought of as the input from the outside world. It’s set from the parameters your component is called with, and its values should be treated as immutable. “State,” on the other hand, is the data that’s owned by your component. You update it via the “setState” method, and no one else should be changing it on you.

To give a concrete example, consider a component for editing a group. The props would include the group’s name, while the state might be whether it’s showing a “delete” link or the “confirm” / “cancel” buttons that appear instead when that link is clicked.

This may seem like just a helpful little pattern, but by calling out this distinction between props and state, React has bestowed an enormous understandability boon on your code. Gone is the catch-all “options” hash that contains everything, internal and external. Your data is going to naturally fall into one hash or the other, so there’s one fewer choice to make when structuring your component, and, more importantly, one more signal of your intent when your team comes back to your code months later to extend it.

In practice, the state of one component actually ends up trickling into its child components as props, and establishing your intention is even more valuable. When the same data is “state” here and “props” there it’s perfectly clear what level of your component hierarchy is responsible for coordinating its changes.

Finally, when you consider testability, you can, in almost every case, proceed in ignorance of changes to your component’s props. So, while you and I both know that group names can change, all the component that renders the list of groups in the sidebar needs to do is render the names it’s given. If they change, it’ll be given new names, and it’ll render them just the same. No need to waste time in your tests verifying that case.

Path to salvation

React is fascinating because it takes this rather clever little algorithm for fast tree diffing and follows it to its logical extreme, introducing an incredibly effective paradigm to web developers: If we can diff in O(n) time we can quickly convert one DOM tree to another. That means it’s efficient even if the difference is small. It also means we can keep that partially-filled <input> around. That means we can do coarse-grained updates for any change. That means that re-rendering can be triggered automatically by the framework. That means we can have a simple, standard pattern for state management. And so on.

As a library, React doesn’t really let you build anything that you couldn’t do before with any other UI framework. Maybe some things will be more performant out-of-the-box, but functionality-wise your product will be very much the same. What React gives you instead is much less, better code, sooner. Declarative UIs are faster to write, simpler to test, and far far far easier to reason about.

It feels like nothing short of giving you frontend engineering superpowers.

Hopefully this has whet your appetite for React. Maybe it will be as revelatory for you as it has been for me. Soon, I’ll follow this post up with some more specifics about how we’re using React on Crashlytics, why you don’t need JSX, and our take on a unidirectional data flow pattern :)

We're helping our customers build the best apps in the world. Want to be a part of the Crashlytics team and build awesome stuff? Ping us @ [email protected]. We look forward to chatting with you!

(Big thanks to Kevin Robinson, Sam Neubardt and Sam Phillips for contributing to this post.)

Launching Crashlytics Swift Support

swift_header_image

When Apple introduced Swift, their new programming language, at this year’s WWDC, like you our engineers didn’t waste any time and dove in to see what it was all about. After spending the past few months testing out support in our developer preview, we’re excited to announce Crashlytics official support for Swift!

Build How You Want, Where You Want

At Crashlytics, we’re huge supporters of making it as easy as possible to develop mobile apps. When Apple promoted Swift as a language that was easier to read and maintain, we knew we wanted to get on board. In anticipation of Apple’s upcoming announcement, we’re rolling out our official support so that developers can quickly get up and running. Our support for Swift provides developers with the flexibility they need to build inside their existing workflows and streamline the overall development process.

Our engineers worked tirelessly updating our backend to support the demangling of Swift crashes and took meticulous care to preserve our seamless onboarding and pristine UI. To provide you with a customized onboarding experience, our Mac app allows you to choose between building with Objective-C or Swift. Whether you're new to Crashlytics or migrating to this new language, you’ll experience the same powerful features, combined with native support for Swift based builds.

swift_screenshot (1)

We love supporting developers as they continue to experiment with new and improved ways for building mobile apps. We’re excited for the launch of Crashlytics support for Swift, get started here.

Launching Answers by Crashlytics

Today, we’re excited to unveil our latest project: Answers by Crashlytics. Finally, mobile analytics you don't need to analyze.

When we first launched Crashlytics more than two years ago, we were focused solely on solving the problem of mobile crash reporting. Since then, we’ve seen a need for powerful tools across other areas of app development — and we knew that we could apply the same design principles to meet the many challenges faced by today’s mobile app developers. With Answers by Crashlytics, along with our award-winning crash reporting tool and Beta by Crashlytics, developers now have access to a powerful, lightweight suite of products to help them not only build, but also grow great apps.

It’s been an honor to work with many of the top iOS and Android mobile teams as we have crafted Answers, and we’ve received incredible feedback:

We have Answers by Crashlytics displayed on two of our big TVs (one for iOS and one for Android) so the entire team can view the live updates of our app’s key metrics -- everyone loves it!

Lars Vedo, Mobile Product Manager,


Zero Steps

Terms like ‘bloated’, ‘bulky’, and ‘unreliable’ should never describe any developer tool. We know how hard it can be to gather real-time data, gain actionable insights about user behavior, and iterate quickly to optimize your app. Don’t worry — this is what we do.

Answers streamlines the process of revealing the key drivers of your app’s growth. With just one click, and no extra code changes, you’ll have the power to understand your app’s key usage and retention metrics. We intelligently and quickly send data at low impact times to optimize and reduce traffic on your app. Built into our existing Crashlytics SDK, Answers gives you instant visibility and a constant pulse on your app’s key metrics. And it’s free.

A Dashboard That Makes Sense

Your time is precious. We don’t want to bog you down with data overload. Answers streamlines your day with a UI that calls attention only to your most critical app usage metrics. With full visibility into your growth and engagement indicators, you can immediately understand the current state of your app and intelligently decide where to invest your time.

See a spike in activity? We’ll tell you why. No more guessing if an increase in daily actives is a result of new users or your existing users becoming more active. We’ll connect the dots for you.

And if you’re anticipating increases in usage related to a major event, you can see at a glance how many users are engaging with your app at this very moment. Bring the popcorn and display this data for your team to watch the action live.

No Analysis Required

Once enabled, Answers by Crashlytics intelligently analyzes and learns your app’s behavior and begins delivering live data within minutes. We know you’re busy, and we’ve built Answers with that in mind. You no longer need to don a lab coat and pull out a calculator to understand what’s going on. We look at the long-term trend and understand that there are certain metrics that are cyclical, so we’ll proactively alert you when a pattern is truly abnormal.

You’re constantly pushing out new features and bug fixes, so you’ll want to understand how your top builds compare and how users are engaging with your latest build. View build adoption over time to see the stability of each build with a breakdown of session length and crash-free users per build.

All About Growth

We know that retention is an important metric for understanding growth — that a large increase in new users doesn’t always translate to a long-term increase in your monthly actives. At a glance, monitor what percentage of your new users are coming back within a day, week, or month of installing your app for a clear picture of true user retention.

Sometimes, simply knowing usage numbers isn’t enough to understand overall performance. Answers dives deeper, showing you the total number of user sessions and the average number of sessions per user. For more granularity, we include the median session length, along with the amount of time per day the average user spends in your app. What better way to know that your users are having an awesome experience than to see them spending more time in your app?

Finally, app stability is crucial to ensuring your users have a great experience. Know how many of your users are having crash-free days and crash-free sessions and instantly see the top issues related to your app’s stability. Since Answers is built into the same SDK that powers your crash reporting, you can immediately dive into the issues that have the greatest impact and start fixing bugs.

Experience the Power

This is just the beginning. Our engineers are already working to take Answers to the next level and we have a lot planned. As always, send us your thoughts at [email protected] or find us on Twitter @Crashlytics. We’d love to hear what you think we should tackle next.

If you already have a Crashlytics account, you’ll soon see the new Answers tab on your dashboard. Otherwise, sign up here to get started with Crashlytics.

Don’t just take our word for it:

Answers by Crashlytics is the first thing I check every day. Its breakdown of crash-free users and crash-free sessions are the fundamental metrics we use to measure the stability of our app. I can't imagine shipping an app without it.

Ryan Johnson, VP of Mobile Engineering,


Answers by Crashlytics is exactly what we've been looking for! We just launched a new version and it was amazing to immediately compare it's stability to our previous versions.

Philip Connaughton, Software Engineer,

 

Highlights from Twitterverse:

Announcing Brand New Integrations

  integrations

Just one year ago, we announced our open-sourced integrations, inviting the developer community to build on our existing infrastructure. Since then, we’ve had many developers build and submit integrations that are used today by thousands of other developers! We’ve loved seeing the community support and are excited to announce three new integrations to help you strengthen team collaboration and manage your projects.

Trello

Since you’re constantly multitasking, we know you're relying on Red Bull and to-do list tools like Trello to help you manage and prioritize your workload. Our integration with Trello, built by Andrey Chernih, allows you to turn your crashes into Trello cards. Add your crash cards to any of your Trello boards so you can see what crashes need your attention and collaborate with your team to understand who is working on each crash.

Bitbucket

Built by Mufri, our Bitbucket integration turns your crashes into Bitbucket issues that are added to your preferred repository. We know your time is valuable and with this integration you can seamlessly jump from your Bitbucket repository directly into your crashes. With this seamless integration, you now have more time for the fun stuff, like coding the next hottest app!

Hall

We understand the importance in team collaboration and being in constant communication to understand who’s working on what. Andy McSherry built the Crashlytics integration with messaging service Hall. With this integration, messages are posted into your preferred group so you can quickly and easily communicate with your team about your crashes. No more waiting by the water cooler to track down teammates for status updates, we've got you covered. ;-)

Interested in adding your own integration? We’d love to work with you and see what you can come up with. See our existing integrations and get started.

Launching Beta by Crashlytics

At Crashlytics, we’re passionate about building tools that developers love. Three months ago we announced a new Crashlytics Labs project: a beta distribution tool to simplify the process of sharing apps with testers. Since then, we’ve seen an overwhelming demand from iOS and Android developers wanting to get their hands on our latest tool, and the feedback has been outstanding.

I love that we can manage everything from testers to builds in one place -- for both iOS and Android. This is a huge improvement in our workflow.

Nicolas Melo,


Hundreds of top mobile developers have already distributed their apps to thousands of testers, and we still have people excited to experience what all the hype is about. In response to this demand, we’re excited to announce the official launch of Beta by Crashlytics. This means it’s now fully supported by our engineers, designers, user experience folks and amazing support team, among many others. This also includes a rapid release cycle, so you can expect continuous updates for features and bug fixes automatically and on a regular basis.

The Most Streamlined Beta Distribution Experience.

We’ve heard your frustrations about the state of beta distribution today. Poor UI, confusing registration systems, frequent downtime, and only single-OS support. It’s time to build something usable with both developers and testers in mind.

We applied our Crashlytics power and polish to this problem. The result: a streamlined experience for distributing apps that gives you a single, cross-platform toolset for iOS and Android. Beta distribution should be an intuitive process for you and your testers so you can focus on what matters — building your app, not stressing about getting testers up and running.

With Beta by Crashlytics, you can easily invite new testers through a seamless sign-up workflow, manage testers on the web or right within your IDE, and analyze key metrics to determine when your app is ready for prime time. Combined with our crash reporting solution, there is now a one-stop-shop for debugging and distributing apps. Oh, and it’s free.

Your App, Front and Center.

With the R&D efforts inside Labs, we’ve applied many of our major breakthroughs to Beta by Crashlytics. With only one chance at a first impression, it’s crucial to deliver a high-quality, fluid tester experience. Beta by Crashlytics helps you invite or onboard testers and send builds with just a few clicks. We authenticate the device without requiring user registration. This results in a dramatically noticeable reduction in the time it takes to get your testers up and running.

Your app and brand should be front and center, not buried behind unnecessary UI chrome or colors. Beta by Crashlytics intelligently analyzes your app’s icon and automatically tailors the tester experience to match your apps’ color scheme. The experience for your testers will be seamless and consistent with your brand.

Your Workflow, Uninterrupted.

Beta by Crashlytics is deeply integrated with our existing IDE plugins for Xcode, Android Studio, Eclipse and IntelliJ. You can now invite testers, distribute new builds and enter release notes all via our Mac app or Android IDE plugins. Using a build server? We’ve got you covered. Just upload your build, add testers and you’ll be up and running with just a few tweaks to your build script.

apk-drag-drop-3.gif

To ensure testers have a great experience, we’ve taken a proactive approach when working with Apple’s provisioning portal by identifying testers that you’re missing UDIDs. On Android, as soon as your testers install the Beta by Crashlytics app, it’s automatically customized and bootstrapped so your app is ready to be launched and tested.

All Your Testers, All in One Place.

The only thing more important than getting your testers up and running is managing and understanding their status. With our web dashboard, you can view the progress of your testers in a sleek racetrack UI. At a glance, you’ll see who is most active or who is still ignoring your invitations. Also, see a high-level view of most recent tester activity to identify new tester status.

Collaborate with your team without being in the same room. Our audit trail shows the most recent developer activity as your team distributes, updates release notes and invites more testers. Want to troubleshoot reported issues with your app? See a high-level overview of your top issues. With just one click you’ll be in your Crashlytics Issues dashboard, with all of our deep analysis tools to help you debug the most complex crashes. Get performance insight, starting with beta testing, all the way through App or Play store distribution.

beta-horserace.gif

What’s Coming.

We have a pipeline of features rolling out over our rapid release cycle. Over the next few weeks, you’ll see the beta distribution icon appear on the left sidebar of your existing account. Our dashboard will immediately get you up and running in just a few clicks. Existing customers, learn more on the Beta page and see our updated ToS and Privacy Policy. New customers looking to experience the power of Crashlytics, sign up here.

screenshot_sidebar_button.png

Don’t just take our word for it:

Setup was a simple drag-and-drop, and the process for sending builds to testers is a no-brainer. This is exactly the beta distribution solution we've been waiting for on Android!

Stephen Parish,


We do several hundred internal app releases a year and many times twice a day. Crashlytics has made this monotonous task, ultra lightweight, efficient and painless.

Tony Longo,


Crashlytics' beta tool is, hands down, the simplest to use. Getting started took almost zero effort and their integration with XCode is excellent. I love how it does all the work of preparing and distributing builds for me all the way down to automatically detecting new archives.

Allan Carroll,


Highlights from Twitterverse:

Announcing Improved Settings

 

Whether you develop for iOS or Android, are working at a large company or hustling as a freelancer, chances are you’re hacking on many apps at the same time. Working on all these apps leads to the pain of managing all their notifications, which we know can sometimes be overwhelming.

We love supporting you in your development efforts and we heard you loud and clear when you told us that you wanted more control and simplification when managing your settings. Thanks to all your feedback, we set out to make managing your settings a top-notch experience, so you can get back to the fun stuff: writing code and building the next big app for millions of users!

Seamless, Intuitive Navigation

We started off by revamping our UI, moving away from modals, and utilizing a full canvas, providing ample space to display all your settings details. Previously settings dashboards were organized at the app level, which required you to switch between each app in order to access the app’s settings. To make this process easier, we added high level lists with views allowing you to instantly access the settings of all apps under your account.

 

For those of you who manage many apps, belong to many organizations, or have large teams, we’ve added searchable fields for each category. Our new search offers a seamless, real-time filtering based on your query term, so you can quickly and easily find what you’re looking for with very little effort.

 

Powerful, Streamlined Notifications

With our new notifications we want to put the control in your hands for whether or not you receive alerts for your apps. Previously our notifications were very granular and required more management, especially when adding a new app. We’ve tailored this experience so that you only have to set your preferences once! By choosing “watch”, you automatically assign the preferences you’ve selected to all your apps, or you can stop watching to not receive any notifications for a particular app.

With multiple apps in your account, it can be overwhelming to adjust their settings individually. Our new dashboard offers a completely streamlined process for you to select how you want to get notified. As you view your list of apps, you can easily toggle between watching or not watching. We’ve also added the ability to set a default category for new apps that are added to “watched” or not.

 

Intelligent, Flexible Email Routing

One of the most widely requested functionalities that we included in this revamp is the ability to assign a confirmed email address to each org when receiving notifications. For developers with multiple orgs, we understood the need to customize where you receive your notifications. You can now assign a confirmed email address for each of your orgs to receive your notifications!

Lightweight, Premium Performance

With this new functionality also comes significant performance improvements. While we’ve added significantly more data requests and provided more information for each request, we’ve increased page speed by over 4200%. Moving away from modals to URL driven displays allows you to quickly access the information you need and jump right back into whatever it is you were working on! With these speed improvements transitions to and from settings are faster allowing you to get in and out of settings quickly dive back into your dashboard without disrupting your workflow.

Optimized Collaboration Experience

It’s now easier to invite multiple members of your team to join your org, all at once! We want to help you get your team up and running as quickly as possible, so we’ve simplified the process of adding team members.

We are very excited and proud to show you our new Settings dashboard. We hope that this will give you the best experience in managing your app settings and help you achieve top performance for all your apps. Log in to your new settings dashboard or sign up for Crashlytics and give us your feedback!

Beyond a Facelift: Unveiling Crashlytics Real-Time Interface

 

While sheer performance and deep insights are essential in a crash reporting solution, we’re passionate about also delivering an unparalleled user experience. After launching our optimized stack traces just a few weeks ago, we were heads down again meticulously refining our user interface and reporting features. With the latest Crashlytics real-time interface, you can now keep tabs on your most prevalent crashes with prominent, intelligently organized crash notifications -- inside an optimized, redesigned navigation experience.

Additionally, for the very first time, we’re offering an effortless, one-click sign in using your Twitter account!

Dynamic, Real-Time Notifications

You just never know when a critical issue might occur and require your immediate attention. While we’ve always offered real-time functionalities in our web dashboard, we wanted to take the experience even further. Our new notifications system keeps the interface even more pristine, with real-time alerts appearing on the lower righthand corner.

As subsequent crashes come in, the alert box automatically updates itself in real-time, grouping crashes by type so they don't pile up! Additionally, each alert displays the filename and line number prominently for easy identification. Now you can know exactly how many new crashes there are and scan through all of them with minimal effort -- without any incoming crashes disrupting your flow.

From our friends at Blackboard:

Our dashboard is composed of hundreds of apps with thousands of app versions. Refinements to the navigation and the incorporation of real-time notifications on the dashboard have made it incredibly simple to zero in on a problem and trace it to a solution. Crashlytics is by far the best solution to monitor, track, and resolve crashes at scale.

Bryan Musial,

Intuitive, Responsive Navigation

Tackling complex bugs can be a frustrating process for many developers -- let alone having to manage the process across multiple apps and organizations. For those of you with multiple apps, our new context control now automatically orders your list of apps based on recent interactions. Coupled with a seamless search functionality, the apps you’re most actively managing are always at your fingertips.  Each app is also labeled with its corresponding organization, so you know precisely where it belongs.

Since the birth of Crashlytics, we’ve continually upgraded the navigation experience with highly visible tabs and efficient menu structures. To take the experience to the next level, we made our new navigation sidebar ultra-thin which maximizes the horizontal space for displaying all the critical crash data. We also replaced the tabs with slick, eye-catching buttons.

In our newly redesigned menu structure, each button has a drop down menu that gives you seamless access to all of the following options:

  • Add a new app, organization or account
  • Manage settings across your apps, organization and account
  • Access the Crashlytics Knowledge Base, TOS and blog
  • Download plugins

As your app scales and acquires more users, the issues list can get quite long, requiring you to scroll down. Our new navigation bar now rests in a fixed position on the left side, so you’ll always have access to the app selector as well as all the menu items as you scroll up or down. Given all the different screen sizes in today’s world, we’ve also made our navigation bar vertically responsive which automatically adjusts to the height of the browser window.

Seamless, One-Click Twitter Sign In

Ever since we joined forces with Twitter, we’ve been accelerating our build-out and remain dedicated to delivering the key app performance insights that every developer needs. With Twitter’s infrastructure, we hoped to deliver new features faster than ever before. Today, we officially announce that you can sign into Crashlytics with our one-click, OAuth integration with Twitter.

For existing Crashlytics users, you will be able to link your Crashlytics account to your Twitter account during sign in. Once you’ve synced up the two accounts, it’s just one simple click the next time you sign into Crashlytics!

As we continue on our mission to improve the debugging experience for developers all around the world, we couldn’t wait to get these upgrades into your hands. Sign in or request an invite to experience the new Crashlytics interface -- we’re always eager to hear your feedback!

Already have an account? Sign in here.

 

Faster, Better, Stronger: Crashlytics Optimized Stack Traces

 

If you’re anything like the rest of the world you’ve probably already proclaimed that your new diet didn’t apply to Super Bowl Sunday, or Awards Season, or the Polar Vortex, or winter. Which is fine! Life’s too short not to eat nachos. But if your resolution had anything to do with improving your apps' stability to delight even more users, no worries -- we've got good news for you!

We love supporting you to help minimize crashes and improve user experience, which is why last month we were heads down upgrading our stack traces and UI performance. Now you can tackle those hard to catch bugs with our high-performance dashboard, even easier-to-digest crash reports for both iOS and Android, and a slew of usability upgrades.

Faster, Better, Stronger Isn't it awesome when your apps and dashboards render at lightning speed? Our crash reporting dashboard is already returning tons of useful information in under a few seconds, but we wanted more. By more efficiently parsing protobuf and stopping the browser from freezing on render, our new UI now renders stackframes up to 181x faster with nearly 55% reduction in memory!

Here’s a performance comparison between our original and newly optimized UI across the major browsers:

Powerful, Shareable Stack Traces

To make stack traces even more useful, we now allow easy copying & pasting of your raw stack traces, so you can share them seamlessly with your team even outside of our shareable crash reports feature. We also upgraded our iOS SDK to record Objective-C selectors, when possible. By including the selector being dispatched during crashes in objc_msgSend, developers can track down certain classes of crashes and gain additional context in certain cases that can be otherwise inscrutable.

From our friends at Evernote:

Every developer should be using Crashlytics. Except my competitors. It provides more crash information than any similar tool.

John Knox,

With the rapid growth of developers using Crashlytics for Android, we knew we needed to support this growing community and provide Android stack traces in their most familiar context. We now present these stack traces in a way that’s in line with the traditional Java counterpart.

Comprehensive & Interactive

Sometimes it can be overwhelming to scan through long lists of threads in your crash reports — almost as overwhelming as grocery shopping for that juice cleanse you had planned for the start of the New Year! With these new upgrades, we took this chance to enhance the UI controls for maximum readability. We added a breakpoint-like indicator to highlight the most important frame so it is identifiable at a glance.

We also added new controls that make it even easier to understand which frames have been hidden and how to expand the collapsed threads.

We couldn’t be happier to get the new stack traces and UI upgrades into your hands and help you to continue to build awesome apps. We hope these enhancements will help you stick with at least one of your resolutions this year. Log in or sign up for Crashlytics and send us your feedback; we’re always listening!

Already have an account? Log in here.

We Came, We Saw, We Disrupted

  Crashlytics Look Back at 2013

2013 was a year filled with excitement, innovation and disruption. Apple introduced the iPhone 5S, Google announced an IDE built just for Android developers, and the world rolled their eyes as words like selfie, twerk and jorts were added to dictionary!

It was exactly a year ago today that we joined forces with Twitter. Since the acquisition, not only did we enhance features, functionality and improve your experience with Crashlytics, we also had some pretty exciting personal achievements -- our first kegerator, 4 Crashlytics babies, and 24 new employees (p.s. - we’re hiring)!

Here’s a look back at how things shook out for us in 2013.

Crashlytics Look Back at 2013 Infographic

 

Crashlytics December Update

We know you’ve been busy untangling the lights, posing for the always entertaining family photo, losing your mind finding a parking spot at the mall, all in an attempt to track down that nearly impossible to find gadget that’s on everyone's list this year. Well, no need to wear your pj’s inside out and backwards, because our updates this month will make you feel like school’s been cancelled and it’s time to play!

This month, we’ve been busy delivering you the holiday gifts you won’t find under your tree! Back in November we launched a new version of Crashlytics for Android SDK, along with a slew of enhancements to our IDE plugins and usability upgrades. Finishing the year out strong, we crafted a dozen gifts just for you: upgraded data visualization, enhanced navigation experience, multiple support enhancements to the IDEs and platforms -- and more!

Lightweight, Cutting-Edge Data Visualization

We first upgraded our data visualizations by leveraging the latest, much lighter weight D3 library. To give you an even more interactive experience, we revamped the metrics UI on our issue list page and updated the time series on the issue details. We also upgraded the metrics summary data that displays device and OS details, with fully interactive pie and bar charts.

We believe that developer tools should be beautiful and intuitive -- not like that failed attempt to recreate Grandma’s famous fudge! Our new graphs and charts flow naturally with our upgraded design theme. We also updated the alert center where alerts for new comments and issues now use our standard UI library. This is all while enhancing the accuracy of our realtime service in improving the delivery of information for new issues, comments, and service hooks verifications!

Effortless, Cross-Device Navigation

To make it easy for you to navigate through different platforms and devices, we revamped the issue’s metrics dashboard and broadened the date range so you can view up to 30 days worth of crashes per issue. We also reduced the number of selector options by removing the old Alert Center’s app switcher.

We upgraded the stack trace on the issue details and session summary pages by removing the separate section that contained the exception and memory address and placing that information inside the crashed stacked trace header. To better denote the crashed header’s significance, we highlighted it in blue so you can spot it with ease, just like Rudolph’s red nose!

More Powerful, Multi-Platform Support

We didn't waste any time adding support for the latest release of IntelliJ 13, including support for Android Gradle projects. We also updated our Gradle plugin to support a breaking change in the latest version of Google's Android Gradle plugin, which prevented any broken builds that would’ve been caused by Google’s change in the default flavor capitalization.

For our Eclipse IDE plugin, we drastically improved the efficiency of icon prefetching. Outside of the Android platform, we also improved the application icon support for iOS 7, which ensures that your latest application icons will be located and automatically updated in our web dashboard and Mac app!

Here’s our internal changelog:

iOS

  • Improved application icon support for iOS 7.

Mac App

  • Resolved minor issue with deleted applications.

IDE Plugins

  • Built support for IntelliJ 13.
  • Enhanced efficiency of icon prefetching for Eclipse plugin.
  • Fixed minor bugs that caused the plugin window to flicker and disappear when first opened.
  • Resolved issues that caused Eclipse Kepler to occasionally halt during startup.

Web

  • Overhauled Issue’s metrics dashboard and increased date range for customers.
  • Reduced selector options and implemented new standard UI library into alerts for new comments and issues.
  • Upgraded data visualizations to D3 and updated time series on the issue details page.
  • Enhanced metrics summary data with interactive pie and bar charts.
  • Improved alert center with new CLS UI.
  • Boosted performance of realtime service on returning information associated with new issues, comments, and service hooks verifications.
  • Updated stack trace on the issue details and session summary pages.
  • Moved exception and memory address information of a crashed session inside the stacked trace header with header highlight.

This year has been full of fun and excitement and we can’t wait to continue to celebrate with you into next year! While we won’t be squeezing down any chimneys to fill your stockings with treats, we hope these upgrades and enhancements will keep you smiling through the holidays. Happy holidays from our Crashlytics family to yours :-)

Crashlytics October Update

 

Crashlytics October Update

Happy Halloween from our (Crashlytics) family to yours! Over at CrashHQ we’ve somehow managed to find time to ship two major product updates this month (more on that later) — which is surprising considering how much time “some” of us spent infusing locally distilled vodka with fresh pumpkin and hand-embroidering “Doogie Howser, M.D.” onto that lab coat we bought at Good Will.

But even before October rolled around and we started getting into heated discussions with our co-workers born after 1990 about the blasphemy of never having heard of half the potential costumes one could create based on Mike Myers SNL skits, we accomplished a lot. In fact, last month we released an even lighter-weight version of our Android SDK, improved IDE plugin features, and easily shareable crash reports. This month we kept up that same momentum and launched Crashlytics for Android Studio and Crashlytics Real-time search!

Support for Android’s Next Big Thing

When Google first announced Android Studio last spring, Android developers everywhere were excited to start building their apps in an IDE designed specifically for them. This month, we released our plugin for Android Studio, bringing the power of Crashlytics to Android's premier IDE, complete with robust Gradle support. Much like our plugins for Eclipse and IntelliJ, we made it seamless to integrate Crashlytics into your Android Studio workflow, along with access to the same powerful features: real-time issue browsing, SDK addition to new apps, and fully automated ProGuard deobfuscation. Again, all while searching the entire Greater Boston Area for the perfect, most-historically-accurate Salvador Dali mustache ;)

We also created a more dynamic and responsive interface shared by all of our Android plugins. The new UI sports slick page transition animations, an app selection screen that tells you exactly which apps are already configured for Crashlytics, and the option to easily switch between your apps. Regardless of your choice between Android Studio, Eclipse and IntelliJ, you can have an effortless and streamlined debugging experience. (Picture taking your kids trick-or-treating without the inevitable sugar-induced melt down!)

Locate Issues from Anywhere, Anytime

When we first launched our iOS and Android SDKs, our unique logging features allowed developers to capture logged data with highly actionable insights. For our new real-time search functionality, we dramatically increased the flexibility and search precision by creating new indices to capture custom keys, logged events and custom user fields. This gives you the power to instantly locate the exact crashes you’re looking for with vivid details, along with the option to search across all build versions or hone-in on a single one.

Here’s our internal changelog:

Android SDK

  • Fixed CrashlyticsMissingDependencyException when building with aapt's --rename-manifest-package option.

IDE Plugins

  • Upgraded plugins to go directly to issue browser on launch.
  • Improved display of app and user names that use non-ASCII characters.

Web Application

  • Integrated new components of a new standard UI library such as a new sidebar and other components swaps.

Halloween 2013

  • Switched the office kegerator over to a frosty pumpkin ale.
  • Took the My-Kid-Has-the-Cutest-Costume contest offline by having a company Halloween party.
  • Finally nailed consuming the right amount of candy at said party as to not get a stomach ache (speaking for our children, not ourselves).

Announcing Crashlytics Real-time Search

Crashlytics Real-time Search

You know that feeling when you put your car keys in a special place, scout for easy-to-remember landmarks, build a trilateration system in your brain, and moments later you can’t find them? We hate that too!

That’s why we’ve built our new real-time search feature, so you can find precisely the crash reports you need, when you need them, and where you want them!

Crashlytics Real-time Search

Precision & Customization

While we can’t help you track down those lost car keys, our search gives you the power to find a specific needle in the haystack. In our older version, we indexed the following parameters on the issue level:

  • File name
  • Method name
  • Line number
  • Issue notes

With our new powerful upgrades, we’ve increased the flexibility and precision by expanding our indices to capture the following at the session level:

  • Custom keys
  • Logged events
  • Custom user fields

Ever since we launched our SDKs for both iOS and Android, we’ve provided completely distinct logging functionalities which capture logged data with the utmost security and protection of end-user privacy. Combining these functionalities with our new search upgrades, you can instantly locate the exact crashes you were looking for and know precisely what happened leading up to the critical moment.

Crashlytics Real-time Search

Creating Happy Users

There’s always a chance that your users will encounter unique crashes, and you may be logging your users’ email, id or name for debugging purposes. Our indices will also recognize these parameters. If user privacy is a concern, no worries! We only index this data when you have explicitly populated them in your app, for the sole purpose of helping you nail down crashes for specific users.

Picture an anxious user who receives a reply from you within minutes of his/her support request. Now repeat that across every issue for every user. Instantly, your users will be raving about your support!

From our friends at RunKeeper:

This is going to be a great feature for many reasons. Our QA team is constantly scouring for the most recent crashes, so being able to associate a specific crash to a user when we get a support ticket will reduce development time and have a direct impact on our users!

Phil Connaughton,


Seamless & Intuitive

We also allow you to search across all build versions of your application, or focus your search against a single version. On our results dashboard, we present matches that are prominently highlighted and ordered by tag relevancy as well as the issue's or session's recency. Once you click on a match, you can jump directly to the details and solve the issues with minimal effort.

screenshot3

Special Shout-outs

In our mission to bring you the world’s most powerful crash reporting solution, we’ve built a hardcore team of world-class developers. This summer, we brought on three extremely intelligent and creative interns, who shunned the late-night parties and worked tirelessly to bring our new real-time search into reality. We’d like to show them our gratitude for their hard work. Here they are!

Cory Dolphin, @wcdolphin

Cory is a senior studying Electrical and Computer Engineering at Olin College trying to connect design and engineering to build useful things for people everywhere. When not working, Cory loves beer, coffee and soccer (but not all at the same time).

 

Stephen Panaro, @flat

Stephen is a junior studying electrical engineering at Tufts. Outside of class, he developed an iOS app to display college dining hall menus. He has also had a great time attending several hackathons. In his spare time, he loves cooking, watching movies and snowboarding.

 

Jennie Lamere, @imjen

Jennie is a freshman at Rochester Institute of Technology, where she studies Software Engineering. Her hobbies include hiking, swimming and watching Netflix.


We’re extremely proud to bring you Crashlytics Real-time Search. Our passion is to give you powerful and out-of-the-world tools, so you can build even more amazing apps, make your users happy, and change the world!

Log in or sign up for Crashlytics and send us your feedback; we’re always listening!

Launching Crashlytics for Android Studio

 

Crashlytics for Android Studio

We’re extremely excited to announce the release of Crashlytics for Android Studio!

At Crashlytics, we are passionate about building tools that developers love. When Android Studio was first announced at Google I/O this year, it immediately caught our eye. You could even say that Android Studio is the most Android-centric development environment, the next big thing, “the new black”! Well enough hype, let's get to the good stuff!

Everything You Need - Everything You Love

Our existing plugins for Eclipse and IntelliJ provide seamless integration with Crashlytics for real-time issue browsing, adding our SDK to new apps, and more. For Android Studio, not only do we deliver the same powerful features, but also provide native support for Gradle-based builds. It is everything you love about Crashlytics for Android, now integrated seamlessly into your Android Studio workflow!

Don’t take our word for it:

"Crashlytics allows us to work more efficiently to fix and reproduce these situations. With our recent migration over to Android Studio, it offers amazing diagnostics for such a lightweight library. The plugin works seamlessly with Gradle and your project can be setup within a couple of minutes."

JAMES INGHAM, SIMPLYTRAK

 

"The Android Studio Crashlytics Setup is just as simple (and shiny) as the Xcode equivalent. Click the button on the toolbar, follow the super-easy instructions, hit build, and the plugin will set everything up for you on your account. It almost makes you want your app to crash, just so you can try it all out!"

BENJAMIN CLAYTON, CALVIUM

 

"Crashlytics for Android Studio has helped us develop, test and release our new app IT Manager Android app in record time. Since it's impossible for any developer to test their app on every Android device, Crashylitics gave us the confidence to launch on Android knowing that we could find the cause of and fix crashes quickly."

PAUL DUMAIS, SMARTER-APPS

Whether you’re new to Crashlytics for Android or migrating from a different IDE, you’ll find that our Android Studio plugin has been crafted to give you the best Crashlytics experience, without ever having to leave Android Studio!

Here are a few highlights:

Robust Gradle Support - Exclusive to Crashlytics for Android Studio

Managing complex app builds with IntelliJ and Eclipse can be tricky due to their opaque Android builders. Delegating to Ant or Maven solves some problems but causes you to lose tight integration with your IDE. Android Studio solved this problem by natively delegating build automation to Gradle, providing consistency and supporting a wide variety of build configurations without a lot of overhead.

We’ve supported Gradle for command line builds ever since we launched Crashlytics for Android. As Gradle’s Android plugin has matured, we are very proud and excited to extend this support into our Android Studio plugin!

Crashlytics for Android Studio

Fully Automated Deobfuscation

ProGuard is an awesome tool, but we all know that tracking your mappings files and manually retracing your stack traces is a tedious pain in the you-know-what. We’ve brought our amazing zero-step, completely automated ProGuard deobfuscation to Android Studio. This saves you valuable time to grab a Red Bull, browse Hacker News, or you know, fix those bugs!

Beauty and Elegance

Let’s face it: developer tools aren’t known for looking pretty. It doesn’t have to be this way! Everyday, you are working hard to delight your users with beautiful, groundbreaking app experiences. We think you deserve the same, so we took this opportunity to revisit the shared interface of all of our plugins for Android Studio, Eclipse and IntelliJ. We created a more dynamic, responsive, and enjoyable flow for all developers, regardless of your IDE of choice.

We are really excited to get Crashlytics for Android Studio into the hands of developers around the world. Since May this year, thousands of companies have been using our Android SDK in their apps. Our customers include:

Crashlytics Customers

We're proud of the tools we deliver to help make your Android development even more powerful. We're excited to hear what you think of Crashlytics for Android Studio. Sign up for Crashlytics and send us your feedback, we're always listening!

Get Started with Crashlytics

Already have an account? Get the plugin here.

 

Highlights from Twitterverse:

https://twitter.com/huntergdavis/status/385827577102741504

https://twitter.com/codebutler/status/385830201814310913

https://twitter.com/taylorhughes/status/385829458931744768

https://twitter.com/caidurbin/status/385828968597041152

https://twitter.com/chayapathi/status/385830399655436288

https://twitter.com/bitshiftcom/status/385867002222358529

Crashlytics September Update

You’ve put away the beach chairs, said goodbye to pina coladas and hello to an ice cold beer and college football. With Fall rolling in, you are probably reminiscent of your first few days going back-to-school: running anxiously to catch the school bus, hoping your schoolyard crush would sit next to you in class. At Crashlytics, we want you to be just as excited about getting back to building your favorite apps, so we've fueled up on caffeine and pulled a few all-nighters to bring you some developer-life-changing upgrades! Last month, we improved the user experience for our Android IDE Plugins and support for custom builds in Gradle. This month, we launched an even more lightweight version of the Android SDK, convenient features inside IDE plugins, as well as the best collaboration experience for any mobile development team.

Read More

Sharing is Caring: How to Collaborate and Build an All-Star App

There’s an age-old saying: talent wins games, but teamwork wins championships. Here at Crashlytics, we made it our goal to help you and your team collaborate to build amazing and the most stable apps, so that you can hit a homerun...Bottom-of-the-9th-walkoff-1988-World-Series style! Developers who use Crashlytics have been able to find and fix their bugs with tremendously less effort, thanks to our real-time reports that intelligently prioritize issues. But like any MVP, even the brightest developers run into hurdles at some point and need help from their team. So we set out to make our crash reports shareable, giving you the power to fix the most challenging bugs in minimal time.

Detailed, Easy-to-Share Crash Reports

As a Crashlytics user, in just a simple click of a button, you can share the intricate details of each issue with your team -- without even leaving the admin dashboard.

Crashlytics Shareable Crash Reports

You can also collaborate with your team to fix incoming bugs in real-time, either by sharing the report via the email button, or using the sexy short link (crashes.to/...) in your favorite IRC client. While it may not be exactly what James Earl Jones said in Field of Dreams, developers now have a new motto: "if you share it, they will help."

Beyond Your Team's Expertise

It’s clear that collaboration is key to building awesome apps. Beyond just your team, you can now tap into the expertise within the developer community. With the short direct link, you can share your crash report on sites like Stackoverflow, without having to format code blocks or type out any cumbersome device information.

Private and Secure

We understand that sharing your crashes can be a sensitive subject. No worries! Our shared reports show only the information that will be most helpful for you in resolving the issues. Each one comes with the usual deliciousness that you could expect: stacktraces, device state, operating systems etc. We don’t share the total volume of crashes, or the number of users that were affected. Also, you can always make your crash report private with one click, after having shared it publicly.

Read More

Crashlytics August Update

While the Peter Pan in all of us loves a good summer vacation, over at Crashlytics we’ve been working hard the last couple months to make sure that by the time those back to school ads start running, and all the sand is washed out of your hair, we’ll have tons of upgrades to show off to you, our customers—along with all the “true” stories about how we totally got into that P-Diddy party in the Hamptons that one time.In July (while you were working on your tan) we enhanced our SDKs’ features, shipping even more robust crash reporting functionality and powerful processing capabilities. And in August (while you were nursing your sunburn) we took it one step further, improving even the finest details of our Android IDE plugins with a seamless user experience, as well as enhancing the flexibility of our Gradle plugin to support any custom builds! Dazzling Experience for Intellij and Eclipse Plugins We get it. When adding new libraries or plugins to development projects, you want to see how the change might affect your code and feel completely confident—like I-stood-up-on-my-paddleboard-on-the-first-try-confident. That’s why we created a new, slick UI for getting Crashlytics up and running with a preview screen that gives you even greater visibility into the code. But we didn’t stop there, we’ve made the UI extra responsive, with hover and pressed states on clickable links. To keep your development environment streamlined, we moved all Crashlytics data caches to OS-dependent cache locations. This way, the caches are still there, and you can access them whenever you need to. As a bonus (think free tickets to that labor day destination wedding) we also fixed a critical issue for you here, if you needed admin privileges to run your IDE. Upgraded Support for Custom Builds in Gradle Picture this: you arrive at your favorite beach, strut down the sand greeting friends, score the perfect spot near the snack shack, then drop and successfully unfurl your beach chair on the first try without the slightest hesitation. That’s the type of flawless experience we want you to have when using Crashlytics to build APKs, so we set out to improve the support for non-standard build configurations in our Gradle plugin. Because we automatically detect customizations from the gradle file directly, you no longer have to make any additional configurations! It’s like knowing whose housesitting for their hedge fund exec uncle in Malibu this summer without having to stalk them on social media first.

Read More

3 Key Ways to Increase Android Support Library Stability

At Crashlytics, we‘re constantly exploring ways to help developers build the most stable apps. With this in mind, we recently began identifying some of the most common reasons why Android apps crash. Specifically, we were interested to see if given its broad adoption, does Android Support Library have any influence on your crashes?At Crashlytics, we‘re constantly exploring ways to help developers build the most stable apps. With this in mind, we recently began researching common reasons why Android apps crash. We were especially curious to see any trends in crashes originating from the Android Support Library, given that it is one of the most widely-used libraries in Android applications.

We found that about 4% of the 100 million crashes that we analyzed were related to the Support Libraries. Digging deeper, our research showed that the overwhelming majority of those crashes are caused by a small handful of recurring, preventable errors. Based on this analysis, we’ve identified some best practices for using the Support Libraries that are commonly overlooked and three key ways to increase stability.

Read More

Defining Custom Pre and Post-Processing Tasks in Gradle

We're always on the lookout for ways to make developing apps as easy as possible by providing developers with the most powerful crash reporting tools. When Google announced at I/O 2013 that they would be backing Gradle as a build system for Android development, we embarked on a ground-up approach to integrate Gradle into our supported build systems.

Read More