{"adoption": {"forks": 510, "observed_at": "2026-08-28T04:03:22.973622+00:00", "stars": 1050}, "canonical_url": "https://ross.abutalabs.com/products/react-native-callkeep", "card": {"archived": false, "artifact_type": "library", "description": "iOS CallKit framework and Android ConnectionService for React Native", "domain": ["mobile-development", "web-development", "messaging-platforms"], "enriched": true, "function": ["mobile-framework", "sdk", "plugin-system"], "health_score": 20, "homepage": null, "language": "Java", "license": "ISC", "license_family": "permissive", "maturity": "active", "member_repos": ["react-native-webrtc/react-native-callkeep"], "name": "react-native-webrtc/react-native-callkeep", "platform": [], "pushed_at": "2024-11-28T16:04:31+00:00", "repo": "react-native-webrtc/react-native-callkeep", "stars": 1050, "tags": ["callkit", "connectionservice", "voip", "webrtc", "react-native", "native-module", "telephony", "call-management", "ios", "android", "mobile"], "topics": ["callkit", "connectionservice", "ios", "android", "react-native", "voip", "webrtc", "connection-service", "call-kit"], "urls": [], "use_cases": ["show native incoming call screen for a voip app in react native", "integrate calls with the ios callkit framework", "use android connectionservice for self-managed calling apps", "handle call events in background for a react native calling app", "display system call ui for webrtc-based mobile calls"], "what_it_is": "A React Native library that wraps iOS CallKit and Android ConnectionService to give VoIP apps native call UI and system call integration. It lets developers report, display, and manage calls from JavaScript in React Native apps.", "when_to_avoid": ["you are building a native Swift/Kotlin app rather than React Native", "you need to test on simulators, since CallKit and ConnectionService require real devices", "your app only makes in-app calls without native call UI requirements"], "when_to_choose": ["you are building a React Native VoIP or calling app and need native call screens", "you want calls to appear in the system call log and interact with Bluetooth/other call audio", "you need PushKit/CallKit background call handling on iOS"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/react-native-callkeep", "repo": "react-native-webrtc/react-native-callkeep", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.973622+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:00:24.526121+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d296aca984844b401b52e1be0125a0e1c840186874d22c7f9a5f64b1f2743758", "fetched_at": "2026-08-28T04:03:22.973622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-webrtc/react-native-callkeep"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.973622+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:00:24.526121+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d296aca984844b401b52e1be0125a0e1c840186874d22c7f9a5f64b1f2743758", "fetched_at": "2026-08-28T04:03:22.973622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-webrtc/react-native-callkeep"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:00:24.526121+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d296aca984844b401b52e1be0125a0e1c840186874d22c7f9a5f64b1f2743758", "fetched_at": "2026-08-28T04:03:22.973622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-webrtc/react-native-callkeep"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.973622+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.973622+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.973622+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:00:24.526121+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d296aca984844b401b52e1be0125a0e1c840186874d22c7f9a5f64b1f2743758", "fetched_at": "2026-08-28T04:03:22.973622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-webrtc/react-native-callkeep"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.973622+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.973622+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:00:24.526121+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d296aca984844b401b52e1be0125a0e1c840186874d22c7f9a5f64b1f2743758", "fetched_at": "2026-08-28T04:03:22.973622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-webrtc/react-native-callkeep"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.973622+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.973622+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.973622+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:00:24.526121+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d296aca984844b401b52e1be0125a0e1c840186874d22c7f9a5f64b1f2743758", "fetched_at": "2026-08-28T04:03:22.973622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-webrtc/react-native-callkeep"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.973622+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.973622+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:00:24.526121+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d296aca984844b401b52e1be0125a0e1c840186874d22c7f9a5f64b1f2743758", "fetched_at": "2026-08-28T04:03:22.973622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-webrtc/react-native-callkeep"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:00:24.526121+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d296aca984844b401b52e1be0125a0e1c840186874d22c7f9a5f64b1f2743758", "fetched_at": "2026-08-28T04:03:22.973622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-webrtc/react-native-callkeep"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:00:24.526121+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d296aca984844b401b52e1be0125a0e1c840186874d22c7f9a5f64b1f2743758", "fetched_at": "2026-08-28T04:03:22.973622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-webrtc/react-native-callkeep"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:00:24.526121+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d296aca984844b401b52e1be0125a0e1c840186874d22c7f9a5f64b1f2743758", "fetched_at": "2026-08-28T04:03:22.973622+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-webrtc/react-native-callkeep"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2826, "days_push": 643, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}