I would like to know specifically how impactful method swizzling is on performance. I understand it's "negligible" but what does that mean exactly? Nonetheless, I like what you guys are doing; Heap's approach to analytics its pretty clever.
The actual method exchange (#1) is little more than a pointer swap and happens at load time. You can safely assume it introduces no performance overhead.
The overhead of swizzled code (#2) is also minimal. Specifically, in Instruments you'll see that ~1ms of time gets spent in an empty replacement method before the original method is called. But this replacement method is blocking, so it's imperative you keep it as lean as possible (e.g. by pushing tasks onto a background queue).