Posted by Wayne Chang on Feb 12, 2013 in Company, Featured, Industry
Crashlytics gives mobile app developers insight into their apps’ performance, so you can pinpoint and fix issues quickly and easily. In addition to the main Crashlytics product, we’ve also offered Crashlytics Enterprise, which we introduced for those who wanted even more robust reporting and workflow integration, among other features.
Now all developers can have the best tools to identify and fix issues — we’re folding the features of Crashlytics Enterprise into Crashlytics. The enterprise features will be available to all – for free.
With Crashlytics Enterprise, there are no usage costs, fees, or limits when it comes to your app’s performance monitoring. The features and usage we used to charge for based on limits are now unlimited across the board. This means that you no longer need to worry about numbers like monthly active users, disk space or API limits. And since Crashlytics Enterprise has no limits, you can add as many apps and developer seats as your team needs.
In the future, all new Crashlytics accounts will be automatically upgraded to the unlimited, free version of the product; existing users have already been transitioned. And the capabilities of Crashlytics Enterprise don’t stop here. Working with Twitter, we’ll continue to develop new features even faster.
Try Crashlytics in your app now!
What an incredible journey this past year has been — today, we’re excited to announce: we’re merging with Twitter to take our platform to an entirely new level!
We started Crashlytics a little over a year ago to address a huge hole in mobile app development. With hundreds of millions of devices in use around the world, it was impossible for developers to fully test every edge-case and catch every bug before release. Even worse, when problems did crop up, it was often difficult and complicated to find the root cause. App developers were stuck with little insight into what happened and forced to rely on vague end-user feedback to diagnose problems.
We built Crashlytics to deliver the world’s most powerful and lightest-weight crash reporting solution. With us, developers gain instant visibility into the precise line of code that caused a crash, enabling them to more easily fix issues. Since our iOS launch, we’ve had the privilege of working with thousands of incredible app developers, from those building independent passion-projects to many of the top iOS apps available today – Twitter, Vine, Yelp, Kayak, TaskRabbit, and Waze, to name just a few.
Dashboard of Issues
Individual crash details
Our Mac App
With today’s announcement, much will remain the same. Development of Crashlytics will continue unabated and we remain dedicated to working with all of our customers – current and new, big and small – to deliver the key app performance insights they need.
Going forward, we’re thrilled to work with the incredible team at Twitter. We share a passion for innovating on mobile and building world-class applications. Joining forces will accelerate our build-out, allowing us to leverage Twitter’s infrastructure to deliver new features faster than ever.
On a more personal note, it’s an honor to work with the entire Crashlytics team – the best group we’ve ever been a part of – and we couldn’t be more excited to continue doing so.
Join us on our mission and try Crashlytics in your app if you haven’t yet!
Highlights from the Twitterverse:
At Crashlytics, one of our founding principals has been an extreme (some would say, absurd) attention to detail. Crash detection and reporting, particularly on iOS, is a complex and esoteric problem to solve, with arcane restrictions that throw modern programming practices out the window.
Need to allocate memory at crash-time? Revisit your approach. Thinking of calling an Objective-C method? Dream on.
This focus has not gone unnoticed: many of the world’s best mobile engineering teams – that build many of the most-well-known apps – now trust our award-winning Crashlytics for iOS solution to deliver accurate, detailed, crash reports from hundreds of millions of devices around the globe.
But we’re not satisfied.
Over the past 6 months, we’ve embarked on a ground-up rewrite of our iOS SDK to take things to a whole new level and, after 2 months of intense testing, I’m extremely pleased to publicly announce the release of Crashlytics for iOS v2.
Highlights from hundreds of improvements
When we set out to design our new iOS SDK, it was the perfect opportunity to fundamentally rethink our approach. We’ve made hundreds of improvements to our iOS SDK that have lead to significant performance and stability increases. Here are some of the major ones:
- Mach Exceptions. Better than signal handlers.
All widely-used crash-reporting solutions for iOS and Mac OS are currently based off signals and uncaught exceptions. By registering handlers for both of these events, it’s possible to detect and inspect the majority of crashes that occur. As our usage has exploded, however, it became painfully obvious that crashes were sneaking through. For example, it’s not possible to catch all stack-overflow crashes with a signal handler.
Fortunately, there’s a better way. In Darwin, signals are actually implemented on top of lower-level events called Mach Exceptions. Handling these directly is the holy-grail – all crashes can be captured immediately after they happen with far more precision and accuracy. The Mach Exception API is radically more complex than signal handling, but capturing every crash more than justifies the hurdles.
- Advanced techniques to stop secondary crashes.
Processes that crash often end up sustaining considerable damage before the kernel takes action to terminate them. In many of the nastiest crashes we’ve seen, this can result in secondary crashes, where the crash-handling code itself is unable to operate correctly and fails, obscuring the source of the original crash. Secondary crashes have two primary causes, both due to corruption. A buffer-overrun could mangle or destroy the in-memory data-structures that Crashlytics uses to track state. Alternatively, hardware failures or disk errors could damage the temporary cache files used to record data before it was sent to our servers.
Our new SDK goes to great lengths to address these scenarios. By carefully controlling its memory usage, our new SDK is able to pre-allocate a contiguous block of RAM that it then surrounds with guard pages, protecting against buffer-overruns. In the case of cache corruption, we’ve invested in making our file-handling code extremely defensive, so parsing cache files can’t crash unexpectedly.
- Stack unwinding. Finding the real path to the crash.
One of the most abstruse aspects of crash detection is stack unwinding, the seemingly omniscient ability to determine historic code execution that directly lead to the crash. In practice, it involves carefully walking up the stack in memory and searching for return addresses – the instruction pointers of the calling lines.
Writing an ARM stack unwinder that works in most cases is relatively straightforward – the stack layout for iOS is well-defined. However, things start to fall apart when custom assembly is thrown into the mix, as there are no hard rules on what can and can’t be done. It just so happens that objc_msgSend is such a method, performing countless tricks to make dynamic method invocation in Objective-C as fast as possible. All works perfectly during normal operation, but if objc_msgSend crashes, a naïve ARM unwinder could easily miss the stack frame of the calling function. Of course, that’s the critical line you need to know!
Our new SDK uses a vastly better technique to determine the calling instruction that works in the case of objc_msgSend and many other “creative” methods that still conform in-part to Apple’s iOS ABI.
We could not be happier to get these improvements into the hands of thousands of app developers and the feedback so far has been fantastic. Thanks to all those who have helped us test Crashlytics for iOS v2 and trust me – we’re not stopping here – the most advanced crash reporting SDK for iOS will keep getting better!
Have questions about Crashlytics for iOS v2? Send us email!
Since starting Crashlytics just over one year ago with my co-founder Wayne Chang, our mission has been clear: build tools that mobile developers love. Now, 14 months later, we’re both humbled and honored to be actively working with many of world’s top mobile apps – Square, Yelp, Groupon, Yammer, PayPal, OpenTable, Waze, HBO, Kayak, Orbitz, Hipmunk, Viddy, Socialcam, and thousands of other organizations.
Today, we are excited to announce that Aaron Levie, the CEO at Box, has joined Crashlytics’ Advisory Board. Levie, named by Inc. as one of the Top 30 Entrepreneurs Under 30, has grown Box into an international powerhouse that now serves 92% of the Fortune 500.
Having raised over $284 million for Box, Levie is building the company for the long-term, to revolutionize how businesses collaborate and share content in the global marketplace.
“The world of mobile has changed dramatically in just the past couple of years,” says Levie, “and with over 5 billion smartphones expected to be in use by 2016, nothing is slowing down. The scale of this market shift radically changes how all applications are built, and requires a new set of tools for the Post-PC development process. Crashlytics sits at the center of this critical part of the ecosystem.”
The state of mobile development is still far from where it needs to be and we look forward to working with Aaron as we hone the next generation of mobile tools.
“Jeff and Wayne are world-class entrepreneurs,” Levie concludes, “and undoubtedly are building an incredibly strong foundation to bring these tools to the masses.”
Follow Aaron Levie at @levie, Wayne Chang at @Wayne, and Jeff Seibert at @jeffseibert.
We’re thrilled to announce Crashlytics Integrations — seamlessly send your Crashlytics issues to your favorite issue tracker!
Crashlytics Intelligence + Workflow you already use = Productivity Win
With Crashlytics Integrations, you get all of the power of our industry-leading crash analysis platform seamlessly integrated into the issue tracking tools you already have, enabling a single-glance view at your outstanding issues. When it’s time to debug, simply jump directly from your issue tracker to the Crashlytics dashboard to get a deep dive into the data.
You’re in control
We care about signal-to-noise ratio — we made sure to build an easy to use control panel so that you’re in full control over when you receive issue updates. By default, we only send along an issue when it reaches Impact Level 2 or higher. However, you can change this to be as verbose as you want.
We’re launching Integrations with five of the most-requested offerings. They are:
- JIRA 5
- Pivotal Tracker
- Web Hooks
You may be familiar with the first four. The fifth, Web Hooks, is a unique integration that you can use to connect Crashlytics with whatever kind of system you want. We’ll simply POST information to a URL of your choosing, in JSON format. This is great for triggering custom events inside your own development infrastructure or behind your firewall!
Your options don’t stop there. Faced with the endless array of third-party bug trackers and project management tools available today, it wouldn’t make sense to artificially limit what you can use!
We’re excited to announce that, starting today, we have open-sourced our Integrations implementation so that you can build your own experience and ensure Crashlytics fits seamlessly into your development workflow, whatever it may be. Head on over to GitHub and fork crashlytics-services to get started. We’re looking forward to rolling out the best contributions for everyone to benefit from!
Our goal is to make Crashlytics Integrations as useful as possible for you and leverage the incredible infrastructure we’ve built along with the tools you use everyday to make finding and fixing issues in your apps painless.
We’re just getting started, and we’d love to hear feedback on how we can make this even better for you. Shoot us an email through Support — as you know, we read each and every email that comes through.
Join the Team
Interested in diving-deep into these and other workflow-enhancing challenges? We’re hiring! Give us a shout at firstname.lastname@example.org. You can stay up to date with all our progress on Twitter, Facebook, and Google+.
TL;DR – View our WWDC Party 2012 Photos. Read below to see how it came together!
Apple’s WWDC is one of the few events that draws in developers from all over the world, including many of our customers. We care deeply about our developers and wanted to celebrate with them, especially since we were going to be there attending the conference as well. It was Crashlytics’ first event and opportunity to meet people in the ecosystem. It had to be amazing.
At first, we evaluated the terrace at the St. Regis. The space was great, but then we saw the W Hotel. While not inexpensive by any means, we felt the W Hotel brand better represented our own at Crashlytics. Knowing this venue would contribute to a great experience, we booked it.
Designing the Space
With the venue booked, we had to decide on what the space would look like. How do we optimize the flow for people getting drinks? Should there be lounge seats? Should there be barstools? Where would the DJ go?
We thought a bit about this and arrived at the layout below.
With a circular bar in the center, manned by three bartenders, we wanted to guarantee attendees spent less time waiting for drinks and more time in conversations.
We also wanted to have tables for people that want to sit (those are the ones on the red carpet). For the people that wanted to stand, we provided six small lighted tables (those are the ones surrounding the bar).
For more ambiance, we set up three cabanas, complete with sofas and love seats.
We also had 14-foot tall red flags made (it’s true) and a red spotlight between the two flags, through a custom made Crashlytics light filter.
Finally, we thought it would be awesome if people had something to look at when they were ordering a drink or sitting down, so we got three tables with flat screens built into them (the circular bar also had two flat screens built into it as well). These doubled as demo stations – cords were available to plug into phones to demo apps!
The Endless Bar
At first, we were thinking about drink tickets. We even set up an easter egg on WWDC.net (hint: view source), where if you found one of our guys, you would get a drink.
However, we always loved going to places where the drinks were free. We wanted this to be an amazing experience so in the end we decided to cover drinks, all night, for everyone.
We also came up with a few signature cocktails that seemed fitting – the Keynote, the Jailbreak, and the NSCocktail. We had servers that had all three drinks coming around on platters all night, in case the bar was full. This also helped keep the bar from getting swarmed.
After we promoted the party (we made a site on WWDC.net), we received over 1300 RSVPs to join the party. The venue only held 300 people, so we quickly purchased drink tickets so that people who had to wait in line had the option of going to the W Bar downstairs and have a drink on us.
I could write a lot more, but a picture says a thousand words. We brought in a professional photographer and took many. Check out the event photos here.