Posted by Brian Lynn on Mar 5, 2014 in Company, Engineering
If you’re going to be trapped in an office all winter with your co-workers (and possibly missing quality time with your Valentine) you’ve got two choices. You can spend your days watching the snow peacefully falling, wishing you were by a fire and on the slopes OR you can hunker down and ship things! Guess which route we took this winter? Hint: it doesn’t involve sipping hot toddies at the mountain lodge—although we might have cracked open a bottle of something when the heat was broken in the office that one day
We spent the month of February shipping new features and a new look — while making room in the Crashlytics Labs roster for shiny new toys like a beta distribution tool. So as you cozy up to your cubicle buddy in lieu of being in that luxury log cabin with aforementioned Valentine out in Park City, feel free to whip up a batch of toddies in the office kitchenette. It’s time to settle in and check out what we’ve been building!
Latest Toys from Crashlytics Labs
Since we launched Crashlytics two years ago we’ve been tirelessly seeking out feedback from our customers. That’s why we know how cumbersome the beta distribution process can be. At Crashlytics Labs, we’re always tinkering with new ideas and have been hard at work building a beta distribution tool for both iOS and Android. After privately testing the tool with some of the best app developers out there (who are also hunkered down working through this chilly winter), we were very excited to open this up to more of you last week. We’ve been inundated with requests for access and will continue to roll out the invites — stay tuned!
High Performing & Platform-Centric
Stack traces are core to any debugging tool, and they are an integral part of our mission to build the most powerful tools for developers. This month, we enhanced the performance of our UI that now renders stackframes up to 181x faster while achieving a 55% reduction in memory. We also upgraded our iOS SDK to support threads and selectors, which allows you to track down certain classes of crashes and gain additional context that can be otherwise inscrutable. For the Android fanatics, we now present our stack traces in a way that’s in line with the traditional Java counterpart — surfacing the traces in their most familiar context.
We also added the functionality to copy & paste raw stack traces, so you can seamlessly share details of your crashes even outside of our shareable crash reports feature. Additionally, we’ve made it more effortless to find the right issue. Our search feature now also indexes Crashlytics Session IDs, so you can locate issues even more precisely, beyond custom logged events and keys!
Real-Time & Intuitive
We care deeply about the developer experience in all the tools we build. What better time to optimize our UI than having the new stack traces in place? We added a new notifications system that keeps your focus on the crash report, with alert boxes that updates itself in real-time and intelligently organize issues by type. This enables you to scan through all incoming crashes with minimal effort — without your flow being disrupted.
We also completely redesigned our navigation experience. The new context control automatically sort your list of apps based on your recent interactions, so the most actively managed apps are always at your fingertips. Our new navigation sidebar also sports a more intuitive menu structure while maximizing the horizontal space for optimal viewing of all your critical crash data.
Effortless One-Click Sign In
We’ve been accelerating our build-out since joining forces with Twitter last year. Using our new one-click, OAuth integration with Twitter’s user system, you can now link your existing Crashlytics account to your Twitter account during sign in. The next time you sign into Crashlytics, it’s just one simple click!
Here’s our internal changelog:
- Jazzed up our backend to support future product and feature development!
- Fixed a minor bug to improve SDK configuration.
- Upgraded SDK to support threads and selectors.
- Enhanced support when a build occurs during sign in, for all of you who are multi-taskers!
- Opened private access via /secret to test version with beta distribution functionality enabled.
- Improved the initialization support and increased startup speed in multithreaded environments.
Android IDE Plugins
- Deployed a new version of the Gradle plugin that performs much faster and prevents any classpath issues on Windows.
- Opened private access via /secret to test version with beta distribution functionality enabled.
- Enhanced UI performance to render stackframes up to 181x faster.
- Updated Android stack traces to be in line with the traditional Java counterpart.
- Added copy & paste functionality for raw stack traces.
- Redesigned navigation side bar with slick buttons and new menu structure.
- Expanded horizontal space of web dashboard to display more data.
- Implemented new real-time notifications system that automatically organizes crashes.
- Shipped new context control that sorts your list of apps by recent interactions.
- Enabled search by Crashlytics Session IDs for finding issues.
- Deployed one-click Twitter sign in functionality for existing users.
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.
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.
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:
- Improved application icon support for iOS 7.
- Resolved minor issue with deleted applications.
- 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.
- 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
Posted by Brian Lynn on Nov 26, 2013 in Company, Engineering
It’s that time of year! Time to hang with the fam, write code, and enjoy an ice cold winter lager. All while making sure you’re dressed to impress for the inevitable run in with your old high school flame…
As Thanksgiving approaches, we have a ton of updates to share that are sure to distract you from the very obvious fact that Cousin Sam burned off his eyebrows in the deep fried turkey practice round that went down last weekend! This month, we bring you a new version of the Crashlytics for Android SDK, user experience enhancements to our IDE plugins, and usability upgrades to our web dashboards.
And just to recap–before you caught Grandma putting more wine in her glass than the gravy pan (go Granny!), and even before your little sister brought her tattoo-covered boyfriend home from college — back in October we shared two major announcements back to back: Crashlytics for Android Studio and Crashlytics Real-Time Search.
Performance & Responsiveness
We’re excited to have shipped v1.1.5 of our Android SDK with some serious performance upgrades! (If only there was a way to boost your own performance after you fall into that inevitable Thanksgiving Day food coma).
We tweaked our starting logic to move an extra blocking call off the main thread, reducing our SDK start time by over 75%, so you can get Crashlytics up and running even more efficiently — similar to how that extra cup (or 3) of coffee will have you nailing those Black Friday deals better than ever! To make the Crashlytics logger more useful, we now log priorities and tags to your crash reports as well as the Android logger. We also boosted crash processing efficiency by eliminating unnecessary process data collection and reduced the prioritization of Crashlytics threads to free up even more resources for your app.
When mom asks why we showed up empty handed on Thursday, we’ll have a good excuse: we’ve been busy deploying several updates to our Android IDE plugins to enhance the user experience! These include smart drawing of our plugin to better handle non-IDE windows that have focus, and an even smoother responsiveness of the organization selection screen, which now loads network data asynchronously.
Seamless & Intuitive
For those of you asking for access to the raw stack traces, we heard you loud and clear — even over the sounds of the too-soon holiday music that seems to be glaring from every car stereo anywhere. Our web dashboard now gives you the power to see and copy a raw representation of exceptions and threads. This feature is especially beneficial to our Android developers because you can also use the raw stack inside your IDE, so debugging crashes became easier than ever.
After launching shareable crash reports in September, we added read-only comments to these reports. Now even developers without Crashlytics accounts can view these notes, which can include useful information for collaboration with your team (e.g. JIRA URL). We get it — even if you remembered to put elastic waist pants on before you sat down to eat you still need help from the whole extended family to make a dent in that bird!
To enhance overall usability, we completely revamped the Issue’s session page, along with newly added drop down menus for users to easily navigate between their organizations and applications.
Here’s our internal changelog:
- Reduced SDK start time by over 75% by eliminating a blocking call during exception handler initialization in Crashlytics.start().
- Enhanced Crashlytics.logException(Throwable) to log a warning via Log.w() and immediately return on null input.
- Crashlytics.log(int priority, String tag, String message) now logs the priority and tag to Crashlytics reports as well as the Android logger.
- Removed collection of unused process data to improve crash processing efficiency.
- Explicitly set all Crashlytics background threads to THREAD_PRIORITY_BACKGROUND to defer CPU resources to the application.
- Fixed a bug preventing the Crashlytics SDK from being pulled into Android Studio automatically while adding an application.
- Pushed a non-critical fix to our plugin updater that prevents multiple updates between IDE restarts.
- Enhanced the UI of our modals and notes section as well as added the ability for users to filter out versions directly from the dropdown menu.
- Added raw stack traces so developers can now see and copy a raw representation of the exceptions and threads.
- Added read-only comments in shared crashes so notes are visible to team members who got the shared link but didnt have a Crashlytics account.
- Revamped UI for Modals and Notes.
- Added filters to Dropdown menus.
- Won the office-wide “Movember” contest (Tom Selleck truly is an inspiration).
It’s been quite a busy fall season for us but we look forward to shipping even more features before the year’s end. In the meantime, we’ll catch up with you guys on the other side of the holiday — save us some leftovers! Now, back to googling “Thanksgiving puns”…I mean…writing code
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!
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.
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!
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.
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!