Oct 26, 202610 min read

Google App Engine Alternatives in 2026

Where teams go after App Engine's legacy runtimes and bundled services, from Cloud Run to platforms outside Google Cloud.

Google App Engine was one of the first platforms as a service, and many apps still deploy to it with gcloud app deploy and rely on its bundled Datastore, Memcache and Task Queues. Those apps keep running, but first-generation runtimes can no longer be deployed and Google points new apps to Cloud Run.

The bundled services are what tie an app to App Engine. Moving to a current runtime or to Cloud Run means replacing each one with a separate Google Cloud product, and that is the point where teams compare what else is available.

Reasons teams look for App Engine alternatives:

  • The first-generation runtimes, including Python 2.7, Java 8, Go 1.11 and PHP 5.5, were deprecated on January 31, 2026 and can no longer be deployed.
  • The legacy bundled services such as Memcache, Task Queues, NDB and Mail have to be swapped for Memorystore, Cloud Tasks, Pub/Sub, Cloud NDB and an SMTP provider.
  • Google recommends Cloud Run for new users over App Engine, and Cloud Run does not support the legacy bundled services.
  • The local development server emulates the bundled services, while their replacements each need their own local setup or emulator.

Google App Engine alternatives at a glance

AlternativeApproachBest fit
EncoreServices, Cloud SQL, Pub/Sub, cron jobs and buckets declared in code, run locally except for cron, and provisioned in your GCP projectTeams that want App Engine's built-in database, task queues and cron back on Google Cloud, set up from their code
Cloud RunGoogle's managed container platform, deploying from an image or from sourceTeams that want Google's recommended path and will set up Cloud SQL, Cloud Tasks and Scheduler themselves
Firebase App HostingGit-based builds of Next.js and Angular apps that run on Cloud Run behind Cloud CDNFrontend-heavy apps built on a supported web framework
RenderManaged platform for web services, workers, cron jobs and PostgresTeams willing to leave Google Cloud for a simpler managed workflow
RailwayProject canvas for services, databases and cron schedules, with usage-based billingSmall teams and side projects that want fast setup outside Google Cloud
Fly.ioApps on Firecracker microVMs in regions around the worldApps that need to run close to users in several regions
Compare features across all six alternatives
CapabilityEncoreCloud RunFirebase App HostingRenderRailwayFly.io
Where it runsYour GCP project (Cloud Run or GKE), or your AWS accountYour GCP projectYour Firebase project's Google Cloud projectRender's infrastructureRailway's infrastructureFly.io's infrastructure
Deploy inputApplication code, built by EncoreContainer image or sourceGit repositoryGit repo or imageGit repo, image or templateImage or Dockerfile with fly.toml
DatabasePostgres declared in code, Cloud SQL on GCPCloud SQL, set up separatelyFirestore or Cloud SQL, set up separatelyManaged PostgresPostgres templatesManaged Postgres
Task queues / Pub/SubDeclared in code, Pub/Sub on GCPCloud Tasks or Pub/Sub, set up separatelyNot includedNo managed brokerNo managed brokerNo managed broker
Cron jobsDeclared in codeCloud SchedulerNot includedCron jobsCron schedules on servicesScheduled Machines or your own scheduler
Local developmentencore run starts services, Postgres and Pub/Sub locallyRun the container yourself, plus emulatorsFramework dev server and Firebase emulatorsRun the app yourselfRun the app yourselfRun the app yourself
Billing modelEncore plan, with GCP billing your project for resourcesGCP usageGCP usage on the Blaze planRender plan and usageUsage-basedUsage-based

Encore: services and Google Cloud resources from code

Encore

Encore combines the application code with the Google Cloud setup that App Engine used to bundle, so the database, the queues and the schedules are declared in TypeScript or Go next to the code that uses them. encore run starts the services, Postgres and Pub/Sub locally, and a deploy provisions Cloud Run or GKE, Cloud SQL and Pub/Sub in your own GCP project.

Application code passes through Encore and infrastructure guardrails to resources provisioned in your own AWS or GCP account.
Encore provisions the infrastructure your application needs in your own AWS or GCP account.

A typical App Engine pattern is a cron.yaml entry that hits a handler, which enqueues a push task to do the slow work. In Encore the same flow is a cron job that calls an endpoint, which publishes to a Pub/Sub topic with a subscriber and a retry policy:

import { api } from "encore.dev/api"; import { CronJob } from "encore.dev/cron"; import { Subscription, Topic } from "encore.dev/pubsub"; interface ReportRequested { reportId: string; } // Replaces a push queue: SNS/SQS on AWS, Pub/Sub on GCP. export const reportRequested = new Topic<ReportRequested>("report-requested", { deliveryGuarantee: "at-least-once", }); // Call it by hand locally to test what the schedule would do. export const queueNightlyReport = api( { expose: true, method: "POST", path: "/reports/nightly" }, async (): Promise<{ reportId: string }> => { const reportId = `nightly-${new Date().toISOString().slice(0, 10)}`; await reportRequested.publish({ reportId }); return { reportId }; }, ); // Replaces a cron.yaml entry. Cron jobs run in the cloud, not under encore run. const _ = new CronJob("nightly-report", { title: "Queue the nightly report", schedule: "0 2 * * *", endpoint: queueNightlyReport, }); // The report id is deterministic, so a redelivered message builds the same report. const __ = new Subscription(reportRequested, "build-report", { handler: async ({ reportId }) => { console.log("building report", reportId); }, retryPolicy: { minBackoff: "10s", maxBackoff: "5m", maxRetries: 5 }, });
A schedule, a queue and a worker in one file, which become a cron job and a Pub/Sub topic with a subscription in your GCP project.

Under encore run the topic and subscriber run on your machine, and calling POST /reports/nightly by hand returns {"reportId":"nightly-2026-10-26"} and logs the build in the subscriber, which is how you test what the schedule will do. Because the topic and the schedule are part of the code, an AI coding agent porting an App Engine handler can replace the cron.yaml entry and the task queue in the same change and check it locally.

Key features

  • Services run on Cloud Run or GKE, with Cloud SQL for Postgres, Pub/Sub with dead-letter topics, Cloud Storage buckets and Secret Manager, as the GCP infrastructure docs describe.
  • An existing Cloud SQL instance, Cloud Storage bucket or Pub/Sub topic can be imported instead of creating a new one.
  • Each service is deployed and scaled on its own, and calls between services are type-checked function calls.
  • The same code can deploy to AWS on ECS Fargate or EKS.

Good to know

Encore is not a host for an existing App Engine app as it is, because APIs and infrastructure go through Encore's TypeScript and Go SDKs, so moving is a code change, and Datastore entities have to move to Postgres. Teams usually start by moving one service or the background work, while the rest stays on App Engine in the same project until there is a reason to move it.

Get started
brew install encoredev/tap/encore &&
encore app create
Copy

Run in your terminal to get started locally.

Cloud Run

Cloud Run runs containers on managed infrastructure that scales to zero, and gcloud run deploy --source . builds the image for you, so an App Engine app on a current runtime can often move with little change to the code itself.

~/app
$ gcloud run deploy api --source . --region europe-west1 --allow-unauthenticated
Cloud Run builds the source with Cloud Build and deploys it as a service.

Key features

  • Request timeouts are configurable up to 60 minutes, with a 5-minute default.
  • Any language and library works, because it runs a container.
  • Cloud Run jobs cover batch work that does not serve requests.

Good to know

Cloud Run covers the compute, so the bundled services become separate products to set up and connect, with Cloud SQL or Firestore for data, Cloud Tasks for push queues, Pub/Sub for pull queues, Cloud Scheduler for cron and Memorystore for Memcache, each with its own IAM and configuration in Terraform or the console. The guide to deploying to GCP goes through that setup.

Firebase App Hosting: framework-aware hosting on Cloud Run

Firebase App Hosting

Firebase App Hosting builds Next.js and Angular apps from a GitHub repository with Cloud Build and runs them on Cloud Run behind Cloud CDN, in the Google Cloud project behind your Firebase project.

Key features

  • Git-based rollouts with framework detection for Next.js 13.5 and later and Angular 18.2 and later.
  • Server-side rendering and static assets served through Cloud CDN.
  • Integrates with Firebase Auth, Firestore and the other Firebase products.

Good to know

App Hosting is built for web frameworks with server-side rendering, so an App Engine backend with task queues and cron jobs still needs a home for that work, usually Cloud Run, Cloud Tasks and Cloud Scheduler set up separately. It requires the pay-as-you-go Blaze plan.

Render: a managed platform outside Google Cloud

Render

Render runs web services, background workers, cron jobs, managed Postgres and Redis-compatible Key Value instances, with git-based deploys and Blueprint files that describe each environment.

Key features

  • Web services, private services, workers and cron jobs as separate service types.
  • Managed Postgres with backups.
  • Preview environments created from Blueprints.

Good to know

Render is close to the App Engine experience for small teams, but it runs on Render's infrastructure, so an app that keeps using Cloud Storage, BigQuery or other Google Cloud services reaches them over the internet with service account keys. Render has no managed message broker, so task queues become a worker reading from a database or Key Value. The Render alternatives guide compares it further.

Railway: fast setup on a project canvas

Railway

Railway deploys services from a repository, an image or a template onto a project canvas, where databases such as Postgres are added as services next to the app, and billing follows resource usage.

Key features

  • Services, databases and volumes are added from the dashboard or the CLI.
  • Services can run on a cron schedule.
  • Private networking between services in a project.

Good to know

Railway runs on its own infrastructure rather than in your Google Cloud project, and it has no managed queue, so App Engine task queues are replaced by a worker service and a database or Redis instance you run there. The Railway alternatives guide covers where it fits.

Fly.io: apps close to users in many regions

Fly.io

Fly.io runs apps as Fly Machines, which are Firecracker microVMs started from a container image, configured in fly.toml and deployed with fly deploy to one or more regions.

Key features

  • Apps can run in many regions with anycast routing to the nearest one.
  • Machines can stop when idle and start on the next request.
  • Managed Postgres is available as a separate product.

Good to know

Fly.io gives more control over where an app runs, and with it more operational work, since volumes, scaling and failover across regions are yours to plan. It runs outside Google Cloud and has no managed queue or scheduler. The Fly.io alternatives guide covers the trade-offs.

How to choose

  • Encore if you want to stay on Google Cloud and replace the bundled services with Cloud SQL, Pub/Sub and cron jobs declared in code, with Cloud SQL and Pub/Sub running locally and all of it provisioned in your own GCP project.
  • Cloud Run if you want Google's recommended path and are fine setting up Cloud Tasks, Cloud Scheduler and Cloud SQL yourself.
  • Firebase App Hosting for Next.js or Angular apps with server-side rendering.
  • Render or Railway if leaving Google Cloud is acceptable in exchange for a managed platform.
  • Fly.io for apps that need to run close to users in several regions.

Existing App Engine apps keep running, so there is time to move piece by piece, starting with whichever bundled service is hardest to keep. The quickstart walks through a first Encore service, and zero to GCP with TypeScript shows a full deploy to a GCP project.

Frequently asked questions

What is the best alternative to Google App Engine?

Encore if you want services, Cloud SQL, Pub/Sub and cron jobs declared in code and provisioned in your own GCP project, with everything except the cron schedule running locally. Cloud Run is Google's own recommendation for new apps if you are happy to wire up the surrounding services yourself. Firebase App Hosting fits Next.js and Angular frontends, and Render, Railway and Fly.io are options if leaving Google Cloud is acceptable.

Is Google App Engine deprecated?

No. App Engine is still supported, but its first-generation runtimes such as Python 2.7, Java 8, Go 1.11 and PHP 5.5 were deprecated on January 31, 2026 and can no longer be deployed, although existing apps keep running. Google recommends Cloud Run for new Google Cloud users.

App Engine vs Cloud Run: what is the difference?

App Engine runs your code on language runtimes with app.yaml configuration and offers legacy bundled services such as Memcache, Task Queues and NDB. Cloud Run runs any container, or builds one from source, with request timeouts configurable up to 60 minutes, and it does not support the legacy bundled services, so those move to Memorystore, Cloud Tasks, Pub/Sub and Cloud NDB.

What replaces App Engine Task Queues and cron.yaml?

Google maps push queues to Cloud Tasks and pull queues to Pub/Sub, and cron.yaml schedules usually move to Cloud Scheduler. With Encore you declare a Topic, a Subscription and a CronJob in your code, and they are provisioned on Pub/Sub and run in your GCP project.

How do I replace an App Engine cron job and push queue with Encore?

Declare a Topic and an api endpoint that publishes to it, then point a new CronJob with a schedule such as "0 2 * * *" at that endpoint, and handle the work in a Subscription with a retryPolicy. Cron jobs run in the cloud, not under encore run, so locally you call the endpoint by hand to test it.

Deploy to your cloud on AWS and Google Cloud
without managing infrastructure

Encore lets developers and agents define application infrastructure directly in code, then automatically provisions it from local development to production in your AWS or GCP account.

~/orders — claude
Claude Code
Claude Code v2.1.180Opus 5.5~/orders