Skip to content

Generate TanStack Query v5 React hooks from OpenAPI/Swagger specs

License

Notifications You must be signed in to change notification settings

ducdmdev/apigen

Repository files navigation

apigen-tanstack

npm version CI License: MIT

Generate TanStack Query v5 React hooks from OpenAPI/Swagger specs with built-in test mode.

Quick Example

import { useListPets, useCreatePet } from './api/generated'

function PetList() {
  const { data: pets, isLoading } = useListPets()
  const createPet = useCreatePet()

  if (isLoading) return <div>Loading...</div>

  return (
    <div>
      <ul>
        {pets?.map(pet => (
          <li key={pet.id}>{pet.name}</li>
        ))}
      </ul>
      <button onClick={() => createPet.mutate({ name: 'Buddy' })}>
        Add Pet
      </button>
    </div>
  )
}

Features

  • Type-safe hooksuseQuery for GET, useMutation for POST/PUT/PATCH/DELETE
  • TypeScript types — interfaces generated from OpenAPI schemas
  • Mock data + test mode — static mocks and a React context provider to toggle them on
  • Swagger 2.0 support — auto-converted to OpenAPI 3.x
  • Flat or split output — single directory or split by API tag with --split
  • Config file supportapigen.config.ts with auto-discovery or --config flag
  • Interactive wizard — run without flags to be guided through setup
  • allOf composition — schema merging for specs using allOf
  • Dry-run mode — preview generated files with --dry-run before writing

Install

npm install -D apigen-tanstack

Usage

# From a local file
npx apigen-tanstack generate --input ./openapi.yaml --output ./src/api/generated

# From a config file
npx apigen-tanstack generate --config apigen.config.ts

# Interactive mode (omit flags to be guided through setup)
npx apigen-tanstack generate

# Preview without writing
npx apigen-tanstack generate -i ./openapi.yaml --dry-run

Generated Files

File Description
types.ts TypeScript interfaces from schemas
hooks.ts useQuery / useMutation hooks per endpoint
mocks.ts Static mock data from schemas
test-mode-provider.tsx React context for toggling mock mode
index.ts Barrel re-exports

Test Mode

Wrap your app with the provider to return mock data instead of real API calls:

import { ApiTestModeProvider } from './api/generated'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'

const queryClient = new QueryClient()

<QueryClientProvider client={queryClient}>
  <ApiTestModeProvider enabled={true}>
    <App />
  </ApiTestModeProvider>
</QueryClientProvider>

Documentation

License

MIT

About

Generate TanStack Query v5 React hooks from OpenAPI/Swagger specs

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •