Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.

Feature Parity

Use this page to understand what Gen 1 features are available in Gen 2 and how they've changed.

Backend Categories

The tables below compare Gen 1 and Gen 2 feature availability with respect to backend resource definitions. The Migration Tool column indicates the level of support the migration tool provides for this feature.

Migration Tool legend

๐ŸŸข Fully supported

The tool can generate the Gen 2 code and refactor the existing resource.

๐ŸŸ  Generate only

The tool can produce Gen 2 code, but the feature requires refactoring support which the tool does not have. If instructed to skip during refactor, you will need to manually move or migrate data from those resources. For example, Geo (GeofenceCollection) can be code-generated but the existing geofence data cannot be automatically moved to the new Gen 2 resource.

๐Ÿ”ด Unsupported

The tool does not support this feature during generate or refactor. If instructed to skip, it will proceed without it. To complete migration, you will need to manually write the Gen 2 code and migrate any associated data. Some unsupported features involve stateful resources that will require manual data replication - for example, @searchable creates an OpenSearch domain with indexed data that you would need to recreate and repopulate in Gen 2. Other features can be purely stateless and only need to be manually configured by writing CDK code - for example, a Python Lambda function just needs to be redefined using CDK in your Gen 2 code, with no data migration involved.

If a feature you need is not yet supported, create a feature request.

Auth

FeatureGen 1Gen 2Migration Tool
Configure usernameYesYes with CDK๐ŸŸข
Configure emailYesYes๐ŸŸข
Configure phone numberYesYes๐ŸŸข
FacebookYesYes๐ŸŸข
GoogleYesYes๐ŸŸข
AmazonYesYes๐ŸŸข
Sign-in with AppleYesYes๐ŸŸข
Add user pool groupsYesYes๐ŸŸข
User pool group preferenceYesYes๐ŸŸข
Sign-up attributesYesYes๐ŸŸข
Auth trigger supportYesYes๐ŸŸข
Auth trigger templates: Add Google reCaptcha ChallengeYesYes๐ŸŸข
Auth trigger templates: Add user to GroupYesYes๐ŸŸข
Auth trigger templates: Email Domain Filtering (denylist)YesYes๐ŸŸข
Auth trigger templates: Email Domain Filtering (allowlist)YesYes๐ŸŸข
Auth trigger templates: Override ID Token ClaimsYesYes๐ŸŸข
Auth trigger templates: Custom Auth Challenge FlowYesYes๐ŸŸข
Auth trigger templates: Email verification link redirectYesYes๐Ÿ”ด
Configure default password policyYesYes with CDK๐ŸŸข
Configure read/write capabilities for attributesYesYes with CDK๐Ÿ”ด
Oauth flow: Configure authorization v implicit grantYesYes with CDK๐Ÿ”ด
Admin queriesYesYes with CDK๐Ÿ”ด
MFA: OFFYesYes๐ŸŸข
MFA: ONYesYes๐ŸŸข
MFA: OPTIONALYesYes๐ŸŸข
MFA: SMSYesYes๐ŸŸข
MFA: TOTPYesYes๐ŸŸข
Configure Oauth scopesYesYes๐Ÿ”ด
Email verification - codeYesYes๐ŸŸข
Email based user registration/forgot passwordYesYes๐Ÿ”ด
Oauth flow: Configure redirect URIsYesYes๐Ÿ”ด
Ability to set a friendly name for User PoolYesYes-
Unauthenticated loginsYesYes๐ŸŸข
Custom attributesYesYes with CDK๐ŸŸข
Oauth flow: Configure domain name prefixYesYes with CDK๐Ÿ”ด
First class OIDC supportNoYes-
First class SAML supportNoYes-
Import authYesYes๐ŸŸข
Override authYesYes๐Ÿ”ด
Lambda Triggers (all types)YesYes๐ŸŸข

Data

The migration tool does not convert your GraphQL schema to the native Gen 2 schema builder APIs (e.g. a.model(), a.string()). Instead, your existing string-based GraphQL schema is preserved as-is within the Gen 2 data definition.

