{"adoption": {"forks": 115, "observed_at": "2026-09-03T02:15:17.231561+00:00", "stars": 1044}, "canonical_url": "https://ross.abutalabs.com/products/propshaft", "card": {"archived": false, "artifact_type": "library", "description": "Deliver assets for Rails", "domain": ["web-development", "frontend", "developer-tools"], "enriched": true, "function": ["build-tool", "http-server", "developer-tools"], "health_score": 98, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["rails/propshaft"], "name": "rails/propshaft", "platform": ["ruby"], "pushed_at": "2026-09-02T17:10:10+00:00", "repo": "rails/propshaft", "stars": 1044, "tags": ["asset-pipeline", "rails", "sprockets-replacement", "digest-stamping", "static-assets", "web-server"], "topics": [], "urls": [], "use_cases": ["serve assets in a Rails app without Sprockets complexity", "digest-stamp assets for long-lived cache headers in production", "serve assets directly in development without precompilation", "combine asset paths from app and gems into one load path", "rewrite CSS url() references to digested asset paths", "migrate a Rails 7 app to the Rails 8 default asset pipeline"], "what_it_is": "Propshaft is a modern asset pipeline library for Rails that serves and fingerprints assets with digest stamping. It offers a simpler, faster alternative to Sprockets by delegating bundling and transpilation to dedicated Node.js tools.", "when_to_avoid": ["you need built-in minification, bundling, or transpilation", "you rely on Sprockets-specific features or legacy asset processing", "you're not building a Rails application"], "when_to_choose": ["you use Rails 7+ and don't need bundling or transpilation in the pipeline", "you compile JavaScript and CSS with external tools like esbuild or Dart Sass", "you want a fast, minimal asset pipeline with digest fingerprinting"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/propshaft", "repo": "rails/propshaft", "role": "main", "score": 89}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.231561+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:02:15.559152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "db87701b86490b402d41efb300079a5be7fd9ece77dcebe32422db690a45a3e0", "fetched_at": "2026-09-03T02:15:17.231561+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rails/propshaft"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.231561+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:02:15.559152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "db87701b86490b402d41efb300079a5be7fd9ece77dcebe32422db690a45a3e0", "fetched_at": "2026-09-03T02:15:17.231561+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rails/propshaft"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:02:15.559152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "db87701b86490b402d41efb300079a5be7fd9ece77dcebe32422db690a45a3e0", "fetched_at": "2026-09-03T02:15:17.231561+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rails/propshaft"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.231561+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.231561+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.231561+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:02:15.559152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "db87701b86490b402d41efb300079a5be7fd9ece77dcebe32422db690a45a3e0", "fetched_at": "2026-09-03T02:15:17.231561+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rails/propshaft"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.231561+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.231561+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:02:15.559152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "db87701b86490b402d41efb300079a5be7fd9ece77dcebe32422db690a45a3e0", "fetched_at": "2026-09-03T02:15:17.231561+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rails/propshaft"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.231561+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.231561+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.231561+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:02:15.559152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "db87701b86490b402d41efb300079a5be7fd9ece77dcebe32422db690a45a3e0", "fetched_at": "2026-09-03T02:15:17.231561+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rails/propshaft"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.231561+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.231561+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:02:15.559152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "db87701b86490b402d41efb300079a5be7fd9ece77dcebe32422db690a45a3e0", "fetched_at": "2026-09-03T02:15:17.231561+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rails/propshaft"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:02:15.559152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "db87701b86490b402d41efb300079a5be7fd9ece77dcebe32422db690a45a3e0", "fetched_at": "2026-09-03T02:15:17.231561+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rails/propshaft"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:02:15.559152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "db87701b86490b402d41efb300079a5be7fd9ece77dcebe32422db690a45a3e0", "fetched_at": "2026-09-03T02:15:17.231561+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rails/propshaft"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:02:15.559152+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "db87701b86490b402d41efb300079a5be7fd9ece77dcebe32422db690a45a3e0", "fetched_at": "2026-09-03T02:15:17.231561+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rails/propshaft"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 68}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1810, "days_push": 0, "days_rel": 138, "gap_med": 43.0, "n_releases_24m": 7}, "score": 89, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}