title: React Native JSON.stringify cannot serialize cyclical structures
body: <p>We're building a RN app (RN0.37), and we're running into an issue where when the app is run, we get a "<code>TypeError: JSON.stringify cannot serialize cyclic structures</code>".</p>
  
  <p>Nothing of relevance has changed on the API responses, and the issues went away recently, but reappeared upon a wipe/rebuild (triggered by unrelated issues).</p>
  
  <p>My suspicions are around a couple of packages being used: “<code>react-native-router-flux</code>” and "<code>react-native-permissions</code>”, but I haven't been able to find anything of relevance in the app.</p>
  
  <p>Currently my suspicions around "react-native-router-flux" are mainly based around this article: <a href="https://github.com/aksonov/react-native-router-flux/issues/363" rel="noreferrer">https://github.com/aksonov/react-native-router-flux/issues/363</a></p>
  
  <p>And my suspicions around "react-native-permissions" is mostly founded on the fact that the timing of the inclusion of this package on this project is suspicious, and seems to coincide with the surfacing of this error - although I can't prove that with absolute certainty.</p>
  
  <p>The only additional clue I have, is that the JSON.stringify error always seems to be preceded by a list of warnings. They all read "This synthetic event is reused for performance reasons. If you're seeing this, you're accessing the property  on a released/nullified synthetic event. This is set to null. If you must keep the original synthetic event around, use <code>event.persist()</code>. See <a href="https://facebook.github.io/react/docs/events.html#event-pooling" rel="noreferrer">https://facebook.github.io/react/docs/events.html#event-pooling</a> for more information." The list of  goes as follows (always in the same order): nativeEvent, type, target, currentTarget, eventPhase, bubbles, cancelable, timeStamp, defaultPrevented, isTrusted and touchHistory.</p>
  
  <p>The following is my package.json:</p>
  
  <pre><code>"dependencies": {
    "blueimp-md5": "2.5.0",
    "moment": "2.16.0",
    "phone-formatter": "0.0.2",
    "react": "15.3.2",
    "react-native": "0.37.0",
    "react-native-asset-library-to-base64": "1.0.1",
    "react-native-aws3": "0.0.3",
    "react-native-button": "1.7.1",
    "react-native-cached-image": "1.2.2",
    "react-native-camera-kit": "4.0.1",
    "react-native-camera-roll-picker": "1.1.9",
    "react-native-contacts": "0.5.2",
    "react-native-fbsdk": "0.4.0",
    "react-native-fetch-blob": "0.10.0",
    "react-native-fs": "2.0.1-rc.2",
    "react-native-geocoder": "0.4.5",
    "react-native-image-crop-picker": "0.10.5",
    "react-native-image-resizer": "0.0.12",
    "react-native-nav": "1.1.4",
    "react-native-permissions": "0.2.5",
    "react-native-photo-view": "1.2.0",
    "react-native-router-flux": "3.37.0",
    "react-native-stripe": "1.2.1",
    "react-native-swipe-list-view": "0.3.1",
    "react-redux": "4.4.6",
    "redux": "3.6.0",
    "redux-storage": "4.1.1",
    "redux-storage-engine-reactnativeasyncstorage": "1.0.2",
    "underscore": "1.8.3"
  }
  </code></pre>