FeatureGen 1Gen 2Migration Tool
modelYesYes๐ŸŸข
primaryKeyYesYes๐ŸŸข
secondaryKey (name, sortKeyFields, query)YesYes๐ŸŸข
hasOneYesYes๐ŸŸข
hasManyYesYes๐ŸŸข
belongsToYesYes๐ŸŸข
manyToManyYesNo๐Ÿ”ด
defaultYesYes๐ŸŸข
auth - public - apiKeyYesYes๐ŸŸข
auth - public - iamYesYes๐ŸŸข
auth - owner - userPoolsYesYes๐ŸŸข
auth - private - userPoolsYesYes๐ŸŸข
auth - private - iamYesYes๐ŸŸข
auth - group - userPoolsYesYes๐ŸŸข
auth - custom - functionYesYes๐ŸŸข
searchableYesNo (guide using Zero-ETL DynamoDB-to-OpenSearch)๐Ÿ”ด
predictionsYesNo (guide with AI service integrations)๐Ÿ”ด
Custom Mutations, Queries, SubscriptionsYesYes๐ŸŸข
VTL handlerYesYes with CDK๐ŸŸข
JavaScript resolver handlerNoYes-
function handlerYesYes๐ŸŸข
http handlerYesYes (custom data sources including http)๐ŸŸข
DataStore supportYesNo๐Ÿ”ด
MySQL and PostgreSQL supportNoYes-

API

FeatureGen 1Gen 2Migration Tool
GraphQL: API Key authYesYes๐ŸŸข
GraphQL: Cognito User Pool authYesYes๐ŸŸข
GraphQL: IAM authYesYes๐ŸŸข
GraphQL: OpenID Connect authYesYes๐Ÿ”ด
GraphQL: Lambda authYesYes๐Ÿ”ด
GraphQL: Conflict detection (DataStore)YesNo๐Ÿ”ด
REST APIYesYes๐ŸŸข
REST: Restrict API accessYesYes๐ŸŸข
REST: Auth/Guest/Group permissionsYesYes๐ŸŸข
Custom JS/VTL resolversYesYes๐Ÿ”ด
Override/Extend Amplify resolversYesYes๐Ÿ”ด
Override APIYesYes (via CDK)๐Ÿ”ด

Storage

FeatureGen 1Gen 2Migration Tool
Ability to provision S3 bucketYesYes๐ŸŸข
Auth and Guest accessYesYes๐ŸŸข
Auth - Configure CRUD accessYesYes๐ŸŸข
Configure Cognito Group CRUD accessYesYes๐ŸŸข
Guest - Configure CRUD accessYesYes๐ŸŸข
Lambda trigger for S3 bucketYesYes๐ŸŸข
Import a single S3 bucketYesYes๐Ÿ”ด
Import multiple S3 bucketsNoYes๐Ÿ”ด
Override StorageYesYes๐Ÿ”ด
S3 Lambda triggersYesYes๐ŸŸข
NoSQL DatabaseYesYes๐ŸŸข
NoSQL: Sort key, Global secondary indexesYesYes๐ŸŸข
NoSQL: Lambda TriggerYesYes๐ŸŸข

Functions

FeatureGen 1Gen 2Migration Tool
Function runtime: TypeScriptNoYes-
Function runtime: NodeJSYesYes๐ŸŸข
Function runtime: .NET 6YesYes with CDK๐Ÿ”ด
Function runtime: GoYesYes with CDK๐Ÿ”ด
Function runtime: JavaYesYes with CDK๐Ÿ”ด
Function runtime: JavaScriptYesYes with CDK๐Ÿ”ด
Function runtime: PythonYesYes with CDK๐Ÿ”ด
Function resource access permissions: authYesYes๐ŸŸข
Function resource access permissions: functionYesYes๐Ÿ”ด
Function resource access permissions: APIYesYes๐ŸŸข
Function resource access permissions: customNoYes-
Function resource access permissions CRUD operationsYesYes๐ŸŸข
Function resource access permissions: geoYesYes with CDK๐Ÿ”ด
Function resource access permissions: analyticsYesYes with CDK๐ŸŸข
Environment variablesYesYes๐ŸŸข
SecretsYesYes๐Ÿ”ด
Cron jobsYesYes๐ŸŸข
Configure memory sizeYesYes๐ŸŸข
Lambda layersYesYes๐Ÿ”ด
Custom IAM policiesYesYes๐Ÿ”ด
Function templates: Hello WorldYesYes๐ŸŸข
Function templates: CRUD for DynamoDBYesYes๐ŸŸข
Function templates: Serverless expressYesYes๐ŸŸข
Function templates: Lambda triggerYesYes๐ŸŸข

