This Github issue led me to the solution: https://github.com/facebook/react-native/issues/3454. Turns out this was only happening on reload. One needs to implement RCTInvalidating and then clean up any dangling references in invalidate. This allows ARC to cleanup your native module properly and reinstantiate RCTBridge