Catalog npm
PACKAGE EXPLORERView in registry

@021.is/spine-query

npm

TanStack Query wrapper with sensible defaults: dedupe, SWR, no auto-refetch, query-key factory pattern. Reduces frontend → backend traffic.

Versions collected2
Direct dependencies3From release 0.4.3
Last observed20 Oct, 22:00 UTC

README

Current package documentation

@021.is/spine-query

TanStack Query wrapper with sensible defaults that minimize backend traffic. Plus a typed makeKeys factory for consistent, scoped query keys.

Why

A production app hit a real rate-limit because 10 components were each calling the same endpoint. TanStack Query's defaults (refetchOnFocus: true, staleTime: 0) make this worse, not better. spine-query tunes for don't hammer.

Defaults (built into makeQueryClient)

ValueWhy
staleTime60_000 (1 min)Component swaps within a minute don't refetch
gcTime5 * 60_000 (5 min)Back-button warm hit
refetchOnWindowFocusfalseOpt-in per query if needed
refetchOnReconnectfalseSame — explicit > implicit
retry1Don't thrash on failure
mutations.retry0Never auto-retry mutations

Use — client setup

import { QueryClientProvider } from "@tanstack/react-query";
import { makeQueryClient } from "@021.is/spine-query";

const qc = makeQueryClient();
<QueryClientProvider client={qc}>{children}</QueryClientProvider>

Use — typed query keys

import { makeKeys } from "@021.is/spine-query";

export const eventKeys = makeKeys("events", {
  all: () => [],
  byId: (id: string) => [id],
  listByOrganizer: (orgId: string, status: "draft" | "published") => ["by-org", orgId, status],
});

useQuery({ queryKey: eventKeys.byId("e_1"), queryFn: () => fetchEvent("e_1") });
queryClient.invalidateQueries({ queryKey: eventKeys.all() }); // wipes ALL event queries

Result: every key is prefixed with the scope (["events", "e_1"], ["events", "by-org", "o_1", "published"]). Invalidation is reliable; typos are caught at compile time.

Override per query when needed

useQuery({
  queryKey: eventKeys.byId(id),
  queryFn: () => fetchEvent(id),
  refetchOnWindowFocus: true, // override the default for hot-status surfaces
  staleTime: 5_000,
});

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 2

Collected releases
VersionPublishedDirect dependenciesOpen version
0.4.3Registry latest28 May 20263
0.4.028 May 20263

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
021is/spine-ts

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:00 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:b269631f06820fe933e44c91a23fc091a770bac87118e88ff0c6347aa551bac0