{"id":13406092,"url":"https://github.com/remix-run/remix","last_synced_at":"2026-05-20T22:02:33.877Z","repository":{"id":36965179,"uuid":"307489284","full_name":"remix-run/remix","owner":"remix-run","description":"Build Better Websites. Create modern, resilient user experiences with web fundamentals.","archived":false,"fork":false,"pushed_at":"2026-04-17T14:43:10.000Z","size":83147,"stargazers_count":32614,"open_issues_count":67,"forks_count":2755,"subscribers_count":263,"default_branch":"main","last_synced_at":"2026-04-17T19:06:15.999Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://remix.run","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/remix-run.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2020-10-26T19:57:28.000Z","updated_at":"2026-04-17T16:59:07.000Z","dependencies_parsed_at":"2023-09-21T19:01:50.433Z","dependency_job_id":"dbe295c8-508f-4af1-8d64-40d22137c4d4","html_url":"https://github.com/remix-run/remix","commit_stats":{"total_commits":5757,"total_committers":746,"mean_commits":7.7171581769437,"dds":0.8923050199756818,"last_synced_commit":"39d50b1fe84fd4d7c9696be71e84415017357e29"},"previous_names":[],"tags_count":6239,"template":false,"template_full_name":null,"purl":"pkg:github/remix-run/remix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remix-run%2Fremix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remix-run%2Fremix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remix-run%2Fremix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remix-run%2Fremix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/remix-run","download_url":"https://codeload.github.com/remix-run/remix/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remix-run%2Fremix/sbom","scorecard":{"id":770289,"data":{"date":"2025-08-11","repo":{"name":"github.com/remix-run/remix","commit":"750368dacfdb2f626204621babc8f6f392863cb0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.3,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":5,"reason":"Found 13/26 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/close-v2-issues.yml:1","Warn: no topLevel permission defined: .github/workflows/deduplicate-lock-file.yml:1","Warn: no topLevel permission defined: .github/workflows/deployments.yml:1","Warn: no topLevel permission defined: .github/workflows/format.yml:1","Warn: no topLevel permission defined: .github/workflows/lint.yml:1","Warn: no topLevel permission defined: .github/workflows/nightly.yml:1","Warn: no topLevel permission defined: .github/workflows/release-comments.yml:1","Warn: no topLevel permission defined: .github/workflows/release-experimental.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/shared-build.yml:1","Warn: no topLevel permission defined: .github/workflows/shared-test-integration.yml:1","Warn: no topLevel permission defined: .github/workflows/shared-test-unit.yml:1","Warn: no topLevel permission defined: .github/workflows/stacks.yml:1","Warn: no topLevel permission defined: .github/workflows/test-full.yml:1","Warn: no topLevel permission defined: .github/workflows/test-pr-ubuntu.yml:1","Warn: no topLevel permission defined: .github/workflows/test-pr-windows-macos.yml:1","Warn: no topLevel permission defined: .github/workflows/website.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/close-v2-issues.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/close-v2-issues.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/close-v2-issues.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/close-v2-issues.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/close-v2-issues.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/close-v2-issues.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deduplicate-lock-file.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deduplicate-lock-file.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deduplicate-lock-file.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deduplicate-lock-file.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deduplicate-lock-file.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deduplicate-lock-file.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deployments.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deployments.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deployments.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deployments.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deployments.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deployments.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deployments.yml:111: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deployments.yml:114: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deployments.yml:117: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deployments.yml:150: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deployments.yml:153: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deployments.yml:156: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deployments.yml:174: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deployments.yml:192: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deployments.yml:195: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deployments.yml:198: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/deployments.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/format.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/format.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/format.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/format.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/format.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/format.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/format.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/format.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/lint.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/lint.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/lint.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/lint.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/lint.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/lint.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/merged-pr.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/merged-pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nightly.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/nightly.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/nightly.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/nightly.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nightly.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/nightly.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/nightly.yml:104: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/nightly.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/nightly.yml:120: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/nightly.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/no-response.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/no-response.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-comments.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/release-comments.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-comments.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/release-comments.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-experimental.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/release-experimental.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-experimental.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/release-experimental.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-experimental.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/release-experimental.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/shared-build.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/shared-build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/shared-build.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/shared-build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/shared-build.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/shared-build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/shared-test-integration.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/shared-test-integration.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/shared-test-integration.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/shared-test-integration.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/shared-test-integration.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/shared-test-integration.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/shared-test-unit.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/shared-test-unit.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/shared-test-unit.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/shared-test-unit.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/shared-test-unit.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/shared-test-unit.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stacks.yml:125: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/stacks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stacks.yml:133: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/stacks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stacks.yml:165: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/stacks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stacks.yml:173: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/stacks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stacks.yml:208: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/stacks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stacks.yml:216: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/stacks.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/stacks.yml:247: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/stacks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stacks.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/stacks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stacks.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/stacks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stacks.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/stacks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stacks.yml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/stacks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stacks.yml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/stacks.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/website.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/remix-run/remix/website.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/deployments.yml:53","Warn: npmCommand not pinned by hash: .github/workflows/deployments.yml:57","Warn: npmCommand not pinned by hash: .github/workflows/deployments.yml:90","Warn: npmCommand not pinned by hash: .github/workflows/deployments.yml:94","Warn: npmCommand not pinned by hash: .github/workflows/deployments.yml:128","Warn: npmCommand not pinned by hash: .github/workflows/deployments.yml:132","Warn: npmCommand not pinned by hash: .github/workflows/deployments.yml:167","Warn: npmCommand not pinned by hash: .github/workflows/deployments.yml:171","Warn: npmCommand not pinned by hash: .github/workflows/deployments.yml:209","Warn: npmCommand not pinned by hash: .github/workflows/deployments.yml:213","Warn: downloadThenRun not pinned by hash: .github/workflows/deployments.yml:217","Warn: npmCommand not pinned by hash: .github/workflows/stacks.yml:181","Warn: npmCommand not pinned by hash: .github/workflows/stacks.yml:224","Warn: npmCommand not pinned by hash: .github/workflows/stacks.yml:47","Warn: npmCommand not pinned by hash: .github/workflows/stacks.yml:101","Warn: npmCommand not pinned by hash: .github/workflows/stacks.yml:141","Info:   0 out of  46 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  25 third-party GitHubAction dependencies pinned","Info:   0 out of  15 npmCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 20 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"27 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-67mh-4wv8-2f99","Warn: Project is vulnerable to: GHSA-f7f6-9jq7-3rqj","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-75v8-2h7p-7m2m","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-pq67-2wwv-3xjx","Warn: Project is vulnerable to: GHSA-8cj5-5rvv-wf4v","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-c76h-2ccp-4975","Warn: Project is vulnerable to: GHSA-cxrh-j4jr-qwg3"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T02:03:04.811Z","repository_id":36965179,"created_at":"2025-08-23T02:03:04.811Z","updated_at":"2025-08-23T02:03:04.811Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32162614,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T17:06:48.269Z","status":"online","status_checked_at":"2026-04-23T02:00:06.710Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T19:02:20.677Z","updated_at":"2026-05-20T22:02:33.855Z","avatar_url":"https://github.com/remix-run.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","二、React 框架（完整开发方案）","others","🌐 Web Development - Frontend","语言资源库","后端开发框架及项目","目录","Awesome Tools","HarmonyOS","📖 Categories","Uncategorized"],"sub_categories":["2. 教程与实战指南","typescript","管理面板","Languages","Windows Manager","Frameworks","Uncategorized"],"readme":"\u003cbr /\u003e\n\u003cbr /\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/remix-wordmark-racing-darkmode.svg\"\u003e\n    \u003cimg alt=\"Remix\" src=\"docs/public/remix-wordmark-racing-lightmode.svg\" width=\"400\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n# Welcome to Remix 3!\n\nThis is the source repository for Remix 3. It is under active development.\n\nWe published [a blog post](https://remix.run/blog/wake-up-remix) earlier this year with some of our thoughts around Remix 3. It explains our philosophy for web development and why we think the time is right for something new. When working on Remix 3, we follow these principles:\n\n1. **Model-First Development**. AI fundamentally shifts the human-computer interaction model for both user experience and developer workflows. Optimize the source code, documentation, tooling, and abstractions for LLMs. Additionally, develop abstractions for applications to use models in the product itself, not just as a tool to develop it.\n2. **Build on Web APIs**. Sharing abstractions across the stack greatly reduces the amount of context switching, both for humans and machines. Build on the foundation of Web APIs and JavaScript because it is the only full stack ecosystem.\n3. **Religiously Runtime**. Designing for bundlers/compilers/typegen (and any pre-runtime static analysis) leads to poor API design that eventually pollutes the entire system. All packages must be designed with no expectation of static analysis and all tests must run without bundling. Because browsers are involved, `--import` loaders for simple transformations like TypeScript and JSX are permissible.\n4. **Avoid Dependencies**. Dependencies lock you into somebody else's roadmap. Choose them wisely, wrap them completely, and expect to replace most of them with our own package eventually. The goal is zero.\n5. **Demand Composition**. Abstractions should be single-purpose and replaceable. A composable abstraction is easy to add and remove from an existing program. Every package must be useful and documented independent of any other context. New features should first be attempted as a new package. If impossible, attempt to break up the existing package to make it more composable. However, tightly coupled modules that almost always change together in both directions should be moved to the same package.\n6. **Distribute Cohesively**. Extremely composable ecosystems are difficult to learn and use. Remix will be distributed as a single `remix` package for both distribution and documentation.\n\n## Goals\n\nAlthough we recommend the `remix` package for ease of use, all packages that make up Remix should be usable standalone as well. This forces us to consider package boundaries and helps us define public interfaces that are portable and interoperable.\n\nEach package in Remix:\n\n- Has a [single responsibility](https://en.wikipedia.org/wiki/Single-responsibility_principle)\n- Prioritizes web standards to ensure maximum interoperability and portability across JavaScript runtimes\n- Augments standards unobtrusively where they are missing or incomplete, minimizing incompatibility risks\n\nThis means Remix code is **portable by default**. Remix packages work seamlessly across [Node.js](https://nodejs.org/), [Bun](https://bun.sh/), [Deno](https://deno.com/), [Cloudflare Workers](https://workers.cloudflare.com/), and other environments.\n\nWe leverage server-side web APIs when they are available:\n\n- [The Web Streams API](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API) instead of `node:stream`\n- [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) instead of Node.js `Buffer`s\n- [The Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) instead of `node:crypto`\n- [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) and [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File) instead of some bespoke runtime-specific API\n\nThe benefit is code that's not just reusable, but **future-proof**.\n\n## Packages\n\nMost packages in this repository are standalone JavaScript/TypeScript tools. The `remix` package composes them under one umbrella for distribution and documentation.\n\n- [assert](packages/assert): Node assert-compatible utilities for any JavaScript environment\n- [assets](packages/assets): Fetch-based server for compiling browser JS/TS and CSS assets on demand\n- [async-context-middleware](packages/async-context-middleware): Middleware for storing request context in AsyncLocalStorage\n- [auth](packages/auth): Browser login, OAuth, and OIDC helpers for Remix\n- [auth-middleware](packages/auth-middleware): Pluggable authentication middleware for Remix\n- [cli](packages/cli): Command-line interface for Remix\n- [compression-middleware](packages/compression-middleware): Middleware for compressing HTTP responses\n- [cookie](packages/cookie): A toolkit for working with cookies in JavaScript\n- [cop-middleware](packages/cop-middleware): Middleware for tokenless cross-origin protection in Fetch API servers\n- [cors-middleware](packages/cors-middleware): Middleware for handling CORS in Fetch API servers\n- [csrf-middleware](packages/csrf-middleware): Middleware for CSRF protection in Fetch API servers\n- [data-schema](packages/data-schema): Tiny, standards-aligned schema validation\n- [data-table](packages/data-table): A typed, relational query toolkit for JavaScript\n- [data-table-mysql](packages/data-table-mysql): MySQL adapter for remix/data-table\n- [data-table-postgres](packages/data-table-postgres): PostgreSQL adapter for remix/data-table\n- [data-table-sqlite](packages/data-table-sqlite): SQLite adapter for remix/data-table\n- [fetch-proxy](packages/fetch-proxy): An HTTP proxy for the web Fetch API\n- [fetch-router](packages/fetch-router): A minimal, composable router for the web Fetch API\n- [file-storage](packages/file-storage): Key/value storage for JavaScript File objects\n- [file-storage-s3](packages/file-storage-s3): S3 backend for remix/file-storage\n- [form-data-middleware](packages/form-data-middleware): Middleware for parsing FormData from request bodies\n- [form-data-parser](packages/form-data-parser): A request.formData() wrapper with streaming file upload handling\n- [fs](packages/fs): Filesystem utilities using the Web File API\n- [headers](packages/headers): A toolkit for working with HTTP headers in JavaScript\n- [html-template](packages/html-template): HTML template tag with auto-escaping for JavaScript\n- [lazy-file](packages/lazy-file): Lazy, streaming files for JavaScript\n- [logger-middleware](packages/logger-middleware): Middleware for logging HTTP requests and responses\n- [method-override-middleware](packages/method-override-middleware): Middleware for overriding HTTP request methods from form data\n- [mime](packages/mime): Utilities for working with MIME types\n- [multipart-parser](packages/multipart-parser): A fast, efficient parser for multipart streams in any JavaScript environment\n- [node-fetch-server](packages/node-fetch-server): Build servers for Node.js using the web fetch API\n- [node-serve](packages/node-serve): Build high-performance Fetch API servers for Node.js\n- [remix](packages/remix): The Remix web framework\n- [response](packages/response): Response helpers for the web Fetch API\n- [route-pattern](packages/route-pattern): Match and generate URLs with strong typing\n- [session](packages/session): Session management for JavaScript\n- [session-middleware](packages/session-middleware): Middleware for managing sessions with cookie-based storage\n- [session-storage-memcache](packages/session-storage-memcache): Memcache session storage for remix/session\n- [session-storage-redis](packages/session-storage-redis): Redis session storage for remix/session\n- [static-middleware](packages/static-middleware): Middleware for serving static files from the filesystem\n- [tar-parser](packages/tar-parser): A fast, efficient parser for tar streams in any JavaScript environment\n- [terminal](packages/terminal): Terminal output utilities for JavaScript libraries and CLIs\n- [test](packages/test): A test framework for JavaScript and TypeScript projects\n- [ui](packages/ui): View layer with reconciler, component model, and first-party UI components\n\n## Installation\n\nTo try the current Remix beta, install the `next` dist-tag:\n\n```sh\nnpm install remix@next\n```\n\nTo create a new Remix app with the CLI, use `npx remix@next new`:\n\n```sh\nnpx remix@next new my-remix-app\n```\n\nIf you want to play around with the bleeding edge, we also build the latest `main` branch into a `preview/main` branch which can be [installed directly](https://pnpm.io/package-sources#install-from-a-git-repository-combining-different-parameters) with `pnpm` (version 9+):\n\n```sh\npnpm install \"remix-run/remix#preview/main\u0026path:packages/remix\"\n```\n\nOr, just install a single package:\n\n```\npnpm install \"remix-run/remix#preview/main\u0026path:packages/fetch-router\"\n```\n\n## Agent Skills For Building Apps\n\nAgents that are starting a Remix 3 app from this repository should use the skill that ships with\nthe [app template](./template/.agents/skills/remix/SKILL.md).\n\n## Contributing\n\nWe welcome contributions! If you'd like to contribute, please feel free to open an issue or submit a pull request. See [CONTRIBUTING](https://github.com/remix-run/remix/blob/main/CONTRIBUTING.md) for more information.\n\n## License\n\nSee [LICENSE](https://github.com/remix-run/remix/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremix-run%2Fremix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fremix-run%2Fremix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremix-run%2Fremix/lists"}