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