Registro público
Informe de salud del softwareesquema 0.26.0 · métricas 1.13.0 · 2026-07-22 05:55 UTC

software-mansion / rnrepo

A Repository for React Native Pre-Built Artifacts

TypeScript · Kotlin · AstroSin licencia detectada★ 403 estrellas⑂ 12 forksdesde jun 2025Ver en GitHub ↗

software-mansion/rnrepo tiene un índice de salud de 62 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Engineering Quality (76/100) y la más baja, Security (42/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

62
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

62
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

Software MansionOrganización
1604 seguidores59 repositorios públicosdesde oct 2019

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npm@rnrepo/build-tools0.2.189.27211hace 4 díascocoapodsgradlereact-nativernrepoiosandroidpluginprebuildsxcframeworkaar
npm@rnrepo/expo-config-plugin0.3.586.94415hace 4 díasreact-nativeexpoconfigpluginprebuildsrnrepo

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

56Moderado · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
27.7/36Cadencia de commits — 40/52 semanas con commits
18/18Volumen de commits — 342 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 20 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year342
human_commit_share0,92
days_since_last_push0
active_weeks_last_year40
Cómo se puntúa
0/27Publica versiones — sin versiones publicadas
0/36Recencia de las versiones — sin versiones
0/27Cadencia de publicación — sin versiones
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count0
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

53Moderado · 18% del índice global
Cómo se puntúa
42.2/60Estrellas — 403 estrellas
8.7/25Forks — 12 forks
0/15Observadores — 1 observadores
Datos de entrada utilizados
forks12
stars403
watchers1
growth_stateorganic
growth_factor_pct100
Cómo se puntúa
22.5/22.5README
0/22.5Licencia — no se detectó ningún archivo de licencia
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_licenseno
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_template
Cómo se puntúa
69.9/80Descargas mensuales — 176.216 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packages@rnrepo/build-tools, @rnrepo/expo-config-plugin
dependents
ecosystemsnpm
total_downloads
monthly_downloads176.216
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

75Bueno · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
6.4/22.5Distribución de commits — el principal contribuyente firma el 72% de los commits
13.5/13.5Amplitud de contribuyentes — 14 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 7 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled14
top_contributor_share0,716
Cómo se puntúa
46.8/46.8Resolución de issues — 100% de issues cerradas
35.3/38.3Aceptación de PR — 319/346 PR decididos fusionados
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Datos de entrada utilizados
merged_prs319
open_issues0
closed_issues64
issue_closed_ratio1
closed_unmerged_prs27
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
23/25Alcance del propietario — 1604 seguidores de software-mansion
24.9/25Trayectoria — 59 repos públicos, cuenta de ~6 años
Datos de entrada utilizados
followers1604
owner_typeOrganization
is_verified
owner_loginsoftware-mansion
public_repos59
account_age_days2464
Cómo se puntúa
25/25Publicado y resoluble — 2 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 4 días
20/20Historial de versiones — 15 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packages@rnrepo/build-tools, @rnrepo/expo-config-plugin
ecosystemsnpm
any_deprecatedno
min_days_since_publish4

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

76Bueno · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 14 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — .eslintrc.js
0/9.6Hooks de pre-commit
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
Datos de entrada utilizados
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_configno

Documentación

55Moderado
Cómo se puntúa
30/30README
0/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — http://rnrepo.org/
10/10Descripción del repositorio
0/10Topics
0/10Wiki
Datos de entrada utilizados
topics
has_wikino
homepagehttp://rnrepo.org/
has_readme
has_docs_dirno
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

42En riesgo · 16% del índice global
Cómo se puntúa
6.8/7.5Binary-Artifacts — binaries present in source code
4.5/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 7 contributing companies or organizations
0/10Dangerous-Workflow — dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
0/2.5Licencia — license file not detected
7.5/7.5Maintained — 30 commit(s) and 20 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
4.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 9
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 100 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4,2
Excluidos de la puntuación (sin datos o no aplicable): signed_releases. Los pesos restantes se han renormalizado.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

68Moderado · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 92 de 92 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
12.6/18Arranque con un solo comando — packages/build-tools/gradle-plugin/build.gradle (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
11/11Configuración de lint / formato — .eslintrc.js
11/11Verificación estática de tipos — packages/expo-config-plugin/tsconfig.json, packages/website/tsconfig.json, tsconfig.json
0/10Entorno reproducible
10/10Práctica demostrada con agentes — 13 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
9/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 9
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configspackages/expo-config-plugin/tsconfig.json, packages/website/tsconfig.json, tsconfig.json
agent_commit_share0,13
toolchain_manifestspackages/build-tools/gradle-plugin/build.gradle
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — TypeScript (tipado estático)
55/55Tamaños de archivo manejables — 0/60 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageTypeScript
largest_source_bytes56.925
source_files_sampled60
oversized_source_files0

Datos clave

403estrellas de GitHub
14contribuidores
342commits en los últimos 12 meses
0días desde el último push
0versiones publicadas
1factor bus
0issues abiertas
npmecosistemas de paquetes

Advertencias de recopilación de datos

  • Could not fetch npm package '@rnrepo/builder' from its registry
  • Could not fetch npm package '@rnrepo/publisher' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository
  • deps.dev does not index npm:@rnrepo/build-tools@0.2.1; advisories assessed against the repository dependency graph instead

Más detalle

Historial de estrellas y forks 403 ★ / 12 ⇿
403Estrellas
12Forks

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

010020030040050040312822025-122026-032026-07
OpenSSF Scorecard 4.2 / 10
4.2agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-22 05:55 UTC

9Binary-Artifactsbinaries present in source code
6Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
10Code-Reviewall changesets reviewed
10Contributorsproject has 7 contributing companies or organizations
0Dangerous-Workflowdangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
0Licenselicense file not detected
10Maintained30 commit(s) and 20 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
9Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 9
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities100 existing vulnerabilities detected
Dependencias directas 25
RegistroPaqueteRestricción de versiónManifiesto
npmcommander^13.1.0package.json
npmsemver^7.7.4package.json
npmzx^8.6.0package.json
npmcommander^13.1.0packages/builder/package.json
npm@rnrepo/configworkspace:*packages/builder/package.json
npmzx^8.6.0packages/builder/package.json
npm@rnrepo/configworkspace:*packages/database/package.json
npm@supabase/supabase-js^2.47.0packages/database/package.json
npm@expo/config-plugins*packages/expo-config-plugin/package.json
npm@expo/config-types*packages/expo-config-plugin/package.json
npm@rnrepo/build-tools0.2.1packages/expo-config-plugin/package.json
npm@octokit/rest^22.0.0packages/publisher/package.json
npm@rnrepo/configworkspace:*packages/publisher/package.json
npm@rnrepo/databaseworkspace:*packages/publisher/package.json
npmcommander^13.1.0packages/publisher/package.json
npmzx^8.6.0packages/publisher/package.json
npm@octokit/plugin-paginate-rest^14.0.0packages/scheduler/package.json
npm@octokit/rest^22.0.0packages/scheduler/package.json
npm@rnrepo/configworkspace:*packages/scheduler/package.json
npm@rnrepo/databaseworkspace:*packages/scheduler/package.json
npmsemver^7.7.3packages/scheduler/package.json
npmastro^4.16.6packages/website/package.json
npmlucide-astro^0.555.0packages/website/package.json
npmshiki^3.17.1packages/website/package.json
npm@rnrepo/databaseworkspace:*packages/website/package.json
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 6169,
      "has_wiki": false,
      "homepage": "http://rnrepo.org/",
      "languages": {
        "CSS": 245,
        "Ruby": 38224,
        "Astro": 91994,
        "Kotlin": 97031,
        "PLpgSQL": 4659,
        "JavaScript": 2146,
        "TypeScript": 182923
      },
      "pushed_at": "2026-07-21T10:58:17Z",
      "created_at": "2025-06-06T14:38:35Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-21T12:45:11Z",
      "description": "A Repository for React Native Pre-Built Artifacts",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": null,
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "Kotlin",
        "Astro"
      ]
    },
    "owner": {
      "blog": "https://swmansion.com",
      "name": "Software Mansion",
      "type": "Organization",
      "login": "software-mansion",
      "company": null,
      "location": "Kraków, Poland",
      "followers": 1604,
      "avatar_url": "https://avatars.githubusercontent.com/u/56880679?v=4",
      "created_at": "2019-10-22T13:58:01Z",
      "is_verified": null,
      "public_repos": 59,
      "account_age_days": 2464
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [],
      "recent_commits": [
        {
          "oid": "d4af2edf88e5932f53d8ad4f64db5386dbe1091d",
          "body": "## 📝 Description\n\nDue to failing jobs:\n-\nhttps://github.com/software-mansion/rnrepo/actions/runs/29537171571/job/87751132245",
          "is_bot": false,
          "headline": "update npm version to 24 (#417)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-17T09:00:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a8f8bb5382672a69457bdf43fed30ff1f72350a",
          "body": "## 📝 Description\n\n- @rnrepo/build-tools@0.2.1\n- @rnrepo/expo-config-plugin@0.3.5\n\n> Note changelog for @rn/bt will be added after merging entry from #415",
          "is_bot": false,
          "headline": "release 0.2.1 and 0.3.5 (#416)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-16T21:44:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c241fa195e88836c08d5b32f8fe7be69eb84ca76",
          "body": "## 📝 Description\n\nnew reanimated versions, remove unnecessary patch version in\nlibraries.json\n\n-\nhttps://docs.swmansion.com/react-native-worklets/docs/guides/compatibility\n-\nhttps://docs.swmansion.com/react-native-reanimated/docs/guides/compatibility/\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Update reanimated and worklets compatibility (#414)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-16T21:40:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "78649d112259cb9d9d60fd4056a5319c98590e3a",
          "body": "## 📝 Description\n\nIt was set as found after first try, not after a successful try",
          "is_bot": false,
          "headline": "Set RN version as found only when it was found (#415)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-16T21:38:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f597517072a2a8c4fedd44d32183a9e1c71ef872",
          "body": "## 📝 Description\n\nFixes #412",
          "is_bot": false,
          "headline": "Update fingerprint pattern in docs (#413)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-15T09:21:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e0bb28c17eb18800b950cb68c1fb6e762772b12",
          "body": "## 📝 Description\n\navoid failures like:\n```\nShellError: Failed with exit code 1\n exitCode: 1,\n   stdout: \"\",\n   stderr: \"npm error code ETARGET\\nnpm error notarget No matching version found for react-native-worklets@0.10.2 with a date before 7/5/2026, 12:20:15 PM.\\nnpm error notarget In most cases yo\n[…]\ngs/2026-07-09T12_20_15_394Z-debug-0.log\\n\",\n```\n> rnworklets were released 12h ago, so 4days-min-age failed\n\nsource:\nhttps://github.com/software-mansion/rnrepo/actions/runs/29012220481/job/86098364112",
          "is_bot": false,
          "headline": "dont schedule libs newer than min-release-age (#410)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-10T10:09:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8ce37a77a76f6a92e4f1b09d296f3793e33d9445",
          "body": "## 📝 Description\n\nChange image source to local file in README - updated image in #403",
          "is_bot": false,
          "headline": "Change image source to local file in README (#411)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-10T09:30:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9cac889292360cf92a0ad39b02d9a3cf944cd2c",
          "body": "## 📝 Description\n\nThis reverts commit 4bf26c483f99bcdf9279c28a0ca0f9632f2a3c9d.\n\nreverts #405\n\nversions used from:\nhttps://www.npmjs.com/package/react-native-screens#:~:text=x%20branch.-,Support%20for%20Fabric,-Fabric%20is%20React",
          "is_bot": false,
          "headline": "Revert \"disable building screens until merging the fix (#405)\" (#407)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-09T11:52:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "868b9e09e3fd367c75387c4313e8df33fcc6069b",
          "body": "## 📝 Description\n\ncircular dependency in android with `evaluationDependsOn(':app')` also\nremoving the artifacts\n\nFixes #408",
          "is_bot": false,
          "headline": "remove @notifee/react-native (#409)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-09T10:35:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4bf26c483f99bcdf9279c28a0ca0f9632f2a3c9d",
          "body": "## 📝 Description\n\n- issue in https://github.com/software-mansion/rnrepo/issues/376\n- Fix in\nhttps://github.com/software-mansion/react-native-screens/pull/4224\n\nRevert of this commit in\nhttps://github.com/software-mansion/rnrepo/pull/406",
          "is_bot": false,
          "headline": "disable building screens until merging the fix (#405)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-06T13:41:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dfab364117d16dfbf9f90f783dfe5146a24ffbd9",
          "body": "## 📝 Description\n\nremove beta label from readme png",
          "is_bot": false,
          "headline": "remove beta label from readme png (#403)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-06T13:41:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01adc86bfbcb631f100ea53bca778b399d5dd9fe",
          "body": "## 📝 Description\n\nremove rn <0.81 since codegen builds will fail for those\n\n## 🧪 Testing\n\npatch is successfully applied for all react-native@>=0.81 versions.\n```\n PATCH COMPATIBILITY RESULTS\nRN VERSION    RESULT\n──────────────────────────────────\n0.77.3        ✗ patch mismatch\n0.78.3        ✗ patch \n[…]\natch\n0.81.0        ✓\n0.81.1        ✓\n0.81.4        ✓\n0.81.5        ✓\n0.81.6        ✓\n0.82.0        ✓\n0.82.1        ✓\n0.83.0        ✓\n0.83.1        ✓\n0.83.2        ✓\n0.83.4        ✓\n0.84.0        ✓\n```",
          "is_bot": false,
          "headline": "remove non-codegen RN versions: <0.81  (#402)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-06T13:41:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cb7dee19b9ce3ccd0204e68ca7c504227f9d38b2",
          "body": "## 📝 Description\n\nMinor to 0.2.0 since this introduces the codegen usage for android\npackages\n- @rnrepo/expo-config-plugin@0.3.4\n- @rnrepo/build-tools@0.2.0",
          "is_bot": false,
          "headline": "bump versions before release (#400)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-03T13:46:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f0ca2174b9616a02a19de29427e02cbec95a7a3",
          "body": "## 📝 Description\n\nWhen 2 labels were added at same time ci ignored one of them because of\nonly last even was processed so only one platform was launched.\n```\n... contains(fromJSON('[\"build-ios\", \"build-expo\"]'), github.event.label.name)). \n                                                            \n[…]\ngithub.event.label.name` was kept in checker job to avoid triggering\nbuilds when other label is added, like \"bug\" etc\n\nLogic stays the same and changes are only for pr checks for dev, not\nuser-facing.",
          "is_bot": false,
          "headline": "fix ci example builds when 2 labels are added at the same time (#401)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-03T12:44:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c141d21b1cfa6e6b25518804417ecb7e0ca5a942",
          "body": "## 📝 Description\n\n~~180 builds will be scheduled~~\n\nWAIT UNTIL RNAA migrate to worklets stable api to schedule the builds\nI have released one version to maven with request of specific\nRN+RNWorklets+RNAA so i want to keep the plugins compatible with that\nversion\n\nchanges:\n- integration with worklets \n[…]\n\n\n- tested app on ios/android and worked with \n  - rn@0.85.3\n  - rnaa@0.12.2\n  - with expo@56\n  - worklets@0.9.1 (from sources) and from prebuild\n  - examples from docs (with worklets and without too)",
          "is_bot": false,
          "headline": "support react-native-audio-api in plugins (#399)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-03T12:34:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7fdaeeb56f71b013f715769b9ca8d9a2a80f54d3",
          "body": "## 📝 Description\n\nexpo@+55/56 enables gamma, so we need to build that too",
          "is_bot": false,
          "headline": "build react-native-screens with gamma=true (#398)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-03T12:32:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "33b58954a36d8db734db2fdda7482b89c46aee96",
          "body": "## 📝 Description\n\nPR adding codegen artifacts (static libs and headers) as parts of\nlibrary `.aar` and implementing:\n- packing all of it to `.aar`\n- unpacking them in client project\n- linking them instead of building them from source by:\n- removing library occurences from `Android-autolinking.cmake`\n[…]\n.81.6        ✓\n0.82.0        ✓\n0.82.1        ✓\n0.83.0        ✓\n0.83.1        ✓\n0.83.2        ✓\n0.83.4        ✓\n0.84.0        ✓\n```\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "feat: codegen in android packages (#206)",
          "author_name": "Wojciech Lewicki",
          "author_login": "WoLewicki",
          "committed_at": "2026-06-30T14:14:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8481b5645d9aa337c54abfa54ba4b1c045d73096",
          "body": "## 📝 Description\n\nSome rows show no versions supported due to selector bug\n\n## 🧪 Testing\n\nastro build with DB auth for fetching data, before:\n<img width=\"735\" height=\"605\" alt=\"Zrzut ekranu 2026-06-26 o 17 39 43\"\nsrc=\"https://github.com/user-attachments/assets/497599ad-21d9-4474-b717-1a30d2ad7a88\"\n/>\n\nafter there are libs listed",
          "is_bot": false,
          "headline": "fix missing/empty rows in supportedLibraries (#397)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-29T09:36:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "74969b682436c692f7dbd3b80ab2637dba2f3b5b",
          "body": "## 📝 Description\n\nUpgrade Xcode if needed: Xcode 26.4 is required to compile a native iOS\nproject. For EAS Build and Workflows, profiles without any specified\nimage will default to Xcode 26.4.\n- source: https://expo.dev/changelog/sdk-56#tool-version-bumps\n- failed build:\nhttps://github.com/software-\n[…]\nm taking\nthe latest 26.3, which also fixes the issue\n\n## 🧪 Testing\n\n- failed build:\nhttps://github.com/software-mansion/rnrepo/actions/runs/28091482981/job/83170331566\n- passed build on this pr checks",
          "is_bot": false,
          "headline": "bump xcode 26.1 -> 26.3 (#395)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-24T11:01:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "09ddd4df4adaa282ad9a7fffcc91694ae42f9383",
          "body": "## 📝 Description\n\nNo more build floods should appear, so no need to use extra runners\n\nintroduced in #291",
          "is_bot": false,
          "headline": "Return to GH macOS runners (#394)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-24T10:15:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f50e949e247a339cbb43ddad0f962666c13673c",
          "body": "## 📝 Description\n\nbump versions before release\n- @rnrepo/build-tools@0.1.6\n- @rnrepo/expo-config-plugin@0.3.3",
          "is_bot": false,
          "headline": "bump versions before release (#386)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-23T13:51:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0bdb07f5ba485bf9dd668f932684e3d4a2a4881",
          "body": "## 📝 Description\n\nAdding `allowList` support to both the Android Gradle plugin and iOS\nCocoaPods plugin as a complement to the existing `denyList`.\n\nWhen a project has many dependencies but only wants a subset prebuilt,\n`denyList` required listing every excluded package manually. The new\n`allowList`\n[…]\nError - RNRepo: Both 'denyList' and 'allowList' are configured\nfor iOS in rnrepo.config.json. Please use only one of them.\n    ```\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "feat: add allowList support for iOS and Android (#383)",
          "author_name": "lxr-mwhite",
          "author_login": "lxr-mwhite",
          "committed_at": "2026-06-23T13:45:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8f67ec83b4dd6fd1c0e6178065dc7bdad1606ff8",
          "body": "… (#393)\n\n## 📝 Description\n\nWith removed metadata the top-level functions will not be resolved when\naar is consumed.\n- Top-level functions in nitro-modules that caused error:\n-\nhttps://github.com/mrousavy/nitro/blob/main/packages/react-native-nitro-modules/android/src/main/java/com/margelo/nitro/cor\n[…]\npo-modules-core@56.0.17\n      - ❓ @expo/log-box@56.0.13\n      - ❓ expo-constants@56.0.18\n      - ❓ expo@56.0.12\n      - ❓ react-native-reanimated@4.3.1\n      - ❓ react-native-nitro-image@0.15.1\n   ```",
          "is_bot": false,
          "headline": "Dont remove `META-INF/` and `*.kotlin_module` files when building AAR…",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-23T13:36:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d5f6b11e666fe028d8f0686b71e8c137f1dcd1eb",
          "body": "## 📝 Description\n\nAdded support for:\n- react-native-quick-crypto\n-\nhttps://www.npmjs.com/package/react-native-quick-crypto?activeTab=versions\n  - only for <1.0.0 since later versions uses nitro\n  - #382\n- @sentry/react-native\n- https://www.npmjs.com/package/@sentry/react-native?activeTab=versions\n  \n[…]\nvents@2.2.0\n  - ```\n✅ Successfully built AAR for react-native-calendar-events@2.2.0 with RN\n0.85.0\n✅ Successfully built static XCFramework for\nreact-native-calendar-events@2.2.0 with RN 0.85.0\n    ```",
          "is_bot": false,
          "headline": "Support new libs (#388)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-23T11:05:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bea61a6ff071532f2f27355cca4c3502c9e7aecf",
          "body": "## 📝 Description\n\nAllow libs with license format `(<l1> AND <l2>)` to be builded (mmkv had\nthat case)\n- checks license field in package.json (like previously)\n- if grep (<l1> AND <l2>)\n  - checks if both licenses are supported\n    - it true, then builds and adds to .pom file both licenses \n\nI haven'\n[…]\nBSD-3-Clause-Clear, BSD-2-Clause. You can configure a custom license with MD5 hash verification in libraries.json.\n```\nafter\n```\n✅ Successfully built AAR for react-native-mmkv@3.3.0 with RN 0.83.0\n```",
          "is_bot": false,
          "headline": "support licenses in other SPDX format (#387)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-22T09:35:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ecc0561ad4cc1a773fc91bdfac1632f90d5f08c2",
          "body": "## 📝 Description\n\nFix a YAML syntax typo in the issue template. Since GitHub doesn't\nprovide a template preview, I had to verify the fix in a fork.\n\nFixes #377\n\n## 🧪 Testing\n\n**Before:** The Bug issue template did not appear in the \"New Issue\"\ndialog.\n\n**After:** The Bug issue template is displayed correctly again.",
          "is_bot": false,
          "headline": "fix typo in bug-issue-template (#390)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-22T09:31:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4f5b1a470afa090143f9f35c11c3772fd2fca5a",
          "body": "## 📝 Description\n\nMany unuseful info and very annoying to fill when reporting",
          "is_bot": false,
          "headline": "simplify issue reports templates (#377)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-22T09:00:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b61c889326de0e625655c14ea04e3870c7a4398",
          "body": "## 📝 Description\n\nRN does the same. This fixes `@notifee/react-native` ios building.\n\nRCA was the `bun.Glob` that returns files in different order than `npx\nreact-native config` so to make it reliable it will use same tools as RN\nproject.\n\npod install output:\n```\n...\nlink_native_modules! {:ios_packa\n[…]\nlibrary-ios.ts @notifee/react-native 9.1.8 0.85.0 /tmp/temp_notifee\n...\n📱 Building library pod: RNNotifee\n...\n✅ Successfully built static XCFramework for @notifee/react-native@9.1.8 with RN 0.85.0\n```",
          "is_bot": false,
          "headline": "find podspec via `npx react-native config` (#389)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-22T08:45:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d9ea9ac64608b700dda2f80a8b9dc6e1626818c9",
          "body": "## Summary\n\nFix RNRepo prebuild dependency substitution so package names are matched\nexactly instead of by substring.\n\nThis prevents packages with shared Gradle-name prefixes from being\nsubstituted to the wrong prebuilt artifact. One concrete case is React\nNative Firebase: `react-native-firebase_app\n[…]\n\nApp Check correctly:\n```\nproject :react-native-firebase_app-check -> org.rnrepo.public:react-native-firebase_app-check:23.8.8\n```\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "Fix RNRepo prebuild substitution prefix matching (#385)",
          "author_name": "Oskar Pawica",
          "author_login": "pawicao",
          "committed_at": "2026-06-16T13:44:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cab8793828abf98fdc9323524f9bc06199ec90c5",
          "body": "## 📝 Description\n\nbump packages before release and bump expo ci version \n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update",
          "is_bot": false,
          "headline": "release build-tools@0.1.5 & expo-config-plugin@0.3.2 (#359)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-12T13:28:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75a2384327006dea0415c9f0e8c3030cfb1f24ce",
          "body": "## 📝 Description\n\nRelocate the primary cache directory from node_modules/.rnrepo-cache to:\n- default:  ~/.rnrepo-cache/ \n- proviede in rnrepo.config.json[\"xcframeworksCacheDir\"]:\n\"/path/to/cache\"\n- disabled caching via rnrepo.config.json[\"xcframeworksCacheDir\"]: \"\" |\nnull\n\nso it can be cached by runner CI.\n\n#334 \n\n## 🎯 Type of Change\n\n- [x] ✨ New feature (non-breaking change which adds functionality)",
          "is_bot": false,
          "headline": "Move xcframework cache to project level (#338)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-12T13:15:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "930597f56af7770cb56d14f3fdcb3d0f69f0d1da",
          "body": "## 📝 Description\n\nMoves the concurrency group and cancel-in-progress flag from the\nindividual Android build job to the global workflow scope.\n\nThis fixes a race condition where newer commits were being canceled\ninstead of older ones due to the `needs: check-changes` dependency. Now,\nthe entire previ\n[…]\n\n  - hash: 8575dc89a2ae574c5a8c6ac330b586c8558fd396 \n  - pushed when previous build was running\n  - ci on this commit were cancelled (concurrency) - wrong\n    - ci old commit was not cancelled - wrong",
          "is_bot": false,
          "headline": "move concurrency configuration to global workflow level (#370)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-12T12:53:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "666f9bb15dbf1d9fc0b973d1bbe335c8421a8c5d",
          "body": "## 📝 Description\n\n- rngh@3.0.0 have introduced the Compatibility with React Native\nversions:\n-\nhttps://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/installation\n- worklets 0.7.4 have rn@0.84 \n- compatibility.json: \"react-native\": [\"0.79\", \"0.80\", \"0.81\", \"0.82\",\n\"0.83\", \"0.84\"]",
          "is_bot": false,
          "headline": "update rngh libraries (#375)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-12T12:53:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7587796b1551b8007b82daeeeeaea5c228798cd3",
          "body": "…ods objects (#373)\n\n## 📝 Description\n\nFixes #362.\n\nOn iOS, the cocoapods plugin injects an `[AA RUN FIRST] RNREPO Build\nStart` shell-script build phase into every prebuilt pod target during\n`post_install`. Those phases were created with\n`target.new_shell_script_build_phase`, which mints UUIDs throu\n[…]\noutside rnrepo's\ncontrol and can't ship on a useful timeline; the right scope for this PR\nis for rnrepo to stop being the trigger.\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "fix(ios): mint RNREPO build-phase UUIDs without colliding with CocoaP…",
          "author_name": "Konrad Armatys",
          "author_login": "konrad-armatys",
          "committed_at": "2026-06-12T12:45:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4ed353282315fa76c41c536590c59988dc45dea3",
          "body": "…C++ dependency check) (#372)\n\n⚠️ This was generated by a LLM ⚠️\n## Summary\n\nFixes #371.\n\nOn debug builds, the C++ dependency compatibility check registered in\n`gradle.projectsEvaluated` iterated `PACKAGES_WITH_CPP.keys` with a\n`parallelStream()`. `checkDependencies` then realizes each subproject's\n\n[…]\nlogs. On plugin 0.2.2 the same loop failed ~40% of runs\nwith the NPE above.\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "Fix intermittent \"collector is null\" NPE in debug builds (sequential …",
          "author_name": "Camille Barneaud",
          "author_login": "gadcam",
          "committed_at": "2026-06-12T11:49:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8575dc89a2ae574c5a8c6ac330b586c8558fd396",
          "body": "## 📝 Description\n\nSwitches the build configuration detection mechanism from matching the\n`$CONFIGURATION` name to checking `$GCC_PREPROCESSOR_DEFINITIONS` for\n`DEBUG=1`.\n\nMatching solely on `$CONFIGURATION == \"Debug\"` is unreliable because\nprojects often define custom build configurations (e.g., \"St\n[…]\nh\n\n$ npx expo run:ios --configuration Custom.re\n...\n$ realpath node_modules/react-native-worklets/.rnrepo-cache/Current/dummy.h\n.../node_modules/react-native-worklets/.rnrepo-cache/Release/dummy.h\n```",
          "is_bot": false,
          "headline": "Detect debug configuration using GCC preprocessor definitions (#367)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-11T13:22:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "033bcc45f0c28c6dab59f0d021c957c67c5aeeec",
          "body": "## 📝 Description\n\n2.25.0 and +3.0.0 builds failed due to patch applying failures. Only\ndiffs in .patch files are single lines:\n```\n$ diff react-native-gesture-handler.patch react-native-gesture-handler_2.25.0.patch\n\n62c62\n< @@ -1,65 +1,14 @@\n---\n> @@ -1,67 +1,14 @@\n95c95,97\n< -    fun isSvgElement(v\n[…]\nt-native-gesture-handler_3.0.0.patch\n\n29c29\n<\n---\n>\n36,38c36,38\n<\n<              if (isNewArchitectureEnabled()) {\n<                  srcDirs += 'fabric/src/main/java'\n---\n>          }\n>      }\n>\n\n```",
          "is_bot": false,
          "headline": "fix rngh patch for 2.25.0 and +3.0.0 (#364)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-11T13:22:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a2c1e2e2aa2b0deaf528cdea3aa0fcae0cf273eb",
          "body": "## 📝 Description\n\nreduce unused pr template",
          "is_bot": false,
          "headline": "delete pr 'type of change' template (#365)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-11T13:21:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67ba32657885084ebb33da601bf65316cf9e5640",
          "body": "## 📝 Description\n\nCloses #360\n\n## 🧪 Testing\n\n```\nbun run build-library-android.ts react-native-gesture-handler 24.1.0 0.83.6 /tmp/TEMP_fire_conf\n...\n✅ Successfully built AAR for @react-native-firebase/remote-config@24.1.0 with RN 0.83.6\n```",
          "is_bot": false,
          "headline": "add support for @react-native-firebase/remote-config (#366)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-11T13:21:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f368e1c522ba2b2bacc98c47387ca189bee0d1e",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\n## Testing\n\nTested app\n```\nnpx @react-native-community/cli@latest init AwesomeProject_860 --version 0.86.0\n```\n\nWi\n[…]\n debug and release builds on both android and ios\n\n---------\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#369)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-10T11:35:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0f251fe2d17444fa04b9193e96d74b416bbeebd4",
          "body": "## 📝 Description\n\nFixes #351.\n\nThe CocoaPods post-install hook currently injects an ExpoModulesCore\nmodule map path that assumes the prebuilt RNWorklets framework is named\n`RNWorklets.framework`. `react-native-worklets` packages the inner\nframework as `worklets.framework`, so the generated path poin\n[…]\ndulesCore should receive the module map flag pointing at the\nactual framework name inside the RNWorklets XCFramework intermediate.\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "fix: resolve worklets framework module map (#352)",
          "author_name": "lmlm",
          "author_login": "popsiclelmlm",
          "committed_at": "2026-06-03T12:51:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d43f12344129cd7cf30de9f4faeaae0b2a58d8be",
          "body": "## 📝 Description\n\nUpdate reanimated-worklets versions like defined:\n-\nhttps://docs.swmansion.com/react-native-reanimated/docs/guides/compatibility\n-\nhttps://docs.swmansion.com/react-native-worklets/docs/guides/compatibility/\n\n## 🎯 Type of Change\n\n- [x] 🧩 New library support",
          "is_bot": false,
          "headline": "update reanimated@4.4 and worklets@0.9 relations (#356)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-02T11:08:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "00b19e5a4588321216d1a0f31d2fac958d16bae6",
          "body": "## 📝 Description\n\nFix ogimage path for better preview in e.g. twitter posts (before was\nblank image, now should provided image appear)\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update",
          "is_bot": false,
          "headline": "Fix og-image path for twitter (#357)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-02T10:53:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d84f3ed91864a84556672aa5372f004c705e8c06",
          "body": "## 📝 Description\n\nAdds banners to the readme. They are currently hidden.",
          "is_bot": false,
          "headline": "Add readme banners (#353)",
          "author_name": "Paweł Małecki",
          "author_login": "p-malecki",
          "committed_at": "2026-06-02T10:32:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1979d191fccc3ee14bed4bbd27da99414ed53f33",
          "body": "## 📝 Description\n\nReduce unnecessary builds runs for prs that change comments or minor\nstuff.\n\n#### Code explanation\n\n```\n  check-changes:\n\n    # this allows to run jobs on main-push and workflow_dispatch or non-draft PRs \n    if: github.event_name != 'pull_request' || !github.event.pull_request.dra\n[…]\nt_name == 'pull_request' && contains(fromJSON('[\"build-android\", \"build-expo\"]'), github.event.label.name))\n```\n\n## 🎯 Type of Change\n\n- [x] ✨ New feature (non-breaking change which adds functionality)",
          "is_bot": false,
          "headline": "trigger builds only when PR is labeled (#343)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-22T14:18:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f9935368bda264fdf36db87053dad53283513643",
          "body": "## 📝 Description\n\n\n\n\nRemove iOS support for `react-native-permissions`\n\n`react-native-permissions` requires all used permissions to be\nexplicitly configured during `pod install`, which makes it impossible to\nprebuild and distribute all possible permission permutations.\n\nIncluding all permission hand\n[…]\nen.\n\nExample runtime crash:\n\n```text\nThis app has crashed because it attempted to access privacy-sensitive data without a usage description.\n```\n\n#347\n\n## 🎯 Type of Change\n\n- [x] 🧩 New library support",
          "is_bot": false,
          "headline": "remove support for iOS in `react-native-permissions` (#349)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-22T11:41:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ce4482b86bc983b4a24d361be6ccb58245a872a8",
          "body": "## 📝 Description\n\n7d is not a vaild option (but was mentioned in\n[article](https://www.armorcode.com/blog/defending-against-npm-supply-chain-attacks-a-practical-guide)).\njust '7' is still refering to elapsed days, so no functional changes\nhere. This caused issues in packages publishing:\n-\nhttps://gi\n[…]\n/rnrepo/actions/runs/26230821967/job/77190410179\n\ndocs: https://docs.npmjs.com/cli/v11/using-npm/config#min-release-age\n\n## 🎯 Type of Change\n\n- [x] 🐛 Bug fix (non-breaking change which fixes an issue)",
          "is_bot": false,
          "headline": "exclude @rnrepo libs from 7 days npm limit (#350)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-22T09:20:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9540d97948e24ece8f32bb31ce4407844bd5c05b",
          "body": "## 📝 Description\n\nBump versions before release:\n- @rnrepo/build-tools@0.1.4\n- @rnrepo/expo-config-plugin@0.3.1\n\nAnd remove any `beta` labels in docs/website\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update",
          "is_bot": false,
          "headline": "bump versions before release and removed beta labels (#344)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-21T13:55:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2000f5d22fedafb98451f10c5c297a7c7b2b3eed",
          "body": "## 📝 Description\n\nbuild ts code before running it. it was failing in some ci runs:\n```\nPluginError: Unable to resolve a valid config plugin for @rnrepo/expo-config-plugin.\n• main export of @rnrepo/expo-config-plugin does not appear to be a config plugin: the following error was thrown when importing\n[…]\n/runner/work/rnrepo/rnrepo/packages/expo-config-plugin/app.plugin.js: Cannot find module './build/withRNRepoPlugin'\n```\n\n## 🎯 Type of Change\n\n- [x] 🐛 Bug fix (non-breaking change which fixes an issue)",
          "is_bot": false,
          "headline": "ci: build plugin before using in project (#342)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-21T12:03:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a0a99963a6e544c565d82aaa10ad2e99c9a3ce5a",
          "body": "## 📝 Description\n\nPorts the Android `stripVersionToCore` fix from #147 to the CocoaPods\nplugin. `react-native-tvos` versions like `0.83.2-0` were being passed\nthrough unchanged when building prebuilt artifact URLs, producing 404s\non the rnrepo server (the published artifacts use the core form\n`rn0.8\n[…]\n fall back to source.\n3. **After:** plugin requests `…-rn0.83.2-…xcframework.zip` → prebuilt\nframeworks are downloaded and cached.\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "Support react-native-tvos on iOS (#345)",
          "author_name": "Konrad Armatys",
          "author_login": "konrad-armatys",
          "committed_at": "2026-05-21T11:57:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7c6ef0a5ebe4f85d1f1a234ffd5b8c22ac21fd09",
          "body": "## 📝 Description\n\nThe iOS Cocoapods plugin loaded `rnrepo.config.json` from the directory\none level above the Podfile (i.e. the package root). That works in a\nsingle-app project where the config sits next to the `ios/` folder, but\nin a monorepo where the config lives at the repo root (alongside hois\n[…]\n rnrepo.config.json from\n<repo-root>/rnrepo.config.json` followed by `⊘ Denied from pre-builds\n(...)` listing the denied packages.\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "Support global rnrepo.config.json on iOS (#346)",
          "author_name": "Konrad Armatys",
          "author_login": "konrad-armatys",
          "committed_at": "2026-05-21T11:57:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9c6022de99875cfc4fe1947c418c6e604ec3b719",
          "body": "## 📝 Description\n\nFix important issues created by cli tool `zizmor`\n\nChanges:\n- added timeouts\n- added concurrency blocks\n- added permissions blocks\n- added persist-credentials false in checkout\n- changed actions usage based on tags (like `v4`) to commits SHA (and\nverified with pinact cli)\n- changed inserting input to command to providing input as env flag\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "CI hardening (#341)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-21T08:42:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dcb5223584cc791d984e1d0d83b893743b04474d",
          "body": "## 📝 Description\n\nsecurity feature\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "use min-release-age=7d in .npmrc (#340)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-19T12:48:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "84015a4a859d50a4214b7c69c86b29dbc49ee709",
          "body": "## 📝 Description\n\nIn rare cases, some build settings are defined as arrays, which can\ncause rnrepo to fail with\n\n```\n[!] An error occurred while processing the post-install hook of the Podfile.\n\nno implicit conversion of String into Array\n\n<>/node_modules/@rnrepo/build-tools/cocoapods-plugin/lib/plugin.rb:443:in 'Array#+'\n```\n\n## 🎯 Type of Change\n\n- [x] 🐛 Bug fix (non-breaking change which fixes an issue)\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Handle Xcode settings in both array and string formats. (#330)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-19T12:00:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e37acc81f5206b3e7b4bb50384aea8c086297a45",
          "body": "## 📝 Description\n\nBuild expo and rn apps to check if everything works. Build for both\nAndroid and iOS and both Debug and Release.\n\n## 🎯 Type of Change\n\n- [x] 🧪 Test addition/modification\n\n## 🧪 Testing\n\nworkflow CI passes",
          "is_bot": false,
          "headline": "run expo and rn app building in CI (#335)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-19T11:56:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96397136609535b9ebb433bf610423865b8a6752",
          "body": "## 📝 Description\n\nold reanimated issue in ci\n\n## 🎯 Type of Change\n\n- [x] ✨ New feature (non-breaking change which adds functionality)",
          "is_bot": false,
          "headline": "new known-issues to workflow (#331)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-19T11:55:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa5ddda035460c4c45081868e9517660e4c1d772",
          "body": "## 📝 Description\n\nreduce the number of replicated log lines\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "resolve gradle maven repositories just once (#337)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-19T11:52:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ca8ce8049452d382b1a06afbd665dae7f6b8716",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#332)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-07T08:17:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "540f098f5a2394c3bcff2689063685c47ee1bd69",
          "body": "## 📝 Description\n\nRelease:\n- support for EMC\n- new reanimated@+4.3.0 support\n- incorporated maven url into plugin\n\n## Tested\n\n- Projects: \n    - `$ npx create-expo-app@latest --template default@sdk-54 my-app-54`\n    - `$ npx create-expo-app@latest --template default@sdk-55 my-app-55`\n- `$ npx @react\n[…]\n - / ✅ / -\n    - react-native@0.84:\n        - android: ✅ / - / ✅ / ✅ / -\n        - ios: - / - / ✅ / ✅ / -\n    - react-native@0.85:\n        - android: ✅ / - / ✅ / - / -\n        - ios: - / ✅ / ✅ / - / -",
          "is_bot": false,
          "headline": "bump versions before release (#325)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-30T12:50:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d4bced3c2ebdb182187a8464b29826aebe94f034",
          "body": "…328)\n\n## 📝 Description\n\nFor example, inside a react-native-reanimated repository itself symlinks\nto react-native-reanimated package exist in `node_modules`, while the\nactual source is located in `packages/` - this results in\nreact-native-gesture-handler builded from sources due to the illusionary\na\n[…]\n_modules` from package's absolute path\n- changed `allprojects` to `subprojects` to exclude app's gradle project\nfrom being tried to be substituted\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "Allow packages to be resolved from locations beyond `node_modules` (#…",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-30T12:42:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "35e4619c7a45804fc407b0c5a84e4b8d976bc2df",
          "body": "## 📝 Description\n\nIn `mvn deploy-file`, the `-packaging` argument was not used in version\n3.1.2 (bug) which was fixed in later versions (currently worklfow uses\n3.1.4). apache/maven-deploy-plugin/issues/576\n\nIt caused the iOS artifacts to be deployed with various extensions:\n- old and wrong: `<artif\n[…]\nns/runs/25053999050\n- publish:\nhttps://github.com/software-mansion/rnrepo/actions/runs/25054114005\n- artifacts:\nhttps://packages.rnrepo.org/snapshots/org/rnrepo/public/react-native-firebase_app/23.5.0",
          "is_bot": false,
          "headline": "lock the mvn cli version used in publisher (#327)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-30T09:30:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "54df3e6ca7ac503eb097bb19c944145c8de4ae00",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#326)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-28T09:51:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "891a4df233fa5b420e4e8b773e170b30cb8a4a50",
          "body": "## 📝 Description\n\nAdd another new issues to catch\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "add new issue to failed builds (#323)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-28T09:51:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6c20a6fa9d7c39456f264efa3105fc9edcefabb1",
          "body": "## 📝 Description\n\n\nhttps://docs.swmansion.com/react-native-reanimated/docs/guides/compatibility/\n\nwith new react-native version reanimated constraints have to be adjusted\nto avoid failed builds\n\n## 🎯 Type of Change\n\n- [x] ♻️ Refactoring (no functional changes)",
          "is_bot": false,
          "headline": "range reanimated@4.2.x versions (#324)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-28T09:51:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d55715081117eec89df0af95f2f8c9c7d0a8373",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#322)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-23T09:29:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96e6125f46219f75abac01aeca7db4fa9d7a52db",
          "body": "## 📝 Description\n\n- updated docs (removed mentions about adding `allprojects {repositories\n{ url ...}}}`\n- updated tests\n- added `project.uri(\"https://packages.rnrepo.org/releases\")` inside\ngradle plugin\n- troubleshooting added when project have `FAIL_ON_PROJECT_REPOS`\n\n## 🎯 Type of Change\n\n- [x] ✨ New feature (non-breaking change which adds functionality)",
          "is_bot": false,
          "headline": "Incorporate maven url inside gradle plugin (#270)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-17T09:25:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5eca316bc4ca193be7b01f9eb92318beb8960312",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#320)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-17T09:22:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50fe7d2ee9acc1cda6746885c2eb0e7d214b7bf5",
          "body": "## 📝 Description\n\nPod install failed when worklets were installed as a peer dependency\n\nI’d avoid tying this to the old `workletsVersion` approach in\n`libraries.json`, since that was a reanimated-specific addition for its\nbuild process. Now that reanimated has been decoupled from worklets,\nthat field is likely to be removed in the future\n\n## 🎯 Type of Change\n\n- [x] 🐛 Bug fix (non-breaking change which fixes an issue)",
          "is_bot": false,
          "headline": "Add explicit worklets installation for reanimated@4.3.0+ (#319)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-16T14:43:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fdce3d5c9fd94749a8c57839d80d8b310ff0c52c",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\n## 0.85.0 changes\n\n- add new version to react-native-versions list (0.85.0)\n- install proper reanimated version fo\n[…]\n1\",\n    \"react-native-screens\": \"4.24.0\"\n  },\n```\n\n---------\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#311)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-16T08:04:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8893bcaa6ed5dc9b5a0beea2d72c8f9b2556eb82",
          "body": "## 📝 Description\n\n- add skia unbuildable issue with source-link\n- run script with write flag\n- add gradle9.0.0 issue \n- add type 'expired' for builds with unavailable logs\n- changed type 'unknown' to ' pending' for unchecked builds\n- type 'unknown' means checked but not recognized the issue\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add more types to failed builds investigation (#315)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-15T10:50:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c72877da1dc18eb47599e5b2de18a9b3f6ba3684",
          "body": "## 📝 Description\n\nWith the release of `react-native-reanimated@4.3.0`, the library\nintroduced a stable API that eliminates the need for version-specific\nbuilds tied to `react-native-worklets`. Previously, the tooling built a\nfull variant matrix tied to specific worklets classifiers - this is no\nlong\n[…]\nd for `>=4.3.0`.\n- Both the Gradle and CocoaPods plugins were updated to skip worklets\nresolution entirely when reanimated `>= 4.3.0` is detected.\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "Remove worklets classifier from reanimated (#317)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-15T10:07:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1d8b66f9fef02d5cf269bf62cc3f8c2119f75965",
          "body": "## 📝 Description\n\nadd new lib #310 \n\n## 🎯 Type of Change\n\n- [x] 🧩 New library support\n\n## 🧪 Testing\n\nbuilding artifacts\n```\n$ bun run packages/builder/build-library-android.ts -- \"@op-engineering/op-sqlite\" \"15.2.11\" \"0.84.0\" \"TEMP_android_opsqlite_15_2_11_rn_0_84_0\" \"\"\n# ✅ Successfully built AAR fo\n[…]\nneering/op-sqlite\" \"15.2.11\" \"0.84.0\" \"TEMP_ios_opsqlite_15_2_11_rn_0_84_0\" \"\"\n# ✅ Successfully built static XCFramework for @op-engineering/op-sqlite@15.2.11 with RN 0.84.0 \n```\n\nbuilding app - works",
          "is_bot": false,
          "headline": "add @op-engineering/op-sqlite (#318)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-15T09:36:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "32685b41e2641de22a36fbc85251344ca555d24a",
          "body": "## 📝 Description\n\nThe script automates the investigation of build failures.\n\n**Note:** This may require adding a new database column to track which\nbuilds are unbuildable ?\n\n## 🎯 Type of Change\n\n- [x] ✨ New feature (non-breaking change which adds functionality)\n\n## 🧪 Testing\n\nexample:\n```\nSUPABASE_K\n[…]\n URL        -> 2\n   Unknown issue            -> 2\n   Errors                   -> 0\n   Retry=true builds before -> 0\n```\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "add failed builds investigation (#297)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-09T11:38:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ff124beb0b35887bbb58048c465f9fa5d59c2833",
          "body": "## 📝 Description\n\nError:\n\nhttps://github.com/software-mansion/rnrepo/actions/runs/23974928810/job/69930351126\n```\nUncaught Error CocoaPodsError: Command `pod install` failed.\\n\n```\n\nPod install is not used in building emc and cannot be 'turn off', so it\nwill be handled in a catch\n\nexpo;\nhttps://gith\n[…]\nks the builds,\nwhich also was fixed\n\n## 🎯 Type of Change\n\n\n- [x] 🐛 Bug fix (non-breaking change which fixes an issue)\n\n## 🧪 Testing\n\nhttps://github.com/software-mansion/rnrepo/actions/runs/24179629969",
          "is_bot": false,
          "headline": "fix failing ci during pod install on ubuntu runners (#313)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-09T10:36:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0b36b88658ef886d9a6cf26042d094fccf053393",
          "body": "## 📝 Description\n\nReanimated builds were failing due to installation of the newest\nworklets possible from peer deps, but sometimes such version was not\navailable in given rn version\n\n```\nnpm error Could not resolve dependency:\nnpm error peer react-native@\"0.81 - 0.85\" from react-native-worklets@0.8.\n[…]\n\n\n```\n$ bun run packages/builder/build-library-android.ts -- \"react-native-reanimated\" \"4.1.7\" \"0.80.0\" \"/tmp\" \"0.5.1\"\n...\n✅ Successfully built AAR for react-native-reanimated@4.1.7 with RN 0.81.4\n```",
          "is_bot": false,
          "headline": "Install worklets first (#312)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-09T09:11:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9d5f9ffcdd38ba95e8272a1c5b6ac1d13ab88971",
          "body": "## 📝 Description\n\nCreate caching RN project in builder for each rn_version and OS.\n- added in yamls creating clean RN project (nodes installed, no build\nartifacts from previous builds)\n- if work-dir provided to script already have rnrepo_build_app then its\ncached project (always happens on CI)\n- if \n[…]\n build\n- workflow:\nhttps://github.com/software-mansion/rnrepo/actions/runs/24077312315\n- use that cache in another build\n- workflow:\nhttps://github.com/software-mansion/rnrepo/actions/runs/24077495031",
          "is_bot": false,
          "headline": "builder - cache rn project (#254)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-07T11:14:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "635c7e003ff0ebf9899db54d1fed835376ec0096",
          "body": "## 📝 Description\n\nRevert limiting scheduler to 50 builds in #279 since we have selfhosted\nmacOS already.",
          "is_bot": false,
          "headline": "Revert limiting scheduler to 50 builds in #279 (#308)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-02T15:01:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c1309351c312f9d789dcee34e50dfb86469fafe",
          "body": "## 📝 Description\n\nPrebuild expo-modules-core for Android only in release builds\n\nbuilding from >20k last-week builds (reduced build number from 78 to 59)\n\n## 🎯 Type of Change\n\n- [x] 🧩 New library support\n\n## 🧪 Testing\n\n- project\n  - `npx create-expo-app@latest init my-app --template default@sdk-55`\n\n[…]\n \"RN\" \"0.83.2\"\n  - \"expo-modules-core\" \"55.0.14\" \"RN\" \"0.83.1\"\n- expo@54\n  - \"expo-modules-core\" \"3.0.29\" \"RN\" \"0.81.5\"\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Prebuild expo-modules-core for Android (#301)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-02T11:31:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0886e4910b44be8da204972407d716e4dc114ff4",
          "body": "## 📝 Description\n\nAdd guide to find the problematic package in xcode16 errors\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update\n\n---------\n\nCo-authored-by: Wojciech Lewicki <wojciech.lewicki@swmansion.com>",
          "is_bot": false,
          "headline": "Add guide to find the problematic package in xcode16 errors (#307)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-02T11:03:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83ec171e120f722a3f75caa85f6d31864e824fd9",
          "body": "## 📝 Description\n\nAdd fingerprint mismatch troubleshooting for ios\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update\n\n## Testing\n\n<img width=\"1106\" height=\"241\" alt=\"Zrzut ekranu 2026-04-2 o 12 06 34\"\nsrc=\"https://github.com/user-attachments/assets/9ad6c440-c0c7-4d63-830f-58d17d5d2461\"\n/>\n\n-readme:\n[…]\nthub.com/software-mansion/rnrepo/blob/rolkrado/fingerprints-eas/README.md#expo-prebuild-continuous-code-generation--cng\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add fingerprint mismatch troubleshooting for ios (#302)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-02T11:03:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5a5338110661ece7bed87ccf075d19e5ba0bd080",
          "body": "## 📝 Description\n\nbuild-tools: 0.1.2-beta.0\nexpo-config-plugin: 0.3.0-beta.2\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update",
          "is_bot": false,
          "headline": "Publish new package versions (#306)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-26T15:01:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32739c22595fe190c3c946c682feb6567b0c3a3f",
          "body": "## 📝 Description\n\nFollow-up from the PR that migrated the Gradle plugin to npm.\n\nIt’s redundant since the version is already tracked as an npm package,\nand it required manual bumping and verification before each release.\n\nChanges:\n- [ BREAKING CHANGE ] - changes gradle plugin resolving in project\nfi\n[…]\nfiguration from build.gradle\n(publishing is now handled via npm instead of Maven)\n- Cleaned up redundant test imports in build.gradle\n\n## 🎯 Type of Change\n\n- [x] ♻️ Refactoring (no functional changes)",
          "is_bot": false,
          "headline": "[BREAKING CHANGE] Remove versioning from plugins (#299)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-26T14:26:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f6989c7dfea9ef4077e720dc9779725b7b69e087",
          "body": "## 📝 Description\n\nThis PR moves iOS builds to self-hosted runners to improve build\nthroughput and reduce queue times. GitHub-hosted runners are limited and\nshared across the entire organization, which was causing delays and\nslowing down CI. The build process itself remains unchanged and the\nrunner e\n[…]\nimprovement\n\n## 🧪 Testing\n\n- https://github.com/software-mansion/rnrepo/actions/runs/22898799632\n- https://github.com/software-mansion/rnrepo/actions/runs/23184874852\n  - successfully used in test app",
          "is_bot": false,
          "headline": "Run iOS builds on self-hosted runners (#291)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-26T14:21:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "380d96d19049f4300df23debea71433f870d6c38",
          "body": "## 📝 Description\n\nNow ios will not have dangling scheduled builds\n\n## 🎯 Type of Change\n\n- [x] ✨ New feature (non-breaking change which adds functionality)\n\n## 🧪 Testing\n\n```\n📊 Done.\n   Checked: 40\n   Completed -> 0\n   Failed    -> 8\n   Skipped   -> 32\n   Errors    -> 0\n\nAFTER:\n\n📊 Done.\n   Checked: 40\n   Completed -> 12\n   Failed    -> 28\n   Skipped   -> 0\n   Errors    -> 0\n\n```\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add ios handling in check-build-consistency (#295)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-25T15:37:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "851423c7485000494dd9bb8e09d48c1bd8953c97",
          "body": "## 📝 Description\n\nThere is no warning from plugin.rb since it gets lost among numerous\nother log entries and won’t be noticed anyway.\n\n#290 \n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Troubleshooting for xcode16 (#303)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-25T11:33:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "77e42b5ee5823165b771badcf88cfb3714006ad1",
          "body": "## 📝 Description\n\n[worklets] Versioning compatibility from:\nhttps://docs.swmansion.com/react-native-worklets/docs/guides/compatibility/\n[reanimated-3] Versioning compatibility from:\nhttps://docs.swmansion.com/react-native-reanimated/docs/3.x/guides/compatibility\n\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "Constraint worklets builds (#296)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-25T11:32:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de82b61d7207e7bc18ff2fe6a5e5b58435ec10f0",
          "body": "## 📝 Description\n\nAvoid building for versions with fewer than 20k downloads in the past\nweek. These are typically new releases that may be quickly replaced by a\npatch fix - until 20 downloads any major issue that would require fixing\nand new patch release should probably be discovered.\n\n```\n{\n  \"pac\n[…]\n: 65227,\n    \"0.83.1\": 219394,\n    \"0.83.2\": 417736,\n    \"0.83.3\": 715,\n    \"0.83.4\": 10672,\n    \"0.84.0\": 111508,\n    \"0.84.1\": 515617,\n  }\n}\n```\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "Add 20k RN threshold to build (#300)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-25T11:20:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7ea5963029a94a96b5364e8f34f832a3dbac110c",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\n---------\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#284)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-03-24T11:20:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1de3620da91e4c8dc4e8b553ed449b1d02fd788a",
          "body": "## 📝 Description\n\nLint kotlin with spotless tool\n\n## 🎯 Type of Change\n\n- [x] ♻️ Refactoring (no functional changes)",
          "is_bot": false,
          "headline": "lint spotless kotlin (#298)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-19T15:30:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b7c4c98af41a9b1bafe25686c3fc8df0e3317051",
          "body": "## 📝 Description\n\nAdd changelogs for npm packages\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update=",
          "is_bot": false,
          "headline": "Add changelogs for npm packages (#292)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-19T14:57:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7369d5d0119b6d6878a9115594ffe17af1cd427",
          "body": "## 📝 Description\n\nReplace the `net/http` with `system(curl, ...)`\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement\n\n## 🧪 Testing\n\n```\n# success\n[📦 RNRepo] Downloading from https://packages.rnrepo.org/releases/org/rnrepo/public/react-native-safe-area-context/5.7.0/react-native-safe-area-context-\n[…]\nps://packages.rnrepo.org/releases/org/rnrepo/public/react-native-safe-area-context/5.7.0/react-native-safe-area-context-5.7.0-rn0.81.5-debug.zip...\ncurl: (22) The requested URL returned error: 404\n```",
          "is_bot": false,
          "headline": "Replace the `net/http` with `system(curl, ...)` (#293)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-17T10:39:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cb4260a2ecc839c5a266b67e64f85ba82ca170f4",
          "body": "## 📝 Description\n\n### iOS\n\nin exposdk@55 ExpoModulesCore direct dependency on RNWorklets was added,\nwhich resulted in:\n```\n❌  (node_modules/expo-modules-core/ios/Worklets/WorkletJSCallInvoker.h:10:10)\n\n   8 | #include <ReactCommon/RuntimeExecutor.h>\n   9 |\n> 10 | #include <worklets/WorkletRuntime/Wo\n[…]\nols\": \"<path>/rnrepo/packages/build-tools\",\n# add to app.json plugins\n# # \"@rnrepo/expo-config-plugin\",\nnpx expo install\nnpx expo prebuild\nnpx expo run android\n# success\nnpx expo run ios\n# success\n```",
          "is_bot": false,
          "headline": "emc worklets fix for exposdk@55 (#281)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-17T09:04:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e7d90fdc624296a6fefeabd75f48e1b1c48043c9",
          "body": "## Summary\n\nThis removes the external dependency on `rubyzip`. Using\n`system(\"unzip\", ...)` is safe here because the code is designed to run\nonly on macOS, where `unzip` is available by default.\n\n## Testing\n```\n[📦 RNRepo] Extracting to /Users/radoslawrolka/BUILDLE_ANDROID/rnrepo/AwesomeProject_UNZIP\n[…]\n #286\n\n---------\n\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Replace the `rubyzip` dependency with `system(\"unzip\", ...)`. (#287)",
          "author_name": "Insik Han",
          "author_login": "Insik-Han",
          "committed_at": "2026-03-17T08:55:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "15d4c85fdf544404b308150cbd7d9f43bbc970d9",
          "body": "## 📝 Description\n\nBatch DB calls in scheduler to pull all builds per whole lib to remove\nwaiting for DB all the time\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement\n\n## 🧪 Testing\n\nWith unlimited schedules:\n- Before (27min)\n  ```\n  ✅ Done! Scheduled 560 build(s).\n  64,12s user 14,85s system 4% \n[…]\nal\n  ```\n- After (1:30min)\n  ```\n  ✅ Done! Scheduled 559 build(s).\n  2,34s user 0,56s system 3% cpu 1:30,59 total\n  ```\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Batch DB calls in scheduler (#294)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-17T08:55:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eba8919e385e16f8d090ff9e5e4c905957f5c385",
          "body": "## 📝 Description\n\nBuilds were failing due to the uncompatible rea-rn versions\n\n```\n  stdout: \"Configuring Pod with statically linked Frameworks\\n\\n[!] Invalid `Podfile` file: \\n[!] Invalid `RNReanimated.podspec` file: [Reanimated] React Native version is not compatible with Reanimated.\\n\\n #  from /\n[…]\ntible with Reanimated 4.1.4\\n\",\n\n      at new ShellPromise (75:16)\n      at BunShell (191:35)\n      at buildLibrary (/Users/runner/work/rnrepo/rnrepo/packages/builder/build-library-ios.ts:282:11)\n\n```",
          "is_bot": false,
          "headline": "Add correct reanimated installation in RNGH builds (#285)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-06T14:13:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b4c77346990de8f6acc7ef421b6047e1c7444309",
          "body": "## 📝 Description\n\nIssue in hoisted node_modules - `@rnrepo/build-tools` was not resolved\n#274\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update",
          "is_bot": false,
          "headline": "Add info about manual installation of @rnrepo/build-tools (#283)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-06T11:42:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7eeda3cf2c3aff4e8631f401e12dd2c53ebd21f4",
          "body": "## 📝 Description\n\n- avg one build at macos-xlarge = 20min\n- max concurent jobs on macos = 5\n- scheduler cron = every 4h\nSo limit should be (20/60) * 5 * 4 ~= 50 (calculated with advantage to\ninclude failures that takes less time and nighttime with less occupancy)\n\nRevert this change when we have custom macos runner (#280).\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "schedule 50 builds per scheduler cron (#279)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-05T13:14:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78b7ee634ec7219345696ff6beb77cc89c146ed1",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#265)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-03-05T12:20:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8deb3f165bca1799339efe466dd2068baff53bf1",
          "body": "## 📝 Description\n\nAdd setup verification guide in troubleshooting.md\n- android:\nhttps://github.com/software-mansion/rnrepo/blob/rolkrado/setup-verification/TROUBLESHOOTING.md#how-to-check-if-the-plugin-works\n- ios (same file, same header name):\nhttps://github.com/software-mansion/rnrepo/blob/rolkrado/setup-verification/TROUBLESHOOTING.md#how-to-check-if-the-plugin-works-1\n\n#276\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update",
          "is_bot": false,
          "headline": "Setup verification in troubleshooting (#278)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-05T10:37:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c54c5b3bed1512c78c444fb9fc37768673f3033e",
          "body": "## 📝 Description\n\n- added firebase/firestore to libraries.json with android config\n- added postinstall script (same as other firebase postinstall scripts)\n\nAdding firebase/firestore to android building list, since we did not\ntest the firestore on ios yet.\n\n#275 \n\n## 🎯 Type of Change\n\n- [x] 🧩 New lib\n[…]\nsks: 44 executed\n✓ Published to Maven Local successfully\n✅ Successfully built AAR for @react-native-firebase/firestore@23.8.6 with RN 0.81.4\n```\nalso builded successfully example rn-app with firestore",
          "is_bot": false,
          "headline": "Add  firebase/firestore to android build list (#277)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-05T10:34:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 0,
      "commits_last_year": 342,
      "latest_release_at": null,
      "latest_release_tag": null,
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 40,
      "days_since_latest_release": null,
      "mean_days_between_releases": null
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 37,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@rnrepo/build-tools",
          "exists": true,
          "license": "ISC",
          "keywords": [
            "cocoapods",
            "gradle",
            "react-native",
            "rnrepo",
            "ios",
            "android",
            "plugin",
            "prebuilds",
            "xcframework",
            "aar"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@rnrepo/build-tools",
          "is_deprecated": false,
          "latest_version": "0.2.1",
          "repository_url": "https://github.com/software-mansion/rnrepo",
          "versions_count": 11,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 2,
          "monthly_downloads": 89272,
          "first_published_at": "2026-02-25T10:42:48.281000Z",
          "latest_published_at": "2026-07-17T09:04:05.108000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 4
        },
        {
          "name": "@rnrepo/expo-config-plugin",
          "exists": true,
          "license": "ISC",
          "keywords": [
            "react-native",
            "expo",
            "config",
            "plugin",
            "prebuilds",
            "rnrepo"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@rnrepo/expo-config-plugin",
          "is_deprecated": false,
          "latest_version": "0.3.5",
          "repository_url": "https://github.com/software-mansion/rnrepo",
          "versions_count": 15,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 2,
          "monthly_downloads": 86944,
          "first_published_at": "2025-12-01T10:17:00.871000Z",
          "latest_published_at": "2026-07-17T09:02:02.583000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 4
        }
      ]
    },
    "popularity": {
      "forks": 12,
      "stars": 403,
      "watchers": 1,
      "fork_history": {
        "days": [
          {
            "date": "2025-12-04",
            "count": 2
          },
          {
            "date": "2025-12-05",
            "count": 1
          },
          {
            "date": "2025-12-11",
            "count": 1
          },
          {
            "date": "2026-02-05",
            "count": 1
          },
          {
            "date": "2026-03-09",
            "count": 1
          },
          {
            "date": "2026-04-25",
            "count": 1
          },
          {
            "date": "2026-05-29",
            "count": 1
          },
          {
            "date": "2026-05-30",
            "count": 1
          },
          {
            "date": "2026-06-11",
            "count": 1
          },
          {
            "date": "2026-06-16",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 12,
        "total_forks": 12
      },
      "star_history": {
        "days": [
          {
            "date": "2025-12-03",
            "count": 61
          },
          {
            "date": "2025-12-04",
            "count": 82
          },
          {
            "date": "2025-12-05",
            "count": 20
          },
          {
            "date": "2025-12-06",
            "count": 4
          },
          {
            "date": "2025-12-07",
            "count": 3
          },
          {
            "date": "2025-12-08",
            "count": 10
          },
          {
            "date": "2025-12-09",
            "count": 2
          },
          {
            "date": "2025-12-10",
            "count": 6
          },
          {
            "date": "2025-12-11",
            "count": 6
          },
          {
            "date": "2025-12-12",
            "count": 11
          },
          {
            "date": "2025-12-13",
            "count": 6
          },
          {
            "date": "2025-12-15",
            "count": 3
          },
          {
            "date": "2025-12-16",
            "count": 1
          },
          {
            "date": "2025-12-17",
            "count": 3
          },
          {
            "date": "2025-12-18",
            "count": 2
          },
          {
            "date": "2025-12-19",
            "count": 2
          },
          {
            "date": "2025-12-20",
            "count": 2
          },
          {
            "date": "2025-12-21",
            "count": 1
          },
          {
            "date": "2025-12-22",
            "count": 2
          },
          {
            "date": "2025-12-25",
            "count": 1
          },
          {
            "date": "2025-12-29",
            "count": 1
          },
          {
            "date": "2025-12-31",
            "count": 3
          },
          {
            "date": "2026-01-02",
            "count": 3
          },
          {
            "date": "2026-01-04",
            "count": 1
          },
          {
            "date": "2026-01-05",
            "count": 3
          },
          {
            "date": "2026-01-06",
            "count": 2
          },
          {
            "date": "2026-01-07",
            "count": 1
          },
          {
            "date": "2026-01-08",
            "count": 2
          },
          {
            "date": "2026-01-12",
            "count": 2
          },
          {
            "date": "2026-01-19",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 2
          },
          {
            "date": "2026-02-01",
            "count": 1
          },
          {
            "date": "2026-02-04",
            "count": 1
          },
          {
            "date": "2026-02-07",
            "count": 1
          },
          {
            "date": "2026-02-08",
            "count": 1
          },
          {
            "date": "2026-02-23",
            "count": 1
          },
          {
            "date": "2026-02-25",
            "count": 1
          },
          {
            "date": "2026-02-27",
            "count": 3
          },
          {
            "date": "2026-02-28",
            "count": 1
          },
          {
            "date": "2026-03-03",
            "count": 12
          },
          {
            "date": "2026-03-04",
            "count": 11
          },
          {
            "date": "2026-03-05",
            "count": 6
          },
          {
            "date": "2026-03-06",
            "count": 3
          },
          {
            "date": "2026-03-07",
            "count": 1
          },
          {
            "date": "2026-03-08",
            "count": 1
          },
          {
            "date": "2026-03-09",
            "count": 2
          },
          {
            "date": "2026-03-10",
            "count": 8
          },
          {
            "date": "2026-03-11",
            "count": 13
          },
          {
            "date": "2026-03-16",
            "count": 1
          },
          {
            "date": "2026-03-17",
            "count": 2
          },
          {
            "date": "2026-03-20",
            "count": 1
          },
          {
            "date": "2026-03-24",
            "count": 1
          },
          {
            "date": "2026-03-26",
            "count": 1
          },
          {
            "date": "2026-03-27",
            "count": 1
          },
          {
            "date": "2026-04-04",
            "count": 1
          },
          {
            "date": "2026-04-12",
            "count": 1
          },
          {
            "date": "2026-04-20",
            "count": 1
          },
          {
            "date": "2026-04-21",
            "count": 2
          },
          {
            "date": "2026-04-22",
            "count": 1
          },
          {
            "date": "2026-05-07",
            "count": 1
          },
          {
            "date": "2026-05-21",
            "count": 6
          },
          {
            "date": "2026-05-23",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 2
          },
          {
            "date": "2026-05-26",
            "count": 1
          },
          {
            "date": "2026-05-28",
            "count": 3
          },
          {
            "date": "2026-05-29",
            "count": 1
          },
          {
            "date": "2026-06-01",
            "count": 23
          },
          {
            "date": "2026-06-02",
            "count": 4
          },
          {
            "date": "2026-06-03",
            "count": 4
          },
          {
            "date": "2026-06-05",
            "count": 4
          },
          {
            "date": "2026-06-06",
            "count": 1
          },
          {
            "date": "2026-06-14",
            "count": 1
          },
          {
            "date": "2026-06-16",
            "count": 1
          },
          {
            "date": "2026-06-17",
            "count": 2
          },
          {
            "date": "2026-06-20",
            "count": 1
          },
          {
            "date": "2026-06-22",
            "count": 3
          },
          {
            "date": "2026-06-23",
            "count": 4
          },
          {
            "date": "2026-06-24",
            "count": 2
          },
          {
            "date": "2026-06-29",
            "count": 3
          },
          {
            "date": "2026-07-02",
            "count": 1
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 1
          },
          {
            "date": "2026-07-08",
            "count": 1
          },
          {
            "date": "2026-07-17",
            "count": 1
          },
          {
            "date": "2026-07-21",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 403,
        "total_stars": 403
      },
      "open_issues_and_prs": 8
    },
    "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": [
        "packages/expo-config-plugin/tsconfig.json",
        "packages/website/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [
        "packages/build-tools/gradle-plugin/build.gradle"
      ],
      "largest_source_bytes": 56925,
      "source_files_sampled": 60,
      "oversized_source_files": 0,
      "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": "commander",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.1.0"
        },
        {
          "name": "semver",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.7.4"
        },
        {
          "name": "zx",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.6.0"
        },
        {
          "name": "commander",
          "manifest": "packages/builder/package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.1.0"
        },
        {
          "name": "@rnrepo/config",
          "manifest": "packages/builder/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "zx",
          "manifest": "packages/builder/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.6.0"
        },
        {
          "name": "@rnrepo/config",
          "manifest": "packages/database/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@supabase/supabase-js",
          "manifest": "packages/database/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.47.0"
        },
        {
          "name": "@expo/config-plugins",
          "manifest": "packages/expo-config-plugin/package.json",
          "ecosystem": "npm",
          "version_constraint": "*"
        },
        {
          "name": "@expo/config-types",
          "manifest": "packages/expo-config-plugin/package.json",
          "ecosystem": "npm",
          "version_constraint": "*"
        },
        {
          "name": "@rnrepo/build-tools",
          "manifest": "packages/expo-config-plugin/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.2.1"
        },
        {
          "name": "@octokit/rest",
          "manifest": "packages/publisher/package.json",
          "ecosystem": "npm",
          "version_constraint": "^22.0.0"
        },
        {
          "name": "@rnrepo/config",
          "manifest": "packages/publisher/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@rnrepo/database",
          "manifest": "packages/publisher/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "commander",
          "manifest": "packages/publisher/package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.1.0"
        },
        {
          "name": "zx",
          "manifest": "packages/publisher/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.6.0"
        },
        {
          "name": "@octokit/plugin-paginate-rest",
          "manifest": "packages/scheduler/package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.0.0"
        },
        {
          "name": "@octokit/rest",
          "manifest": "packages/scheduler/package.json",
          "ecosystem": "npm",
          "version_constraint": "^22.0.0"
        },
        {
          "name": "@rnrepo/config",
          "manifest": "packages/scheduler/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@rnrepo/database",
          "manifest": "packages/scheduler/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "semver",
          "manifest": "packages/scheduler/package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.7.3"
        },
        {
          "name": "astro",
          "manifest": "packages/website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.16.6"
        },
        {
          "name": "lucide-astro",
          "manifest": "packages/website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.555.0"
        },
        {
          "name": "shiki",
          "manifest": "packages/website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.17.1"
        },
        {
          "name": "@rnrepo/database",
          "manifest": "packages/website/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        }
      ],
      "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": 8,
        "merged_prs": 319,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 64,
        "closed_unmerged_prs": 27
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "radoslawrolka",
          "commits": 250,
          "avatar_url": "https://avatars.githubusercontent.com/u/128408457?v=4"
        },
        {
          "type": "User",
          "login": "kmagiera",
          "commits": 64,
          "avatar_url": "https://avatars.githubusercontent.com/u/726445?v=4"
        },
        {
          "type": "User",
          "login": "CDFN",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/41289688?v=4"
        },
        {
          "type": "User",
          "login": "sKrzysieK",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/64040819?v=4"
        },
        {
          "type": "User",
          "login": "konrad-armatys",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/109459018?v=4"
        },
        {
          "type": "User",
          "login": "mczernek",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/6090468?v=4"
        },
        {
          "type": "User",
          "login": "WoLewicki",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/32481228?v=4"
        },
        {
          "type": "User",
          "login": "gadcam",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/1693643?v=4"
        },
        {
          "type": "User",
          "login": "Insik-Han",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/63291908?v=4"
        },
        {
          "type": "User",
          "login": "pawicao",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/34246839?v=4"
        }
      ],
      "contributors_sampled": 14,
      "top_contributor_share": 0.716
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "build-example-expo-app.yml",
        "build-example-rn-app.yml",
        "build-library-android.yml",
        "build-library-ios.yml",
        "check-build-consistency.yml",
        "check-failed-builds.yml",
        "daily-react-native-version-check.yml",
        "deploy-website.yml",
        "lint-and-validate.yml",
        "publish-build-tools.yml",
        "publish-expo-config-plugin.yml",
        "publish-library-android.yml",
        "publish-library-ios.yml",
        "run-scheduler.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        ".eslintrc.js"
      ],
      "has_editorconfig": true,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 9,
            "reason": "binaries present in source code",
            "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": "30 out of 30 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": 10,
            "reason": "all changesets reviewed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 7 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 0,
            "reason": "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": 0,
            "reason": "license file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 20 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": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 9,
            "reason": "dependency not pinned by hash detected -- score normalized to 9",
            "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": "100 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "d4af2edf88e5932f53d8ad4f64db5386dbe1091d",
        "ran_at": "2026-07-22T05:55:08Z",
        "aggregate_score": 4.2,
        "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-22T05:05:13Z",
      "oldest_open_prs": [
        {
          "number": 163,
          "created_at": "2025-12-09T17:27:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 217,
          "created_at": "2026-01-19T09:25:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 238,
          "created_at": "2026-01-28T11:14:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 314,
          "created_at": "2026-04-09T13:49:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 333,
          "created_at": "2026-05-06T11:51:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 348,
          "created_at": "2026-05-21T10:55:29Z",
          "last_comment_at": "2026-05-22T13:03:25Z",
          "last_comment_author": "radoslawrolka"
        },
        {
          "number": 396,
          "created_at": "2026-06-26T03:19:47Z",
          "last_comment_at": "2026-07-06T14:38:24Z",
          "last_comment_author": "radoslawrolka"
        },
        {
          "number": 418,
          "created_at": "2026-07-21T11:23:23Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-17T09:00:20Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/software-mansion/rnrepo",
    "host": "github.com",
    "name": "rnrepo",
    "owner": "software-mansion"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 62,
      "inputs": {
        "security": 42,
        "vitality": 56,
        "community": 53,
        "governance": 75,
        "engineering": 76
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 56,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "commits_last_year": 342,
              "human_commit_share": 0.92,
              "days_since_last_push": 0,
              "active_weeks_last_year": 40
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "40/52 weeks with commits",
                "points": 27.7,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 40
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "342 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 342
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 20 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "critical",
            "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": 1,
            "inputs": {
              "releases_count": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "no releases published",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases_published",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "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": "excellent",
            "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": 4,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 4 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 53,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 51,
            "inputs": {
              "forks": 12,
              "stars": 403,
              "watchers": 1,
              "growth_state": "organic",
              "growth_factor_pct": 100
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "403 stars",
                "points": 42.2,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 403
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "12 forks",
                "points": 8.7,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "1 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 32,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "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": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "params": {}
                  }
                ],
                "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": "excellent",
            "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": 87,
            "inputs": {
              "packages": [
                "@rnrepo/build-tools",
                "@rnrepo/expo-config-plugin"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 176216
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "176,216 downloads/month across npm",
                "points": 69.9,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 176216,
                      "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": "good",
        "name": "Sustainability & Governance",
        "value": 75,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 39,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 14,
              "top_contributor_share": 0.716
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 72% of commits",
                "points": 6.4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 72
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "14 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 97,
            "inputs": {
              "merged_prs": 319,
              "open_issues": 0,
              "closed_issues": 64,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 27
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "319/346 decided PRs merged",
                "points": 35.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 319,
                      "decided": 346
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "all changesets reviewed",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 78,
            "inputs": {
              "followers": 1604,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "software-mansion",
              "public_repos": 59,
              "account_age_days": 2464
            },
            "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,604 followers of software-mansion",
                "points": 23,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1604,
                      "login": "software-mansion"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "59 public repos, account ~6 yr old",
                "points": 24.9,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 59
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 6
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@rnrepo/build-tools",
                "@rnrepo/expo-config-plugin"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 4
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "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": "15 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "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": 76,
        "weight": 0.2,
        "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": "14 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "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": ".eslintrc.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js"
                    }
                  }
                ],
                "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": "30 out of 30 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": 55,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "http://rnrepo.org/",
              "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": "http://rnrepo.org/",
                "points": 15,
                "status": "met",
                "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 42,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 42,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 4.2
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6.8,
                "status": "partial",
                "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": "30 out of 30 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": "all changesets reviewed",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "dangerous workflow patterns detected",
                "points": 0,
                "status": "missed",
                "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 not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 20 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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 9",
                "points": 4.5,
                "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": "100 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "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"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 16
            },
            "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": 68,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "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": "92 of 92 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 92,
                      "sampled": 92
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "packages/expo-config-plugin/tsconfig.json",
                "packages/website/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.13,
              "toolchain_manifests": [
                "packages/build-tools/gradle-plugin/build.gradle"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "packages/build-tools/gradle-plugin/build.gradle (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "packages/build-tools/gradle-plugin/build.gradle"
                    }
                  }
                ],
                "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": ".eslintrc.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "packages/expo-config-plugin/tsconfig.json, packages/website/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "packages/expo-config-plugin/tsconfig.json, packages/website/tsconfig.json, tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "13 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 13,
                      "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 9",
                "points": 9,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 56925,
              "source_files_sampled": 60,
              "oversized_source_files": 0
            },
            "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": "0/60 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 60,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Could not fetch npm package '@rnrepo/builder' from its registry",
    "Could not fetch npm package '@rnrepo/publisher' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
    "deps.dev does not index npm:@rnrepo/build-tools@0.2.1; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-22T05:55:30.046426Z",
  "schema_version": "0.26.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/software-mansion/rnrepo.svg",
  "full_name": "software-mansion/rnrepo",
  "license_state": "absent",
  "license_spdx": null
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.26.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasnpm.