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!

  

Crashlytics #1 in Performance, Answers #1 in Mobile Analytics

Just a few months ago, Crashlytics was named the #1 most implemented performance SDK by SourceDNA, the world's largest database of mobile app intelligence. Not only was it the most implemented, it was more than #2-6 combined! At the same time, Answers, the mobile analytics tool we built just over a year ago, was named #2 on iOS and #3 on Android.

Today, we’re thrilled to share that according to SourceDNA’s newest report, Answers is now the #1 most implemented mobile analytics SDK on iOS — just five months after it was named #2!

Here’s what SourceDNA said about Answers and Crashlytics just a few months ago:

Twitter’s efforts in the mobile ecosystem are clearly paying off. Their tools are some of the most implemented in apps that we’re seeing. It’s a clear sign that they are really making an impact and leading the way with mobile.

-


Since founding Crashlytics, our passion has always been to build developer tools that you love. With both Crashlytics and Answers being #1 in their space, we’re humbled, thrilled and ecstatic with the positive reaction for everything we’ve built. Even though we’ve received this recognition, we don’t plan to be complacent. We look forward to continuing our mission of building the best services for every developer in the world.

 

(If you haven’t yet, see the inside story of how a team of six of us built Answers to be the most popular mobile analytics tool today.)

The Wait is Over: Launching Crashlytics for Android NDK

When we launched Crashlytics for Android two years ago, we took on a challenge: fixing crashes within Android apps. Just recently, Crashlytics was named the top performance tool on Android by SourceDNA, the largest mobile app intelligence firm in the world. But we continued to listen to your feedback on what could be better. Your response: NDK support.

Since then, we’ve been heads down building out our NDK support in Labs. We’ve listened to your feedback and understood that getting insightful crash reports for NDK code is hard. You not only wanted deep, actionable reports to fix the most prevalent native crashes, but also something that would just work without a headache.

Today, we’re excited to announce our official support for NDK crash reporting!

Most powerful, yet lightweight

We’ve brought the best of our Java-based Android crash reporting to native code. We perform a deep analysis of each stack trace to identify the most important frames so you can see the exact line of code that caused the crash and quickly address the issue.

You’ll have access to the same deep information like devices, hardware, versions.  And now, you’ll spend less time finding and more time fixing your native crashes.

First-in-class installation

The last thing you want is a cumbersome setup or complex configuration just to get crash reporting for your NDK code. Before today, NDK crash reporting involved numerous steps: adding external files, jumping through repos, manually provisioning keys, etc. We’ve built our NDK support to be the opposite: it’s seamless and it’s intelligent.

If you’re already using Crashlytics, you won’t have to download any new plugins or build tools. Simply add a few lines of code within your Gradle or Ant-based project, and we'll do the rest. We’ll even pull in all the dependencies you need automatically.

Not building from a standard IDE? No worries. We'll auto-provision your keys and onboard your app from the command line, just as we do with our plugins. Now sit back and focus on the fun stuff, like coding the next killer app!

Don’t worry, your code is safe

Today, many crash reporting tools for NDK still rely on you uploading your unstripped binaries to generate symbol files server-side. This poses significant risk for your code, sending your secret sauce to third parties, not to mention wasting bandwidth by transmitting your full executable.

With Crashlytics NDK support, our build tools generate the needed symbols – completely client side – before uploading them to our servers. You’ll have total control over the upload process, and our symbol upload file is a fraction of the normal size, saving you tons of bandwidth.

Experience the power

Our official support for NDK is already trusted by many top apps in the Android Play Store:

We use Crashlytics daily to improve the quality in our apps: Path, Path Talk and Kong. NDK support by Crashlytics is one of the best tools on the market to find native errors which are not reported by any other tools.

- Dario Marcato,


A critical portion of the Rdio app relies on NDK. Thanks to Crashlytics, we now trust that we have the best tool on the market to monitor it properly.

- Sean Smith,


Integrating NDK Fabric support only took a few minutes and the payoff was huge! Now we can see exactly where we’re having crashes in our native code by function and line number.

- Dallin Dyer,


 

We’ll be rolling out NDK support over the next few days. Once you have access, you'll see a toggle at the top of our instructions page for Gradle and Ant. Simply toggle the button to the right to see how you can enable NDK support within your projects.

 

