diff --git a/node_modules/react-native-blob-util/android/src/main/java/com/ReactNativeBlobUtil/ReactNativeBlobUtilFS.java b/node_modules/react-native-blob-util/android/src/main/java/com/ReactNativeBlobUtil/ReactNativeBlobUtilFS.java
index c75347f..76d9b9e 100644
--- a/node_modules/react-native-blob-util/android/src/main/java/com/ReactNativeBlobUtil/ReactNativeBlobUtilFS.java
+++ b/node_modules/react-native-blob-util/android/src/main/java/com/ReactNativeBlobUtil/ReactNativeBlobUtilFS.java
@@ -257,9 +257,9 @@ class ReactNativeBlobUtilFS {
             if (resolved != null && resolved.startsWith(ReactNativeBlobUtilConst.FILE_PREFIX_BUNDLE_ASSET)) {
                 String assetName = path.replace(ReactNativeBlobUtilConst.FILE_PREFIX_BUNDLE_ASSET, "");
                 // This fails should an asset file be >2GB
-                length = (int) ReactNativeBlobUtilImpl.RCTContext.getAssets().openFd(assetName).getLength();
-                bytes = new byte[length];
                 InputStream in = ReactNativeBlobUtilImpl.RCTContext.getAssets().open(assetName);
+                length = in.available();
+                bytes = new byte[length];
                 bytesRead = in.read(bytes, 0, length);
                 in.close();
             }
diff --git a/node_modules/react-native-blob-util/android/src/main/java/com/ReactNativeBlobUtil/ReactNativeBlobUtilReq.java b/node_modules/react-native-blob-util/android/src/main/java/com/ReactNativeBlobUtil/ReactNativeBlobUtilReq.java
index 9aee829..0ecc59b 100644
--- a/node_modules/react-native-blob-util/android/src/main/java/com/ReactNativeBlobUtil/ReactNativeBlobUtilReq.java
+++ b/node_modules/react-native-blob-util/android/src/main/java/com/ReactNativeBlobUtil/ReactNativeBlobUtilReq.java
@@ -634,7 +634,9 @@ public class ReactNativeBlobUtilReq extends BroadcastReceiver implements Runnabl
      */
     private void done(Response resp) {
         boolean isBlobResp = isBlobResponse(resp);
-        emitStateEvent(getResponseInfo(resp, isBlobResp));
+        WritableMap map = getResponseInfo(resp,isBlobResp);
+        emitStateEvent(getResponseInfo(resp,isBlobResp));
+
         switch (responseType) {
             case KeepInMemory:
                 try {
@@ -652,7 +654,7 @@ public class ReactNativeBlobUtilReq extends BroadcastReceiver implements Runnabl
                         ins.close();
                         os.flush();
                         os.close();
-                        invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_PATH, dest);
+                        invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_PATH, dest, map);
                     }
                     // response data directly pass to JS context as string.
                     else {
@@ -674,11 +676,11 @@ public class ReactNativeBlobUtilReq extends BroadcastReceiver implements Runnabl
                                 invoke_callback("Error from file transformer:" + e.getLocalizedMessage(), null);
                                 return;
                             }
-                            invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_PATH, this.destPath);
+                            invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_PATH, this.destPath,map);
                             return;
                         }
                         if (responseFormat == ResponseFormat.BASE64) {
-                            invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_BASE64, android.util.Base64.encodeToString(b, Base64.NO_WRAP));
+                            invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_BASE64, android.util.Base64.encodeToString(b, Base64.NO_WRAP),map);
                             return;
                         }
                         try {
@@ -688,21 +690,21 @@ public class ReactNativeBlobUtilReq extends BroadcastReceiver implements Runnabl
                             decoder.decode(ByteBuffer.wrap(b));
                             // If the data contains invalid characters the following lines will be skipped.
                             String utf8 = new String(b, charSet);
-                            invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_UTF8, utf8);
+                            invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_UTF8, utf8,map);
                         }
                         // This usually means the data contains invalid unicode characters but still valid data,
                         // it's binary data, so send it as a normal string
                         catch (CharacterCodingException ignored) {
                             if (responseFormat == ResponseFormat.UTF8) {
                                 String utf8 = new String(b);
-                                invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_UTF8, utf8);
+                                invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_UTF8, utf8,map);
                             } else {
-                                invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_BASE64, android.util.Base64.encodeToString(b, Base64.NO_WRAP));
+                                invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_BASE64, android.util.Base64.encodeToString(b, Base64.NO_WRAP),map);
                             }
                         }
                     }
                 } catch (IOException e) {
-                    invoke_callback("ReactNativeBlobUtil failed to encode response data to BASE64 string.", null);
+                    invoke_callback("ReactNativeBlobUtil failed to encode response data to BASE64 string.", null,map);
                 }
                 break;
             case FileStorage:
@@ -742,18 +744,18 @@ public class ReactNativeBlobUtilReq extends BroadcastReceiver implements Runnabl
                 }
 
                 if (ReactNativeBlobUtilFileResp != null && !ReactNativeBlobUtilFileResp.isDownloadComplete()) {
-                    invoke_callback("Download interrupted.", null);
+                    invoke_callback("Download interrupted.", null,map);
                 } else {
                     this.destPath = this.destPath.replace("?append=true", "");
-                    invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_PATH, this.destPath);
+                    invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_PATH, this.destPath,map);
                 }
 
                 break;
             default:
                 try {
-                    invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_UTF8, new String(resp.body().bytes(), "UTF-8"));
+                    invoke_callback(null, ReactNativeBlobUtilConst.RNFB_RESPONSE_UTF8, new String(resp.body().bytes(), "UTF-8"),map);
                 } catch (IOException e) {
-                    invoke_callback("ReactNativeBlobUtil failed to encode response data to UTF8 string.", null);
+                    invoke_callback("ReactNativeBlobUtil failed to encode response data to UTF8 string.", null,map);
                 }
                 break;
         }
diff --git a/node_modules/react-native-blob-util/fetch.js b/node_modules/react-native-blob-util/fetch.js
index 97e5263..640aaea 100644
--- a/node_modules/react-native-blob-util/fetch.js
+++ b/node_modules/react-native-blob-util/fetch.js
@@ -244,7 +244,7 @@ export function fetch(...args: any): Promise {
          *                  dose the response data presents.
          * @param data {string} Response data or its reference.
          */
-        req(options, taskId, method, url, headers || {}, body, (err, rawType, data) => {
+        req(options, taskId, method, url, headers || {}, body, (err, rawType, data, responseInfo) => {
 
             // task done, remove event listeners
             subscription.remove();
@@ -270,6 +270,9 @@ export function fetch(...args: any): Promise {
                         fs.session(options.session).add(data);
                 }
                 respInfo.rnfbEncode = rawType;
+                if (respInfo.status === undefined || respInfo.status === null) {
+                    respInfo.status = responseInfo?.status
+                }
                 resolve(new FetchBlobResponse(taskId, respInfo, data));
             }
 
diff --git a/node_modules/react-native-blob-util/index.js b/node_modules/react-native-blob-util/index.js
index ecaddf9..70d6ba5 100644
--- a/node_modules/react-native-blob-util/index.js
+++ b/node_modules/react-native-blob-util/index.js
@@ -14,6 +14,7 @@ import ios from './ios';
 import JSONStream from './json-stream';
 import {config, fetch} from './fetch';
 import URIUtil from './utils/uri';
+import getUUID from "./utils/uuid";
 import CanceledFetchError from './class/ReactNativeBlobUtilCanceledFetchError';
 
 const {
@@ -45,9 +46,9 @@ if (!ReactNativeBlobUtil || !ReactNativeBlobUtil.fetchBlobForm || !ReactNativeBl
 }
 
 export {ReactNativeBlobUtilConfig, ReactNativeBlobUtilResponseInfo, ReactNativeBlobUtilStream} from './types';
-export { URIUtil } from './utils/uri';
+export { URIUtil, getUUID };
 export {FetchBlobResponse} from './class/ReactNativeBlobUtilBlobResponse';
-export { getUUID } from './utils/uuid';
+
 export default {
     fetch,
     base64,
diff --git a/node_modules/react-native-blob-util/ios/ReactNativeBlobUtilRequest.mm b/node_modules/react-native-blob-util/ios/ReactNativeBlobUtilRequest.mm
index d4e468a..ac9e42a 100644
--- a/node_modules/react-native-blob-util/ios/ReactNativeBlobUtilRequest.mm
+++ b/node_modules/react-native-blob-util/ios/ReactNativeBlobUtilRequest.mm
@@ -438,13 +438,20 @@ - (void) URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCom
         }
     }
 
+    NSHTTPURLResponse *response = (NSHTTPURLResponse *) [task response];
+    
 
     callback(@[
                errMsg ?: [NSNull null],
                rnfbRespType ?: @"",
-               respStr ?: [NSNull null]
+               respStr ?: [NSNull null],
+                 @{
+                     @"status": [NSNumber numberWithInteger:[response statusCode]]
+                 }
                ]);
 
+    
+
     respData = nil;
     receivedBytes = 0;
     [session finishTasksAndInvalidate];
