← Back to blog

I built Travel Pal with Replit Agent, and here's the honest verdict

AI Tools9 MIN READ
I built Travel Pal with Replit Agent, and here's the honest verdict cover

Travel Pal started as a stubborn little idea: nobody should have to explore a new city, or eat dinner alone in a hotel, just because they're travelling. Instead of hand-scaffolding the whole thing, I handed it to Replit Agent and watched. Here's where it flew and where I took the keyboard back.

Travel Pal began with one stubborn idea: nobody should have to explore a new city, or eat dinner alone in a hotel restaurant, just because they happen to be travelling. It's a small social network that connects three kinds of people in the same place. Tourists who want a local to show them around, locals who love their city enough to play host, and business travellers trying to fill a free evening in a town they barely know.

I had the concept and a folder of screen ideas, but not the weeks it takes to hand-scaffold a full React Native app with auth, chat, maps and matching. So I did something I'd been skeptical of for a while: I handed the whole thing to Replit Agent and watched. What follows isn't a hype piece or a hit piece. It's just me telling you, honestly, where it flew and where I quietly took the keyboard back.

First, what Replit Agent actually is in 2026

Quick level-set, because the product has moved fast. Replit Agent is the AI that lives inside Replit's browser IDE and builds, tests, and deploys whole apps from plain language (you can even hand it a screenshot and let it rebuild the UI). Agent 3 (late 2025) was the big leap. It could run autonomously for up to ~200 minutes, and crucially it added a self-testing loop: it writes code, spins up a real browser, clicks through the app itself, finds what's broken, and patches it without you asking.

Agent 4, which landed in March 2026, leaned into the 'build anything in one project' idea: an infinite design canvas, parallel agents working on different pieces at once, and the ability to ship mobile apps, web apps, slides, and data viz from the same workspace. Its Power mode routes to Claude Opus 4.7 under the hood. The part that mattered most for Travel Pal, though, was the mobile support. Describe a mobile idea and it scaffolds a React Native + Expo project you can test on your phone in seconds.

Replit Agent start screen asking what to make, with Slides, Website, Mobile, Design, and Animation options
The starting line in my own workspace: one prompt box, and you pick whether you're building a website, a mobile app, slides, or a design.

Where it genuinely impressed me

The first 60 to 70% of Travel Pal appeared almost embarrassingly fast. From one paragraph of intent it scaffolded a clean React Native + Expo project: onboarding, the three member types, role-themed profile screens, a five-tab bottom nav (Home, Explore, Map, Messages, Profile), even sensible colour theming with tourists in blue, locals in green and business travellers in orange. This wasn't lorem-ipsum scaffolding. It was a structure I'd have been happy to write by hand.

Here's roughly the prompt I started with. Note how little I specified:

Build a travel companion app called Travel Pal (React Native + Expo).

- Three member types: Tourist, Local, Businessperson (plus a Couple option)
- City-based discovery: match people in the same city with overlapping trip dates
- Profiles: photo, bio, interests, languages, trip dates, ratings, trip photos
- 5-tab nav: Home, Explore, Map, Messages, Profile
- Role colour theming: tourist blue, local green, businessperson orange
- Real-time 1:1 chat

A few minutes later it had a data model and a first cut of the matching logic that, honestly, was about 90% of where I'd have landed. It even got the core rule right: surface people who are in the same city with overlapping dates, which is the whole point of the app and exactly the kind of detail toy demos skip:

// Generated by the agent, lightly trimmed for the post.
function suggestedMatches(me: Member, pool: Member[]) {
  return pool.filter((other) =>
    other.id !== me.id &&
    other.city === me.city &&            // same place
    datesOverlap(me.trip, other.trip)    // overlapping stay
  );
  // who pairs with whom (tourist/local, couple/couple) I tuned myself.
}

And then the self-test loop did something I didn't expect: it opened Travel Pal in its own browser, clicked through onboarding into a profile, noticed a screen wasn't rendering the role badge on first load, and patched it before I'd even reviewed the diff. Watching an agent catch its own bug is a genuinely strange and slightly humbling thing.

And the parallelism is real, not a loading-spinner gimmick. You can literally watch it write the OpenAPI spec, the database schema, the server files and the mobile frontend in simultaneous batches, with a live phone preview updating on the right as it goes.

Replit Agent building the Travel Pal mobile app, writing server and mobile files in parallel batches with a live iPhone preview on the right
Travel Pal mid-build: the agent writing API routes and mobile files in parallel batches, with the React Native app previewing live on a simulated iPhone.

Where I had to take the keyboard back

The honeymoon ended at the boundary, the moment Travel Pal had to do the things a real social app actually lives or dies on. Sign in with Google and Apple, an age gate, real-time chat presence, a subscription paywall, and the safety layer of report, block and verification. This is exactly where the reviews I'd read turned out to be right: external integrations that need real auth are where the agent stumbles. It kept inventing plausible-looking code against SDK shapes that weren't quite real, and 'fixing' it in circles.

The deeper issue is coupling. A lot of what it generates leans on Replit's own database and auth conveniences. Lovely inside Replit, but the day I exported to GitHub to run it in normal CI, I had a real refactor on my hands to unpick the Replit-specific bits:

// What the agent reached for (Replit-flavored, implicit):
import { db } from "@replit/database";
await db.set(`match:${userId}`, match);

// What Travel Pal actually needed (our stack, explicit + auth):
await api.post("/v1/matches", match, {
  headers: { Authorization: `Bearer ${await getToken()}` },
});

The other thing to go in with eyes open about: cost. The pricing is checkpoint-based and it is hungry. Building Travel Pal out, with the agent re-running its test loop a dozen times to chase the auth and payment flows, chewed through credits faster than I'd have guessed from the marketing. For getting a prototype standing it's fine. For grinding on one stubborn integration, the meter spinning in the background started to make me wince.

So who is this actually for?

After building Travel Pal this way, my take is pretty simple. Replit Agent is genuinely excellent at going from zero to a working, demoable thing: an MVP, a prototype, the front half of a product you need to put in front of someone by Friday. For that, it's borderline magic and I'd reach for it again without hesitating.

But it is not yet the thing you point at a mature, interconnected codebase and trust to land production-grade, well-decoupled code against your own infrastructure. It makes regressions on tangled interdependent logic, and it wants to pull you toward its world rather than fit into yours.

So here's how I actually used it: I let the agent sprint the boring 70%, the scaffolding, the screens, the happy path, the first draft of the data model, then I took the keyboard back for the auth, the matching rules, the safety layer and the architecture that has to live for years. Used that way, it didn't replace me. It just deleted the part of the job I liked least, and on a project like Travel Pal that's a trade I'll take every time.