If you're already using Crashlytics, be sure to upgrade to the latest Crashlytics Kit on Fabric. If you're already on Fabric and you needed NDK support yesterday, give us a shout and we’ll try to get you into to our next batch! 

We can’t wait for you to try it and hear what you think we should tackle next :) 

 

 

 

Kick off WWDC with Crashlytics + Twitter

For three years, we’ve hosted a party during WWDC to celebrate with the mobile developer community. And this year’s no different: we’re bringing back the party you won’t want to miss. Join us at 1015 Folsom to hang out with top iOS developers and other Apple aficionados as we celebrate another year of all of you who are building amazing apps.

Now that Crashlytics is part of Fabric, we need a bigger stage to dance on. That’s why we’re celebrating with a Fabric party; it’s the same great memorable event as last year, just with a new look.

We can’t wait to celebrate with you and hear all about what you’re building!

Want to crash our party?

  • When: June 8, 2015

  • Time: 8:00 - 11:00 p.m.

  • Where: 1015 Folsom, San Francisco

  • Cost: It’s on us!

(act quickly -- tickets are limited!)

To get excited for the big night, check out the highlights from last year!

Crashlytics + Twitter invites you to kick off Google I/O

After our big bash last year, we’ve decided to do it again. Join us for a Google I/O party to remember and come hang out with the top Android developers as we celebrate the awesome apps you’re building. We are humbled by your support for Crashlytics for Android and for being a part of the over 1 million apps integrated with Crashlytics. We couldn’t have reached that milestone without you!

And now that Crashlytics is part of Fabric, we’re getting a bigger tent. This is the Fabric party; it’s the same great celebration as last year, just with a new look.

We’re looking forward to hearing about all the cool stuff you’ve been working on. Who’s ready for fun?

 

Want to crash our party?

  • When: May 27th, 2015

  • Time: 8:00 p.m. - 11:00 p.m.

  • Where: 1015 Folsom, San Francisco

  • Cost: On us!

(act quickly -- tickets are limited!)

 

To get excited for the big night, check out the highlights from last year.

Announcing Share Links and Crash-to-tester for Beta by Crashlytics

beta-share-links-header-v2

It’s been just seven months since we launched Beta by Crashlytics. We’ve been thrilled by the response from developers looking for a seamless way to distribute beta builds of their apps to testers. In August, we released groups support, the first of many product additions, and in October, we re-released Beta as part of Fabric. Today, we’re excited to share the next evolution of Beta.

We heard you loud and clear that you need an even lighter-weight way of sending out builds – without email – and be able to control who gets access. Another challenge: how to efficiently get detailed, actionable feedback from testers about your crashes. Now we think we’ve got you covered with share links, the most convenient way to onboard testers to your builds, and crash-to-tester Identification, which combines the power of Crashlytics and Beta to help you quickly get to the bottom of your builds’ crashes.

Total Flexibility for Onboarding Testers

Many of you want to share your builds through channels beyond email. Now, with share links, you can seamlessly create onboarding links for each build and invite testers through any medium you choose – without needing to know their email addresses. Whichever channel you prefer, you have the flexibility to tailor your message to testers.

beta-share-link-v2

Within your share link dashboard, you can manage all your links in one place -- with complete control over who can access your builds. Share a public link with the press or your investors, or create a private link for internal dogfooding by setting domain restrictions. We also automatically point your internal links to the latest build so your testers can always access the latest from one reliable place.

No need to worry about manually adding new testers either! With share links, you can automatically assign new testers to a group when they sign up via your link. This ensures that everyone will receive your updates in the future, as soon as you send them out. On top of that, you can now create specific groups ahead of time based on where you plan to post your links. Organizing testers have never been easier.

Deep, Actionable Testers Feedback

One of the most powerful features of Beta is its deep integration with Crashlytics’ crash reporting, which empowers you to fix the most critical issues with the least effort before your app goes into the wild. With our new crash-to-tester functionality, you can instantly identify the individual tester who experienced a specific crash right within your crash reports.

crash-to-tester-v3

We automatically tag all crashes of your beta builds with your testers’ names and email addresses. Now, you can immediately contact your testers for feedback and even work with them to reproduce an issue. Coupled with your crash reports and custom meta data, you’ll be able to trace the exact steps and situation your testers were in when they encountered the issue.

