September 14, 2016
DevTrace is a performance widget for your Rails applications in development. It sits unobtrusively in the corner of your page, just waiting to drop insight on your application:
This kind of insight is powerful. You can see how your app executes, and head off performance issues before they get to production.
But what I want to cover here is how DevTraces stays out of the way -- how it's simultaineously powerful and unassuming.
DevTrace shows up as a small, semi-transparent badge displaying your page load time. It's placed in the lower left corner of your page, to stay out of the way of navigational elements. Since your eyes natually move from the upper-left to the lower-right of a page, DevTrace is only there if you look for it. Finally, we added subtle animations for Ajax requests -- enough to notice, but not enough to be distracting.
HTML hygene (AKA staying the f* out of your markup as much as possible) is important. We know that — as a developer — you'll be inspecting your source, and don't want to see extra cruft from your performance tools.
DevTraces injects as little as possible into your page (we do have to add something though):
<style>tag, with classes carefully scoped to our namespace
Profiling in development is different from profiling in production. Always-on tracing works in development, because traffic is limited to just you (the developer), and overhead is less of a concern. In contrast, production environments require a smart sampling approach (which we're perfecting in Scout APM). No need to worry about leaving DevTrace on in the wrong environment: even if you accidently configure it for production, it won't even insert its rack middleware into your application in a non-development environment.