{"id":18782867,"url":"https://github.com/rescript-react-native/netinfo","last_synced_at":"2025-10-04T18:58:18.868Z","repository":{"id":40736357,"uuid":"206236750","full_name":"rescript-react-native/netinfo","owner":"rescript-react-native","description":"ReScript bindings for @react-native-community/netinfo","archived":false,"fork":false,"pushed_at":"2022-06-25T07:46:26.000Z","size":4318,"stargazers_count":9,"open_issues_count":4,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-11T11:37:27.971Z","etag":null,"topics":["react","react-native","rescript","rescript-react","rescript-react-native"],"latest_commit_sha":null,"homepage":"","language":"ReScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rescript-react-native.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-04T05:14:08.000Z","updated_at":"2024-06-03T08:44:51.000Z","dependencies_parsed_at":"2022-08-27T04:13:12.084Z","dependency_job_id":null,"html_url":"https://github.com/rescript-react-native/netinfo","commit_stats":null,"previous_names":["reason-react-native/netinfo"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/rescript-react-native/netinfo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rescript-react-native%2Fnetinfo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rescript-react-native%2Fnetinfo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rescript-react-native%2Fnetinfo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rescript-react-native%2Fnetinfo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rescript-react-native","download_url":"https://codeload.github.com/rescript-react-native/netinfo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rescript-react-native%2Fnetinfo/sbom","scorecard":{"id":766853,"data":{"date":"2025-08-11","repo":{"name":"github.com/rescript-react-native/netinfo","commit":"e0d9d9530cfe5ecbae031378eed1980b6baa7ab6"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/rescript-react-native/netinfo/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/rescript-react-native/netinfo/build.yml/main?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"20 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-h5c3-5r3r-rr8q","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-r683-j2x4-v87g","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-44c6-4v22-4mhx","Warn: Project is vulnerable to: GHSA-4x5v-gmq8-25ch","Warn: Project is vulnerable to: GHSA-g4rg-993r-mgx7","Warn: Project is vulnerable to: GHSA-4rq4-32rv-6wp6","Warn: Project is vulnerable to: GHSA-64g7-mvw6-v9qj"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T01:06:13.127Z","repository_id":40736357,"created_at":"2025-08-23T01:06:13.127Z","updated_at":"2025-08-23T01:06:13.127Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278358485,"owners_count":25973949,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["react","react-native","rescript","rescript-react","rescript-react-native"],"created_at":"2024-11-07T20:37:19.095Z","updated_at":"2025-10-04T18:58:18.822Z","avatar_url":"https://github.com/rescript-react-native.png","language":"ReScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `@rescript-react-native/netinfo`\n\n[![Build Status](https://github.com/rescript-react-native/netinfo/workflows/Build/badge.svg)](https://github.com/rescript-react-native/netinfo/actions)\n[![Version](https://img.shields.io/npm/v/@rescript-react-native/netinfo.svg)](https://www.npmjs.com/@rescript-react-native/netinfo)\n[![ReScript Forum](https://img.shields.io/discourse/posts?color=e6484f\u0026label=ReScript%20Forum\u0026server=https%3A%2F%2Fforum.rescript-lang.org)](https://forum.rescript-lang.org/)\n\n[ReScript](https://rescript-lang.org) bindings for\n[`@react-native-community/netinfo`](https://github.com/react-native-netinfo/react-native-netinfo).\n\nExposed as `ReactNativeNetInfo` module.\n\n`@rescript-react-native/netinfo` X.y.\\* means it's compatible with\n`@react-native-community/netinfo` X.y.\\*\n\n## Installation\n\nWhen\n[`@react-native-community/netinfo`](https://github.com/react-native-netinfo/react-native-netinfo)\nis properly installed \u0026 configured by following their installation instructions,\nyou can install the bindings:\n\n```console\nnpm install @rescript-react-native/netinfo\n# or\nyarn add @rescript-react-native/netinfo\n```\n\n`@rescript-react-native/netinfo` should be added to `bs-dependencies` in your\n`bsconfig.json`:\n\n```diff\n{\n  //...\n  \"bs-dependencies\": [\n    \"@rescript/react\",\n    \"rescript-react-native\",\n    // ...\n+    \"@rescript-react-native/netinfo\"\n  ],\n  //...\n}\n```\n\n## Usage\n\n### Types\n\n#### `netInfoConfiguration`\n\nTo be used only when the platform does not natively supply information on\ninternet reachability.\n\n| Property                     | Type               | Description                                                                                                                                                                |\n| ---------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `reachabilityUrl`            | `string`           | URL used to test if the internet is reachable.                                                                                                                             |\n| `reachabilityTest`           | `response =\u003e bool` | A function to handle the `response` object returned when the reachability URL is called. It should return `true` if the response indicates that the internet is reachable. |\n| `reachabilityShortTimeout`   | `float`            | Number of seconds between internet reachability checks when the internet was not previously detected.                                                                      |\n| `reachabilityLongTimeout`    | `float`            | Number of seconds between internet reachability checks when the internet was previously detected.                                                                          |\n| `reachabilityRequestTimeout` | `float`            | Number of milliseconds allowed before reachability check fails.                                                                                                            |\n\n#### `netInfoStateType`\n\nKind of the current network connection. Valid values are:\n\n| Value       | Platforms             | Connection State |\n| ----------- | --------------------- | ---------------- |\n| `none`      | Android, iOS, Windows | Not active       |\n| `unknown`   | Android, iOS, Windows | Undetermined     |\n| `cellular`  | Android, iOS, Windows | Active           |\n| `wifi`      | Android, iOS, Windows | Active           |\n| `bluetooth` | Android               | Active           |\n| `ethernet`  | Android, Windows      | Active           |\n| `wimax`     | Android               | Active           |\n| `vpn`       | Android               | Active           |\n| `other`     | Android, iOS, Windows | Active           |\n\n#### `netInfoCellularGeneration`\n\nCellular generation of the current network connection. Valid values are:\n\n| Value   | Notes                                                                               |\n| ------- | ----------------------------------------------------------------------------------- |\n| `net2g` | Inlined as \"2g\". Returned for CDMA, EDGE, GPRS and IDEN connections                 |\n| `net3g` | Inlined as \"3g\". Returned for EHRPD, EVDO, HSPA, HSUPA, HSDPA and UTMS connections. |\n| `net4g` | Inlined as \"4g\". Returned for HSPAP and LTE connections                             |\n\n#### `netInfoState`\n\n```rescript\ntype netInfoState = {\n  .\n  \"_type\": netInfoStateType,\n  \"isConnected\": bool,\n  \"isInternetReachable\": bool,\n  \"isWifiEnabled\": bool,\n  \"details\": Js.Null.t(details),\n};\n```\n\n- `isConnected` will be `true` if there is an active connection (but not imply\n  that the internet is necessarily reachable).\n- `isInternetReachable` will be `true` if the internet can be reached using the\n  active connection\n- `isWifiEnabled` will be `true` if WiFi is enabled on the device, and `false`\n  otherwise. _Android only_.\n\n`details` key will have value `Js.Null.empty` (`null`) when `_type` is `null` or\n`unknown`.\n\n#### `details`\n\n`details` depends on `_type` given within [`netInfoState`](#netInfoState). If\n`_type` is not `null` or `unknown`, `details` is an object as below:\n\n```rescript\ntype details = {\n  .\n  \"isConnectionExpensive\": bool,\n  \"ssid\": Js.Nullable.t(string),\n  \"strength\": Js.Nullable.t(int),\n  \"ipAddress\": Js.Nullable.t(string),\n  \"subnet\": Js.Nullable.t(string),\n  \"cellularGeneration\": Js.Nullable.t(netInfoCellularGeneration),\n  \"carrier\": Js.Nullable.t(string),\n};\n```\n\n| Property                | Platform              | Type   | Description                                                                         |\n| ----------------------- | --------------------- | ------ | ----------------------------------------------------------------------------------- |\n| `isConnectionExpensive` | Android, iOS, Windows | `bool` | If network connection is considered _expensive_ in either energy or monetary terms. |\n\nNote that some keys may only exist in the JS object when `_type` is `wifi` or\n`cellular`. Accordingly, in Reason, keys may have values\n`Js.Nullable.undefined`.\n\n- `ssid`, `strength`, `ipAddress` and `subnet` will have value\n  `Js.Nullable.undefined` unless `_type` is `wifi`.\n- `cellularGeneration` and `carrier` will have value `Js.Nullable.undefined`\n  unless `_type` is cellular.\n\n##### `_type` is `wifi`\n\n| Property    | Platform                | Type                    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                  |\n| ----------- | ----------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `ssid`      | Android, iOS (not tvOS) | `Js.Nullable.t(string)` | SSID of the network. May have value `Js.Nullable.undefined`, `Js.Nullable.null`, or be an empty string if undetermined. **On iOS, make sure your app meets at least one of the [following requirements](https://developer.apple.com/documentation/systemconfiguration/1614126-cncopycurrentnetworkinfo?language=objc#discussion). On Android, make sure the `ACCESS_FINE_LOCATION` permission is listed in `AndroidManifest.xml` and accepted by the user**. |\n| `strength`  | Android                 | `Js.Nullable.t(string)` | If signal strength can be determined, will be an integer number from `0` to `5`. May have value `Js.Nullable.undefined` otherwise.                                                                                                                                                                                                                                                                                                                           |\n| `ipAddress` | Android, iOS            | `Js.Nullable.t(string)` | External IP address. Can be in IPv4 or IPv6 format. May have value `Js.Nullable.undefined` if undetermined.                                                                                                                                                                                                                                                                                                                                                  |\n| `subnet`    | Android, iOS            | `Js.Nullable.t(string)` | The subnet mask in IPv4 format. May have value `Js.Nullable.undefined` if undetermined.                                                                                                                                                                                                                                                                                                                                                                      |\n\n##### `type` is `cellular`\n\n| Property             | Platform              | Type                                                      | Description                                                                                                                                                                         |\n| -------------------- | --------------------- | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `cellularGeneration` | Android, iOS, Windows | [`NetInfoCellularGeneration`](#netinfocellulargeneration) | Generation of cell network the user is connected to. This can give an indication of speed, but no guarantees. May have value `Js.Nullable.null` if generation cannot be determined. |\n| `carrier`            | Android, iOS          | `string`                                                  | The network carrier name. May have value `Js.Nullable.undefined` or may be empty if undetermined.                                                                                   |\n\n### Methods\n\n#### `configure`\n\n```rescript\nconfigure: netInfoConfiguration =\u003e unit\n```\n\n#### `fetch`\n\nTo query state of the active connection, returns `netInfoState` wrapped in a\n`Promise`.\n\n```rescript\nfetch: unit =\u003e Js.Promise.t(netInfoState)\n```\n\nBelow example demonstrates determination of the cellular connection generation,\nusing this method.\n\n```rescript\nReact.useEffect0(() =\u003e {\n  Js.Promise.(\n    ReactNativeNetInfo.fetch()\n    |\u003e then_(w =\u003e\n         {\n           switch (w##details-\u003eJs.Null.toOption) {\n           | None =\u003e \"Connection type is none or unknown\"-\u003eJs.Console.warn\n           | Some(x) =\u003e\n             let y = x##cellularGeneration;\n             switch (y-\u003eJs.Nullable.toOption) {\n             | None =\u003e\n               if (y == Js.Nullable.undefined) {\n                 \"Connection type is wifi, bluetooth, ethernet, wimax, vpn or other\"\n                 -\u003eJs.Console.warn;\n               } else {\n                 \"Connection generation unknown\"-\u003eJs.Console.warn;\n               }\n             | Some(z) =\u003e\n               if (z == ReactNativeNetInfo.net2G) {\n                 \"2G connection\"-\u003eJs.Console.warn;\n               } else if (z == ReactNativeNetInfo.net3G) {\n                 \"3G connection\"-\u003eJs.Console.warn;\n               } else {\n                 \"4G connection\"-\u003eJs.Console.warn;\n               }\n             };\n           };\n         }\n         -\u003eresolve\n       )\n    |\u003e catch(err =\u003e \"error\"-\u003eJs.Console.warn-\u003eresolve)\n    |\u003e ignore\n  );\n  None;\n});\n```\n\n#### `fetchInterface`\n\nTo query the connection state for a particular interface.\n\n```rescript\nfetchInterface: [ | `cellular | `ethernet | `wifi] =\u003e Js.Promise.t(netInfoState)\n```\n\n#### `addEventListener`\n\nTo subscribe to the connection state; accepts a listener of type\n`netInfoState =\u003e unit` and returns an unsubscribe method of type `unit =\u003e unit`.\nThe listener will be called once following subscription and each time connection\nstate changes.\n\n```rescript\naddEventListener: (netInfoState =\u003e unit) =\u003e t\n```\n\nwhere\n\n```rescript\ntype t = unit =\u003e unit\n```\n\nBelow example demonstrates subscribing to changes in connection state:\n\n```rescript\nReact.useEffect0(() =\u003e {\n  let remove =\n    ReactNativeNetInfo.addEventListener(w =\u003e\n      (\n        switch (w##details-\u003eJs.Null.toOption) {\n        | None =\u003e \"Connection type is none or unknown\"\n        | Some(x) =\u003e\n          let y = x##cellularGeneration;\n          switch (y-\u003eJs.Nullable.toOption) {\n          | None =\u003e\n            if (y == Js.Nullable.undefined) {\n              \"Connection type is wifi, bluetooth, ethernet, wimax, vpn or other\";\n            } else {\n              \"Connection generation unknown\";\n            }\n          | Some(z) =\u003e\n            if (z == ReactNativeNetInfo.net2G) {\n              \"2G connection\";\n            } else if (z == ReactNativeNetInfo.net3G) {\n              \"3G connection\";\n            } else {\n              \"4G connection\";\n            }\n          };\n        }\n      )\n      -\u003eJs.Console.warn\n    );\n  Js.Console.warn(remove);\n  Some(() =\u003e remove());\n});\n```\n\n#### `useNetInfo`\n\nThis method returns a React Hook with type `netInfoState`\n\n```rescript\nuseNetInfo: unit =\u003e netInfoState\n```\n\nBelow example demonstrates its use within a `Text` component:\n\n```rescript\n\u003cText\u003e\n  (\n    switch (ReactNativeNetInfo.useNetInfo()##details-\u003eJs.Null.toOption) {\n    | None =\u003e \"Connection type is none or unknown\"\n    | Some(x) =\u003e\n      let y = x##cellularGeneration;\n      switch (y-\u003eJs.Nullable.toOption) {\n      | None =\u003e\n        if (y == Js.Nullable.undefined) {\n          \"Connection type is wifi, bluetooth, ethernet, wimax, vpn or other\";\n        } else {\n          \"Connection generation unknown\";\n        }\n      | Some(z) =\u003e\n        if (z == ReactNativeNetInfo.net2G) {\n          \"2G connection\";\n        } else if (z == ReactNativeNetInfo.net3G) {\n          \"3G connection\";\n        } else {\n          \"4G connection\";\n        }\n      };\n    }\n  )\n  -\u003eReact.string\n\u003c/Text\u003e\n```\n\n---\n\n## Changelog\n\nCheck the [changelog](./CHANGELOG.md) for more informations about recent\nreleases.\n\n---\n\n## Contribute\n\nRead the\n[contribution guidelines](https://github.com/rescript-react-native/.github/blob/master/CONTRIBUTING.md)\nbefore contributing.\n\n## Code of Conduct\n\nWe want this community to be friendly and respectful to each other. Please read\n[our full code of conduct](https://github.com/rescript-react-native/.github/blob/master/CODE_OF_CONDUCT.md)\nso that you can understand what actions will and will not be tolerated.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frescript-react-native%2Fnetinfo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frescript-react-native%2Fnetinfo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frescript-react-native%2Fnetinfo/lists"}