From our friends at Lyft:

Using the direct share links has made distribution simple and easy. I can now use one link to ensure our testers always have the latest builds by sharing the link across multiple channels, including email, SMS, and social. In addition, the crash-to-tester feature has reduced time spent investigating issues by connecting users to specific crashes, tracing their actions leading up to them, and including relevant contact information for easy follow-up.

Will Farino,


Let us know what you think. Our roadmap is full of exciting features which we’ll continue to roll out in the coming months. Stay tuned!

 

Introducing Fabric

  Introducing Fabric

Almost three years ago, we set out to solve the problem of mobile crash reporting. Since then, we’ve launched our deeply technical, award-winning crash reporting service, and with Twitter, expanded our product line to include a white-labeled beta distribution tool and our real-time mobile analytics product. Our mission has been, and remains, to build the best mobile developer tools.

Today at Flight, we announced the evolution of all of this work: Fabric, a modular mobile platform that makes it easy to build great apps.

We’ve thought long and hard about how to deliver great solutions to address the challenges developers face. The Crashlytics team, together with teams at Twitter and MoPub, have developed Fabric. It’s exactly what we hoped to build back when we started the company.

Fabric is modular, so you pick just the features — we call them kits — you want. If the Crashlytics Kit is the one you need for your app, you can easily add just that one. Crashlytics customers will recognize the Fabric interface: it’s based on our existing IDE plugins but with a fresh new look. You’ll even see the same familiar dashboard.

Read more about the Fabric features and individual kits on the Twitter developer blog.

What’s next

In the coming weeks, we’ll be rolling out Fabric to current Crashlytics customers. We’ve worked to make the upgrade experience very simple for you. If you’re interested in exploring the other kits (Twitter and MoPub), they are easily accessible in the new plugin.

As with all our launches, your experience and feedback is critical to us. Write to [email protected] to let us know your thoughts. We really want to build the tools that you love to use.

Onward,

 

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.

Introducing Groups for Beta by Crashlytics

groups-beta-by-crashlytics-header1.png

We launched Beta by Crashlytics with the goal of creating the most seamless beta distribution tool for developers and testers. After seeing a rapid adoption of our service, we recognized that there are other features we could build that would make beta distribution even more streamlined. We’re excited to launch group support, the first of many new features to build on top of our existing service.

We understand that often times developers need to send specific builds to a specific set of testers based on their development cycle. To combat the tedious process of individually selecting testers, we developed a much smoother and intuitive workflow. With our new groups feature, you can now distribute builds to select groups of testers with minimal effort.

With our smart search and dynamic interface, you can instantly find the testers you’re looking for. We’ve built an intuitive tester management UI allowing you to easily create tester groups and send builds to these groups within just a few clicks. To further streamline the group creation process, you now have access to your groups across every app within your organization, eliminating the need to create the same group twice.

groups-beta-by-crashlytics-screenshot.gif

To give you the most flexibility, we’ve integrated group management into our Mac app and Android IDE plugins -- so you can send builds to your groups right within your existing workflow. For those of you who prefer continuous integration, using our build server support, you can now automatically send builds, specify the receiving groups, and publish release notes. You can collaborate with your team having them manage the testers and create groups ahead of time and just hit “send” when the time is right.

From our friends at Opera Software:

Group support from Crashlytics simplifies distributing our apps to a large set of testers. Not only is it easy to add, manage and distribute to a group, but it's pretty too! This is exactly what every company distributing their app needs.

Carsten Zeiffert,


We hope you enjoy using groups for Beta by Crashlytics. We have many more functionalities on our roadmap and plan to continue rolling out new features in the coming months -- stay tuned!

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:

Crashlytics + Twitter Invite You to Our I/O Party

Why do it once when you can do it twice? After years of being the hottest party at WWDC, we’re excited to throw our very firstCrashlytics + Twitter party at Google I/O. Come hang out with the top Android mobile developers as we celebrate the awesome apps you’re building. We’ve been humbled by the support for Crashlytics for Android and Beta by Crashlytics, and are excited to share a preview of what’s to come.

Read More

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:

Crashlytics: Head of Class at AnDevCon

