TanStack/table · error

Feature not supported in current reactivity implementation

Error message

Feature not supported in current reactivity implementation

What it means

storeReactivityBindings in packages/table-core/src/store-reactivity-bindings.ts creates store-based bindings where createOptionsStore is true but addSubscription still throws. Subscriptions are not part of the supported surface even in the store implementation; any caller registering a subscription hits this guard.

Source

Thrown at packages/table-core/src/store-reactivity-bindings.ts:24

 * with `createOptionsStore: true` so `table.optionsStore` is available for subscriptions.
 *
 * @example
 * ```ts
 * import { constructTable, tableFeatures } from '@tanstack/table-core'
 * import { storeReactivityBindings } from '@tanstack/table-core/store-reactivity-bindings'
 *
 * const table = constructTable({
 *   features: tableFeatures({ coreReactivityFeature: storeReactivityBindings() }),
 *   // ...
 * })
 * ```
 */
export function storeReactivityBindings(): TableReactivityBindings {
  return {
    createOptionsStore: true,
    wrapExternalAtoms: false,
    addSubscription: () => {
      throw new Error(
        'Feature not supported in current reactivity implementation',
      )
    },
    unmount: () => {
      throw new Error(
        'Feature not supported in current reactivity implementation',
      )
    },
    batch,
    schedule: (fn) => queueMicrotask(fn),
    untrack: (fn) => fn(),
    createReadonlyAtom: (fn, options) => {
      return createAtom(() => fn(), {
        compare: options?.compare,
      })
    },
    createWritableAtom: (value, options) => {
      return createAtom(value, {

View on GitHub (pinned to d01c01bedb)

Solutions

  1. Use the atoms / store API (createOptionsStore is true) instead of manual subscriptions.
  2. Replace subscription needs with store.subscribe or framework store mechanisms outside the bindings layer.
  3. Provide a custom TableReactivityBindings whose addSubscription is implemented if you genuinely need it.

Example fix

// before
bindings.addSubscription((fn) => store.subscribe(fn))
// after
const unsub = store.subscribe((value) => { /* react */ })
// later: unsub()
Defensive patterns

Strategy: validation

Validate before calling

const bindings = storeReactivityBindings()
if (bindings.addSubscription === undefined || isThrowingStub(bindings.addSubscription)) {
  // use store.subscribe instead of addSubscription
}

Type guard

function addSubscriptionSupported(b: TableReactivityBindings): boolean {
  return !isThrowingStub(b.addSubscription)
}

Try / catch

try {
  bindings.addSubscription(cb)
} catch (e) {
  if ((e as Error).message.includes('Feature not supported')) {
    const unsub = store.subscribe(cb) // supported alternative
  } else throw e
}

Prevention

When it happens

Trigger: Calling bindings.addSubscription(...) on bindings from storeReactivityBindings (store-reactivity-bindings.ts:24) — invoked via features, initTableWorker, testFeatures, or createTable consumers.

Common situations: Custom feature code modeled after external-subscription patterns (e.g. observable integrations); tests calling addSubscription directly; copy-pasted adapter code from other reactive libraries.

Related errors


AI-assisted analysis of TanStack/table@d01c01bedb (2026-08-28). Data as JSON: /api/errors/70bc77f23cabc595. Report an issue: GitHub.