{"id":13565237,"url":"https://github.com/odemolliens/react-native-sim-cards-manager","last_synced_at":"2025-04-13T16:22:26.950Z","repository":{"id":37857797,"uuid":"467479173","full_name":"odemolliens/react-native-sim-cards-manager","owner":"odemolliens","description":"React Native plugin to manage Sim card(s) \u0026 eSim","archived":false,"fork":false,"pushed_at":"2024-05-29T06:45:46.000Z","size":985,"stargazers_count":52,"open_issues_count":20,"forks_count":24,"subscribers_count":6,"default_branch":"develop","last_synced_at":"2024-05-29T19:32:59.261Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","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/odemolliens.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-08T11:13:33.000Z","updated_at":"2024-06-05T12:53:05.132Z","dependencies_parsed_at":"2023-02-09T15:46:01.041Z","dependency_job_id":"eecb58d8-de9f-4e19-a148-ea12c24d760b","html_url":"https://github.com/odemolliens/react-native-sim-cards-manager","commit_stats":{"total_commits":76,"total_committers":7,"mean_commits":"10.857142857142858","dds":0.618421052631579,"last_synced_commit":"a12c2268915d1f560cdc5edf84223fe3a4ee5fc9"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odemolliens%2Freact-native-sim-cards-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odemolliens%2Freact-native-sim-cards-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odemolliens%2Freact-native-sim-cards-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odemolliens%2Freact-native-sim-cards-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/odemolliens","download_url":"https://codeload.github.com/odemolliens/react-native-sim-cards-manager/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248741851,"owners_count":21154389,"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","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":[],"created_at":"2024-08-01T13:01:42.947Z","updated_at":"2025-04-13T16:22:26.930Z","avatar_url":"https://github.com/odemolliens.png","language":"Java","funding_links":[],"categories":["Java","SIM Cards"],"sub_categories":["eSIM / eUICC"],"readme":"# 📱 react-native-sim-cards-manager\n\nA unified library merging features from multiple SIM card management libraries:\n\n- [react-native-esim](https://github.com/markneh/react-native-esim)\n- [react-native-sim-data](https://github.com/pocesar/react-native-sim-data)\n\n---\n\n## 🚀 Why use this library?\n\n✅ Unified APIs for eSIM and SIM data management.  \n✅ Bug fixes and enhancements for improved stability.  \n✅ Simplified transition from previous libraries (requires some code adaptation).  \n\n---\n\n## 📦 Installation\n\nInstall the package using npm:\n\n```sh\nnpm install react-native-sim-cards-manager\n```\n\n---\n\n## 🛠 Debugging\n\n### Android\n\nTo debug device logs during eSIM setup, use the following command:\n\n```sh\nadb logcat | grep \"Euicc\"\n```\n\n---\n\n## 🔐 Permissions\n\n### Android\n\n- **Minimum API Level:** 22  \n- Add the following permission in `AndroidManifest.xml` for `TelephonyManager`:\n\n```xml\n\u003cuses-permission android:name=\"android.permission.READ_PHONE_STATE\" /\u003e\n```\n\nFor **eSIM features**:\n\n- For regular apps, follow the instructions in the [carrier privileges guide](https://source.android.com/docs/core/connect/esim-overview#carrier-privileges).\n- For system apps, include the following permission:\n\n```xml\n\u003cuses-permission android:name=\"android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS\" /\u003e\n```\n\nMore details [here](https://source.android.com/devices/tech/connect/esim-euicc-api#download-sub).\n\n### iOS\n\n- **Minimum API Level:** 12 (eSIM features)  \n- Requires eSIM entitlement. Learn more [here](https://stackoverflow.com/a/60162323).  \n\n⚠️ **Note:** As of iOS 14.2, there is a known bug where an unknown result may be returned before completing eSIM setup. Details [here](https://developer.apple.com/forums/thread/662001).\n\n---\n\n## 📖 Usage\n\n### 📲 Retrieve SIM Cards\n\nFetch a list of SIM cards. The result may contain no elements (if no SIM cards are detected) or multiple entries.\n\n#### 📌 Method: `getSimCards`\n\nHandles permission requests and accepts an optional `_rationale_` parameter.\n\n```ts\nimport SimCardsManagerModule from 'react-native-sim-cards-manager';\n\nSimCardsManagerModule.getSimCards({\n  title: 'App Permission',\n  message: 'Custom message',\n  buttonNeutral: 'Not now',\n  buttonNegative: 'Not OK',\n  buttonPositive: 'OK',\n})\n  .then((array: Array\u003cany\u003e) =\u003e {\n    // Handle results\n  })\n  .catch((error) =\u003e {\n    // Handle errors\n  });\n```\n\n#### 📌 Method: `getSimCardsNative`\n\nUsed internally by `getSimCards`. Does not handle permissions.\n\n```ts\nimport SimCardsManagerModule from 'react-native-sim-cards-manager';\n\nSimCardsManagerModule.getSimCardsNative()\n  .then((array: Array\u003cany\u003e) =\u003e {\n    // Handle results\n  })\n  .catch((error) =\u003e {\n    // Handle errors\n  });\n```\n\n#### 📊 Available Data\n\n| Field             | iOS | Android |\n| ------------------|-----|---------|\n| carrierName       | ✅  | ✅      |\n| displayName       | ❌  | ✅      |\n| isoCountryCode    | ✅  | ✅      |\n| mobileCountryCode | ✅  | ✅      |\n| mobileNetworkCode | ✅  | ✅      |\n| isNetworkRoaming  | ❌  | ✅      |\n| isDataRoaming     | ❌  | ✅      |\n| simSlotIndex      | ❌  | ✅      |\n| phoneNumber       | ❌  | ✅      |\n| simSerialNumber   | ❌  | ✅      |\n| subscriptionId    | ❌  | ✅      |\n| allowsVOIP        | ✅  | ❌      |\n\n---\n\n### 🔍 eSIM Support Check\n\nVerify if the device supports eSIM functionality.\n\n```ts\nimport SimCardsManagerModule from 'react-native-sim-cards-manager';\n\nSimCardsManagerModule.isEsimSupported()\n  .then((isSupported: boolean) =\u003e {\n    // Handle result\n  })\n  .catch((error) =\u003e {\n    // Handle errors\n  });\n```\n\n---\n\n### ⚙️ eSIM Setup\n\nConfigure an eSIM using an activation code.\n\n#### 📌 Parameters\n\n| Field            | Mandatory | Description |\n|------------------|-----------|-------------|\n| address          | N/A       | Carrier network's eSIM server address. |\n| confirmationCode | N/A       | Confirmation code for eSIM provisioning. |\n| eid              | N/A       | eUICC identifier. |\n| iccid            | N/A       | Integrated Circuit Card Identifier. |\n| matchingId       | N/A       | Matching identifier for the eSIM profile. |\n| oid              | N/A       | Object Identifier for the provisioning request. |\n\n#### ⚠️ Error Codes\n\n| Code             | Description |\n|------------------|-------------|\n| 0                | Feature not available. |\n| 1                | Device does not support cellular plans. |\n| 2                | OS failed to add the plan. |\n| 3 (iOS)          | Unknown OS error. |\n| 3 (Android)      | OS or Intent/Activity error. |\n\n```ts\nimport SimCardsManagerModule from 'react-native-sim-cards-manager';\n\nSimCardsManagerModule.setupEsim({\n  confirmationCode,\n  address: '',\n})\n  .then((isPlanAdded: boolean) =\u003e {\n    // Handle success\n  })\n  .catch((error) =\u003e {\n    // Handle errors\n  });\n```\n\n---\n\n## 👨‍💻 Contributing\n\nRead the [Contributing Guide](CONTRIBUTING.md) for details on how to contribute to the project.\n\n---\n\n## 📜 License\n\nMIT License.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fodemolliens%2Freact-native-sim-cards-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fodemolliens%2Freact-native-sim-cards-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fodemolliens%2Freact-native-sim-cards-manager/lists"}