Skip to content
Replit → AWS

Move your Replit app to AWS without taking it offline

Replit is the fastest way to get from an idea to a running app, and a genuinely bad place to leave one once people depend on it.

ReplitAWS
Typical timeline
2–4 weeks for a typical app
Pricing
Fixed quote after a free scoping call
Rollback
Written, rehearsed, and executed by you before handover
Why this move

What staying on Replit actually costs

Not a list of features you are missing. These are the four things that reliably turn into an incident, an invoice, or a lost deal.

  • 01

    The container is the single point of failure

    On Replit your web server, your background jobs, your database file, and your user uploads all live in one container.

  • 02

    Ephemeral disk quietly eats data

    Files written to the container filesystem - SQLite databases, user uploads, generated PDFs, session stores - do not survive a redeploy.

  • 03

    The bill scales the wrong way

    Builder hosting is priced per app, per always-on instance, and increasingly per agent credit.

  • 04

    Compliance is a hard stop, not a negotiation

    Replit does not sign a BAA, so anything touching protected health information cannot run there regardless of how careful you are.

What clients struggle with

The sentences we hear most, and what we do about each one

These are paraphrases of things founders have actually said on scoping calls. The left column is the experience; the right column is the work.

  • "It works, and I am terrified to touch it"

    There is one environment. It is production. Every change is tested by making it in front of users, and every deploy is an act of faith, because there is no staging copy and no way back.

    How we help

    You get three environments and a pipeline. Changes land in a preview environment with its own data, get promoted to staging, then to production, and every release can be reverted with one command.

  • "Nobody can tell me why it was slow yesterday"

    The logs are a scrollback buffer in a browser tab. They are gone on restart, they are not searchable, and nothing correlates a user complaint with a request.

    How we help

    Structured logs shipped to CloudWatch with retention you choose, request tracing so a single user's slow page maps to a single slow query, error tracking that groups by cause rather than by occurrence, and uptime checks that alert a person. "Why was it slow yesterday" becomes a query rather than a theory.

  • "I do not know what I am paying for, and it keeps going up"

    Credit-based pricing is genuinely hard to forecast. Agent usage, always-on instances, and autoscale all draw from the same pool, and the invoice arrives as a single number with no breakdown by cause.

    How we help

    Before the migration we model your workload at current traffic, ten times current, and a hundred times current, and put the three numbers next to your Replit invoice.

  • "My developer says we need to rewrite it"

    This is the advice founders most often arrive with, and it is usually wrong.

    How we help

    We containerise what you have and change the surroundings, not the source.

  • "I am worried I will lose the data in the move"

    It is the right thing to worry about, and it is the reason migrations get postponed for a year.

    How we help

    The database is copied while the old one is still serving traffic, then kept in sync by logical replication until the moment of cutover, so the window where writes could be lost is seconds rather than hours.

Target architecture

Component by component, before and after

Every line is a decision we will walk you through, and every one of them is written down in the handover documentation.

TodaybecomesAfter the migrationWhy it matters
Replit web server (dev server, single process)Containers on ECS Fargate behind an Application Load BalancerProduction server with real concurrency, health checks, and rolling deploys. Two tasks minimum so a restart is invisible.
SQLite file / Replit DatabaseAmazon RDS or Aurora Serverless v2 for PostgreSQLAutomated backups, point-in-time recovery, and a restore drill we actually perform during handover.
Files written to the container diskS3 with lifecycle rules and signed URLsUploads stop disappearing on redeploy. Private by default, served through CloudFront where it helps.
Secrets in the repl or hard-coded in sourceAWS Secrets Manager, scoped per environmentRotation is possible, staging cannot read production credentials, and nothing sensitive is in git.
Always-on repl for background workA separate worker service, or EventBridge plus a queueBackground jobs stop competing with web requests for the same CPU, and a stuck job no longer takes the site down.
Replit deployment URL and its proxyRoute 53, ACM certificate, CloudFrontYour domain, your certificate, your cache rules. TLS renewal stops being something you think about.
Manual redeploy from the editorGitHub Actions building and deploying on mergePreview environments per pull request, one-command rollback, and a deploy history you can read.
Console scrollbackCloudWatch logs, metrics, and alarmsSearchable, retained, and wired to alerts that reach a human.
Cost

