Amplify gets a startup to launch fast. The trouble starts later: list queries that scan, resolvers that can't throw or call out, a 30-second ceiling, and a data model that was never designed. The signs it is time to leave, what to move to, what to keep, and a cutover that doesn't log anyone out.
Amplify does what it promises: a schema file becomes an API, tables, auth rules and a typed client in an afternoon. That is a good trade for a prototype. It becomes a bad one when the product works and the team needs reporting, complex queries, background jobs and the ability to debug a slow request. At that point Amplify's defaults are decisions nobody made on purpose.
List screens get slower as tables grow. Amplify's docs say the list operation uses DynamoDB scans, and DynamoDB applies the filter after reading, so a filtered page reads the whole page and can come back nearly empty.
Business logic is spread across resolvers that can't use try/catch, throw, async code or network calls, and every exception becomes a Lambda resolver bolted on the side.
Someone needs a report, a join or a count, and the answer is "export the tables".
A request needs more than 30 seconds and can't have it: AppSync's request execution time is a fixed quota.
Nobody can explain why an authorization rule lets a user see a record, because the rule lives in generated resolvers.
Deploys are slow and nervous, because the backend is regenerated from a schema rather than changed in small steps.
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.
Stand up the new API next to AppSync, verifying the same Cognito tokens, so a signed-in user is signed in to both.
Move data with a full export and a change stream: export the tables to S3, load them into the new store, then replay DynamoDB Streams until the two match.
Move one screen at a time behind a flag in the client. Reads first, then writes.
Keep AppSync running until the oldest supported mobile app version no longer calls it. Old app versions are the reason this takes months, not weeks.
Delete the Amplify backend last, after a final export to S3.
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.
Book a free 30-minute call about it. Bring your setup and your bill; you'll leave knowing what we'd do first and roughly what it costs, whether or not you hire us.
Or keep reading
Migrating Amplify's DynamoDB Data to Postgres: Why Lists Scan, Why Pages Come Back Empty, and How to Move It
Amplify list queries use DynamoDB scans, and DynamoDB applies filters after reading up to 1 MB, so a filtered page costs a full read and can return almost nothing. When the data is relational, Postgres is the better home. How to export, transform, keep the two in sync and switch.
Read
Cutting Over From AppSync to Your Own API Without Downtime (and Without Logging Anyone Out)
Keep the Cognito user pool, verify the same tokens in the new API, move one screen at a time behind a flag, and keep AppSync alive until old mobile app versions are gone. The order that avoids a big-bang release, and the checks that tell you it is safe to switch off the old backend.
Read
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.