Skip to content
Back

Weird Query Error

  • 0
  • Databases
  • Web
  • Cloud
Axistro
16 Feb, 2026, 14:08

In next js I am getting this error in the image

TypeScript
 queries: [
        Query.equal('title', TitleId),
        Query.limit(10)
    ]

am I doing something wrong ? appwrite version: 22.0.0 and I found a diy workaround for now

TypeScript
const SafeQuery = {
  limit: (value) => JSON.stringify({ method: "limit", values: [value] }),
  equal: (attribute, value) =>
    JSON.stringify({ method: "equal", attribute, values: [value] }),
};
TypeScript
queries: [SafeQuery.equal("titleId", titleId), SafeQuery.limit(1)],

I dont know why is this happening.

TL;DR
Issue: There's a conflict between the Appwrite SDK and Next.js build environment causing a TypeError. The problem arises from the SDK expecting a callable function but not recognizing it due to a build glitch in Next.js. Solution: Instead of using the SDK's object stringification, bypass it by providing the final JSON string directly using a `SafeQuery` helper. This custom workaround resolves the crash until a more permanent fix is established.
Axistro
16 Feb, 2026, 14:12

I got a debug from antigravity It was a bit of both—a conflict between the Appwrite SDK and the Next.js build environment (specifically when using Turbopack ).

Here is the breakdown of why it failed:

  1. The SDK Dependency The Appwrite Web SDK uses a library called json-bigint internally. This library is used to safely convert query objects (like Query.limit(10)) into JSON strings while ensuring large numbers (BigInts) don't lose precision.
  2. The Failing Check Inside that json-bigint library, there is a technical check that looks like this:
TypeScript
if (value instanceof BigNumber) { ... }
This check is designed to see if a value is a high-precision number.
  1. The "Causal" Conflict In the Next.js environment (specifically the way it bundles modules), the BigNumber constructor was not being correctly identified as a "callable function" by the time it reached that specific line in the SDK.

When JavaScript sees x instanceof Y, it expects Y to be a constructor (a class or function). Because of a module resolution glitch during the build process, BigNumber was essentially "empty" or not recognized as a function, which triggered the error:

TypeScript
TypeError: Right-hand side of `instanceof` is not callable

Why the Fix Works The SafeQuery helper I wrote simply skips the SDK's broken stringification logic. Instead of giving the SDK an object and asking it to stringify it (which triggers the crash), we give it the exact JSON string it expects:

TypeScript
// Instead of Query.limit(10) returning an object...
// SafeQuery returns the final string directly:
'{"method":"limit","values":[10]}'

By providing the final product directly, we bypassed the line of code in the SDK that was crashing. This is a common workaround for SDK-level bundling issues in modern frameworks like Next.js.

Reply

Reply to this thread by joining our Discord

Reply on Discord

Need support?

Join our Discord

Get community support by joining our Discord server.

Join Discord

Get premium support

Join Appwrite Pro and get email support from our team.

Learn more