What it costs to run, before and after

The comparison founders ask for first. These are vendor list prices, not a quote - the point is the shape of the curve.

WorkloadTypical builder hostingEquivalent on AWSWhat changes
One small app, low traffic$20 – $40 / mo$25 – $45 / moRoughly a wash. Migrate for control and durability, not to save money at this size.
Three services, steady traffic$75 – $150 / mo$40 – $90 / moShared load balancer and one database instance across services instead of paying per app.
Real product, autoscaling$300 – $900+ / mo$120 – $350 / moCompute priced against use, reserved capacity for the steady baseline, spot for batch work.
Agent-assisted developmentCredits, variableUnchangedKeep building in the builder if you like it. The production copy no longer depends on it.

Vendor list prices for a small production workload at the time of writing, not figures from a specific engagement.

The engagement

Four phases, each with something you can hold

Scope is fixed after phase one. Every phase ends in artefacts you keep, whether or not you continue to the next.

  1. 013–5 days

    Inventory and target design

    We map every service the app touches - including the ones nobody remembers adding - and design the AWS target around your real traffic and budget rather than around a reference architecture.

    You receive

    • Dependency inventory, including third-party services and webhooks
    • Target architecture diagram with named AWS services
    • Cost model at current, 10x, and 100x traffic
    • Fixed-scope statement of work
  2. 025–10 days

    Build the new environment in parallel

    The AWS environment is stood up as infrastructure as code while your Replit app keeps serving users.

    You receive

    • Terraform for every resource - no click-ops
    • Containerised application running on ECS
    • Database, storage, secrets, and networking provisioned
    • CI/CD pipeline with preview environments
  3. 032–4 days

    Rehearse the cutover

    We run the entire migration against production data in a dry run, measure how long each step takes, and write the rollback procedure.

    You receive

    • Timed runbook with a measured cutover window
    • Row-count and checksum comparison across every table
    • Webhook and third-party callback inventory, re-pointed and verified
    • Written rollback procedure with a decision point
  4. 041 day, plus 30 days support

    Cut over and hand off

    Logical replication keeps the two databases in sync until the moment DNS moves, so the write-loss window is seconds.

    You receive

    • Zero-downtime or scheduled-window cutover, agreed in advance
    • Monitoring, alerting, and on-call escalation live
    • Runbook and architecture documentation your team owns
    • 30 days of post-launch support
Risk register

What can go wrong, and what stops it

We would rather write these down than discover them together. Each one is a real failure mode from a real migration, with the control that prevents it.

  • Writes landing on the old database during the switch

    Logical replication runs until DNS moves, and the old instance is set read-only at cutover.

  • Webhooks still pointing at the old URL

    Every inbound callback - payment provider, auth provider, email, cron services - is inventoried in phase 3 and re-pointed with the old endpoint kept alive as a forwarder for two weeks.

  • Sequences and identity columns out of step after the copy

    Logical replication does not copy sequence state. Resetting every sequence is an explicit step in the runbook, verified before traffic moves, because the failure mode is duplicate-key errors on the first write.

  • A cold cache making the new environment look slower

    We warm caches and connection pools before the switch and compare p95 latency against a baseline captured on the old stack, so "it feels slower" becomes a number rather than an impression.

  • The team not knowing how to operate the new stack

    Handover is a phase, not an email. You get a runbook, a walkthrough recording, and a rollback you have executed yourself.

Questions

Before you book the call

  • The plan is designed for zero downtime and we rehearse it before executing.

  • Yes, and several clients do. Replit stays useful as a fast place to prototype a feature; production runs on infrastructure you own.

  • DigitalOcean if you want a small number of moving parts, predictable pricing, and no dedicated ops person.

  • For the dry run, yes - a copy, restored into an isolated account we control and destroy afterwards.

  • That is the normal case. We read it. Part of the deliverable is a written description of what your app actually does, which is often the first time it has existed.

Thinking about moving off Replit?

The scoping call is free, and it ends with a straight answer about whether it is worth doing yet.

Book a Free Call