It’s that time of year again, AnDevCon is back! Last Fall, we took center stage with our co-founder Jeff Seibert’s keynote presentation. This year we’re heading to the classroom to host two sessions that you won’t want to miss! We’re not the type to sit on the sidelines, we prefer to dive in and actively participate by sharing our knowledge with other Android mobile developers. It’s time to crack open your laptop or your favorite note taking app and get ready to learn from some of the smartest and most influential developers in the Android ecosystem.

Read More

Join Crashlytics + Twitter at WWDC

For two years running, Crashlytics has welcomed the mobile developer community to SF with our WWDC Kick-off Party and this year will be no different! Together with Twitter, we’re bringing you an even bigger, better, more memorable event. If you’ve attended one of our fests in the past, you already know what to expect. For newcomers, we’re planning the perfect night to help you unwind after a long day of sessions. Come join us behind the towering steel gates at 620 Jones for great drinks and great people. This year we've kicked things up a notch to celebrate the amazing apps you’re building - come hang with many of the world’s top mobile app developers, and tons of awesome Crashlytics customers. It’s a night you won’t want to miss.

Read More

From Crashlytics Labs: Announcing Crashlytics for OS X

 

When we first launched Crashlytics, we started by solving the problem of crash reporting for iOS and Android developers. Since then, many of you have expressed interest in a crash reporting solution that supports both iOS and Mac apps -- and we've answered your request!

At Crashlytics, our passion has always been to deliver the most powerful developer tools, so that you only need to focus on building awesome apps. Even after opening access to our Beta Distribution service in February, we managed to have a little downtime and kept ourselves busy experimenting in Crashlytics Labs. Now, we’re excited to announce our latest Labs project: Crashlytics for OS X.

Our new support for OS X apps provides the same award-winning experience that you’ve come to expect from us, starting with the seamless install experience to the actionable insights, down to the exact line of code that caused your Mac app to crash. With easy-to-digest stack traces and an upgraded settings dashboard, you can seamlessly manage all your apps under one roof. We’ve been privately testing our Mac support with hundreds of developers, and we’re very thankful to everyone who’s given us feedback.

From our friends at Buffer:

We've been using Crashlytics for our iOS & Android apps for a while and now we're spoiled with the same amazing reporting for Mac. Crashlytics allows us to hunt down pesky crashes across all of our supported platforms, you'd have to be mad not to use it.

Andrew Yates,

We're excited for you to try out our latest Labs project, and can't wait for your feedback as we continue to tweak and enhance its functionalities. To check it out, simply add your Mac app using our plugin or, if you have yet to experience the power of Crashlytics, sign up here.

Cheers,

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!

From Crashlytics Labs: Announcing Our Beta Distribution Tool

 

In the 2+ years since we launched Crashlytics to solve mobile crash reporting, we’ve heard you loud and clear about another problem in mobile development: the beta distribution process. Testing new apps with real beta testers can be a cumbersome and unnecessarily complex process.

At Crashlytics, our mission is to deliver the easiest and most powerful tools for mobile developers. Through Crashlytics Labs, we’re always pushing the boundaries and tinkering with new ideas. I’m excited to share that we’ve been hard at work in our Labs building a beta distribution tool for both iOS and Android.

By focusing on multi-platform support, our beta distribution tool streamlines the process and shreds the complexity of managing different toolsets. We’ve been privately testing this tool with some of the best app developers out there. Now, we’re ready to open this up to more of you.

If you want to apply to test our new tool for beta distribution and other secret projects we’re working on, sign up to become a Crashlytics Lab Rat.

Cheers,

Wayne Chang

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.

 

Mastering ProGuard for Building Lightweight Android Code

Proguard-Header-Image.png

ProGuard, a code optimization and obfuscation tool provided as part of the Android SDK, can be a double edge sword -- it presents bootstrapping challenges but when applied correctly, provides tremendous benefits! At Crashlytics we’ve spent a lot of time leveraging the power of ProGuard to develop lightweight libraries to help app developers ship awesome products -- in particular, we use these four features in our day-to-day development.

Shrinking

As your codebase grows and becomes more full featured, it’s important to keep a small binary in mind. Reducing the size of the APK can be extremely advantageous, since large binaries are much less likely to be installed in poor network conditions or on older less powerful devices.

