{"full_name":"koajs/koa","owner":"koajs","name":"koa","url":"https://github.com/koajs/koa","description":"Expressive middleware for node.js using ES2017 async functions","homepage":"https://koajs.com","topics":[],"language":"JavaScript","license":"MIT","avatar":"https://avatars.githubusercontent.com/u/5055057?v=4","created_at":"2013-07-20T18:53:45Z","pushed_at":"2026-11-03T01:27:25Z","metrics":{"stars":35682,"forks":3247,"watchers":789,"issues":935,"prs":993,"releases":19,"issues_open":null,"issues_closed":null,"prs_open":null,"prs_closed":null,"prs_merged":null,"discussions":38},"growth":{"day":{"stars":1,"forks":0,"base_day":"2026-11-09"},"week":{"stars":0,"forks":3,"base_day":"2026-11-03"},"month":{"stars":4,"forks":13,"base_day":"2026-10-11"}},"history":{"dates":["2026-09-06","2026-09-07","2026-09-08","2026-09-09","2026-09-10","2026-09-11","2026-09-12","2026-09-13","2026-09-14","2026-09-15","2026-09-16","2026-09-17","2026-09-18","2026-09-19","2026-09-20","2026-09-21","2026-09-22","2026-09-23","2026-09-24","2026-09-25","2026-09-26","2026-09-27","2026-09-28","2026-09-29","2026-09-30","2026-10-01","2026-10-02","2026-10-03","2026-10-04","2026-10-05","2026-10-06","2026-10-07","2026-10-08","2026-10-09","2026-10-10","2026-10-11","2026-10-12","2026-10-13","2026-10-14","2026-10-15","2026-10-16","2026-10-17","2026-10-18","2026-10-19","2026-10-20","2026-10-21","2026-10-22","2026-10-23","2026-10-24","2026-10-25","2026-10-26","2026-10-27","2026-10-28","2026-10-29","2026-10-30","2026-10-31","2026-11-01","2026-11-02","2026-11-03","2026-11-04","2026-11-09","2026-11-10"],"stars":[35690,35690,35688,35686,35685,35685,35684,35685,35684,35685,35685,35686,35687,35688,35687,35686,35686,35686,35683,35682,35683,35683,35683,35683,35681,35679,35679,35682,35682,35682,35681,35682,35682,35681,35677,35678,35678,35677,35676,35679,35679,35679,35679,35678,35679,35682,35682,35681,35681,35683,35684,35685,35684,35686,35684,35684,35683,35683,35682,35683,35681,35682],"forks":[3225,3223,3223,3223,3224,3225,3224,3224,3225,3225,3225,3226,3226,3226,3226,3225,3225,3227,3227,3227,3227,3227,3227,3228,3228,3229,3231,3231,3231,3231,3233,3234,3234,3234,3234,3234,3234,3236,3236,3235,3235,3234,3234,3234,3234,3235,3236,3237,3238,3240,3239,3240,3240,3241,3241,3241,3241,3243,3244,3244,3247,3247],"watchers":[799,800,800,800,800,800,800,800,800,800,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,798,798,798,798,798,798,797,797,797,797,796,796,796,795,795,795,795,796,796,796,796,791,791,791,791,791,792,792,792,792,792,791,789,789],"issues_open":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"prs_open":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},"boards":{},"same_owner":[],"issues":[{"number":281,"title":"integrate proxy-addr","comments":18,"created_at":"2014-05-07T19:24:12Z"},{"number":1547,"title":"bug report! If koa and http2server are used together, the response with method \"head\" request will never end!","comments":13,"created_at":"2021-06-17T02:59:39Z"},{"number":827,"title":"request.ip via x-forwarded-for should strip out ports","comments":12,"created_at":"2016-10-04T03:58:40Z"},{"number":1607,"title":"Distribute TypeScript types with koa package","comments":8,"created_at":"2021-11-05T00:15:29Z"},{"number":1869,"title":"Request for Maintainers","comments":4,"created_at":"2025-04-06T21:51:35Z"},{"number":1903,"title":"[feat] Update `accepts` module","comments":3,"created_at":"2025-08-22T08:39:02Z"},{"number":2026,"title":"[fix] request.subdomains treats a trailing-dot hostname as an extra subdomain","comments":2,"created_at":"2026-11-01T01:25:54Z"},{"number":1915,"title":"Package keygrip@1.1.0 has been deprecated","comments":2,"created_at":"2025-10-29T08:16:02Z"}],"discussions":[{"number":2038,"title":"Relia: Koa request tracing that explains what broke in plain words","comments":0,"category":"Show and tell","created_at":"2026-11-05T05:11:31Z"},{"number":2035,"title":"Koa error middleware that keeps app.on('error') working","comments":0,"category":"Show and tell","created_at":"2026-11-03T05:53:43Z"},{"number":1981,"title":"Do after response work","comments":1,"category":"Q&A","created_at":"2026-06-21T21:16:12Z"},{"number":1905,"title":"Why is there both a v2.16.0 tag and a 2.16.0 tag?","comments":1,"category":"General","created_at":"2025-08-25T13:56:01Z"},{"number":1901,"title":"Share a Koa Learning Repo","comments":0,"category":"Show and tell","created_at":"2025-08-13T08:51:25Z"},{"number":1974,"title":"[fix]  read large files in node, there will be a wrong package in koa, memory overflow","comments":5,"category":"Q&A","created_at":"2025-05-29T01:31:47Z"},{"number":1872,"title":"Planning for koa-static-cache v6 — Feedback, Ideas & Roadmap","comments":0,"category":"General","created_at":"2025-04-09T09:59:50Z"},{"number":1871,"title":"ctx.body vs ctx.response.body","comments":1,"category":"Q&A","created_at":"2025-04-07T17:27:03Z"}],"latest_release":{"name":"v3.3.0","tag":"v3.3.0","published_at":"2026-11-03T01:29:30Z","body":"## What's Changed\n* chore: Tell dependabot to update GH Actions by @olleolleolle in https://github.com/koajs/koa/pull/1963\n* build(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in https://github.com/koajs/koa/pull/1966\n* build(deps): bump actions/setup-node from 4 to 6 by @dependabot[bot] in https://github.com/koajs/koa/pull/1965\n* build(deps): bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in https://github.com/koajs/koa/pull/1964\n* build(deps-dev): bump flatted from 3.3.3 to 3.4.2 by @dependabot[bot] in https://github.com/koajs/koa/pull/1945\n* build(deps-dev): bump c8 from 10.1.3 to 11.0.0 by @dependabot[bot] in https://github.com/koajs/koa/pull/1931\n* build(deps-dev): bump supertest from 7.1.4 to 7.2.2 by @dependabot[bot] in https://github.com/koajs/koa/pull/1924\n* build(deps): bump type-is from 2.0.1 to 2.1.0 by @dependabot[bot] in https://github.com/koajs/koa/pull/1969\n* build(deps): bump minimatch from 3.1.2 to 3.1.5 by @dependabot[bot] in https://github.com/koajs/koa/pull/1962\n* fix: response content-type value amount as one with testcase by @PoChenKuo in https://github.com/koajs/koa/pull/1899\n* docs: fix app.currentContext example (read the getter, don't assign to it) by @DucMinhNe in https://github.com/koajs/koa/pull/1978\n* build(deps): bump codecov/codecov-action from 6 to 7 by @dependabot[bot] in https://github.com/koajs/koa/pull/1979\n* docs: improve JSDoc parameter descriptions for `Application` constructor by @kshitijanurag in https://github.com/koajs/koa/pull/1941\n* feat: re-export http-errors utilities by @nuintun in https://github.com/koajs/koa/pull/1991\n* ci: bump node versions to 22-26 by @jonathanong in https://github.com/koajs/koa/pull/1972\n* patch: make ctx.assert errors instanceof HttpError by @yowainwright in https://github.com/koajs/koa/pull/1998\n* fix: parse absolute-form request targets in request.URL by @xia-chao in https://github.com/koajs/koa/pull/1999\n* docs: point request.hostname URL link at current Node.js docs by @JiuYue0820 in https://github.com/koajs/koa/pull/1994\n* fix(response): keep the Blob content type instead of forcing octet-stream by @spokodev in https://github.com/koajs/koa/pull/1987\n* fix: reject multiple values for singleton response headers by @shuaiyafei in https://github.com/koajs/koa/pull/2012\n* fix: preserve booleans when assigning query parameters by @tianrking in https://github.com/koajs/koa/pull/2013\n* fix: prevent prototype mutation when parsing query parameters by @yowainwright in https://github.com/koajs/koa/pull/2024\n* fix: keep prototype-based HttpError instanceof checks by @jonathanong in https://github.com/koajs/koa/pull/2025\n* chore: minor release bump by @yowainwright in https://github.com/koajs/koa/pull/2031\n* fix: preserve HttpError subclass instance checks by @yowainwright in https://github.com/koajs/koa/pull/2033\n* fix: lowercase X-Forwarded-Proto in request.protocol by @jipeng6036-del in https://github.com/koajs/koa/pull/2029\n* fix: parse IPv6 hostname from request.host by @yowainwright in https://github.com/koajs/koa/pull/2034\n\n## New Contributors\n* @PoChenKuo made their first contribution in https://github.com/koajs/koa/pull/1899\n* @DucMinhNe made their first contribution in https://github.com/koajs/koa/pull/1978\n* @kshitijanurag made their first contribution in https://github.com/koajs/koa/pull/1941\n* @nuintun made their first contribution in https://github.com/koajs/koa/pull/1991\n* @xia-chao made their first contribution in https://github.com/koajs/koa/pull/1999\n* @JiuYue0820 made their first contribution in https://github.com/koajs/koa/pull/1994\n* @spokodev made their first contribution in https://github.com/koajs/koa/pull/1987\n* @shuaiyafei made their first contribution in https://github.com/koajs/koa/pull/2012\n* @tianrking made their first contribution in https://github.com/koajs/koa/pull/2013\n* @jipeng6036-del made their first contribution in https://github.com/koajs/koa/pull/2029\n\n**Full Changelog**: https://github.com/koa"},"readme":true,"readme_zh":false,"news":[],"stale":false,"snapshot_at":"2026-11-10T09:35:25Z","history_start":"2026-09-06"}