{"adoption": {"forks": 48, "observed_at": "2026-08-28T04:05:09.682699+00:00", "stars": 1602}, "canonical_url": "https://ross.abutalabs.com/products/bamlab-flashlight", "card": {"archived": false, "artifact_type": "cli-tool", "description": "📱⚡️ Lighthouse for Mobile - audits your app and gives a performance score to your Android apps (native, React Native, Flutter..). Measure performance on CLI, E2E tests, CI...", "domain": ["mobile-development", "performance", "developer-tools", "testing"], "enriched": true, "function": ["monitoring", "benchmarking", "tracing", "testing", "e2e-testing"], "health_score": 87, "homepage": "https://docs.flashlight.dev", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["bamlab/flashlight"], "name": "bamlab/flashlight", "platform": ["cli", "cross-platform"], "pushed_at": "2026-08-26T18:48:50+00:00", "repo": "bamlab/flashlight", "stars": 1602, "tags": ["performance-score", "apm", "profiling", "react-native", "flutter", "lighthouse-for-mobile", "ci-integration", "android"], "topics": ["android", "performance", "react-native", "flutter", "lighthouse", "native", "e2e", "mobile", "apm", "monitoring", "profiling", "tracing", "audit", "performance-optimization", "performance-testing"], "urls": [], "use_cases": ["measure performance score of my android app", "benchmark react native app performance", "run automated performance tests in CI", "compare flatlist vs flashlist performance", "profile fps and cpu usage on android device", "audit production app performance without setup", "run e2e performance tests over multiple iterations"], "what_it_is": "Flashlight is a CLI tool that audits Android apps (native, React Native, Flutter) and generates a performance score from aggregated metrics, similar to Lighthouse but for mobile. It supports manual measurement, automated E2E performance testing, and cloud device runs for CI integration.", "when_to_avoid": ["you need iOS performance auditing (support is still in progress)", "you need full APM with production crash and network monitoring", "your target platform is web rather than mobile"], "when_to_choose": ["you need a Lighthouse-style performance score for Android apps", "you want to automate performance regression testing in CI or E2E suites", "you need to measure production apps with no in-app instrumentation", "you work with React Native or Flutter and want comparable perf metrics"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bamlab-flashlight", "repo": "bamlab/flashlight", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.682699+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:52:36.924804+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7b946faccede197398058730c9c10294bc898e61e55e4c8e22be1d2dcfa9605f", "fetched_at": "2026-08-28T04:05:09.682699+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bamlab/flashlight"}, {"content_hash": "b028c89d00262bda4105ca1dd000cefe6277d04aec9e216db519bd18eb97344b", "fetched_at": "2026-08-29T11:24:32.027303+00:00", "kind": "homepage", "missing": false, "url": "https://docs.flashlight.dev"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.682699+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:52:36.924804+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7b946faccede197398058730c9c10294bc898e61e55e4c8e22be1d2dcfa9605f", "fetched_at": "2026-08-28T04:05:09.682699+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bamlab/flashlight"}, {"content_hash": "b028c89d00262bda4105ca1dd000cefe6277d04aec9e216db519bd18eb97344b", "fetched_at": "2026-08-29T11:24:32.027303+00:00", "kind": "homepage", "missing": false, "url": "https://docs.flashlight.dev"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:52:36.924804+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7b946faccede197398058730c9c10294bc898e61e55e4c8e22be1d2dcfa9605f", "fetched_at": "2026-08-28T04:05:09.682699+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bamlab/flashlight"}, {"content_hash": "b028c89d00262bda4105ca1dd000cefe6277d04aec9e216db519bd18eb97344b", "fetched_at": "2026-08-29T11:24:32.027303+00:00", "kind": "homepage", "missing": false, "url": "https://docs.flashlight.dev"}], "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:05:09.682699+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.682699+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.682699+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:52:36.924804+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7b946faccede197398058730c9c10294bc898e61e55e4c8e22be1d2dcfa9605f", "fetched_at": "2026-08-28T04:05:09.682699+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bamlab/flashlight"}, {"content_hash": "b028c89d00262bda4105ca1dd000cefe6277d04aec9e216db519bd18eb97344b", "fetched_at": "2026-08-29T11:24:32.027303+00:00", "kind": "homepage", "missing": false, "url": "https://docs.flashlight.dev"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.682699+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.682699+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:52:36.924804+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7b946faccede197398058730c9c10294bc898e61e55e4c8e22be1d2dcfa9605f", "fetched_at": "2026-08-28T04:05:09.682699+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bamlab/flashlight"}, {"content_hash": "b028c89d00262bda4105ca1dd000cefe6277d04aec9e216db519bd18eb97344b", "fetched_at": "2026-08-29T11:24:32.027303+00:00", "kind": "homepage", "missing": false, "url": "https://docs.flashlight.dev"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.682699+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.682699+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.682699+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:52:36.924804+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7b946faccede197398058730c9c10294bc898e61e55e4c8e22be1d2dcfa9605f", "fetched_at": "2026-08-28T04:05:09.682699+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bamlab/flashlight"}, {"content_hash": "b028c89d00262bda4105ca1dd000cefe6277d04aec9e216db519bd18eb97344b", "fetched_at": "2026-08-29T11:24:32.027303+00:00", "kind": "homepage", "missing": false, "url": "https://docs.flashlight.dev"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.682699+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.682699+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:52:36.924804+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7b946faccede197398058730c9c10294bc898e61e55e4c8e22be1d2dcfa9605f", "fetched_at": "2026-08-28T04:05:09.682699+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bamlab/flashlight"}, {"content_hash": "b028c89d00262bda4105ca1dd000cefe6277d04aec9e216db519bd18eb97344b", "fetched_at": "2026-08-29T11:24:32.027303+00:00", "kind": "homepage", "missing": false, "url": "https://docs.flashlight.dev"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:52:36.924804+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7b946faccede197398058730c9c10294bc898e61e55e4c8e22be1d2dcfa9605f", "fetched_at": "2026-08-28T04:05:09.682699+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bamlab/flashlight"}, {"content_hash": "b028c89d00262bda4105ca1dd000cefe6277d04aec9e216db519bd18eb97344b", "fetched_at": "2026-08-29T11:24:32.027303+00:00", "kind": "homepage", "missing": false, "url": "https://docs.flashlight.dev"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:52:36.924804+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7b946faccede197398058730c9c10294bc898e61e55e4c8e22be1d2dcfa9605f", "fetched_at": "2026-08-28T04:05:09.682699+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bamlab/flashlight"}, {"content_hash": "b028c89d00262bda4105ca1dd000cefe6277d04aec9e216db519bd18eb97344b", "fetched_at": "2026-08-29T11:24:32.027303+00:00", "kind": "homepage", "missing": false, "url": "https://docs.flashlight.dev"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:52:36.924804+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7b946faccede197398058730c9c10294bc898e61e55e4c8e22be1d2dcfa9605f", "fetched_at": "2026-08-28T04:05:09.682699+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bamlab/flashlight"}, {"content_hash": "b028c89d00262bda4105ca1dd000cefe6277d04aec9e216db519bd18eb97344b", "fetched_at": "2026-08-29T11:24:32.027303+00:00", "kind": "homepage", "missing": false, "url": "https://docs.flashlight.dev"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1596, "days_push": 7, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}