It's been well publicized among the developer community that the Dalvik Virtual Machine is memory limited to 64k methods. With this restriction, ProGuard can help provide a buffer as you consider which measures to take to reduce your code size. Removing unused code, which likely exists in a 64k method project, enables your development team to work on features unimpeded by technical limitations, while refactoring or external class loading is considered.

Even though shrinking is advantageous, simply identifying unused code to remove is a good practice. By using the printusage flag in Proguard.cfg, your configuration file, ProGuard will list the unused code to allow for proper code maintenance and cleanup.

Obfuscating

With tools available to extract the contents of APK’s, deodex, and read the class files, it’s important to obfuscate to protect the proprietary aspects of your codebase. ProGuard generates a mapping file that allows you to map the stack traces of obfuscated code to actual methods.

Original code:

Code obfuscated by ProGuard:

By automatically collecting the mapping files on build, Crashlytics streamlines the deobfuscation process of your code and intelligently prioritize stack traces to make your debugging process effortless.

Repackaging

Repackaging allows ProGuard to take externals jars and class files and move them to a single container with a common java package location:

or those of you building libraries, repackaging is extremely helpful if you choose to show a simple interface to third party developers while keeping a maintainable and well structured project hierarchy in the source repository. This can also be useful in organizing lower level packages while exposing well defined interfaces!

Optimizing

Optimizing works on compiled classes to implement many small optimizations based on the java version. By default the proguard-android.txt that ships with the Android tools has optimizations turned off, but the proguard-android-optimize.txt has the presets if needed.

ptimizations provide performance improvements for language operations. However, there are known incompatibility issues with various Dalvik versions, so we encourage a thorough review of the code base and device target demographic before enabling.

Beyond leveraging these four core features of ProGuard, we crafted several strategies for those of you looking to build lightweight apps/libraries and optimize your interaction with ProGuard.

Improving Build Times

Adding ProGuard to the build process can slow down build time, so it's important to minimize the amount of code ProGuard needs to examine. This is vital when considering third party libraries, like Crashlytics, that have already been processed by ProGuard -- it’s just a waste of CPU to reprocess with ProGuard again, and it’s much slower!

We thought it would be valuable to estimate the improvement in build times when preprocessed, third party libraries are ignored in ProGuard. Using the Crashlytics library as an example, we conducted numerous runs with internal test apps across various sizes. We found that build times improved by up to 5% when the Crashlytics package is ignored. But that’s just one library that is already ultra-lightweight. Imagine the build time improvements for apps leveraging additional libraries -- it can be tremendous.

To avoid processing a library that may have been preprocessed, simply add the following to Proguard.cfg:

As obfuscation is usually done for security, if using an open source library, there may be no reason to obfuscate it. By following a similar pattern as listed above, processing can be further reduced ultimately improving build time. The Android support library is a great example:

Reflection

Using reflection in Android is highly discouraged for many well known reasons, including performance and instability in changing APIs, however, it can be quite useful for Unit Testing. Common use includes changing the scope of methods to set test data or mock objects. If you’re using ProGuard during development build to obfuscate, it’s important to understand that when a method or class name is changed, string representations of them are not. When designing testable interfaces, if tests are run on a device using a build that has been processed by ProGuard, this will cause method not found exceptions.

Library development

Additional complexity is introduced when developing libraries that are processed with ProGuard, both when they are distributed and when the app developer runs the process. When the code is obfuscated twice, it is much more challenging to track down bugs as two mapping.txt files would be required to de-obfuscate the stack trace. To avoid processing these libraries with ProGuard a second time, be sure to follow our steps in section above on improving build times!

For those of you building libraries, you may have encountered more challenges with ProGuard because in any sufficiently complex project, the possibility for custom ProGuard rules exists. We recommend not requiring custom ProGuard rules because the library can break if a different set of rules is applied after a custom set. If custom rules are required, be sure that those using your library include any custom ProGuard rules in their own config file. This will ensure compatibility between your library and the app!

Ever since Crashlytics was born, we’ve made it our mission to make developers’ lives easy. We hope that these strategies will help you build the next groundbreaking Android app/library and perhaps in the process, make a dent in the universe ;)

External Resources