{"adoption": {"forks": 448, "observed_at": "2026-08-28T04:03:29.953182+00:00", "stars": 1079}, "canonical_url": "https://ross.abutalabs.com/products/react-native-cameraroll", "card": {"archived": false, "artifact_type": "library", "description": "CameraRoll is a react-native native module that provides access to the local camera roll or photo library.", "domain": ["mobile-development", "media", "photography"], "enriched": true, "function": ["sdk", "file-system", "image-processing"], "health_score": 93, "homepage": null, "language": "Java", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["react-native-cameraroll/react-native-cameraroll"], "name": "react-native-cameraroll/react-native-cameraroll", "platform": ["cross-platform"], "pushed_at": "2026-08-19T02:33:17+00:00", "repo": "react-native-cameraroll/react-native-cameraroll", "stars": 1079, "tags": ["react-native", "camera-roll", "photo-library", "native-module", "media-access", "android", "ios"], "topics": [], "urls": [], "use_cases": ["save photos taken in my app to the device camera roll", "list photos and videos from the user's photo library", "pick media from the camera roll in a react native app", "access the photo library on android and ios with one api", "delete or manage photos in the device gallery", "request photo library permissions in react native"], "what_it_is": "A React Native native module that provides access to the local camera roll or photo library on Android and iOS. It was extracted from React Native core and lets apps save photos/videos and query the device's media library.", "when_to_avoid": ["you are building a native iOS or Android app without React Native", "you need full camera capture functionality rather than library access", "you need advanced media editing or transcoding features"], "when_to_choose": ["you are building a React Native app that needs to read from or write to the device's photo library", "you want a single cross-platform API for camera roll access on Android and iOS", "you are migrating from the deprecated CameraRoll API in React Native core"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/react-native-cameraroll", "repo": "react-native-cameraroll/react-native-cameraroll", "role": "main", "score": 74}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.953182+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:53:06.087764+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "053119eab6c740bb1f543018a4cd63756448e0d04a4e8411da7fe0761badce99", "fetched_at": "2026-08-28T04:03:29.953182+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-cameraroll/react-native-cameraroll"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.953182+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:53:06.087764+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "053119eab6c740bb1f543018a4cd63756448e0d04a4e8411da7fe0761badce99", "fetched_at": "2026-08-28T04:03:29.953182+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-cameraroll/react-native-cameraroll"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:53:06.087764+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "053119eab6c740bb1f543018a4cd63756448e0d04a4e8411da7fe0761badce99", "fetched_at": "2026-08-28T04:03:29.953182+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-cameraroll/react-native-cameraroll"}], "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:29.953182+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.953182+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.953182+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:53:06.087764+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "053119eab6c740bb1f543018a4cd63756448e0d04a4e8411da7fe0761badce99", "fetched_at": "2026-08-28T04:03:29.953182+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-cameraroll/react-native-cameraroll"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.953182+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.953182+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:53:06.087764+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "053119eab6c740bb1f543018a4cd63756448e0d04a4e8411da7fe0761badce99", "fetched_at": "2026-08-28T04:03:29.953182+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-cameraroll/react-native-cameraroll"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.953182+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.953182+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.953182+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:53:06.087764+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "053119eab6c740bb1f543018a4cd63756448e0d04a4e8411da7fe0761badce99", "fetched_at": "2026-08-28T04:03:29.953182+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-cameraroll/react-native-cameraroll"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.953182+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.953182+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:53:06.087764+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "053119eab6c740bb1f543018a4cd63756448e0d04a4e8411da7fe0761badce99", "fetched_at": "2026-08-28T04:03:29.953182+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-cameraroll/react-native-cameraroll"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:53:06.087764+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "053119eab6c740bb1f543018a4cd63756448e0d04a4e8411da7fe0761badce99", "fetched_at": "2026-08-28T04:03:29.953182+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-cameraroll/react-native-cameraroll"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:53:06.087764+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "053119eab6c740bb1f543018a4cd63756448e0d04a4e8411da7fe0761badce99", "fetched_at": "2026-08-28T04:03:29.953182+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-cameraroll/react-native-cameraroll"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:53:06.087764+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "053119eab6c740bb1f543018a4cd63756448e0d04a4e8411da7fe0761badce99", "fetched_at": "2026-08-28T04:03:29.953182+00:00", "kind": "readme", "missing": false, "url": "https://github.com/react-native-cameraroll/react-native-cameraroll"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 29}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2764, "days_push": 15, "days_rel": 392, "gap_med": 69.5, "n_releases_24m": 5}, "score": 74, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}