Hosting

The migration tool generates an amplify.yml buildspec file so that you can deploy and publish the app via the Amplify Hosting service. See Build specification reference for details.

FeatureGen 1Gen 2
Amplify Console (Git-based Continuous deployment)YesYes
Amplify Console (Manual deployment)YesNo
Amazon CloudFront and S3YesNo

See the full Deploy and Host documentation for comprehensive guidance on Gen 2 deployment options.

In Gen 1, deployment was typically done via amplify push (backend) and amplify publish (frontend) in a custom pipeline, or automatically through the Amplify Hosting service. In Gen 2, these commands no longer exist.

Amplify Hosting

The simplest path is to connect your Git branch in the Amplify Console (App Settings โ†’ Branch Settings โ†’ Add Branch). See branch deployments for details.

If you use a custom backend pipeline but still want Amplify Hosting for the frontend, update the amplify.yml build spec to run npx ampx generate outputs instead of pipeline-deploy, and use an incoming webhook to trigger the frontend build after your backend pipeline succeeds.

If your Gen 1 app uses manual deployment (i.e. it is not connected to a Git repository), the Amplify Console does not allow you to add Git-based branch deployments to the same app. In this case, you must create a new Amplify app and connect your Git repository to it.

Custom Pipelines

Unlike Gen 1, Gen 2 deployments always require an Amplify app ID and a branch name. If you use your own CI/CD system (AWS CodePipeline, Jenkins, CodeCatalyst, etc.) or a non-Git VCS like SVN, you can drive Gen 2 deployments directly using the ampx CLI. You will need to perform some one-time setup:

# (Optional) Create a new Amplify App โ€” only needed if not reusing your existing app
aws amplify create-app --name my-app
# Register a branch name for your pipeline to deploy to
# (this is a logical name, not necessarily a real Git branch)
aws amplify create-branch --app-id <APP_ID> --branch-name gen2-main
# Disable auto-build so Amplify doesn't build on git push
aws amplify update-branch --app-id <APP_ID> --branch-name gen2-main --no-enable-auto-build

Then, in your pipeline build steps:

npm ci
export CI=1
npx ampx pipeline-deploy --branch gen2-main --app-id <AMPLIFY_APP_ID>

The --branch parameter is a logical name, not a Git ref. You can use any string (e.g. trunk, release-1.0). The amplify/ folder must be present in your working directory at build time.

See the custom pipelines guide for full details.

Frontend Hosting Without Amplify

If you host your frontend separately (S3 + CloudFront, on-prem, etc.), run npx ampx generate outputs in your pipeline to produce amplify_outputs.json, then bundle it with your frontend build artifacts.

Other categories

FeatureGen 1Gen 2Migration Tool
REST APIYesYes with custom CDK๐ŸŸข
Analytics (Kinesis)YesYes with custom CDK๐ŸŸข
Analytics (Pinpoint)YesYes with custom CDK๐Ÿ”ด
Geo (Map)YesYes with custom CDK๐ŸŸข
Geo (PlaceIndex)YesYes with custom CDK๐ŸŸข
Geo (GeofenceCollection)YesYes with custom CDK๐ŸŸ 
PredictionsYesYes with custom CDK๐Ÿ”ด
InteractionsYesYes with custom CDK๐Ÿ”ด
Custom (CDK)YesYes with custom CDK๐ŸŸข
Custom (CFN)YesYes with CfnInclude๐Ÿ”ด

Tooling and Workflows

CLI

Gen 2 replaces the Gen 1 CLI wizard approach with a code-first model using TypeScript and CDK. The following table summarizes the key differences:

AspectGen 1Gen 2
CLI installationGlobal (npm i -g @aws-amplify/cli)Local devDep (npm i @aws-amplify/backend-cli), run via npx
Backend definitionCLI wizard + JSON/GraphQL files in amplify/TypeScript + CDK in amplify/
Environment managementamplify env add/checkout/listGit branches (or logical branch names in custom pipelines)
Local developmentamplify mock (local emulation)npx ampx sandbox (real cloud resources per developer)
Deploymentamplify pushnpx ampx pipeline-deploy or Amplify Hosting auto-build
Frontend config fileamplifyconfiguration.json / aws-exports.jsamplify_outputs.json
Resource overridesamplify override <category>Direct CDK access in amplify/backend.ts
Adding resourcesamplify add <category>TypeScript definitions using define*() functions
Secretsamplify function update secret promptsnpx ampx sandbox secret set <NAME> or console + secret() in code
Codegenamplify codegen / amplify codegen modelNot needed, but optionally npx ampx generate graphql-client-code

