title: react-native app freezes temporarily without activity in performance debugger
body: <p>This is hard to debug because there is no activity in the chrome performance debugger when this freeze happens. A ScrollView still scrolls so it's not Android that's lagging. On the other hand, the Perf Monitor still shows 60fps for JS and it does not freeze.</p>
  
  <p>Perhaps it's something with asynchronous code not returning, although the synchronous code should just continue running. When I submit changes, other actions (like navigating back) are also blocked despite that whole flow being asynchronous as well.</p>
  
  <p>If I try to touch things (like change a selection) while it's lagging, the app may crash with the following error:</p>
  
  <p><code>Cannot record touch end without a touch start.</code></p>
  
  <pre><code>04-16 17:18:17.749  7065  7102 I ReactNativeJS: websocket connection open
  04-16 17:18:18.538  7065  7102 E ReactNativeJS: 'Cannot record touch end without a touch start.\nTouch End: %s\n', 'Touch Bank: %s', '{"identifier":2,"pageX":144.79888916015625,"pageY":327.2443542480469,"timestamp":22079251}', '[{"touchActive":false,"startPageX":321.55340576171875,"startPageY":325.2271728515625,"startTimeStamp":22079180,"currentPageX":322.0527038574219,"currentPageY":346.2295227050781,"currentTimeStamp":22079251,"previousPageX":322.0527038574219,"previousPageY":322.2295227050781,"previousTimeStamp":22079248},{"touchActive":false,"startPageX":235.17337036132812,"startPageY":257.2802429199219,"startTimeStamp":22079203,"currentPageX":234.674072265625,"currentPageY":281.2802429199219,"currentTimeStamp":22079251,"previousPageX":234.674072265625,"previousPageY":257.2802429199219,"previousTimeStamp":22079248}]'
  04-16 17:18:18.565  7065  7102 E ReactNativeJS: 'Cannot record touch end without a touch start.\nTouch End: %s\n', 'Touch Bank: %s', '{"identifier":2,"pageX":144.79888916015625,"pageY":327.2443542480469,"timestamp":22079251}', '[{"touchActive":false,"startPageX":321.55340576171875,"startPageY":325.2271728515625,"startTimeStamp":22079180,"currentPageX":322.0527038574219,"currentPageY":346.2295227050781,"currentTimeStamp":22079251,"previousPageX":322.0527038574219,"previousPageY":346.2295227050781,"previousTimeStamp":22079251},{"touchActive":false,"startPageX":235.17337036132812,"startPageY":257.2802429199219,"startTimeStamp":22079203,"currentPageX":234.674072265625,"currentPageY":281.2802429199219,"currentTimeStamp":22079251,"previousPageX":234.674072265625,"previousPageY":281.2802429199219,"previousTimeStamp":22079251}]'
  04-16 17:18:18.572  7065  7102 E ReactNativeJS: 'Cannot record touch end without a touch start.\nTouch End: %s\n', 'Touch Bank: %s', '{"identifier":2,"pageX":144.79888916015625,"pageY":327.2443542480469,"timestamp":22079251}', '[{"touchActive":false,"startPageX":321.55340576171875,"startPageY":325.2271728515625,"startTimeStamp":22079180,"currentPageX":322.0527038574219,"currentPageY":346.2295227050781,"currentTimeStamp":22079251,"previousPageX":322.0527038574219,"previousPageY":346.2295227050781,"previousTimeStamp":22079251},{"touchActive":false,"startPageX":235.17337036132812,"startPageY":257.2802429199219,"startTimeStamp":22079203,"currentPageX":234.674072265625,"currentPageY":281.2802429199219,"currentTimeStamp":22079251,"previousPageX":234.674072265625,"previousPageY":281.2802429199219,"previousTimeStamp":22079251}]'
  04-16 17:18:18.614  7065  7102 I ReactNativeJS: 'ws onclose', ''
  </code></pre>
  
  <p>So part of my question is; How can I debug performance besides Chrome debugger and Perf Monitor?</p>
  
  <p>And another part is; Why can asynchronous code block the app and how can I prevent this?</p>
  
  <p>Any other comments that may help are also appreciated</p>
  
  <p>by the way I spent time to optimize everything that was slow previously so when it's not lagging it all works pretty fast.</p>