Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 30202,
"has_wiki": true,
"homepage": null,
"languages": {
"JavaScript": 7544,
"TypeScript": 893350
},
"pushed_at": "2026-07-24T09:22:05Z",
"created_at": "2020-11-03T23:55:52Z",
"owner_type": "Organization",
"updated_at": "2026-07-24T10:05:04Z",
"description": "Persistent, offline-first state management solution for React Native. Easy to use with minimal config and boilerplate.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "TypeScript",
"significant_languages": [
"TypeScript"
]
},
"owner": {
"blog": "https://use.expensify.com",
"name": "Expensify, Inc",
"type": "Organization",
"login": "Expensify",
"company": null,
"location": "San Francisco, Ironwood, Denver, London, Berlin, Melbourne, Portland",
"followers": 1013,
"avatar_url": "https://avatars.githubusercontent.com/u/476779?v=4",
"created_at": "2010-11-11T03:59:16Z",
"is_verified": null,
"public_repos": 66,
"account_age_days": 5738
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "3.0.94",
"kind": "patch",
"published_at": "2026-07-24T09:22:03Z"
},
{
"tag": "3.0.93",
"kind": "patch",
"published_at": "2026-07-22T20:25:39Z"
},
{
"tag": "3.0.92",
"kind": "patch",
"published_at": "2026-07-22T15:46:59Z"
},
{
"tag": "3.0.91",
"kind": "patch",
"published_at": "2026-07-07T17:51:34Z"
},
{
"tag": "3.0.90",
"kind": "patch",
"published_at": "2026-06-30T17:43:43Z"
},
{
"tag": "3.0.89",
"kind": "patch",
"published_at": "2026-06-30T14:50:57Z"
},
{
"tag": "3.0.88",
"kind": "patch",
"published_at": "2026-06-26T16:19:51Z"
},
{
"tag": "3.0.87",
"kind": "patch",
"published_at": "2026-06-11T22:27:47Z"
},
{
"tag": "3.0.86",
"kind": "patch",
"published_at": "2026-06-11T00:47:13Z"
},
{
"tag": "3.0.85",
"kind": "patch",
"published_at": "2026-06-09T13:51:08Z"
},
{
"tag": "3.0.84",
"kind": "patch",
"published_at": "2026-06-01T17:43:00Z"
},
{
"tag": "3.0.83",
"kind": "patch",
"published_at": "2026-05-29T23:14:36Z"
},
{
"tag": "3.0.82",
"kind": "patch",
"published_at": "2026-05-29T18:11:55Z"
},
{
"tag": "3.0.81",
"kind": "patch",
"published_at": "2026-05-29T17:37:25Z"
},
{
"tag": "3.0.80",
"kind": "patch",
"published_at": "2026-05-27T17:34:12Z"
},
{
"tag": "3.0.79",
"kind": "patch",
"published_at": "2026-05-25T13:59:18Z"
},
{
"tag": "3.0.78",
"kind": "patch",
"published_at": "2026-05-22T12:16:32Z"
},
{
"tag": "3.0.77",
"kind": "patch",
"published_at": "2026-05-19T20:11:29Z"
},
{
"tag": "3.0.76",
"kind": "patch",
"published_at": "2026-05-19T18:35:23Z"
},
{
"tag": "3.0.75",
"kind": "patch",
"published_at": "2026-05-18T13:42:14Z"
},
{
"tag": "3.0.74",
"kind": "patch",
"published_at": "2026-05-11T16:10:57Z"
},
{
"tag": "3.0.73",
"kind": "patch",
"published_at": "2026-05-11T10:14:50Z"
},
{
"tag": "3.0.72",
"kind": "patch",
"published_at": "2026-05-06T17:46:11Z"
},
{
"tag": "3.0.71",
"kind": "patch",
"published_at": "2026-04-29T11:31:27Z"
},
{
"tag": "3.0.70",
"kind": "patch",
"published_at": "2026-04-22T14:57:58Z"
},
{
"tag": "3.0.69",
"kind": "patch",
"published_at": "2026-04-17T18:32:01Z"
},
{
"tag": "3.0.68",
"kind": "patch",
"published_at": "2026-04-16T16:57:39Z"
},
{
"tag": "3.0.67",
"kind": "patch",
"published_at": "2026-04-16T12:03:14Z"
},
{
"tag": "3.0.66",
"kind": "patch",
"published_at": "2026-04-15T22:32:10Z"
},
{
"tag": "3.0.65",
"kind": "patch",
"published_at": "2026-04-15T19:36:07Z"
},
{
"tag": "3.0.64",
"kind": "patch",
"published_at": "2026-04-13T20:00:10Z"
},
{
"tag": "3.0.63",
"kind": "patch",
"published_at": "2026-04-10T22:14:38Z"
},
{
"tag": "3.0.62",
"kind": "patch",
"published_at": "2026-04-10T20:58:24Z"
},
{
"tag": "3.0.61",
"kind": "patch",
"published_at": "2026-04-02T15:52:46Z"
},
{
"tag": "3.0.60",
"kind": "patch",
"published_at": "2026-04-01T18:24:33Z"
},
{
"tag": "3.0.59",
"kind": "patch",
"published_at": "2026-04-01T09:54:41Z"
},
{
"tag": "3.0.58",
"kind": "patch",
"published_at": "2026-03-31T23:12:16Z"
},
{
"tag": "3.0.57",
"kind": "patch",
"published_at": "2026-03-30T15:10:49Z"
},
{
"tag": "3.0.56",
"kind": "patch",
"published_at": "2026-03-30T14:26:11Z"
},
{
"tag": "3.0.55",
"kind": "patch",
"published_at": "2026-03-30T12:57:46Z"
},
{
"tag": "3.0.54",
"kind": "patch",
"published_at": "2026-03-26T16:14:37Z"
},
{
"tag": "3.0.53",
"kind": "patch",
"published_at": "2026-03-23T22:12:28Z"
},
{
"tag": "3.0.52",
"kind": "patch",
"published_at": "2026-03-23T18:29:34Z"
},
{
"tag": "3.0.51",
"kind": "patch",
"published_at": "2026-03-23T18:24:27Z"
},
{
"tag": "3.0.50",
"kind": "patch",
"published_at": "2026-03-20T20:23:07Z"
},
{
"tag": "3.0.49",
"kind": "patch",
"published_at": "2026-03-20T16:54:37Z"
},
{
"tag": "3.0.48",
"kind": "patch",
"published_at": "2026-03-16T15:43:41Z"
},
{
"tag": "3.0.47",
"kind": "patch",
"published_at": "2026-03-15T23:18:19Z"
},
{
"tag": "3.0.46",
"kind": "patch",
"published_at": "2026-03-12T16:11:41Z"
},
{
"tag": "3.0.45",
"kind": "patch",
"published_at": "2026-03-06T18:24:52Z"
},
{
"tag": "3.0.44",
"kind": "patch",
"published_at": "2026-03-06T00:02:01Z"
},
{
"tag": "3.0.43",
"kind": "patch",
"published_at": "2026-03-03T23:45:39Z"
},
{
"tag": "3.0.42",
"kind": "patch",
"published_at": "2026-02-26T21:20:26Z"
},
{
"tag": "3.0.41",
"kind": "patch",
"published_at": "2026-02-26T16:42:04Z"
},
{
"tag": "3.0.40",
"kind": "patch",
"published_at": "2026-02-23T22:02:13Z"
},
{
"tag": "3.0.39",
"kind": "patch",
"published_at": "2026-02-19T18:57:48Z"
},
{
"tag": "3.0.38",
"kind": "patch",
"published_at": "2026-02-19T15:58:45Z"
},
{
"tag": "3.0.37",
"kind": "patch",
"published_at": "2026-02-17T17:22:36Z"
},
{
"tag": "3.0.36",
"kind": "patch",
"published_at": "2026-02-13T18:54:25Z"
},
{
"tag": "3.0.35",
"kind": "patch",
"published_at": "2026-02-13T09:36:07Z"
},
{
"tag": "3.0.34",
"kind": "patch",
"published_at": "2026-02-06T18:18:30Z"
},
{
"tag": "3.0.33",
"kind": "patch",
"published_at": "2026-02-04T14:38:25Z"
},
{
"tag": "3.0.32",
"kind": "patch",
"published_at": "2026-01-24T18:05:05Z"
},
{
"tag": "3.0.31",
"kind": "patch",
"published_at": "2026-01-20T16:58:10Z"
},
{
"tag": "3.0.30",
"kind": "patch",
"published_at": "2026-01-12T15:44:03Z"
},
{
"tag": "3.0.29",
"kind": "patch",
"published_at": "2026-01-09T21:50:23Z"
},
{
"tag": "3.0.28",
"kind": "patch",
"published_at": "2026-01-09T19:11:04Z"
},
{
"tag": "3.0.27",
"kind": "patch",
"published_at": "2025-12-29T16:01:22Z"
},
{
"tag": "3.0.26",
"kind": "patch",
"published_at": "2025-12-23T13:40:11Z"
},
{
"tag": "3.0.25",
"kind": "patch",
"published_at": "2025-12-17T14:36:18Z"
},
{
"tag": "3.0.24",
"kind": "patch",
"published_at": "2025-12-11T18:29:10Z"
},
{
"tag": "3.0.23",
"kind": "patch",
"published_at": "2025-12-11T08:26:07Z"
},
{
"tag": "3.0.22",
"kind": "patch",
"published_at": "2025-12-09T15:21:20Z"
},
{
"tag": "3.0.21",
"kind": "patch",
"published_at": "2025-12-08T17:40:57Z"
},
{
"tag": "3.0.20",
"kind": "patch",
"published_at": "2025-12-08T14:22:51Z"
},
{
"tag": "3.0.19",
"kind": "patch",
"published_at": "2025-12-03T11:58:10Z"
},
{
"tag": "3.0.18",
"kind": "patch",
"published_at": "2025-12-02T22:48:21Z"
},
{
"tag": "3.0.17",
"kind": "patch",
"published_at": "2025-11-20T03:17:50Z"
},
{
"tag": "3.0.16",
"kind": "patch",
"published_at": "2025-11-19T20:22:41Z"
},
{
"tag": "3.0.15",
"kind": "patch",
"published_at": "2025-11-14T13:21:32Z"
},
{
"tag": "3.0.14",
"kind": "patch",
"published_at": "2025-11-11T12:55:31Z"
},
{
"tag": "3.0.13",
"kind": "patch",
"published_at": "2025-11-06T14:57:02Z"
},
{
"tag": "3.0.12",
"kind": "patch",
"published_at": "2025-11-05T22:41:57Z"
},
{
"tag": "3.0.11",
"kind": "patch",
"published_at": "2025-11-04T21:17:08Z"
},
{
"tag": "3.0.10",
"kind": "patch",
"published_at": "2025-11-03T16:00:36Z"
},
{
"tag": "3.0.9",
"kind": "patch",
"published_at": "2025-10-31T19:58:43Z"
},
{
"tag": "3.0.8",
"kind": "patch",
"published_at": "2025-10-23T15:37:20Z"
},
{
"tag": "3.0.7",
"kind": "patch",
"published_at": "2025-10-23T00:55:09Z"
},
{
"tag": "3.0.6",
"kind": "patch",
"published_at": "2025-10-10T17:38:33Z"
},
{
"tag": "3.0.5",
"kind": "patch",
"published_at": "2025-10-10T16:51:36Z"
},
{
"tag": "3.0.4",
"kind": "patch",
"published_at": "2025-10-09T04:54:35Z"
},
{
"tag": "3.0.3",
"kind": "patch",
"published_at": "2025-10-06T19:03:06Z"
},
{
"tag": "3.0.2",
"kind": "patch",
"published_at": "2025-10-03T12:57:13Z"
},
{
"tag": "3.0.1",
"kind": "patch",
"published_at": "2025-09-25T18:54:40Z"
},
{
"tag": "2.0.141",
"kind": "patch",
"published_at": "2025-09-25T00:35:10Z"
},
{
"tag": "2.0.140",
"kind": "patch",
"published_at": "2025-09-10T12:22:23Z"
},
{
"tag": "2.0.139",
"kind": "patch",
"published_at": "2025-09-02T14:18:16Z"
},
{
"tag": "2.0.138",
"kind": "patch",
"published_at": "2025-08-28T21:00:11Z"
},
{
"tag": "2.0.137",
"kind": "patch",
"published_at": "2025-08-27T10:56:05Z"
},
{
"tag": "2.0.136",
"kind": "patch",
"published_at": "2025-08-26T17:05:22Z"
}
],
"recent_commits": [
{
"oid": "ec42979e16ea24662974aadf021a2590e12f3add",
"body": "…-blobs-invalid-data\n\nClassify \"Failed to write blobs\" IDB errors as INVALID_DATA (never retry)",
"is_bot": false,
"headline": "Merge pull request #814 from callstack-internal/eliran/classify-write…",
"author_name": "Brandon Stites",
"author_login": "stitesExpensify",
"committed_at": "2026-07-27T20:11:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fcfaf4e83d5c9b45c2cbfb7d5a0e3f085970ad80",
"body": "A File/Blob whose backing bytes are gone (source file modified or\ndeleted after being picked) fails structured clone at write time as\nInvalidBlob (Windows) or IOError (macOS). Retrying re-reads the same\ndead blob, so the UNKNOWN bounded-retry path can never succeed —\npromote the error into the never-retriable INVALID_DATA class.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Classify \"Failed to write blobs\" IDB errors as INVALID_DATA",
"author_name": "eliran goshen",
"author_login": "elirangoshen",
"committed_at": "2026-07-24T11:59:24Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1eac2fe96041ca3eb4f22e5e3295158c4acc9419",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.94",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-07-24T09:22:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "27bc8e26dd17cc792e9e95a236db2fd772568568",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.94",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-07-24T09:22:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b70a835378f9fb60efb9c4fbf4ac6e62738fcdec",
"body": "…a-empty-object",
"is_bot": false,
"headline": "Merge pull request #812 from callstack-internal/perf/getcollectiondat…",
"author_name": "Vit Horacek",
"author_login": "mountiny",
"committed_at": "2026-07-24T09:21:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8bdc36a2756871f4bca9007a4b763c3447b50036",
"body": null,
"is_bot": false,
"headline": "test: cover non-empty to empty collection transition",
"author_name": "Tomasz Misiukiewicz",
"author_login": "TMisiukiewicz",
"committed_at": "2026-07-23T07:54:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "856bcb78f0710d839b6b845c0032d9e6289bf69d",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.93",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-07-22T20:25:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "de0f55b52531da7a867a3502b26f70135d416fb6",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.93",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-07-22T20:25:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fa71e47b2a1f82f2e3dfe40cf8371fff7b232432",
"body": "…shallowequal\n\nMemoize shallowEqual verdicts by object identity in useOnyx",
"is_bot": false,
"headline": "Merge pull request #810 from callstack-internal/perf/memoize-useonyx-…",
"author_name": "Youssef Lourayad",
"author_login": "youssef-lr",
"committed_at": "2026-07-22T20:24:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "13ad6fa4de8239bde002ddffcd76ac641a8d7a1a",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.92",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-07-22T15:46:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ccf8b7685d577029dfbbfbcf042c88c3999fe479",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.92",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-07-22T15:46:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0b7dbe0922c188e2d56770cef8101f8eff63364e",
"body": "…iables-error\n\nfeat: Split queries with many parameters into multiple queries to avoid `too many SQL variables` error",
"is_bot": false,
"headline": "Merge pull request #804 from margelo/@chrispader/fix-too-many-sql-var…",
"author_name": "Vit Horacek",
"author_login": "mountiny",
"committed_at": "2026-07-22T15:46:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "90c8957ba6418ecba76d1031f87c62980b000c9e",
"body": "…onData",
"is_bot": false,
"headline": "perf: detect empty collections via shared empty object in getCollecti…",
"author_name": "Tomasz Misiukiewicz",
"author_login": "TMisiukiewicz",
"committed_at": "2026-07-22T12:07:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "51bdc1b9e33f8a6cd5d330332c9881055c545e7a",
"body": null,
"is_bot": false,
"headline": "Use 'should' pattern for test descriptions",
"author_name": "Tomasz Misiukiewicz",
"author_login": "TMisiukiewicz",
"committed_at": "2026-07-22T07:02:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b2a846532f11a6207f52bc716610e0a042f516a6",
"body": null,
"is_bot": false,
"headline": "Extract memoizedShallowEqual to separate file and add unit tests",
"author_name": "Tomasz Misiukiewicz",
"author_login": "TMisiukiewicz",
"committed_at": "2026-07-21T10:33:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9073e9711d62714297f21015503f035b18a43792",
"body": null,
"is_bot": false,
"headline": "fix prettier",
"author_name": "Tomasz Misiukiewicz",
"author_login": "TMisiukiewicz",
"committed_at": "2026-07-21T10:24:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "94767fa76f02d5009bca408a52fd5d8bc01445ba",
"body": null,
"is_bot": false,
"headline": "Memoize shallowEqual verdicts by object identity in useOnyx",
"author_name": "Tomasz Misiukiewicz",
"author_login": "TMisiukiewicz",
"committed_at": "2026-07-21T10:23:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e6b1c1c4da7efb73c9769bc101f668817d6009a9",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.91",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-07-07T17:51:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "05deae33a63c6bfc2fd5b9d8f3fb7e4c4d72a220",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.91",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-07-07T17:51:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "335fb74ecea2389a996acf39203f46d8819c3925",
"body": "…with-json-aggregation\n\nPerf/optimize get all with json aggregation",
"is_bot": false,
"headline": "Merge pull request #805 from callstack-internal/perf/optimize-getAll-…",
"author_name": "Rory Abraham",
"author_login": "roryabraham",
"committed_at": "2026-07-07T17:50:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "492160a7e981a90ab458978dce5d1624938cb16c",
"body": null,
"is_bot": false,
"headline": "adjust order by",
"author_name": "Tomasz Lesniakiewicz",
"author_login": "rinej",
"committed_at": "2026-07-07T17:18:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cbf2c70695b73cf1ef3a024ded4357919db440a7",
"body": null,
"is_bot": false,
"headline": "tests: add unit tests",
"author_name": "Tomasz Lesniakiewicz",
"author_login": "rinej",
"committed_at": "2026-07-07T16:01:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c4d39425422bfbcf0cec1e46a2c76754cf027c9",
"body": null,
"is_bot": false,
"headline": "perf: optimize getAll with json aggregation",
"author_name": "Tomasz Lesniakiewicz",
"author_login": "rinej",
"committed_at": "2026-07-07T16:01:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "33471571097ecc7f2d7354f228d95689c457310f",
"body": null,
"is_bot": false,
"headline": "refactor: use NitroSQLite types instead of custom ones",
"author_name": "Christoph Pader",
"author_login": "chrispader",
"committed_at": "2026-07-02T10:38:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a97bdf6b883e4017d78a84be318bdd3cc01db55",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.90",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-30T17:43:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "865941dbfdb5feac1fbe6f58238560c1b8671eff",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.90",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-30T17:43:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b9ac99b45c6a14f493eb4dd1959f9d8cf3f4d32c",
"body": "Remove `sourceValue` from Onyx",
"is_bot": false,
"headline": "Merge pull request #801 from callstack-internal/feature/onyx-store-pr-2",
"author_name": "Issa Nimaga",
"author_login": "inimaga",
"committed_at": "2026-06-30T17:43:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a836a7a9993670c2d84802fcb5ab2037a37fd10b",
"body": null,
"is_bot": false,
"headline": "fix: sqlite mock does not respect single row params in `executeBatch`",
"author_name": "Christoph Pader",
"author_login": "chrispader",
"committed_at": "2026-06-30T17:14:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f280dbec7b33a0df36fb036d9fe6f3024ed9123",
"body": null,
"is_bot": false,
"headline": "fix: improve readability of `multiSet`",
"author_name": "Christoph Pader",
"author_login": "chrispader",
"committed_at": "2026-06-30T17:12:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "912e73576c2a634d519decfa69750b2553935d7b",
"body": null,
"is_bot": false,
"headline": "test: add unit tests for new `query splitting` logic",
"author_name": "Christoph Pader",
"author_login": "chrispader",
"committed_at": "2026-06-30T16:46:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5a03bad7f1bc171ab00c3e4de8f7d6186f04a245",
"body": null,
"is_bot": false,
"headline": "test: add unit tests for chunkArray utility function",
"author_name": "Christoph Pader",
"author_login": "chrispader",
"committed_at": "2026-06-30T15:45:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b450c3dafadbf388fce122bf9a8a216a7db05f3e",
"body": null,
"is_bot": false,
"headline": "fix: don't use non-null-assertion",
"author_name": "Christoph Pader",
"author_login": "chrispader",
"committed_at": "2026-06-30T15:43:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c154ed4e8f69411af1f3740f71e0a162fce06cb9",
"body": "…e-pr-2",
"is_bot": false,
"headline": "Merge branch 'feature/onyx-store-poc-baseline' into feature/onyx-stor…",
"author_name": "Fábio Henriques",
"author_login": "fabioh8010",
"committed_at": "2026-06-30T15:36:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f3fc3b6550df75356ab7f26deeef93e6e2105e4e",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.89",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-30T14:50:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "34625d8204ee3e4eb81654fe3ebd267f8c3a4026",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.89",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-30T14:50:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1cc7acc500ea7fc0bb8ff992ba300014aeffc463",
"body": "Remove waitForCollectionCallback from Onyx",
"is_bot": false,
"headline": "Merge pull request #799 from callstack-internal/feature/onyx-store-pr-1",
"author_name": "Vit Horacek",
"author_login": "mountiny",
"committed_at": "2026-06-30T14:50:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e760085b47c5faf827dd20c3fb0a7a8c5998d963",
"body": null,
"is_bot": false,
"headline": "fix: pass keys chunk correctly to delete batch query",
"author_name": "Christoph Pader",
"author_login": "chrispader",
"committed_at": "2026-06-30T11:20:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2023d77aa92adb2738f80de08b506f5061336e3a",
"body": null,
"is_bot": false,
"headline": "refactor: optimize batch deletion of key-value pairs in SQLiteProvider",
"author_name": "Christoph Pader",
"author_login": "chrispader",
"committed_at": "2026-06-30T10:39:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b6ea41a34f3c39e38f315164a15e6cd73a8ff0d5",
"body": null,
"is_bot": false,
"headline": "feat: get `MAX_VARIABLE_NUMBER` dynamically at startup",
"author_name": "Christoph Pader",
"author_login": "chrispader",
"committed_at": "2026-06-30T09:37:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f81fbd11ce361ea6b21f460cb4c013a2dbffdf9",
"body": "…e options",
"is_bot": false,
"headline": "feat: dynamically adjust maximum SQL variables based on SQLite compil…",
"author_name": "Christoph Pader",
"author_login": "chrispader",
"committed_at": "2026-06-30T09:32:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5c1f2da65f91ae209f49fac2ecdd537e20fa6185",
"body": "…s' error",
"is_bot": false,
"headline": "feat: split big queries into multiple to avoid 'too many sql variable…",
"author_name": "Christoph Pader",
"author_login": "chrispader",
"committed_at": "2026-06-30T08:49:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2217ee0c77191185752028a490c26c98f35f3793",
"body": null,
"is_bot": false,
"headline": "Update docs",
"author_name": "Fábio Henriques",
"author_login": "fabioh8010",
"committed_at": "2026-06-30T08:12:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "456a19f21ed31477603ca44ef663ccb717636dda",
"body": "…e-pr-2",
"is_bot": false,
"headline": "Merge branch 'feature/onyx-store-poc-baseline' into feature/onyx-stor…",
"author_name": "Fábio Henriques",
"author_login": "fabioh8010",
"committed_at": "2026-06-30T08:05:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "721d95bbd9547d35e651e3ba6f3fd596c4595733",
"body": "…e-pr-1",
"is_bot": false,
"headline": "Merge branch 'feature/onyx-store-poc-baseline' into feature/onyx-stor…",
"author_name": "Fábio Henriques",
"author_login": "fabioh8010",
"committed_at": "2026-06-29T10:37:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d77980b983e1838e932dd5e5af03bbb9833d168",
"body": null,
"is_bot": false,
"headline": "Add try/catch to fireCallbacks()",
"author_name": "Fábio Henriques",
"author_login": "fabioh8010",
"committed_at": "2026-06-29T10:17:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4049c5887ccda694c81c64d26cd9b6581af5ee4e",
"body": null,
"is_bot": false,
"headline": "Improve docs and types",
"author_name": "Fábio Henriques",
"author_login": "fabioh8010",
"committed_at": "2026-06-29T10:17:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "608da63ade9c712606924e54f7d463bbc794c5c3",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.88",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-26T16:19:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3913c5c8aef87e6901bb67c0d3deed522a896e2f",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.88",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-26T16:19:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5004071de24df4838ac9f2476cc1a3815c8bf44d",
"body": "…chanism\n\nRetry mechanism with retry braking system",
"is_bot": false,
"headline": "Merge pull request #797 from callstack-internal/feat/revised-retry-me…",
"author_name": "Rory Abraham",
"author_login": "roryabraham",
"committed_at": "2026-06-26T16:19:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d17d79c52a791782b1df4d1bbfa0d7a9ecbc1e95",
"body": null,
"is_bot": false,
"headline": "fix comment about half-open state",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-26T12:31:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8150b3ca3803355102d8ce66c0ecbb976b6262a0",
"body": null,
"is_bot": false,
"headline": "refactor StorageCircuitBreaker.ts",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-25T12:33:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d515eea64aa03310d9fb46e72ce35ad76328ad8",
"body": null,
"is_bot": false,
"headline": "refactor StorageCircuitBreaker.ts",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-25T10:43:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b6f496fe62f586ae23ab499a072ba6170c5d154",
"body": null,
"is_bot": false,
"headline": "remove StorageErrorClassValue type",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-25T07:18:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f7986a4b0ed31137fbb38bde7fc7f3cfcd9e2b15",
"body": null,
"is_bot": false,
"headline": "move recordEviction after remove",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-25T07:12:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "77f93d10588079413ea987edea2de6d79ec311fa",
"body": null,
"is_bot": false,
"headline": "Cleanup",
"author_name": "Fábio Henriques",
"author_login": "fabioh8010",
"committed_at": "2026-06-24T14:23:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c1845718bcd62c38aff3d12d28b610f7758d25ce",
"body": null,
"is_bot": false,
"headline": "Update docs",
"author_name": "Fábio Henriques",
"author_login": "fabioh8010",
"committed_at": "2026-06-24T13:36:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7bec806d53aa8d6bbd0a16dd0c82244b0ef8d234",
"body": "…e-pr-1",
"is_bot": false,
"headline": "Merge branch 'feature/onyx-store-poc-baseline' into feature/onyx-stor…",
"author_name": "Fábio Henriques",
"author_login": "fabioh8010",
"committed_at": "2026-06-24T13:35:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "edc6ec8dbbe23a44d5f941b4ad2ed3af3366a9ca",
"body": null,
"is_bot": false,
"headline": "API docs",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-22T12:50:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50a3ec6f7d9d740fbfcb094c6d6e681b87c5486a",
"body": null,
"is_bot": false,
"headline": "prettier fixes",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-22T12:49:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd11e1cfd46efdb181d809311b470a9825bd9f30",
"body": null,
"is_bot": false,
"headline": "record write success",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-22T10:36:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "23bc519d72335bcd25c6c504eb9e8049e472ac88",
"body": null,
"is_bot": false,
"headline": "move error classification to providers",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-22T09:51:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "406de5582feddf0f2d13f21cc073b78a3902bb60",
"body": "# Conflicts:\n#\tlib/OnyxUtils.ts\n#\tlib/storage/providers/IDBKeyValProvider/createStore.ts",
"is_bot": false,
"headline": "Merge branch 'main' into feat/revised-retry-mechanism",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-16T08:41:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "01704211bf9363641843f2ecb826bc0633fdce07",
"body": "Collection-root subscriptions (via Onyx.connect or useOnyx) now always\ndeliver the whole collection snapshot to the callback. The legacy\nper-member delivery mode for collection-root subscribers is removed;\nconsumers needing per-member processing subscribe to a single member key.\n\nCollapses the Defau\n[…]\ns the\noption from useOnyx's internal connect. Per-member-mode tests were migrated\nto assert snapshot delivery rather than deleted.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Remove the waitForCollectionCallback connect option",
"author_name": "Fábio Henriques",
"author_login": "fabioh8010",
"committed_at": "2026-06-12T16:28:11Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c1073b4c116a245a9128172953153b9ebac4c538",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.87",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-11T22:27:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "224cd0d4a7828b42e339e65de6b7498150d3d6de",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.87",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-11T22:27:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "595d9444ec9289a06a7673953dd7ade135fb7bab",
"body": "…nge-probe-v2\n\nfeat: add visibilitychange probe for proactive IDB health check",
"is_bot": false,
"headline": "Merge pull request #798 from callstack-internal/fix/idb-visibilitycha…",
"author_name": "Jules",
"author_login": "Julesssss",
"committed_at": "2026-06-11T22:27:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fa7a8d54eb66dfa38035dea3e72a51b1f5de8708",
"body": "Drop the optional 3rd `sourceValue` argument from collection connect\ncallbacks and the `sourceValue` field from useOnyx's result metadata.\n`ResultMetadata` becomes non-generic (`{status}`); `UseOnyxResult` and the\nperf-test usages follow. Consumers that need \"what changed\" should diff\nagainst a previous value (e.g. usePrevious) — structural sharing makes that\nO(1) per member.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Remove the sourceValue callback parameter",
"author_name": "Fábio Henriques",
"author_login": "fabioh8010",
"committed_at": "2026-06-11T15:01:16Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d91ec72d1810b11de062de217b893700c43a0c9a",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.86",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-11T00:47:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4ea64678d77e33bc0a6763e3fb1d2fc0d98aa619",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.86",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-11T00:47:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "64493ad5e99fd6bad705cdc39eace579f6d6723f",
"body": "…y-side-effects-idempotency\n\n[Do Not Merge] Avoid subscriber re-fire when storage writes retry",
"is_bot": false,
"headline": "Merge pull request #792 from callstack-internal/elirangoshen/fix/retr…",
"author_name": "Jules",
"author_login": "Julesssss",
"committed_at": "2026-06-11T00:46:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "397f98ed3a35b29f09e65680bea0131808b34f41",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.85",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-09T13:51:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a963e33b56114cada6b103824c1a3ca5ee759a6",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.85",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-09T13:51:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b191085de5bbb2e6496cf53a829f98ad8af8df8c",
"body": "…ansactions\n\nUnify how merge and set handles AbortErrors",
"is_bot": false,
"headline": "Merge pull request #796 from callstack-internal/fix/handle-aborted-tr…",
"author_name": "Nicolás Bonet",
"author_login": "NicolasBonet",
"committed_at": "2026-06-09T13:50:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8bc993cafd23c8980d9274333a38bb335f28c244",
"body": null,
"is_bot": false,
"headline": "prettier fix",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-08T14:06:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ffe796da6393fb674075810c51f85090ddb4f12",
"body": null,
"is_bot": false,
"headline": "updated api doc",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-08T14:04:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "624cd666f9d920209baa81ea4aff2830dc38b615",
"body": null,
"is_bot": false,
"headline": "introduce storage circuit breaker",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-08T13:26:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7570164e5374567d66431e3765ee24b3f8708b6",
"body": null,
"is_bot": false,
"headline": "update comment",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-08T09:54:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4aa0d40811bba19b880bf10be4e40b7655e6d678",
"body": null,
"is_bot": false,
"headline": "add solution to removeItem",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-08T09:48:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8d3c80e2aaa040d980d27b1c0b3477af6151f667",
"body": null,
"is_bot": false,
"headline": "fix test names",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-08T09:41:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32b493a197f1bc55136e8747081cfa54af7ec48f",
"body": null,
"is_bot": false,
"headline": "Remove redundant comment in retryOperation",
"author_name": "eliran goshen",
"author_login": "elirangoshen",
"committed_at": "2026-06-05T14:26:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ac9c50ac0b853e09bf7ffe8e5299ea410edf069",
"body": "The visibilitychange probe adds a separate .then branch off the cached\nopen promise. If the tab becomes visible while dbp is still a pending\nindexedDB.open() that later rejects, that branch rejected with no handler,\nsurfacing an unhandled rejection on foregrounding. Add a .catch on the\nprobe chain (cacheOpenPromise already clears dbp on its own branch).\n\nAddresses PR #788 review (chatgpt-codex-connector).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: handle probe promise rejection to avoid unhandled rejection",
"author_name": "eliran goshen",
"author_login": "elirangoshen",
"committed_at": "2026-06-05T13:54:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e3a8cc5d00f097657649e1ebaa88cf538ec755d0",
"body": "- Remove the `typeof document !== 'undefined'` guard; IDBKeyValProvider\n runs on web only, where document is always defined.\n- Drop the App-specific \"ReconnectApp\" reference from the probe comment.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: address review - remove document guard and ReconnectApp mention",
"author_name": "eliran goshen",
"author_login": "elirangoshen",
"committed_at": "2026-06-05T09:29:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "02787c2512618bdd47a197c089e01e7c582bf70d",
"body": null,
"is_bot": false,
"headline": "retry mechanism with retry breaking system",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-03T14:24:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0e67599c52d7680d406e3dc38258888d70238ceb",
"body": "…t transactions and related AbortErrors",
"is_bot": false,
"headline": "add promisifyWriteTransaction to unify how merge and set actions trea…",
"author_name": "Hubert Sosinski",
"author_login": "sosek108",
"committed_at": "2026-06-03T10:23:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ff3bacc39ccd3b9b2f3fc4b3c0d600aebd5ffd6",
"body": "…-internal/react-native-onyx into fix/idb-visibilitychange-probe",
"is_bot": false,
"headline": "Merge branch 'fix/idb-visibilitychange-probe' of github.com:callstack…",
"author_name": "eliran goshen",
"author_login": "elirangoshen",
"committed_at": "2026-06-03T10:21:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af905f9caf5224528f13d5d69b5e8e0ad833a02b",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' into fix/idb-visibilitychange-probe",
"author_name": "eliran goshen",
"author_login": "elirangoshen",
"committed_at": "2026-06-03T10:19:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b001767d783c016403d892d27c6fb099927471e7",
"body": "…w-key comment\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: don't evict in-flight keys on retry; correct stale multiMerge-ne…",
"author_name": "eliran goshen",
"author_login": "elirangoshen",
"committed_at": "2026-06-03T07:28:32Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "bfb3c289d33a8a5dca720bb8d174069c8d7f75fc",
"body": "…y-side-effects-idempotency\n\n# Conflicts:\n#\ttests/unit/onyxUtilsTest.ts",
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/main' into elirangoshen/fix/retr…",
"author_name": "eliran goshen",
"author_login": "elirangoshen",
"committed_at": "2026-06-02T13:20:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "14be5b844a3054acf82fd66d27ea0bd96aba025b",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.84",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-01T17:43:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "20be15615ca806f5909031a4d98d0b80eaa3e67b",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.84",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-06-01T17:42:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "94bc6cf172ec06065689de2c0882f79cc5f35bf4",
"body": "…tect-and-heal\n\nfix: add IDB healing mechanism for backing store corruption and connection lost errors",
"is_bot": false,
"headline": "Merge pull request #780 from callstack-internal/fix/idb-corruption-de…",
"author_name": "Jules",
"author_login": "Julesssss",
"committed_at": "2026-06-01T17:42:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dcd8abcbd8329e84397f1a7f0b7af7a261e31ef3",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' into fix/idb-corruption-detect-and-heal",
"author_name": "Fábio Henriques",
"author_login": "fabioh8010",
"committed_at": "2026-06-01T09:43:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7b1f80828df563a6a203823ee34cac98debc31c5",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.83",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-05-29T23:14:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6315daeee61a9c182dcf5045cab68cef2c99f121",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.83",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-05-29T23:14:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a29889a829bee5773b4a9e1e24d53950a8806498",
"body": "…-logs\n\nAdd usage details to reported usage quota log",
"is_bot": false,
"headline": "Merge pull request #795 from callstack-internal/onyx-additional-usage…",
"author_name": "Neil Marcellini",
"author_login": "neil-marcellini",
"committed_at": "2026-05-29T23:13:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8c2eaf77857bd6da37e8000147a8023d433ed493",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.82",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-05-29T18:11:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b14bb14c7e471e5a5df15494e0d4d1feda91460d",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.82",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-05-29T18:11:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c02aa64a9a89f519ab17f68d5ddaf3bf4ae9675",
"body": "…ration\n\n[No QA] Node-integration SQLite tests via better-sqlite3",
"is_bot": false,
"headline": "Merge pull request #794 from callstack-internal/sqlite-poc-node-integ…",
"author_name": "Jules",
"author_login": "Julesssss",
"committed_at": "2026-05-29T18:11:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "33164eb8d8ee711f0bccbc26ee3c68ef17509c57",
"body": null,
"is_bot": true,
"headline": "Update package.json version to 3.0.81",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-05-29T17:37:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "01c84a63d80fe25dc4f3b50d3d49c3412c7fd2ce",
"body": null,
"is_bot": true,
"headline": "Update package-lock.json version to 3.0.81",
"author_name": "os-botify[bot]",
"author_login": "os-botify[bot]",
"committed_at": "2026-05-29T17:37:23Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 100,
"commits_last_year": 927,
"latest_release_at": "2026-07-24T09:22:03Z",
"latest_release_tag": "3.0.94",
"releases_from_tags": true,
"days_since_last_push": 4,
"active_weeks_last_year": 50,
"days_since_latest_release": 4,
"mean_days_between_releases": 5
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 50,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "react-native-onyx",
"exists": true,
"license": "MIT",
"keywords": [
"React Native",
"React",
"Persistent storage",
"Pub/Sub"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/react-native-onyx",
"is_deprecated": false,
"latest_version": "3.0.94",
"repository_url": "https://github.com/Expensify/react-native-onyx",
"versions_count": 366,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 38962,
"first_published_at": "2022-05-23T22:26:02.369000Z",
"latest_published_at": "2026-07-24T09:22:26.495000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 4
}
]
},
"popularity": {
"forks": 96,
"stars": 231,
"watchers": 32,
"fork_history": {
"days": [
{
"date": "2020-12-23",
"count": 1
},
{
"date": "2021-04-05",
"count": 1
},
{
"date": "2021-05-12",
"count": 1
},
{
"date": "2021-05-17",
"count": 1
},
{
"date": "2021-08-10",
"count": 1
},
{
"date": "2022-01-17",
"count": 1
},
{
"date": "2022-02-20",
"count": 1
},
{
"date": "2022-03-21",
"count": 1
},
{
"date": "2022-09-28",
"count": 1
},
{
"date": "2022-10-06",
"count": 1
},
{
"date": "2022-10-13",
"count": 1
},
{
"date": "2022-11-22",
"count": 1
},
{
"date": "2023-01-04",
"count": 1
},
{
"date": "2023-01-05",
"count": 1
},
{
"date": "2023-01-14",
"count": 1
},
{
"date": "2023-02-13",
"count": 1
},
{
"date": "2023-02-15",
"count": 1
},
{
"date": "2023-02-24",
"count": 1
},
{
"date": "2023-02-28",
"count": 1
},
{
"date": "2023-03-17",
"count": 1
},
{
"date": "2023-03-21",
"count": 1
},
{
"date": "2023-03-22",
"count": 1
},
{
"date": "2023-05-15",
"count": 2
},
{
"date": "2023-05-24",
"count": 1
},
{
"date": "2023-05-25",
"count": 1
},
{
"date": "2023-05-30",
"count": 1
},
{
"date": "2023-06-19",
"count": 1
},
{
"date": "2023-06-22",
"count": 1
},
{
"date": "2023-06-26",
"count": 1
},
{
"date": "2023-07-24",
"count": 2
},
{
"date": "2023-07-26",
"count": 1
},
{
"date": "2023-08-17",
"count": 1
},
{
"date": "2023-08-22",
"count": 1
},
{
"date": "2023-08-30",
"count": 1
},
{
"date": "2023-09-07",
"count": 1
},
{
"date": "2023-09-09",
"count": 1
},
{
"date": "2023-09-14",
"count": 1
},
{
"date": "2023-09-26",
"count": 1
},
{
"date": "2023-10-05",
"count": 1
},
{
"date": "2023-10-09",
"count": 1
},
{
"date": "2023-10-10",
"count": 2
},
{
"date": "2023-10-13",
"count": 1
},
{
"date": "2023-10-17",
"count": 1
},
{
"date": "2023-11-21",
"count": 1
},
{
"date": "2023-12-04",
"count": 2
},
{
"date": "2023-12-30",
"count": 1
},
{
"date": "2024-01-08",
"count": 1
},
{
"date": "2024-02-14",
"count": 1
},
{
"date": "2024-02-27",
"count": 1
},
{
"date": "2024-03-03",
"count": 1
},
{
"date": "2024-04-17",
"count": 1
},
{
"date": "2024-04-30",
"count": 1
},
{
"date": "2024-05-13",
"count": 1
},
{
"date": "2024-05-23",
"count": 1
},
{
"date": "2024-06-04",
"count": 1
},
{
"date": "2024-07-04",
"count": 1
},
{
"date": "2024-07-23",
"count": 1
},
{
"date": "2024-08-20",
"count": 1
},
{
"date": "2024-08-27",
"count": 1
},
{
"date": "2024-10-15",
"count": 1
},
{
"date": "2024-11-01",
"count": 1
},
{
"date": "2024-12-02",
"count": 1
},
{
"date": "2025-01-16",
"count": 1
},
{
"date": "2025-02-14",
"count": 1
},
{
"date": "2025-03-04",
"count": 1
},
{
"date": "2025-04-07",
"count": 1
},
{
"date": "2025-05-08",
"count": 1
},
{
"date": "2025-05-13",
"count": 1
},
{
"date": "2025-06-10",
"count": 1
},
{
"date": "2025-06-22",
"count": 1
},
{
"date": "2025-07-30",
"count": 1
},
{
"date": "2025-07-31",
"count": 1
},
{
"date": "2025-09-25",
"count": 1
},
{
"date": "2025-10-22",
"count": 1
},
{
"date": "2025-10-30",
"count": 1
},
{
"date": "2025-11-13",
"count": 1
},
{
"date": "2025-11-18",
"count": 1
},
{
"date": "2025-12-08",
"count": 1
},
{
"date": "2025-12-22",
"count": 1
},
{
"date": "2026-01-08",
"count": 1
},
{
"date": "2026-01-22",
"count": 1
},
{
"date": "2026-02-05",
"count": 2
},
{
"date": "2026-02-06",
"count": 1
},
{
"date": "2026-02-23",
"count": 1
},
{
"date": "2026-03-17",
"count": 1
},
{
"date": "2026-06-09",
"count": 1
},
{
"date": "2026-07-14",
"count": 1
}
],
"complete": true,
"collected": 92,
"total_forks": 96
},
"star_history": null,
"open_issues_and_prs": 46
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 1135705,
"source_files_sampled": 100,
"oversized_source_files": 7,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"package.json"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [
{
"name": "ascii-table",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "0.0.9"
},
{
"name": "fast-equals",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^4.0.3"
},
{
"name": "lodash.bindall",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^4.4.0"
},
{
"name": "lodash.clone",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^4.5.0"
},
{
"name": "lodash.pick",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^4.4.0"
},
{
"name": "lodash.transform",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^4.6.0"
},
{
"name": "underscore",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.13.6"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 26,
"merged_prs": 630,
"open_issues": 20,
"closed_ratio": 0.608,
"closed_issues": 31,
"closed_unmerged_prs": 104
},
"bus_factor": 8,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "fabioh8010",
"commits": 482,
"avatar_url": "https://avatars.githubusercontent.com/u/20051562?v=4"
},
{
"type": "User",
"login": "kidroca",
"commits": 221,
"avatar_url": "https://avatars.githubusercontent.com/u/12156624?v=4"
},
{
"type": "User",
"login": "OSBotify",
"commits": 216,
"avatar_url": "https://avatars.githubusercontent.com/u/76178356?v=4"
},
{
"type": "User",
"login": "tgolen",
"commits": 214,
"avatar_url": "https://avatars.githubusercontent.com/u/1228807?v=4"
},
{
"type": "User",
"login": "marcaaron",
"commits": 192,
"avatar_url": "https://avatars.githubusercontent.com/u/32969087?v=4"
},
{
"type": "User",
"login": "blazejkustra",
"commits": 183,
"avatar_url": "https://avatars.githubusercontent.com/u/46095609?v=4"
},
{
"type": "User",
"login": "TMisiukiewicz",
"commits": 123,
"avatar_url": "https://avatars.githubusercontent.com/u/13985840?v=4"
},
{
"type": "User",
"login": "hannojg",
"commits": 101,
"avatar_url": "https://avatars.githubusercontent.com/u/16821682?v=4"
},
{
"type": "User",
"login": "VickyStash",
"commits": 100,
"avatar_url": "https://avatars.githubusercontent.com/u/23176449?v=4"
},
{
"type": "User",
"login": "roryabraham",
"commits": 85,
"avatar_url": "https://avatars.githubusercontent.com/u/47436092?v=4"
}
],
"contributors_sampled": 98,
"top_contributor_share": 0.148
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"cla.yml",
"lint.yml",
"pr-checklist.yml",
"publish.yml",
"reassurePerfTests.yml",
"require-tests.yml",
"test.yml",
"typecheck.yml",
"validateDocs.yml",
"validateGithubActions.yml"
],
"has_docs_dir": false,
"linter_configs": [
"eslint.config.mjs"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"package-lock.json"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 6,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "5 out of 5 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 2,
"reason": "Found 5/17 approved changesets -- score normalized to 2",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 10 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 8,
"reason": "dependency not pinned by hash detected -- score normalized to 8",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "70 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "ec42979e16ea24662974aadf021a2590e12f3add",
"ran_at": "2026-07-28T15:36:27Z",
"aggregate_score": 4.6,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-28T15:17:55Z",
"oldest_open_prs": [
{
"number": 449,
"created_at": "2024-01-17T15:59:04Z",
"last_comment_at": "2024-03-28T14:36:08Z",
"last_comment_author": "tgolen"
},
{
"number": 528,
"created_at": "2024-04-07T11:40:44Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 603,
"created_at": "2024-11-27T20:23:55Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 619,
"created_at": "2025-02-24T17:32:32Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 628,
"created_at": "2025-04-15T08:56:20Z",
"last_comment_at": "2025-04-15T08:56:34Z",
"last_comment_author": "github-actions"
},
{
"number": 650,
"created_at": "2025-06-30T18:54:50Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 679,
"created_at": "2025-08-21T00:27:37Z",
"last_comment_at": "2025-08-21T00:28:00Z",
"last_comment_author": "chuckdries"
},
{
"number": 682,
"created_at": "2025-09-04T19:59:28Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 691,
"created_at": "2025-10-20T11:51:47Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 695,
"created_at": "2025-10-28T23:52:47Z",
"last_comment_at": "2026-03-13T14:06:43Z",
"last_comment_author": "fabioh8010"
},
{
"number": 721,
"created_at": "2026-01-13T11:25:54Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 726,
"created_at": "2026-01-27T13:36:44Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 747,
"created_at": "2026-03-04T13:29:08Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 751,
"created_at": "2026-03-11T17:25:48Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 773,
"created_at": "2026-04-16T14:51:46Z",
"last_comment_at": "2026-04-21T17:22:00Z",
"last_comment_author": "fabioh8010"
},
{
"number": 775,
"created_at": "2026-04-17T11:59:46Z",
"last_comment_at": "2026-05-15T15:52:36Z",
"last_comment_author": "fabioh8010"
},
{
"number": 776,
"created_at": "2026-04-17T20:19:01Z",
"last_comment_at": "2026-05-18T12:02:35Z",
"last_comment_author": "sosek108"
},
{
"number": 789,
"created_at": "2026-05-21T08:20:37Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 800,
"created_at": "2026-06-19T10:03:18Z",
"last_comment_at": "2026-07-01T07:35:58Z",
"last_comment_author": "fabioh8010"
},
{
"number": 802,
"created_at": "2026-06-19T18:14:39Z",
"last_comment_at": "2026-07-10T01:12:13Z",
"last_comment_author": "roryabraham"
}
],
"last_merged_pr_at": "2026-07-24T09:21:22Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 84,
"created_at": "2021-07-06T08:24:54Z",
"last_comment_at": "2023-08-31T06:47:16Z",
"last_comment_author": "hannojg"
},
{
"number": 87,
"created_at": "2021-07-12T19:10:52Z",
"last_comment_at": "2021-10-26T20:17:46Z",
"last_comment_author": "marcaaron"
},
{
"number": 108,
"created_at": "2021-10-27T03:50:20Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 109,
"created_at": "2021-10-27T18:50:30Z",
"last_comment_at": "2021-10-28T21:01:00Z",
"last_comment_author": "kidroca"
},
{
"number": 115,
"created_at": "2022-01-20T22:45:48Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 119,
"created_at": "2022-02-23T02:59:04Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 144,
"created_at": "2022-05-27T01:32:05Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 176,
"created_at": "2022-09-13T19:38:29Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 180,
"created_at": "2022-09-21T18:15:53Z",
"last_comment_at": "2022-09-21T18:57:21Z",
"last_comment_author": "marcaaron"
},
{
"number": 181,
"created_at": "2022-09-21T18:24:51Z",
"last_comment_at": "2022-12-20T18:47:50Z",
"last_comment_author": "marcaaron"
},
{
"number": 281,
"created_at": "2023-07-17T18:22:29Z",
"last_comment_at": "2023-08-16T01:24:05Z",
"last_comment_author": "marcaaron"
},
{
"number": 297,
"created_at": "2023-08-10T08:52:33Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 313,
"created_at": "2023-08-23T03:57:12Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 391,
"created_at": "2023-10-05T19:29:37Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 514,
"created_at": "2024-03-19T09:14:58Z",
"last_comment_at": "2024-03-19T09:19:52Z",
"last_comment_author": "paultsimura"
},
{
"number": 516,
"created_at": "2024-03-20T16:43:27Z",
"last_comment_at": "2024-03-25T15:29:04Z",
"last_comment_author": "chrispader"
},
{
"number": 529,
"created_at": "2024-04-16T08:49:18Z",
"last_comment_at": "2024-04-16T14:30:00Z",
"last_comment_author": "tgolen"
},
{
"number": 568,
"created_at": "2024-07-18T13:00:17Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 571,
"created_at": "2024-07-22T06:54:16Z",
"last_comment_at": "2024-07-22T06:56:37Z",
"last_comment_author": "hannojg"
},
{
"number": 595,
"created_at": "2024-11-07T07:04:02Z",
"last_comment_at": "2025-09-17T13:50:09Z",
"last_comment_author": "etCoderDysto"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/Expensify/react-native-onyx",
"host": "github.com",
"name": "react-native-onyx",
"owner": "Expensify"
},
"metrics": {
"overall": {
"key": "overall",
"band": "excellent",
"name": "Overall health",
"note": "The weighted overall 74 is calibrated to 88 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 74,
"calibrated": 88,
"calibration": "2026-08-02"
}
}
],
"value": 88,
"inputs": {
"security": 46,
"vitality": 95,
"community": 64,
"governance": 84,
"calibration": "2026-08-02",
"engineering": 74,
"ai_readiness": 60,
"weighted_overall_raw": 74
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "exceptional",
"name": "Vitality",
"value": 95,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "exceptional",
"name": "Development activity",
"note": null,
"notes": [],
"value": 99,
"inputs": {
"commits_last_year": 927,
"human_commit_share": 0.72,
"days_since_last_push": 4,
"active_weeks_last_year": 50
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 4 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 4
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "50/52 weeks with commits",
"points": 34.6,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 50
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "927 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 927
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 88,
"inputs": {
"releases_count": 100,
"latest_release_tag": "3.0.94",
"releases_from_tags": true,
"days_since_latest_release": 4,
"mean_days_between_releases": 5
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "100 version tags (no GitHub releases)",
"points": 16.2,
"status": "partial",
"details": [
{
"code": "version_tags_no_releases",
"params": {
"count": 100
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 4 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 4
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~5 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 5
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "exceptional",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 6,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 6 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 6
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 64,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "moderate",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 63,
"inputs": {
"forks": 96,
"stars": 231,
"watchers": 32,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "231 stars",
"points": 38.3,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 231
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "96 forks",
"points": 16.5,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 96
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "32 watchers",
"points": 8.3,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 32
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 57,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": null,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"readme_badge_services": [],
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "good",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 76,
"inputs": {
"packages": [
"react-native-onyx"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 38962
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "38,962 downloads/month across npm",
"points": 61.2,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 38962,
"ecosystems": "npm"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "excellent",
"name": "Sustainability & Governance",
"value": 84,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "exceptional",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 97,
"inputs": {
"bus_factor": 8,
"contributors_sampled": 98,
"top_contributor_share": 0.148
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "8 contributor(s) cover half of all commits",
"points": 54,
"status": "met",
"details": [
{
"code": "bus_factor",
"params": {
"count": 8
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 15% of commits",
"points": 19.2,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 15
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "98 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 98
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 10 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"newcomer_pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 62,
"inputs": {
"merged_prs": 630,
"open_issues": 20,
"closed_issues": 31,
"prs_merged_7d": null,
"prs_decided_7d": null,
"prs_merged_30d": null,
"prs_decided_30d": null,
"issue_closed_ratio": 0.608,
"closed_unmerged_prs": 104,
"first_time_authors_30d": null,
"first_time_prs_merged_30d": null,
"first_time_prs_decided_30d": null
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "61% of issues closed",
"points": 25.5,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 61
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "630/734 decided PRs merged",
"points": 25.7,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 630,
"decided": 734
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "no first-time contributor's PR decided in 30d",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_newcomer_prs",
"params": {
"days": 30
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 5/17 approved changesets -- score normalized to 2",
"points": 3,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"followers": 1013,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "Expensify",
"public_repos": 66,
"account_age_days": 5738
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "1,013 followers of Expensify",
"points": 21.6,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 1013,
"login": "Expensify"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "66 public repos, account ~15 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 66
}
},
{
"code": "account_age_years",
"params": {
"years": 15
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "exceptional",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"react-native-onyx"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 4
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on npm",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "npm"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 4 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 4
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "366 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 366
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 74,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "10 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 10
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": "eslint.config.mjs",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.mjs"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "5 out of 5 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"topics": [],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": false,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "weak",
"name": "Security",
"value": 46,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "weak",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 46,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 4.6
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 4.5,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "5 out of 5 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 5/17 approved changesets -- score normalized to 2",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 10 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 8",
"points": 4,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "70 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "exceptional",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"commit_weight_rule": {
"min_commits": 50,
"min_commit_share": 0.1
},
"review_only_matches": 0,
"below_threshold_exposures": [],
"assessed_self_published_locations": 8
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 60,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 27,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.5,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "36 of 72 human commits state their intent (structured subject or explanatory body)",
"points": 26.7,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 36,
"sampled": 72
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"package-lock.json"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"tsconfig.json"
],
"agent_commit_share": 0.06,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": "eslint.config.mjs",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.mjs"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "6 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 6,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 8",
"points": 8,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "exceptional",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 96,
"inputs": {
"primary_language": "TypeScript",
"largest_source_bytes": 1135705,
"source_files_sampled": 100,
"oversized_source_files": 7
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "TypeScript (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "TypeScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "7/100 source files over 60KB",
"points": 51.1,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 100,
"oversized": 7
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"classification": {
"labels": [
"library"
],
"scores": {
"library": 6
},
"primary": "library",
"evidence": [
{
"tier": "distribution",
"label": "library",
"source": "registry:npm",
"weight": 6
}
],
"artifacts": [],
"confidence": "medium",
"host_extension": false,
"runs_as_process": false,
"consumed_by_code": true
},
"metrics_version": "2.3.1"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"deps.dev does not index npm:react-native-onyx@3.0.94; advisories assessed against the repository dependency graph instead"
],
"report_type": "repository",
"generated_at": "2026-07-28T15:36:53.535438Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/e/Expensify/react-native-onyx.svg",
"full_name": "Expensify/react-native-onyx",
"license_state": "standard",
"license_spdx": "MIT"
}