{"id":880,"date":"2026-09-26T16:07:49","date_gmt":"2026-09-26T10:37:49","guid":{"rendered":"https:\/\/www.shakebug.com\/blog\/?p=880"},"modified":"2026-09-26T16:07:59","modified_gmt":"2026-09-26T10:37:59","slug":"capture-network-logs-react-native","status":"publish","type":"post","link":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/","title":{"rendered":"How to Capture Network Logs in React Native"},"content":{"rendered":"<h1><span class=\"ez-toc-section\" id=\"How_to_Capture_Network_Logs_in_React_Native\"><\/span>How to Capture Network Logs in React Native<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>This is for React Native teams who already have Shakebug installed and want to use its network logs to debug API failures. If you haven&#8217;t set up the SDK yet, follow the <a href=\"https:\/\/www.shakebug.com\/blog\/react-native-crash-reporting-guide-shakebug\/\">React Native crash reporting setup guide<\/a> first. This post assumes <code>ShakebugView<\/code> is already wrapping your app.<\/p>\n<p>There&#8217;s no network interceptor to write and no config flag to turn on. Shakebug hooks into React Native&#8217;s <code>fetch<\/code> and <code>XMLHttpRequest<\/code> layer. Once the SDK is mounted, every request your JS code makes gets attached to the next bug report or crash. The steps below explain why that matters, what gets recorded, how to confirm it&#8217;s working, and how to read the logs when a report comes in.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_1_Know_which_bugs_network_logs_actually_solve\"><\/span>Step 1: Know which bugs network logs actually solve<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A tester files &#8220;Save button does nothing.&#8221; The screenshot shows a form and a spinner that never stops. The recording shows them tapping Save three times. Neither one tells you why.<\/p>\n<p>The network log usually does. Most &#8220;nothing happens&#8221; reports in a React Native app come down to one of these:<\/p>\n<ul>\n<li><strong>Expired or missing auth token.<\/strong> The API returns <code>401<\/code>, your code swallows it in a <code>catch<\/code>, and the UI stays stuck in its loading state.<\/li>\n<li><strong>Payload drift after a backend deploy.<\/strong> The server now expects <code>phone_number<\/code> and the app still sends <code>phone<\/code>. You get a <code>422<\/code> whose response body names the field.<\/li>\n<li><strong>Wrong base URL in a release build.<\/strong> A staging URL leaked into <code>.env.production<\/code>, or a release build is pointing at <code>localhost<\/code>.<\/li>\n<li><strong>Cleartext HTTP blocked in release.<\/strong> Android 9+ and iOS App Transport Security block plain <code>http:\/\/<\/code> by default. The request never gets a status code, and it only fails outside debug builds.<\/li>\n<li><strong>Timeouts on slow networks.<\/strong> It works on office Wi-Fi but times out on a tester&#8217;s mobile data. The latency column shows it immediately.<\/li>\n<\/ul>\n<p>In all five cases the UI looks identical: something didn&#8217;t happen. The request and response are what tell them apart.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_2_See_what_Shakebug_records_for_each_request\"><\/span>Step 2: See what Shakebug records for each request<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>According to Shakebug&#8217;s <a href=\"https:\/\/www.shakebug.com\/mobile-app-bug-reporting\/react-native\">React Native SDK page<\/a>, the SDK hooks the native <code>XMLHttpRequest<\/code> and <code>fetch<\/code> modules. For each request it records:<\/p>\n<ul>\n<li>The request URL<\/li>\n<li>The response status code<\/li>\n<li>Latency (how long the request took)<\/li>\n<li>Headers<\/li>\n<li>The response payload<\/li>\n<\/ul>\n<p>Axios is covered too. In React Native, Axios sends requests through <code>XMLHttpRequest<\/code>, which is the layer Shakebug hooks. The same goes for most wrappers built on <code>fetch<\/code>, such as <code>ky<\/code>, RTK Query&#8217;s <code>fetchBaseQuery<\/code> and Apollo&#8217;s HTTP link.<br \/>\n<!-- [VERIFY] Confirm with the SDK team that the HTTP method and request body are captured as well. The public page only lists URL, status, latency, headers and response payload. If confirmed, add both to the list above and delete this comment. --><\/p>\n<p>These logs ship with the rest of the report: the annotated screenshot, the screen recording, console logs from <code>console.log<\/code>\/<code>warn<\/code>\/<code>error<\/code>, and device data (model, OS version, app version). So a failed request sits next to what the user was looking at when it failed.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_3_Confirm_capture_is_working_in_your_existing_integration\"><\/span>Step 3: Confirm capture is working in your existing integration<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Shakebug&#8217;s <a href=\"https:\/\/www.shakebug.com\/installation-docs\">installation docs<\/a> don&#8217;t list a network-logging prop. Capture comes with the SDK itself. Nothing needs enabling, but it&#8217;s worth checking three things.<\/p>\n<p><strong>1. <code>ShakebugView<\/code> wraps your root component.<\/strong> Open <code>App.js<\/code> (or <code>App.tsx<\/code>) and check that <code>ShakebugView<\/code> sits at the top of the tree with both app keys set:<\/p>\n<pre class=\"wp-block-code\"><code>import ShakebugView from 'shakebug-react-native';\r\n\r\nexport default function App() {\r\n  return (\r\n    &lt;ShakebugView\r\n      Android_appkey=\"YOUR_ANDROID_APP_KEY\"\r\n      iOS_appkey=\"YOUR_IOS_APP_KEY\"\r\n    &gt;\r\n      &lt;NavigationContainer independent&gt;\r\n        {\/* your app *\/}\r\n      &lt;\/NavigationContainer&gt;\r\n    &lt;\/ShakebugView&gt;\r\n  );\r\n}<\/code><\/pre>\n<p>If you use React Navigation&#8217;s <code>NavigationContainer<\/code> inside <code>ShakebugView<\/code>, pass <code>independent<\/code>, as shown above. Shakebug&#8217;s docs require it.<\/p>\n<p><strong>2. The package is current.<\/strong> Run <code>npm outdated shakebug-react-native<\/code> (or <code>yarn outdated shakebug-react-native<\/code>). If you&#8217;re behind, update and run <code>cd ios &amp;&amp; pod install &amp;&amp; cd ..<\/code> again.<\/p>\n<p><strong>3. A test request shows up in a report.<\/strong> Add a temporary debug button that fires one request you know will fail, then shake the device and file a report:<\/p>\n<pre class=\"wp-block-code\"><code>import { Button } from 'react-native';\r\n\r\nfunction NetworkLogTest() {\r\n  const fire = async () =&gt; {\r\n    try {\r\n      const res = await fetch('https:\/\/httpbin.org\/status\/500');\r\n      console.log('Test request status:', res.status);\r\n    } catch (e) {\r\n      console.warn('Test request failed:', e.message);\r\n    }\r\n  };\r\n\r\n  return &lt;Button title=\"Fire test request\" onPress={fire} \/&gt;;\r\n}<\/code><\/pre>\n<p>Open the report in the Shakebug dashboard. You should see the <code>GET https:\/\/httpbin.org\/status\/500<\/code> call with a <code>500<\/code> status and its latency, plus the matching <code>console.log<\/code> line in the console logs. Delete the button once you&#8217;ve confirmed it.<br \/>\n<!-- [SCREENSHOT] Shakebug dashboard bug report showing the network log tab with the httpbin 500 request highlighted. Insert image here and delete this comment. --><\/p>\n<p>If the request doesn&#8217;t appear, check whether it fires before <code>ShakebugView<\/code> mounts. For example, a request in <code>index.js<\/code> before <code>AppRegistry.registerComponent<\/code> may run before the SDK is ready.<br \/>\n<!-- [VERIFY] Confirm with the SDK team whether requests made before ShakebugView mounts are captured. If they are, delete the paragraph above; if not, keep it as a plain tip. Delete this comment either way. --><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_4_Read_the_network_log_in_a_real_bug_report\"><\/span>Step 4: Read the network log in a real bug report<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>When a report comes in, work through it in this order:<\/p>\n<ol>\n<li><strong>Watch the recording first.<\/strong> Note the moment the user taps the thing that didn&#8217;t work.<\/li>\n<li><strong>Find the requests around that moment.<\/strong> Look for anything with a <code>4xx<\/code>\/<code>5xx<\/code> status, no status at all (the request never completed), or latency far above normal.<\/li>\n<li><strong>Read the response payload.<\/strong> A <code>422<\/code> or <code>400<\/code> body usually names the exact field or rule that failed. A <code>401<\/code> points you to token refresh logic.<\/li>\n<li><strong>Check the console logs next to it.<\/strong> If your <code>catch<\/code> block logs errors, the matching line confirms whether the app saw the failure or swallowed it.<\/li>\n<li><strong>Check the device data.<\/strong> A request that fails only on one OS version or app version points to a build or platform difference, not a backend problem.<\/li>\n<\/ol>\n<p><!-- [SCREENSHOT] A single bug report view with screenshot, recording, console log and network log visible together, with the failing 401 request highlighted. Insert image here and delete this comment. --><\/p>\n<p>Once you have the failing request, reproduce it outside the app. Take the URL and headers from the log and replay them with <code>curl<\/code>:<\/p>\n<pre class=\"wp-block-code\"><code>curl -i -X POST \"https:\/\/api.example.com\/v1\/profile\" \\\r\n  -H \"Authorization: Bearer &lt;token-from-report&gt;\" \\\r\n  -H \"Content-Type: application\/json\" \\\r\n  -d '{\"phone\": \"+15550100\"}'<\/code><\/pre>\n<p>If <code>curl<\/code> gets the same response, the bug is in the API or the payload. If <code>curl<\/code> succeeds, the problem is in the app: stale state, a race in token refresh, or a request fired with the wrong values.<\/p>\n<p>Treat any token you copy out of a report as live until it expires. Don&#8217;t paste it into a ticket or a Slack thread.<\/p>\n<p>For bugs that span several screens, <a href=\"https:\/\/www.shakebug.com\/blog\/session-replay-mobile-apps-shakebug-session-journey\/\">Session Journey<\/a> shows the screens and events leading up to the report, so you can see which earlier action triggered the failing request.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Frequently_asked_questions\"><\/span>Frequently asked questions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Does Shakebug capture Axios requests in React Native?<\/strong> Yes. Axios uses <code>XMLHttpRequest<\/code> in React Native, and Shakebug hooks both <code>XMLHttpRequest<\/code> and <code>fetch<\/code>, so Axios calls show up in the network log without an Axios interceptor.<\/p>\n<p><strong>Do I need to add an interceptor or enable network logging separately?<\/strong> No. Shakebug&#8217;s React Native installation docs have no network-logging option. Capture starts once <code>ShakebugView<\/code> wraps your app with valid app keys.<\/p>\n<p><strong>Are requests made by native modules captured?<\/strong> Shakebug documents hooks at the JavaScript <code>fetch<\/code>\/<code>XMLHttpRequest<\/code> layer. Requests made directly in native code, for example by a native SDK using OkHttp on Android or URLSession on iOS, never pass through that layer. Assume they aren&#8217;t in the log unless you&#8217;ve checked.<br \/>\n<!-- [VERIFY] Confirm native-layer capture behavior with the SDK team. If native SDKs also hook OkHttp\/URLSession, rewrite this answer to \"Yes\" AND update the FAQPage JSON-LD below to match. --><\/p>\n<p><strong>Can I hide auth tokens or sensitive fields from network logs?<\/strong> Shakebug&#8217;s React Native docs don&#8217;t list a redaction option for network logs as of September 2026. The SDK&#8217;s <code>ShakebugSdkProtectedView<\/code> hides sensitive UI from screenshots and recordings, but it doesn&#8217;t touch network data. If your requests carry sensitive values, keep tokens short-lived and limit who has dashboard access to reports. Check the installation docs for updates.<\/p>\n<p><strong>How is this different from Reactotron or a proxy like Charles or Proxyman?<\/strong> Those tools only see traffic from devices connected to your machine during development. Shakebug records requests on testers&#8217; and users&#8217; devices, including release builds. You get the network log for a bug you couldn&#8217;t reproduce yourself.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Get_started\"><\/span>Get started<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>If Shakebug is already in your app, you&#8217;re capturing network logs now. Fire one test request and file a report to confirm. If it isn&#8217;t installed yet, the <a href=\"https:\/\/www.shakebug.com\/blog\/react-native-crash-reporting-guide-shakebug\/\">React Native setup guide<\/a> takes you from <code>npm install<\/code> to your first report, and the <a href=\"https:\/\/www.shakebug.com\/mobile-app-bug-reporting\/react-native\">React Native SDK page<\/a> covers everything else the SDK captures. <a href=\"https:\/\/www.shakebug.com\/app\/registration\">Sign up free<\/a> to get your app keys. No credit card needed.<\/p>\n<p><!-- ============ FAQPage JSON-LD (must match visible FAQ above) ============ --><br \/>\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Does Shakebug capture Axios requests in React Native?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes. Axios uses XMLHttpRequest in React Native, and Shakebug hooks both XMLHttpRequest and fetch, so Axios calls show up in the network log without an Axios interceptor.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Do I need to add an interceptor or enable network logging separately?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"No. Shakebug's React Native installation docs have no network-logging option. Capture starts once ShakebugView wraps your app with valid app keys.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Are requests made by native modules captured?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Shakebug documents hooks at the JavaScript fetch\/XMLHttpRequest layer. Requests made directly in native code, for example by a native SDK using OkHttp on Android or URLSession on iOS, never pass through that layer. Assume they aren't in the log unless you've checked.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Can I hide auth tokens or sensitive fields from network logs?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Shakebug's React Native docs don't list a redaction option for network logs as of September 2026. The SDK's ShakebugSdkProtectedView hides sensitive UI from screenshots and recordings, but it doesn't touch network data. If your requests carry sensitive values, keep tokens short-lived and limit who has dashboard access to reports.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How is this different from Reactotron or a proxy like Charles or Proxyman?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Those tools only see traffic from devices connected to your machine during development. Shakebug records requests on testers' and users' devices, including release builds. You get the network log for a bug you couldn't reproduce yourself.\"\n      }\n    }\n  ]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to Capture Network Logs in React Native This is for React Native teams who already have Shakebug installed and want to use its network logs to debug API failures. If you haven&#8217;t set up the SDK yet, follow the React Native crash reporting setup guide first. This post assumes ShakebugView is already wrapping your [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":883,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[81],"tags":[],"class_list":["post-880","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-react-native-crash-reporting"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Capture Network Logs in React Native (Fetch, Axios, XHR)<\/title>\n<meta name=\"description\" content=\"Capture network logs in React Native without an interceptor. See what Shakebug records for Fetch, Axios and XHR calls and how to read them in a bug report.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Capture Network Logs in React Native (Fetch, Axios, XHR)\" \/>\n<meta property=\"og:description\" content=\"Capture network logs in React Native without an interceptor. See what Shakebug records for Fetch, Axios and XHR calls and how to read them in a bug report.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/\" \/>\n<meta property=\"og:site_name\" content=\"Shakebug\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-26T10:37:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-26T10:37:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/09\/shakebug_blog_banner_rn_network_logs.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"896\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kenil Bhikadiya\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kenil Bhikadiya\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/\"},\"author\":{\"name\":\"Kenil Bhikadiya\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/#\/schema\/person\/39d1b539b04bb95dc06eef577fcc04b7\"},\"headline\":\"How to Capture Network Logs in React Native\",\"datePublished\":\"2026-09-26T10:37:49+00:00\",\"dateModified\":\"2026-09-26T10:37:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/\"},\"wordCount\":1153,\"publisher\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/09\/shakebug_blog_banner_rn_network_logs.png\",\"articleSection\":[\"React Native Crash Reporting\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/\",\"url\":\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/\",\"name\":\"Capture Network Logs in React Native (Fetch, Axios, XHR)\",\"isPartOf\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/09\/shakebug_blog_banner_rn_network_logs.png\",\"datePublished\":\"2026-09-26T10:37:49+00:00\",\"dateModified\":\"2026-09-26T10:37:59+00:00\",\"description\":\"Capture network logs in React Native without an interceptor. See what Shakebug records for Fetch, Axios and XHR calls and how to read them in a bug report.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#primaryimage\",\"url\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/09\/shakebug_blog_banner_rn_network_logs.png\",\"contentUrl\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/09\/shakebug_blog_banner_rn_network_logs.png\",\"width\":1600,\"height\":896,\"caption\":\"React native network logs\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.shakebug.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Capture Network Logs in React Native\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/#website\",\"url\":\"https:\/\/www.shakebug.com\/blog\/\",\"name\":\"Shakebug - Blog\",\"description\":\"Shakebug\",\"publisher\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.shakebug.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/#organization\",\"name\":\"Shakebug - Blog\",\"url\":\"https:\/\/www.shakebug.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2022\/01\/logo.png\",\"contentUrl\":\"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2022\/01\/logo.png\",\"width\":192,\"height\":76,\"caption\":\"Shakebug - Blog\"},\"image\":{\"@id\":\"https:\/\/www.shakebug.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/#\/schema\/person\/39d1b539b04bb95dc06eef577fcc04b7\",\"name\":\"Kenil Bhikadiya\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.shakebug.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bb3c78464b66c3e7d253b31f2af5be6d?s=96&d=wp_user_avatar&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bb3c78464b66c3e7d253b31f2af5be6d?s=96&d=wp_user_avatar&r=g\",\"caption\":\"Kenil Bhikadiya\"},\"sameAs\":[\"https:\/\/www.softnoesis.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Capture Network Logs in React Native (Fetch, Axios, XHR)","description":"Capture network logs in React Native without an interceptor. See what Shakebug records for Fetch, Axios and XHR calls and how to read them in a bug report.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/","og_locale":"en_US","og_type":"article","og_title":"Capture Network Logs in React Native (Fetch, Axios, XHR)","og_description":"Capture network logs in React Native without an interceptor. See what Shakebug records for Fetch, Axios and XHR calls and how to read them in a bug report.","og_url":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/","og_site_name":"Shakebug","article_published_time":"2026-09-26T10:37:49+00:00","article_modified_time":"2026-09-26T10:37:59+00:00","og_image":[{"width":1600,"height":896,"url":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/09\/shakebug_blog_banner_rn_network_logs.png","type":"image\/png"}],"author":"Kenil Bhikadiya","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kenil Bhikadiya","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#article","isPartOf":{"@id":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/"},"author":{"name":"Kenil Bhikadiya","@id":"https:\/\/www.shakebug.com\/blog\/#\/schema\/person\/39d1b539b04bb95dc06eef577fcc04b7"},"headline":"How to Capture Network Logs in React Native","datePublished":"2026-09-26T10:37:49+00:00","dateModified":"2026-09-26T10:37:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/"},"wordCount":1153,"publisher":{"@id":"https:\/\/www.shakebug.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#primaryimage"},"thumbnailUrl":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/09\/shakebug_blog_banner_rn_network_logs.png","articleSection":["React Native Crash Reporting"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/","url":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/","name":"Capture Network Logs in React Native (Fetch, Axios, XHR)","isPartOf":{"@id":"https:\/\/www.shakebug.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#primaryimage"},"image":{"@id":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#primaryimage"},"thumbnailUrl":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/09\/shakebug_blog_banner_rn_network_logs.png","datePublished":"2026-09-26T10:37:49+00:00","dateModified":"2026-09-26T10:37:59+00:00","description":"Capture network logs in React Native without an interceptor. See what Shakebug records for Fetch, Axios and XHR calls and how to read them in a bug report.","breadcrumb":{"@id":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#primaryimage","url":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/09\/shakebug_blog_banner_rn_network_logs.png","contentUrl":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2026\/09\/shakebug_blog_banner_rn_network_logs.png","width":1600,"height":896,"caption":"React native network logs"},{"@type":"BreadcrumbList","@id":"https:\/\/www.shakebug.com\/blog\/capture-network-logs-react-native\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.shakebug.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Capture Network Logs in React Native"}]},{"@type":"WebSite","@id":"https:\/\/www.shakebug.com\/blog\/#website","url":"https:\/\/www.shakebug.com\/blog\/","name":"Shakebug - Blog","description":"Shakebug","publisher":{"@id":"https:\/\/www.shakebug.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.shakebug.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.shakebug.com\/blog\/#organization","name":"Shakebug - Blog","url":"https:\/\/www.shakebug.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.shakebug.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2022\/01\/logo.png","contentUrl":"https:\/\/www.shakebug.com\/blog\/wp-content\/uploads\/2022\/01\/logo.png","width":192,"height":76,"caption":"Shakebug - Blog"},"image":{"@id":"https:\/\/www.shakebug.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.shakebug.com\/blog\/#\/schema\/person\/39d1b539b04bb95dc06eef577fcc04b7","name":"Kenil Bhikadiya","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.shakebug.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/bb3c78464b66c3e7d253b31f2af5be6d?s=96&d=wp_user_avatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bb3c78464b66c3e7d253b31f2af5be6d?s=96&d=wp_user_avatar&r=g","caption":"Kenil Bhikadiya"},"sameAs":["https:\/\/www.softnoesis.com"]}]}},"_links":{"self":[{"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/posts\/880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/comments?post=880"}],"version-history":[{"count":2,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/posts\/880\/revisions"}],"predecessor-version":[{"id":882,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/posts\/880\/revisions\/882"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/media\/883"}],"wp:attachment":[{"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/media?parent=880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/categories?post=880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shakebug.com\/blog\/wp-json\/wp\/v2\/tags?post=880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}