The Gen 2 CLI (@aws-amplify/backend-cli) is invoked via npx ampx <command>. All commands support AWS CLI environment variables (AWS_PROFILE, AWS_REGION). See the full CLI commands reference.

Full command mapping table
Gen 1 CommandGen 2 EquivalentNotes
amplify initNo equivalentGen 2 projects are initialized by creating an amplify/ folder with TypeScript definitions. Use npm create amplify@latest for new projects.
amplify add authdefineAuth() in amplify/auth/resource.tsCode-first definition. No CLI command needed.
amplify add apidefineData() in amplify/data/resource.tsGraphQL schema defined in TypeScript.
amplify add storagedefineStorage() in amplify/storage/resource.tsS3 bucket configuration in code.
amplify add functiondefineFunction() in amplify/functions/<name>/resource.tsLambda functions defined in code. Gen 2 defaults to TypeScript runtime.
amplify add hostingRemovedUse Amplify Hosting branch deployments or custom pipelines. For Amplify Hosting use the aws amplify CLI.
amplify pushnpx ampx pipeline-deploy --branch <branch> --app-id <id>Deploys backend infrastructure. In sandbox mode, use npx ampx sandbox.
amplify publishRemovedWas a wrapper for push + frontend deploy. Use your pipeline or Amplify Hosting instead.
amplify pullnpx ampx generate outputs --branch <branch> --app-id <id>Generates amplify_outputs.json for the frontend.
amplify env addCreate a new git branchGen 2 environments map to git branches. Each branch gets its own CloudFormation stack.
amplify env checkoutgit checkout <branch> + npx ampx generate outputsSwitch branch, then regenerate outputs.
amplify env listCheck Amplify Console or list branchesNo direct CLI equivalent.
amplify statusnpx ampx sandbox (watch mode shows drift)No direct status command. Sandbox provides live feedback.
amplify deletenpx ampx sandbox delete (sandbox only)For branch environments, disconnect the branch in the Amplify Console.
amplify codegennpx ampx generate graphql-client-codeGenerates GraphQL statements and types.
amplify codegen modelnpx ampx generate graphql-client-code --format modelgenGenerates model classes for mobile/JS.
amplify configureAWS CLI profile configurationGen 2 uses standard AWS profiles. No Amplify-specific configure step.
amplify mocknpx ampx sandboxSandbox deploys real cloud resources per developer. There is no local mock in Gen 2.
amplify override <category>Direct CDK modifications in amplify/backend.tsGen 2 gives you full CDK access natively.

Console & Developer Experience

These are runtime, console, and tooling features that are not part of backend resource definitions and do not involve infrastructure migration.

FeatureGen 1Gen 2
Auth configuration in consoleYesNo
User management in consoleYesYes
Zero-config Authenticator supportYesYes
Data visual configuration (Studio)YesNo (Gen 2 is code-first by design)
In-IDE end-to-end type safetyNoYes
Storage file browser in consoleYesYes
Storage visual configuration (Studio)YesNo (Gen 2 is code-first by design)
Local testingamplify mocknpx ampx sandbox (cloud sandbox)
Function logs in consoleYesYes

UI Builder

The Gen 1 UI Builder is part of Amplify Studio, the visual tool for managing Gen 1 applications. No such UI exists for Gen 2, but near-full feature parity can be achieved using the Amplify UI Builder Figma Plugin.

Prerequisites: design using Figma based on the Amplify UI Kit, and install the Amplify UI Builder Plugin.

FeatureGen 1 (Studio)Gen 2 (Figma Plugin)
Adjusting theme and creating custom componentsSupportedSupported
Connect data model to components before exportSupported (requires existing data model)Not supported. Connect to Amplify Data as part of the engineering effort.
Exporting components into the projectSupported via UI BuilderSupported via Plugin