https://github.com/eljijuna/api-hooks
A collection of React hooks for popular APIs (npm, GitHub, Bundlephobia) built on TanStack Query. Provides typed, reusable hooks for data fetching, caching, and async state management with a simple and consistent API.
https://github.com/eljijuna/api-hooks
bundlephobia github npm osv react-query
Last synced: 10 days ago
JSON representation
A collection of React hooks for popular APIs (npm, GitHub, Bundlephobia) built on TanStack Query. Provides typed, reusable hooks for data fetching, caching, and async state management with a simple and consistent API.
- Host: GitHub
- URL: https://github.com/eljijuna/api-hooks
- Owner: ElJijuna
- License: mit
- Created: 2026-04-14T16:37:24.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-06-02T22:26:02.000Z (15 days ago)
- Last Synced: 2026-06-03T00:15:10.008Z (15 days ago)
- Topics: bundlephobia, github, npm, osv, react-query
- Language: TypeScript
- Homepage: https://eljijuna.github.io/api-hooks/
- Size: 2.94 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
# api-hooks
A collection of React hooks for popular APIs, built on [`@tanstack/react-query`](https://tanstack.com/query).
[](https://github.com/ElJijuna/api-hooks/actions/workflows/ci.yml)
[](LICENSE)
[](https://www.typescriptlang.org/)
## Packages
### [`@api-hooks/npm`](packages/npm#readme)
React hooks for the [npm registry API](https://github.com/npm/registry/blob/main/docs/REGISTRY-API.md).
[](https://www.npmjs.com/package/@api-hooks/npm)
[](https://www.npmjs.com/package/@api-hooks/npm)
| Hook | Returns |
| ---- | ------- |
| `useNpmPackage(name)` | `NpmPackument` |
| `useNpmPackageVersion(name, version)` | `NpmPackageVersion` |
| `useNpmPackageLatest(name)` | `NpmPackageVersion` |
| `useNpmPackageVersions(name)` | `NpmPackageVersion[]` |
| `useNpmPackageDistTags(name)` | `NpmDistTags` |
| `useNpmPackageMaintainers(name)` | `NpmPerson[]` |
| `useNpmPackageDownloads(name, options?)` | `NpmDownloadPoint` |
| `useNpmPackageDownloadRange(name, options?)` | `NpmDownloadRange` |
| `useNpmMaintainer(username)` | `NpmUser` |
| `useNpmMaintainerPackages(username, options?)` | `NpmSearchResult` |
| `useNpmMaintainerPackagesInfinite(username, options?)` | `InfiniteData` |
| `useNpmSearch(text, options?)` | `NpmSearchResult` |
| `useNpmSearchInfinite(text, options?)` | `InfiniteData` |
| `useNpmUser(username)` | `NpmAuthenticatedUser` |
| `useNpmUserPackages(username, params?)` | `NpmUserPackages` |
---
### [`@api-hooks/gh`](packages/gh#readme)
React hooks for the [GitHub REST API](https://docs.github.com/en/rest).
[](https://www.npmjs.com/package/@api-hooks/gh)
[](https://www.npmjs.com/package/@api-hooks/gh)
| Hook | Returns |
| ---- | ------- |
| `useGhUser(login)` | `GitHubUser` |
| `useGhUserRepos(login, params?)` | `GitHubPagedResponse` |
| `useGhCurrentUser()` | `GitHubUser` |
| `useGhUserFollowers(login, params?)` | `GitHubPagedResponse` |
| `useGhUserFollowing(login, params?)` | `GitHubPagedResponse` |
| `useGhUserPublicEvents(login, params?)` | `GitHubPagedResponse` |
| `useGhUserOrganizations(login, params?)` | `GitHubPagedResponse` |
| `useGhUserContributionMap(login, params?)` | `ContributionCalendar` |
| `useGhRepo(owner, name)` | `GitHubRepository` |
| `useGhRepoCommits(owner, name, params?)` | `GitHubPagedResponse` |
| `useGhRepoBranches(owner, name, params?)` | `GitHubPagedResponse` |
| `useGhRepoBranch(owner, name, branch)` | `GitHubBranch` |
| `useGhRepoTags(owner, name, params?)` | `GitHubPagedResponse` |
| `useGhRepoReleases(owner, name, params?)` | `GitHubPagedResponse` |
| `useGhRepoLatestRelease(owner, name)` | `GitHubRelease` |
| `useGhRepoForks(owner, name, params?)` | `GitHubPagedResponse` |
| `useGhRepoContents(owner, name, path?, params?)` | `GitHubContent \| GitHubContent[]` |
| `useGhRepoRaw(owner, name, path, params?)` | `string` |
| `useGhRepoMultipleRaw(owner, name, paths, params?)` | `Record` |
| `useGhRepoTopics(owner, name)` | `string[]` |
| `useGhRepoContributors(owner, name, params?)` | `GitHubPagedResponse` |
| `useGhRepoIssues(owner, name, params?)` | `GitHubPagedResponse` |
| `useGhRepoPullRequests(owner, name, params?)` | `GitHubPagedResponse` |
| `useGhRepoWebhooks(owner, name, params?)` | `GitHubPagedResponse` |
| `useGhRepoAdvisories(owner, name, params?)` | `GitHubPagedResponse` |
| `useGhRepoAdvisory(owner, name, ghsaId)` | `GitHubRepositoryAdvisory` |
| `useGhCreateFork(owner, name)` | `GitHubRepository` |
| `useGhCreateIssue(owner, name)` | `GitHubIssue` |
| `useGhIssue(owner, name, number)` | `GitHubIssue` |
| `useGhIssueComments(owner, name, number, params?)` | `GitHubPagedResponse` |
| `useGhPullRequest(owner, name, number)` | `GitHubPullRequest` |
| `useGhPullRequestCommits(owner, name, number, params?)` | `GitHubPagedResponse` |
| `useGhPullRequestFiles(owner, name, number, params?)` | `GitHubPagedResponse` |
| `useGhPullRequestReviews(owner, name, number, params?)` | `GitHubPagedResponse` |
| `useGhPullRequestReviewComments(owner, name, number, params?)` | `GitHubPagedResponse` |
| `useGhPullRequestIsMerged(owner, name, number)` | `boolean` |
| `useGhMergePullRequest(owner, name, number)` | `MergeResult` |
| `useGhCreatePullRequestReview(owner, name, number)` | `GitHubReview` |
| `useGhRequestReviewers(owner, name, number)` | `GitHubPullRequest` |
| `useGhUpdatePullRequest(owner, name, number)` | `GitHubPullRequest` |
| `useGhAddPullRequestComment(owner, name, number)` | `GitHubReviewComment` |
| `useGhCommit(owner, name, ref)` | `GitHubCommit` |
| `useGhCommitStatuses(owner, name, ref, params?)` | `GitHubPagedResponse` |
| `useGhCommitCombinedStatus(owner, name, ref)` | `GitHubCombinedStatus` |
| `useGhCommitCheckRuns(owner, name, ref, params?)` | `GitHubPagedResponse` |
| `useGhCommitComments(owner, name, ref, params?)` | `GitHubPagedResponse` |
| `useGhCreateCommitStatus(owner, name, ref)` | `GitHubCommitStatus` |
| `useGhAddCommitComment(owner, name, ref)` | `GitHubCommitComment` |
| `useGhOrg(name)` | `GitHubOrganization` |
| `useGhOrgRepos(name, params?)` | `GitHubPagedResponse` |
| `useGhOrgMembers(name, params?)` | `GitHubPagedResponse` |
| `useGhSearchRepos(q, params?)` | `GitHubPagedResponse` |
| `useGhAdvisories(params?)` | `GitHubPagedResponse` |
| `useGhAdvisory(ghsaId)` | `GitHubAdvisory` |
| `useGhAdvisoryByCve(cveId)` | `GitHubAdvisory \| null` |
| `useGhGist(gistId, options?)` | `GitHubGist` |
| `useGhGists(params?, options?)` | `GitHubPagedResponse` |
| `useGhGistsInfinite(params?, options?)` | `InfiniteData>` |
| `useGhGistCommits(gistId, params?)` | `GitHubPagedResponse` |
| `useGhGistForks(gistId, params?)` | `GitHubPagedResponse` |
| `useGhGistComments(gistId, params?)` | `GitHubPagedResponse` |
| `useGhGistIsStarred(gistId)` | `boolean` |
| `useGhCreateGist()` | `GitHubGist` |
| `useGhUpdateGist(gistId)` | `GitHubGist` |
| `useGhDeleteGist(gistId)` | `void` |
| `useGhForkGist(gistId)` | `GitHubGist` |
| `useGhStarGist(gistId)` | `void` |
| `useGhUnstarGist(gistId)` | `void` |
| `useGhAddGistComment(gistId)` | `GistComment` |
| `useGhUpdateGistComment(gistId)` | `GistComment` |
| `useGhDeleteGistComment(gistId)` | `void` |
---
### [`@api-hooks/bp`](packages/bp#readme)
React hooks for the [Bundlephobia API](https://bundlephobia.com).
[](https://www.npmjs.com/package/@api-hooks/bp)
[](https://www.npmjs.com/package/@api-hooks/bp)
| Hook | Returns |
| ---- | ------- |
| `useBpPackageSize(name, options?)` | `BundleSize` |
| `useBpPackageVersionSize(name, version, options?)` | `BundleSize` |
| `useBpPackageHistory(name, options?)` | `PackageHistory` |
| `useBpPackageSimilar(name, options?)` | `SimilarPackages` |
---
### [`@api-hooks/osv`](packages/osv#readme)
React hooks for the [OSV (Open Source Vulnerabilities) API](https://osv.dev).
[](https://www.npmjs.com/package/@api-hooks/osv)
[](https://www.npmjs.com/package/@api-hooks/osv)
| Hook | Returns |
| ---- | ------- |
| `useOsvVuln(id, options?)` | `OsvVulnerability` |
| `useOsvQuery(params, options?)` | `OsvQueryResult` |
| `useOsvQueryBatch(queries, options?)` | `OsvBatchQueryResult` |
---
## Requirements
All packages require the following peer dependencies:
| Peer dependency | Version |
| --------------- | ------- |
| `react` | `>=19.0.0` |
| `@tanstack/react-query` | `^5.0.0` |
## License
MIT © [ElJijuna](https://github.com/ElJijuna)