All posts
AWS Amplify

The AppSync Limits That Push Teams Off It: 30 Seconds, a JavaScript Subset, and 240 KB Subscriptions

By

November 2, 2026

6 min read

Most AppSync quotas are generous. The ones that hurt are fixed: a 30-second request ceiling, resolvers in a JavaScript runtime with no try/catch, no async and no network access, 32 KB of resolver code, ten functions per pipeline and 240 KB subscription messages. What each means in practice and the usual workaround.

Amplify Exit
AppSync
GraphQL
AWS Lambda
Quotas

AppSync's throughput quotas are high and mostly adjustable. The limits teams run into are the ones marked not adjustable on the quotas page, and the shape of the APPSYNC_JS runtime that resolvers run in.

Fixed quotas

Quota

Value

What it means

Request execution time

30 seconds, not adjustable

Long reports, exports and AI calls need a job and a status endpoint

Resolver, function and handler code size (APPSYNC_JS)

32 KB, not adjustable

Logic moves to Lambda as it grows

Functions per pipeline resolver

10, not adjustable

Complex mutations get split or moved

Iterations per loop

1,000, not adjustable

Large lists are processed elsewhere

Subscription payload size

240 KB, not adjustable

Big updates become "something changed, fetch it"

Request and response mapping template size

64 KB each

VTL-era APIs hit this first

Maximum query length

15,000 tokens

Rarely a problem; generated queries can get close

Want a second opinion on this for your system?

Book a free 30-minute call. You'll leave knowing what we'd do first and roughly what it costs, whether or not you hire us.

The APPSYNC_JS runtime is a subset

Resolvers look like JavaScript, but AppSync's supported-features page lists what is missing: no try, catch, finally or throw; no async code or promises; no network or file access; no regular expressions (Java-style patterns only in replace); no while or classic for loops; no recursion; no passing functions as arguments. Errors are returned with util.error.

That is a sensible design for a resolver that maps a request to a DynamoDB call. It is a poor home for business rules. In practice the logic ends up split between resolvers, Lambda data sources and the client, and nobody can read a request end to end.

Cost at scale

AppSync charges $4.00 per million queries and mutations, $2.00 per million real-time updates and $0.08 per million connection-minutes, plus data transfer. The newer AppSync Events API is $1.00 per million operations. Each resolver that calls Lambda also pays for the Lambda invocation, so a field-by-field Lambda design multiplies.

Workarounds, and when they stop being worth it

  • Long work: a mutation that starts a Step Functions execution and returns an id, plus a query or subscription for the result.

  • Logic that needs real code: a Lambda data source. Fine for a few fields; a smell when it is most of them.

  • Large subscription payloads: publish an id and let the client fetch.

  • When most resolvers are Lambda anyway, AppSync is a GraphQL router in front of your code. Removing it is often simpler than keeping it.

hoolco Monthly Review

Once a month: what changed in tech that month and what it means for you, from cloud and AI to security and the tools you build with. Every item links to its source. No sales pitch, unsubscribe in one click.

As of November 2, 2026. Provided as is, for general information, and accurate to the best of our knowledge on the date shown. Not legal, compliance, tax, financial or other professional advice. Prices, limits and vendor services change; check current vendor documentation before relying on anything here. Terms of use.