# Add a custom domain
Source: https://docs.replit.com/build/add-custom-domain
Move Velocity from velocity.replit.app to velocityrentals.com.
By the end, Velocity will live at `velocityrentals.com` instead of `velocity.replit.app`.
You've added sign-in, a database, payments, and a calendar integration to Velocity. Now give it a URL that looks like a real rental brand. This guide moves Velocity to `velocityrentals.com` — swap in whatever domain you own.
## Confirm Velocity works on the Replit URL first
Don't change anything until the public `velocity.replit.app` URL is solid. Open it in a new browser tab and check:
* The fleet page loads.
* A customer can sign in, reserve a car, and see the reservation after refresh.
* Stripe deposit checkout opens and the test card confirms the reservation.
* The Google Calendar event lands on the booking customer's calendar.
If any of those break, fix them before touching DNS. See [Troubleshoot publishing](/build/troubleshooting).
## Connect velocityrentals.com in Replit
Open Velocity's Publishing settings and add `velocityrentals.com` as a custom domain. Replit will show you two DNS records — copy them exactly as shown.
Then open the dashboard at your domain provider (Namecheap, Cloudflare, Google Domains, GoDaddy, etc.) and add those exact records. If you'd like Agent to walk you through the steps for your specific provider:
I'm moving Velocity from velocity.replit.app to velocityrentals.com. My domain is registered at \[name your domain provider].
Walk me through exactly which DNS records to add, in the order I should add them.
Use the values shown in Replit — don't make up record values.
Tell me how to check that the domain is connected before I expect it to work.
DNS changes can take a few minutes to a few hours to apply. Replit will show "Verified" next to `velocityrentals.com` once it sees the records.
## Test Velocity on velocityrentals.com
Once Replit shows the domain as verified:
1. Open `https://velocityrentals.com` in a new browser tab. The green padlock should appear — HTTPS is automatic.
2. Sign in as a customer. Sign-in should still work (Replit Auth handles the new domain automatically).
3. Reserve a car, refresh, and confirm the booking persists.
4. Open Stripe deposit checkout. The page should now show `velocityrentals.com` as the merchant URL.
5. Confirm the booking and check that the Google Calendar event still lands on the customer's calendar.
If sign-in, checkout, or the calendar integration misbehaves only on `velocityrentals.com`, tell Agent the exact symptom:
Velocity works at velocity.replit.app but \[describe what's broken] on velocityrentals.com.
Tell me whether the fix is in DNS, in Replit's settings, or in a third-party provider's settings (like Stripe or Google).
Give me the safest next check.
Velocity now lives at a real rental-brand URL. Share `velocityrentals.com` with customers — they won't see "replit.app" anywhere.
## Improve it next
Fix issues when the public URL doesn't work.
Buy velocityrentals.com through Replit if you haven't already.
## Need further help?
* **`velocityrentals.com` doesn't load right away:** DNS changes can take a few hours. Wait and check again before changing more settings.
* **The Replit URL works but the custom domain doesn't:** double-check the DNS records match what Replit shows exactly — common mistakes are a trailing dot, an extra subdomain, or a stale record.
* **Stripe checkout still says `velocity.replit.app`:** ask Agent to update the Stripe redirect URLs to use `velocityrentals.com`.
* **You don't own a domain yet:** buy one through Replit — see [Domain purchasing](/build/domain-purchasing).
## Related
* [Custom domains](/features/publishing/custom-domains)
* [Domain purchasing](/build/domain-purchasing)
# Add a database
Source: https://docs.replit.com/build/add-database
Make Velocity's cars, availability, and reservations stick around after refresh, restart, and publish.
By the end, every Velocity car, availability slot, and reservation will still be there tomorrow.
You added sign-in to Velocity in [Add login](/build/add-login). But the cars in the fleet and the reservations customers make still disappear when the page refreshes — they only live in the browser. Add a database so everything persists.
## Tell Agent to save the data
For Velocity, use Neon — Replit's managed Postgres database. Neon handles concurrent bookings cleanly, scales with real customer traffic, and Agent provisions it automatically with separate Development and Production environments. There's no Neon dashboard signup and no keys to paste.
Save Velocity's data to a database so cars, availability, and reservations don't disappear on refresh.
Use Neon (Postgres).
Save: each car (make, model, year, daily rate, photo, location), each car's availability calendar, and each reservation (pickup date, return date, car, customer).
Attach every reservation to the signed-in customer so each person only sees their own.
Prevent the same car from being booked on overlapping dates.
Tell me what to test after the change.
Agent will provision a Neon database, move the fleet and reservations from in-memory data into it, and add the overlap check so the same Lamborghini can't get double-booked.
## Test that everything sticks
1. Sign in to Velocity in Preview and reserve a car for next Saturday.
2. Refresh the page. The reservation should still be there in "My bookings."
3. Restart the app from the Agent chat. The fleet and the reservation should both still be there.
4. Try to reserve the same car on the same Saturday with a second account. Velocity should say the car isn't available and offer a different date or car.
5. Sign out and sign back in. Your reservation should still be there.
If a reservation disappears at any step, paste the exact symptom back to Agent:
I reserved a car in Velocity, but the reservation disappears after refresh.
Check whether the reservation is being saved to the database or only stored in the page.
Fix the smallest issue and tell me how to verify it.
You can also ask Agent for a simple admin view to see what's in the database:
Show me a simple admin page in Velocity that lists every car and every reservation in the database, grouped by car.
Only show it to me as the project owner.
## Publish and confirm on the public URL
Agent's Neon setup gives Velocity separate Development and Production environments out of the box. Publish Velocity again from the Agent chat or the Publishing tile, then open the public URL in a new tab. Replit wires the Production Neon credentials into the published deployment automatically — make a reservation on the public URL, refresh, and confirm it's still there.
Velocity now remembers every car, every available date, and every reservation. The next refresh won't lose a single booking.
## Improve it next
Take a refundable deposit when a customer reserves a car.
Send each booking to the customer's calendar.
Turn the saved reservations into utilization charts.
## Need further help?
* **Reservations save in Preview but not on the public URL:** ask Agent to confirm the Production Neon credentials are wired into the published deployment.
* **Data is hard to inspect:** ask Agent to add a simple admin view that lists everything in the database.
* **You want to seed the fleet:** ask Agent to add a one-time script that loads your real cars into the database.
* **You want a zero-setup database for a quick prototype:** use [Replit Database](/features/data-and-storage/sql-database) instead — it's built into every Repl with no separate provisioning.
## Related
* [Production databases](/features/data-and-storage/development-and-production)
* [Replit Database](/features/data-and-storage/sql-database)
# Add integrations
Source: https://docs.replit.com/build/add-integrations
Send every Velocity booking to the customer's Google Calendar.
By the end, every Velocity reservation will land on the customer's Google Calendar with the pickup and return times already filled in.
Integrations let Velocity talk to other tools. You could send each booking to the customer's calendar, email a coordinator when a high-value rental is reserved, or pull weather into the trip-planning page. Pick one for now — Google Calendar gives every customer a clear, verifiable artifact ("the rental is on my calendar"), and you can check it on your own calendar during testing.
## Tell Agent to add the calendar integration
Replit ships a built-in **Google Workspace connector** that covers Google Calendar. Agent signs in to Google with a single click — there are no API projects to create, no OAuth credentials to copy, and no secrets to paste.
After a Velocity customer confirms a reservation, add the rental to their Google Calendar.
Use Replit's Google Workspace connector for Google Calendar — don't ask me for any OAuth credentials.
The event title should be "Velocity rental: \[car make and model]".
The event should span pickup time to return time and include the pickup address and the reservation reference in the description.
Update the calendar event automatically if the customer changes the dates or cancels the reservation.
Add a clear message in Velocity if the calendar add fails, so the reservation still confirms.
Agent will provision the Google Workspace connector, open a single Connect dialog in the workspace, and after you sign in with the Google account that owns the calendar, wire Velocity to add an event every time a reservation is confirmed.
Connectors are a Core, Pro, or Enterprise feature. On the free plan, ask Agent to use a Google OAuth project instead — you'll need to create a Google Cloud project, enable the Calendar API, and paste the resulting credentials into your app's Secrets pane.
## Test it end-to-end
1. Open your own Google Calendar in a new tab.
2. Sign in to Velocity in Preview.
3. Reserve a car for next Saturday-Sunday and confirm the booking.
4. Switch to your Google Calendar tab. A new "Velocity rental: \[car]" event should appear on Saturday-Sunday with the pickup address in the description.
5. Change the reservation in Velocity to Sunday-Monday. The calendar event should move automatically.
6. Cancel the reservation. The calendar event should disappear.
7. As a second test, open **Integrations** in the workspace and disconnect Google Workspace, then try to book. Velocity should still confirm the reservation and show a clear message like "Couldn't add to your calendar — your reservation is confirmed." Reconnect the connector once the test passes.
If the reservation confirms but no event appears, paste the exact error back to Agent:
The integration failed with this error: \[paste the error from Velocity or the Replit logs].
Tell me the likely cause and fix the smallest issue.
Make sure reserving a car still works in Velocity even if Google Calendar is unreachable.
## Publish and try it from the public URL
Once the calendar integration works in Preview:
1. Publish Velocity again from the Agent chat.
2. Open the public URL and book a car from a real customer's perspective.
3. Confirm the event appears on the calendar of the account that booked.
4. Update and cancel a booking from the public URL and confirm the calendar event follows.
Customers now leave Velocity with the rental already on their calendar. The reservation isn't just a confirmation email — it's an event they can't forget.
## Improve it next
Move Velocity to a branded URL customers can share.
Take a refundable deposit at booking.
## Need further help?
* **No event appears in Google Calendar:** open **Integrations** in the workspace, confirm the Google Workspace connector shows Connected, and that the Calendar scope is granted.
* **The connector shows Connected but events still don't land:** ask Agent to log the calendar payload it sends, then fix the field mapping.
* **Date or address fields land in the wrong place on the event:** ask Agent to log the event shape it sends, then fix the field mapping.
* **You want a different integration:** swap "Google Calendar" for any other connector — Slack notifications for the team, HubSpot to log customers as CRM contacts, Airtable to track bookings in a shared base. Agent handles each the same way through the Integrations pane.
## Related
* [Integrations](/features/integrations/overview)
* [Replit AI integrations](/features/integrations/replit-ai-integrations)
# Add login
Source: https://docs.replit.com/build/add-login
Let each Velocity customer sign in to see their own bookings and saved cars.
By the end, each Velocity customer will sign in and see only their own bookings and saved cars.
You saw Velocity on [Welcome to Replit](/build/welcome) — a premium supercar rental app. Right now anyone visiting the public URL can see every reservation. No one books a Lamborghini anonymously. Add sign-in and each customer gets their own bookings and saved cars.
## Tell Agent to add sign-in
For Velocity, use Clerk. Replit's Clerk integration gives your app its own branded sign-in screen, customer accounts that exist inside Velocity (not Replit accounts), and full control over the look and feel — fitting for a premium rental brand. Agent provisions everything automatically, so there is no Clerk dashboard signup and no keys to paste.
Add sign-in to Velocity so each customer has their own bookings and saved cars.
Use Clerk Auth.
Keep the car-browsing pages public so visitors can still explore the fleet without an account.
Require sign-in before someone can reserve a car or save one to their favorites.
After sign-in, show the customer's name in the header and a "My bookings" section with only their reservations.
Add a sign-out button.
Give me a test checklist using two different customers.
Agent will provision a Clerk tenant for Velocity, add the sign-in components, gate the booking flow behind it, attach each reservation to the signed-in customer, and add sign-out. Watch the build in the Agent chat.
## Test it with two customers
One account isn't enough — you need two so you can prove bookings stay separate.
1. Open Velocity in Preview and browse cars without signing in. The fleet should still be visible.
2. Click Reserve on a car. You should land on the Clerk sign-in screen.
3. Sign up with your own email and complete a reservation (e.g. a weekend booking on a 911).
4. Sign out. The "My bookings" section should disappear and the booking flow should ask for sign-in again.
5. Open Preview in an incognito window and sign up with a different email. Reserve a different car.
6. Switch back to your first window, sign in, and confirm you still see your own reservation — not the second customer's.
If both customers see the same reservations, the bookings aren't yet attached to the signed-in person. Tell Agent the exact symptom:
Both customers can see each other's reservations in Velocity.
Attach each booking and each saved car to the signed-in customer so each person only sees their own.
Show me how to verify it with two test accounts.
## Publish and sign in on the public URL
Publish Velocity again from the Agent chat or the Publishing tile, then open the public URL in a new tab and sign in. Clerk is provisioned with separate Development and Production environments — Agent wires the Production credentials into the published app automatically, so sign-in works on the public URL out of the box.
Velocity now has real customers. Each one signs in to a personal garage of bookings — nobody else sees them.
## Improve it next
Make cars, availability, and reservations persist between sessions.
Take a refundable deposit when a customer reserves a car.
## Need further help?
* **The whole app is hidden:** ask Agent to keep car browsing public and protect only the booking and account pages.
* **Customers see each other's reservations:** ask Agent to attach each booking and saved car to the signed-in customer.
* **Sign-in works in Preview but not after publishing:** open the public URL in a new tab and tell Agent the exact error you see. Make sure Agent provisioned the Production Clerk environment.
* **You want a faster zero-config sign-in for prototypes:** Replit Auth uses your customers' Replit accounts with no Clerk tenant to manage — see [Replit Auth](/features/auth-and-identity/authentication).
## Related
* [Clerk Auth](/features/auth-and-identity/clerk-auth)
* [Replit Auth](/features/auth-and-identity/authentication)
# Add payments
Source: https://docs.replit.com/build/add-payments
Take a refundable deposit when a customer reserves a Velocity car, then charge the balance on pickup.
By the end, a Velocity customer will pay a refundable deposit to reserve a car and pay the balance at pickup.
You added sign-in and a database to Velocity. Now turn it into a real booking business: hold each car with a refundable **deposit at booking**, then **charge the balance on pickup**. Replit handles payments through Stripe — you don't write any Stripe code yourself.
## Decide the deposit and balance amounts
Before asking Agent to build, pick the math:
* **Deposit at booking:** a flat amount or a percentage of the total? A flat \$500 is simpler to communicate; 20% scales with the car.
* **Balance at pickup:** the rest of the rental cost, charged when the customer collects the keys.
* **Refund window:** how late can someone cancel and still get their deposit back? 48 hours is a common default.
For this guide, Velocity holds a flat \$500 refundable deposit at booking, charges the balance at pickup, and refunds in full if a customer cancels more than 48 hours out. Adjust to whatever fits your real business.
## Tell Agent to add Stripe checkout
Add deposit-and-balance payments to Velocity using Stripe in test mode.
At booking, take a \$500 refundable deposit and save the customer's payment method on file.
At pickup, charge the remaining balance to the saved payment method.
If the customer cancels more than 48 hours before pickup, refund the deposit in full. Inside 48 hours, keep it.
Save the deposit status and the saved-card reference in the database so a customer can see both on their booking.
Tell me exactly which secret keys I need to paste from Stripe and where to paste them.
Give me a test checklist for the deposit success, deposit cancel, balance charge, and cancellation refund cases.
Agent will set up Stripe under the hood, add the deposit and balance flows, and tell you which secret keys to grab from Stripe. Paste them into your app's settings when Agent asks — your test keys live there, never in the code.
## Test the full flow in test mode
Stripe gives you a special test card so you can run real-feeling payments without spending real money: `4242 4242 4242 4242`, any future expiry, any 3-digit CVC.
1. Sign in to Velocity in Preview and reserve a car for next Saturday-Sunday.
2. At checkout, you should see "Deposit today: $500" and "Balance at pickup: $1,900" (or whatever your math produces).
3. Pay the deposit with the `4242` test card. You should return to a confirmation page showing the deposit paid and a payment method saved for the balance.
4. Open the booking from "My bookings" and use the admin or pickup action to charge the balance. Confirm the balance shows as paid.
5. Make a second reservation, then cancel it more than 48 hours out. The deposit should refund to the test card (you can verify in your Stripe test-mode dashboard).
6. Make a third reservation and cancel inside 48 hours. The deposit should be kept and clearly explained to the customer.
7. Try checkout with Stripe's decline test card (`4000 0000 0000 0002`). The reservation should not be confirmed and the customer should see a clear failure message.
If the deposit succeeds but the reservation doesn't get confirmed, tell Agent:
The Stripe test deposit for Velocity succeeded but the reservation isn't showing as confirmed.
Connect the deposit-success event to the reservation status in the database.
Show me how to verify it with another test booking.
## Switch to live payments when you're ready
Test mode is for you. Live mode is for real customers handing over real money. When Velocity is ready:
1. In Stripe, switch from test mode to live mode and copy the **live** secret keys.
2. In your app's settings, replace the test keys with the live ones.
3. Publish Velocity again from the Agent chat.
4. Open the public URL, book a low-cost test car with your own real card, and confirm both the deposit and the balance flow work end-to-end.
Run that real-card test once before sharing the public URL widely. Velocity now takes real bookings with real money.
## Improve it next
Send each booking to the customer's calendar.
Move Velocity to a branded URL before charging customers.
## Need further help?
* **Deposit succeeds but the reservation isn't confirmed:** ask Agent to connect the Stripe success event to the reservation status in the database.
* **Test mode works, live mode doesn't:** make sure you replaced the test keys with the live ones in your app's settings.
* **You want one upfront payment instead of deposit + balance:** tell Agent to switch Velocity to a single full payment at booking.
* **You want recurring subscription pricing (monthly access to the fleet):** Replit also supports RevenueCat — ask Agent to use it instead of Stripe.
## Related
* [Stripe payments](/features/monetization/stripe-payments)
* [RevenueCat subscriptions](/features/monetization/revenuecat-subscriptions)
# Build an Agent
Source: https://docs.replit.com/build/build-an-agent
Build and publish autonomous AI agents using the Claude Agent SDK and Replit, with a step-by-step Todoist automation example.
The [Claude Agent SDK](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/sdk) is Claude Code as a library. It lets you programmatically create the same agents that power Claude Code, then execute them as code. Turn repetitive tasks into automated workflows and publish them on Replit.
In this tutorial, you build an agent that organizes a Todoist inbox—fetching tasks, applying labels, and sorting them into projects—then publish it to run on a schedule.
## What you'll learn
* How the Claude Agent SDK works and when to use it
* Core primitives: agents, tools, MCP servers, skills, and permissions
* How to build a task automation agent on Replit using [Integrations](/features/integrations/overview)
* How to publish your agent on a schedule with [Scheduled Deployments](/features/publishing/deployment-types#scheduled)
## Prerequisites
* A [Replit](https://replit.com) account (Core or Pro plan recommended for Deployments)
* An [Anthropic API key](https://console.anthropic.com/)
* A [Todoist](https://todoist.com) account (or another service you want to automate)
## How the Claude Agent SDK works
An agent is a loop: you send a prompt, the agent picks tools to execute, observes the results, and repeats until the task is complete.
You provide the prompt. The SDK handles the loop.
But the SDK goes further. It lets you build **multi-agent architectures** where an orchestrator agent delegates tasks to specialized sub-agents, each with their own tools and context windows.
Multi-agent architectures keep each agent focused. Sub-agents get only the tools and context they need, which prevents context bloat and improves performance.
### Core primitives
| Primitive | What it does |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Query loop** | The foundation: prompt, pick tools, execute, observe, repeat |
| **Agents** | Specialized configurations with their own tools and instructions |
| **Tools** | Actions agents can take—run commands, call APIs, edit files |
| **MCP servers** | External processes that expose collections of tools (context-heavy, loaded upfront) |
| **Skills** | Markdown instruction files that teach agents how to do things (context-efficient, loaded on demand) |
| **Permissions** | Granular controls over what each agent can access and execute |
### Skills vs. MCP servers
These are the two main ways to extend your agents:
**Skills** are markdown files with instructions your agent follows. Only a brief description loads until invoked, keeping the context window lean. Use skills for:
* Workflows and conventions ("how to deploy," "code review checklist")
* Reference materials (API patterns, style guides)
* Reusable prompts triggered by name
**MCP servers** are processes that expose tools. All tool descriptions load upfront, making them context-heavy. Use MCP servers for:
* Connecting to external services (Notion, Linear, databases)
* Actions that need API access (create tasks, query data)
* Tools that *do* things, not just instruct
Skills define *how* your agent should work. MCP servers define *what* your agent can access. Both work for coding agents (like Replit Agent) and agents you build with the SDK.
### When to use the SDK vs. the API
| Use case | Choose |
| --------------------------- | ---------------- |
| Automating multi-step tasks | Claude Agent SDK |
| Multi-agent workflows | Claude Agent SDK |
| Simple chat apps | Anthropic API |
| Single-turn tasks | Anthropic API |
## Build a Todoist organizer agent
This walkthrough uses a Replit template that scaffolds a Claude Agent SDK project with the right structure—agents, tools, MCP servers, skills, and permissions directories already in place.
### Step 1: Remix the template
Open the [Claude Agent SDK template](https://replit.com/@matt/Claude-Agent-SDK) on Replit and select **Remix** to create your own copy.
Give it a descriptive name (e.g., "My Todoist Agent") and select **Use Template**.
Once the environment loads, open the file sidebar. Toggle **Show Hidden Files** if needed to see the full structure:
* `.agents/skills/` — Skills that teach Replit Agent how to build Claude Agent SDK apps
* `src/agents/` — Agent definitions
* `src/mcpServers/` — MCP server configurations
* `src/permissions/` — Permission definitions
* `src/skills/` — Skills for your agents (markdown files)
* `src/tools/` — Custom tool definitions
The template includes a skill that teaches Replit Agent how to build Claude Agent SDK apps. This means Agent already understands the framework when you prompt it.
### Step 2: Connect Todoist via Replit Integrations
Before prompting Agent, connect the service your agent needs to interact with.
1. Go to **replit.com/integrations** in your Replit account.
2. Find **Todoist** and connect your account.
3. Authorize Replit to access your Todoist data.
Replit Integrations handle OAuth and authentication for you. Your agent can access the Todoist API without managing tokens directly. This is simpler than configuring a separate MCP server that requires its own OAuth flow.
### Step 3: Prompt Agent to build your agent
Switch Replit Agent into **Plan Mode** for best results—it reviews the plan before building, giving you a chance to verify the approach.
Use the Claude Agent SDK skill. Build an agent that looks at my Todoist inbox and organizes my tasks by applying relevant labels or supporting information.
You should create tools that allow the agent to interact with Todoist using the SDK.
The result should be an agent that, when triggered, loads all tasks and available projects, polishes them, then organizes them appropriately.
Be sure to use the Replit Todoist integration for all authentication. Use custom tools with the Todoist REST API rather than the Todoist MCP server, since the MCP server requires OAuth which doesn't work in this context.
The agent should also fetch a list of projects and assign a relevant project to each item in my inbox, clearing the inbox completely.
The final two paragraphs of this prompt were added after debugging. Being specific about *how* to authenticate (Replit Integrations, not MCP OAuth) and *what* the end state should look like (inbox completely cleared) saves iteration time.
### Step 4: Review the plan and build
When Agent presents its plan, verify it includes:
1. **Custom tools** for the Todoist API (not the Todoist MCP server)
2. **An organizer agent** that fetches tasks, labels, and projects
3. **Proper permissions** scoped to the tools your agent needs
4. **An entry point** that triggers the workflow
Once satisfied, approve the plan, set Agent to **high autonomy**, and let it build.
### Step 5: Add your Anthropic API key
The Claude Agent SDK requires an Anthropic API key to call Claude.
1. Open the **Secrets** pane in the Project Editor.
2. Add a secret named `ANTHROPIC_API_KEY` with your API key value.
If you've saved your Anthropic API key in your [Replit vault in Settings](https://replit.com/settings), it's automatically available across all your projects.
### Step 6: Test and debug
Run the agent and verify it processes your Todoist inbox correctly. Common issues to watch for:
* **"Inbox is empty" when it's not** — The API response format for detecting inbox tasks may need adjustment. Check that the agent filters tasks by the inbox project, not a different property.
* **Tasks get labels but don't move to projects** — Be explicit in your prompt that the agent should fetch available projects and assign each task to one.
* **Authentication errors** — Verify the Todoist integration is connected in Replit Integrations and that your agent code uses it (not a separate OAuth flow).
Debugging is part of building with AI. When something doesn't work, look at the output, identify *what* the agent did differently than expected, and provide a more specific prompt. Each correction teaches you what to include upfront next time.
## Publish your agent
Once your agent works correctly, publish it to run automatically.
In the Project Editor, select the **Publish** tab.
Select **Scheduled Deployment** for time-based automation. Enter your desired schedule (e.g., "Every day at 5pm PST").
Confirm the run command points to your main entry point file and that your `ANTHROPIC_API_KEY` secret is included in the deployment secrets.
Select **Publish**. Your agent is now live and runs on schedule.
For agents that need to respond to events (webhooks, incoming messages), use a [Reserved VM Deployment](/features/publishing/deployment-types#reserved-vm) instead.
## Extend your agent
Once the basics work, you can build more sophisticated agents on Replit:
* **Add persistent memory** — Use [Replit Database](/features/data-and-storage/sql-database) to store state between runs
* **Store files** — Use [App Storage](/features/data-and-storage/object-storage) for file-based data
* **Connect more services** — Add more [Integrations](/features/integrations/overview) (Slack, Linear, GitHub, Notion) for multi-service workflows
* **Use skills** — Add markdown skill files to give your agents specialized knowledge and instructions
## Next steps
* Explore the [Claude Agent SDK documentation](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/sdk) for the full API reference
* Learn about [Agents & Automations](/features/agent/automations) for building chatbots and event-driven workflows on Replit
* Read about [Scheduled Deployments](/features/publishing/deployment-types#scheduled) and [Reserved VM Deployments](/features/publishing/deployment-types#reserved-vm) for deployment options
* Check out the [Claude Agent SDK template](https://replit.com/@matt/Claude-Agent-SDK) to start building
# Connect via MCP
Source: https://docs.replit.com/build/connect-via-mcp
Connect Replit Agent to external tools, data sources, and APIs through the Model Context Protocol (MCP) — sign in to a pre-listed server or add a custom one.
Replit Agent can connect to hundreds of external tools and data sources through the [Model Context Protocol (MCP)](https://modelcontextprotocol.io) — an open standard for AI tool integrations. Sign in to a pre-listed server or add any custom MCP server you trust.
## Connect a pre-listed MCP server
Replit ships with a curated list of MCP servers for popular services like Stripe, Linear, Notion, Sentry, and more. Connecting is a single sign-in click.
Go to [replit.com/integrations](https://replit.com/integrations) and scroll to **MCP Servers for Replit Agent**.
Find the service you want to connect — Stripe, Linear, Notion, Sentry, Atlassian, Miro, PostHog, Amplitude, Mixpanel, Granola, Razorpay, and others.
Click **Sign in** next to the server. You'll be guided through the OAuth flow with that service. Once connected, the server's connection status updates and Agent can use its tools.
For the full catalog, see the [MCP Servers reference](/features/mcp/overview).
## Add a custom MCP server
If the server you want isn't in the pre-listed catalog, add it by URL.
On the MCP Servers settings pane, click **+ Add MCP server**.
Provide a recognizable name — Agent uses it to reference the server in chat logs.
Paste the MCP server's HTTPS endpoint. Open **Advanced settings** to add custom headers (e.g. `X-API-Key`) if the server needs authentication.
Click **Test & save**. Replit attempts to connect and walks you through any OAuth flow the server requires. Once saved, the connection appears under MCP Servers with its status.
Only connect to MCP servers you trust. A connected server can provide tools and data to Agent — review the source before adding any unfamiliar endpoint.
## Use MCP tools in Agent
After a server is connected, Agent automatically fetches its tool list and makes the capabilities available across all your projects. To use a server, just mention it in chat:
> Use the Notion MCP server to find the most recent meeting notes.
Agent picks the right tools from the server based on your request. If a tool requires confirmation, you'll see a prompt before it runs.
## Share an install link
Install links let anyone add your MCP server to Replit with a single click — useful for documentation, READMEs, or anywhere you want to promote your integration.
Use the form below to generate an install link and a clickable badge for your server:
For the link format and badge customization options, see the [Install Links reference](/features/mcp/install-links).
## Next steps
Understand what MCP is, how it works, and the capabilities it unlocks for AI.
Browse the curated list of MCP servers with one-click install badges.
Connect Agent to Figma designs via MCP.
# Create a team workspace
Source: https://docs.replit.com/build/create-a-team-workspace
Create a Team Workspace on Replit, invite members during setup, and manage who has access to your team's projects.
By the end, you'll have a team workspace with members who can collaborate across every project inside it.
A **team workspace** lets a regular group — a startup team, a class, or a client project — work across multiple projects together. Members get access to all projects in the workspace, so you don't invite them one by one. The admin manages billing and settings centrally.
If you're not sure whether a team workspace is the right fit, see [Personal & Team Workspaces](/features/collaboration/team-workspaces) for the difference between the two, when to use each, and plan availability.
## Create a team workspace
In the home page, click your workspace name in the top-left corner.
Select **Create workspace** and choose a name for your team workspace.
Enter one or more email addresses (comma-separated) in the invite field. Invitees receive an invitation and gain access to all projects in the workspace once they accept.
## Manage members
If you didn't invite members during setup, or need to add more later, go to **Settings** in your team workspace and invite members by email or Replit username.
From the **Settings** page you can also:
* **Remove members** to revoke their access to all workspace projects.
* **Transfer apps** from personal workspaces into the team workspace — see [Transfer app to teams](/teams/identity-and-access-management/transfer-app-to-teams).
For advanced identity management, role-based access, and group permissions, see [Pro and Enterprise](/category/teams).
## Next steps
Invite people to a specific project and build together with Agent.
Understand the difference, choose the right type, and review plan availability.
Enterprise features: SSO/SAML, groups, permissions, and audit logs.
# Create a dashboard from data
Source: https://docs.replit.com/build/dashboard
Turn a public CSV, spreadsheet, database, warehouse connector, or API into a dashboard that answers a clear question.
A dashboard helps someone make a decision from data.
You will build a **Global Progress Explorer** from a public CSV: country-level data with year, population, continent, life expectancy, and GDP per capita.
## What you'll achieve
By the end of this guide, you will have:
* A Global Progress Explorer dashboard built from a realistic public CSV.
* Summary metrics for countries, population, life expectancy, and GDP per capita.
* Charts and filters that show how progress changed over time.
* A way to verify that the dashboard numbers match the source data.
* A shareable or publishable dashboard for stakeholders.
## What you'll learn
You will learn how to:
* Start with a decision, not a chart type.
* Ask Agent to build a dashboard from a public CSV.
* Check calculations against the underlying data.
* Add filters and an insights summary.
* Decide when a dashboard needs login, refresh, exports, or connected data.
## Who this is for
Use this guide if you have customer, sales, product, operations, research, or public data and need a dashboard people can understand.
This is useful for analysts, operators, founders, PMs, educators, and teams who need to turn raw data into decisions.
## Define the decision
Before building, write down the decision the dashboard should support.
For the global progress dataset:
* **Question**: Where did life expectancy and GDP per capita improve over time?
* **Audience**: education, research, strategy, or nonprofit teams.
* **Useful metrics**: country count, year range, latest median life expectancy, total population represented, and median GDP per capita.
* **Useful filters**: continent, country, and year range.
If you cannot state the decision, the dashboard will become a collection of charts instead of a useful tool.
## Build from a public CSV
Use a positive public dataset with meaningful fields and enough rows to explore.
Dataset: [Gapminder global progress CSV](https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv)
Ask Agent to build the dashboard from that CSV:
Build a Global Progress Explorer dashboard from this public CSV:
[https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv](https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv)
The dashboard should help an education or research team understand how life expectancy, population, and GDP per capita changed across countries and continents from 1952 to 2007.
Include summary cards for total countries, year range, latest median life expectancy, total population represented, and latest median GDP per capita.
Add a line chart for life expectancy over time by continent.
Add a bubble chart where GDP per capita is on the x-axis, life expectancy is on the y-axis, bubble size represents population, and color represents continent.
Add a bar chart showing the countries with the largest life expectancy gains between their first and latest year in the dataset.
Add filters for continent, country, and year range.
Include a short insights summary that explains the biggest patterns and which regions or countries improved most.
Show how key metrics are calculated so I can verify the numbers.
Make the dashboard polished, responsive, and easy to read on desktop and mobile.
## Check your work
Open Preview and verify the dashboard before sharing it.
Check that:
* Total countries matches the number of unique countries in the CSV.
* The year range shows 1952 to 2007.
* Latest median life expectancy uses the latest year in the dataset.
* Population totals use the filtered countries and years.
* Filters update the summary cards and charts.
* The bubble chart uses GDP per capita, life expectancy, population, and continent correctly.
* The insights summary matches what the charts show.
* The dashboard works on a phone-sized screen.
If a number looks different than expected, ask Agent to show the calculation.
The latest median life expectancy looks different than I expected.
Show me how you calculated it from the CSV.
Check that you used only rows from the latest year in the filtered data.
Update the calculation if needed and tell me how to verify it.
## Add filters and exports
After the first dashboard works, ask Agent for the interaction that helps the audience explore the data.
Add an exploration panel for the global progress dashboard.
Let me filter by continent, country, and year range.
Add a button to export the filtered chart data to CSV.
Keep the summary cards and insights summary in sync with the filters.
Dashboards can also support PDF export, chart CSV export, refresh, auto-refresh, light/dark mode, and analysis summaries. See [Data Visualization](/features/artifact-types/data-apps) for the concept overview.
## Use connected data when needed
Use a public CSV when you are learning or prototyping. Use a connected data source when the dashboard should stay up to date.
You can connect dashboards to:
* A Replit app database.
* A warehouse connector like BigQuery, Databricks, or Snowflake.
* Analytics tools like Segment, Amplitude, or Hex.
* External APIs.
For warehouse data, ask Agent to explain the fields and queries it uses.
Create a growth dashboard using our warehouse connector.
Identify the customer, product usage, billing, and retention fields needed.
Build charts for active customers over time, account growth by segment, and expansion revenue by plan.
Explain the fields and calculations you used so I can verify the dashboard.
For setup and availability details, see [Data Connectors](/connectors/warehouses/overview).
## Share the dashboard
Share the dashboard when the numbers are trustworthy.
If the dashboard uses private customer or business data, add access control before sharing widely. For public or sample data, you can publish and share the URL directly.
Ask reviewers:
> Review the global progress dashboard and tell me which region or country story you would highlight first, and why.
## You're done when
* The dashboard loads the public CSV.
* Summary cards and charts answer the progress question.
* You verified at least one key metric manually.
* Filters update the dashboard correctly.
* The insights summary matches the data.
* You know whether the dashboard should stay public, require login, or connect to live data.
## Next steps
Put the dashboard behind authentication so only the right people see it.
Save data so it persists and refreshes between sessions.
Pull in another data source or push insights to existing tools.
Connect a live warehouse so the dashboard reflects up-to-date data.
Ask Agent to create a stakeholder presentation from the dashboard's findings.
## Need further help?
* **Numbers look different than expected:** ask Agent to show the query, formula, or transformation.
* **The CSV is unavailable:** check the URL, network access, and CSV headers.
* **Filters do not update charts:** ask Agent to connect filters to both summary cards and chart data.
* **The dashboard is slow:** ask Agent to summarize data, add filters, or reduce rows loaded on startup.
* **The dashboard uses private data:** add login before sharing broadly.
## Related
* [Data Visualization](/features/artifact-types/data-apps)
* [Data Connectors](/connectors/warehouses/overview)
* [Add login](/build/add-login)
* [Add integrations](/build/add-integrations)
# Purchase a domain
Source: https://docs.replit.com/build/domain-purchasing
Learn how to purchase a domain and connect it to your published app directly from Replit.
Turn your apps into live, professional websites with custom domain names.
Domain Purchasing lets you search, buy, and connect domains for your Replit published apps—all from within the platform. Go from published app to professional web presence in minutes.
That means you can buy a site, like `my-app.com`, and have it automatically point to your app.
We're eager to hear your feedback on how we can improve Domain Purchasing!
## Features
Domain Purchasing streamlines the process of giving your apps professional web addresses. Instead of juggling multiple services, you can complete your entire web presence setup within Replit.
Key capabilities include:
* **Domain search and availability**: Check domain availability across popular extensions like `.com`, `.ai`, and more
* **One-click purchasing**: Buy domains directly through Replit using your account's default payment method
* **Automatic configuration**: Your domain instantly points to your Replit app without manual DNS setup
* **WHOIS privacy protection**: Your personal information stays private in public domain records—included by default with every domain purchase
* **Custom DNS records**: Add custom A, TXT, and MX records to configure email providers and other services
* **Instant publishing**: Your app becomes accessible at your custom domain immediately after purchase
* **Automatic renewals**: Domains renew automatically so your apps stay published without interruption
## Usage
### Purchasing domains
1. Publish your app and navigate to the **Publishing** tab
2. Select the **Domains** tab
3. Choose **Buy a domain** to start the search process
4. Enter your desired domain name in the search bar
5. Review available options across different extensions
6. Select your preferred domain and complete the purchase
When you purchase a domain, it automatically configures to point to your Replit app. Your app becomes accessible at the custom domain instantly, with no additional setup required.
You will be billed for the domain purchase through your Replit account, deducted from your account balance then applied to your usage.
### Managing purchased domains
Your domains integrate seamlessly with your published apps:
* **Automatic renewals**: Domains renew automatically to keep your apps published
* **Integrated billing**: Domain costs appear on your Replit billing alongside other services
* **Transfer support**: Move domains between Replit accounts or to external registrars when needed
### Custom DNS records
For domains purchased through Replit, you can add custom DNS records to configure additional services like email providers. The following DNS record types are supported:
* **A records**: Point your domain or subdomain to a specific IP address
* **TXT records**: Add text-based verification records for services like email authentication (SPF, DKIM, DMARC)
* **MX records**: MX (Mail Exchange) records tell email servers where to deliver email for your domain. Setting up MX records allows you to use your custom domain for email addresses like `hello@yourdomain.com`.
To manage DNS records for your purchased domain:
1. Navigate to the **Domains** tab in your Publishing
2. Find the domain you want to configure
3. Select the **Edit** icon
4. Choose **Add DNS Record**
5. Enter the record type, name, value, and TTL as required by your service provider
This short video walks through finding the management page for your domain DNS records:
DNS changes can take up to 48 hours to propagate globally. Your app will
continue to work normally during this propagation period.
### Supported deployment types
Domain Purchasing works with these Deployment types:
* **[Autoscale Deployments](/features/publishing/deployment-types#autoscale)**
* **[Reserved VM Deployments](/features/publishing/deployment-types#reserved-vm)**
* **[Static Deployments](/features/publishing/deployment-types#static)**
Currently, you can purchase domains for your personal account published apps. Domain purchasing for Replit Pro is coming soon.
## FAQ
Domain purchasing includes two costs:
* **Registration fee**: The initial cost for one year of domain ownership (two years for `.ai` domains)
* **Renewal price**: Automatically charged after the initial registration period
Replit doesn't charge additional fees for domain purchases. Domain registration fees are non-refundable.
Replit automatically renews your domain to keep your app accessible. To stop
automatic renewal, open the **Domains** tab in the Publishing tool, select your
domain, and turn off the **Auto renewal** toggle. The same view shows your
domain's renewal date and renewal price.
You can transfer your domain to another registrar by contacting Replit
Support. ICANN rules require a 60-day waiting period after purchase before
domains can be transferred to external registrars.
Yes, contact Replit Support to transfer domains between Replit accounts. This
process doesn't require the 60-day waiting period.
Domain Purchasing for Replit Pro and Enterprise plans is coming after the
initial beta period.
Yes! You can add custom DNS records to domains purchased through Replit. Currently supported record types include:
* **A records**: Point your domain or subdomain to specific IP addresses
* **TXT records**: Add text-based verification records for email authentication and other services
* **MX records**: Configure mail servers to handle email for your domain
Navigate to the Domains tab in your Publishing to configure these records. For detailed instructions on setting up MX records for email, see the [Custom DNS records](#custom-dns-records) section above.
We support all common top-level domains (TLDs). We cannot support TLDs with
special geographic or other restrictions.
When you register a domain, your contact information (name, address, phone number, and email) is normally published in a public database called WHOIS that anyone can search. WHOIS privacy protection replaces your personal details with generic information from the registrar, keeping your information private while still meeting legal requirements.
All domains purchased through Replit include WHOIS privacy protection by default at no extra cost. This means your personal information stays hidden from spammers, marketers, and anyone else who might search for domain owner details.
To connect an existing domain to your Replit app, see our [Custom Domains](/features/publishing/custom-domains) documentation.
# Build a Shopify storefront
Source: https://docs.replit.com/build/ecommerce-store
Learn how to design and launch a custom Shopify storefront with Replit.
You can design and launch a custom Shopify storefront just by describing the store you want. Agent provisions a Shopify store, builds a front end against it, and adds your products all from one conversation. When you're ready to sell, you make a single trip to Shopify to claim the store and turn on payments.
In this guide you'll build **Ember & Oak**, a small-batch candle store, from a prompt to a published storefront.
## What you'll achieve
By the end of this guide, you will have:
* A custom-designed candle storefront backed by a real Shopify store.
* Products and prices created in Shopify and rendered on the storefront.
* A working cart that sends buyers to Shopify checkout.
* A clear path to go live: claim the store, turn on payments, and launch.
## What you'll learn
You will learn how to:
* Describe a store so Agent recommends Shopify and provisions it for you.
* Connect Shopify without handling any API keys.
* Add and publish products by chatting with Agent.
* Refine the design and the buyer flow.
* Take the store from development to a live, sellable storefront.
## Connect Shopify
Shopify is available to all builders on all apps, and you connect it right in the conversation. Start by describing the store you want to build.
Copy the prompt and paste it into the prompt box on [replit.com](https://replit.com), or click **Build on Replit** to open Replit with the prompt prefilled.
Agent recognizes that you're selling a physical good and recommends Shopify as the backend for your storefront.
Agent asks to create a Shopify store for your app. Approve it, and Agent provisions a Replit-owned development store and connects it. No additional configuration needed.
Your email is shared with Shopify so you can claim the store later.
The store starts password-protected and can't take real payments until you go live, so you can build freely without risk.
Each Shopify store is scoped to a single app. If you build a second store
later, Agent provisions a fresh Shopify store for that app. For the full
connector details, see [Connect Shopify](/features/integrations/shopify).
## Build the storefront
With Shopify connected, Agent designs and builds the storefront against your store.
Agent generates the storefront from your prompt — the hero, product grid, cart, and supporting sections. When it finishes, the right pane switches to **Preview** so you can scroll the page and click through the design.
A new store starts with an empty catalog. Ask Agent to add a product, and it creates the product in Shopify and publishes it to the storefront.
Add a lavender soy candle for \$18 with a short cozy description, then publish it to the storefront.
The product is created in your Shopify store and appears in the storefront product grid.
Keep adding products by describing them. Agent creates each one in Shopify with its price, description, and image.
Add three more candles: Cedar & Sage at $20, Vanilla Bean at $16, and Sea Salt at \$22. Give each a short description and publish them.
**Leveling up:** ask Agent to group products into collections ("Create a
Holiday collection with my three best-selling candles"), add product variants
like size or scent, or track inventory so the storefront shows what's in
stock. Shopify stays the system of record for all of it.
## Iterate on the design and checkout
Every part of the storefront is editable through conversation. Refine the look, then check the buyer flow end to end.
Describe what you want to change, and Agent updates the storefront.
Make the hero section feel more editorial — larger headline, more whitespace, and a softer amber accent on the buttons.
In Preview, add a candle to the cart and start checkout. The cart sends buyers to Shopify's hosted checkout. During development your store is password-protected, so the checkout preview may show a password page — that's expected and doesn't mean anything is broken.
**Leveling up:** ask Agent to add a product detail page, a cart drawer,
search, or a featured-products section. Because the storefront is a real
Replit project, you can extend it with anything you can describe — a blog, a
wishlist, or custom landing pages — while Shopify handles checkout and orders.
## Ship it
Going live happens on Shopify. Ask Agent to start the Go Live flow, then complete the merchant-owned steps.
Claiming happens on Shopify and is the one step that takes place outside
Replit. Because your email was shared with Shopify when the store was
created, you can claim it from the link Replit provides or the email Shopify
sends.
Shopify emails you a **Store owner invitation** that walks you through the
steps. Open it and select **Get started**.
Log in with your existing Shopify account, or create one to accept the
invitation.
Select **Claim store** to authorize the Replit app on your store and start
your free trial. You then land in your Shopify admin as the primary owner.
Pick a Shopify plan and activate Shopify Payments or another provider.
Shopify collects the identity and banking details needed to pay you — none
of that happens in Replit.
Set your shipping rates and review taxes in Shopify, and optionally connect
a custom domain.
Remove the storefront password in Shopify to open the store to buyers. Back
in Replit, click **Publish** to deploy your storefront to its public URL.
Payments, identity verification, taxes, shipping, and fraud checks stay on
Shopify. For the full go-live checklist and connector details, see [Connect
Shopify](/features/integrations/shopify#go-live-on-shopify).
## Next steps
The connector reference: how the Shopify connection works and the full
go-live checklist.
Give your store a branded URL before you launch.
Help buyers find your store in search.
Build a focused campaign page to drive traffic to your store.
## Related
* [Connect Shopify](/features/integrations/shopify)
* [Add a custom domain](/build/add-custom-domain)
* [Agent integrations](/features/integrations/overview)
# Enable Feedback Widget
Source: https://docs.replit.com/build/enable-feedback
Learn how to collect feedback from visitors on your published app.
Feedback collection can be activated on your published apps to gather insights directly from visitors and send directly to Agent. When feedback is enabled, visitors can submit feedback, including screenshots and files, which you can manage through your Inbox.
## Enabling feedback
You can enable feedback on web apps only. You won't be able to enable this for other kinds of apps, like automations or mobile apps.
When publishing a new app, toggle on the **Enable Feedback** setting in the publish dialog. If your app has already been published, you can enable feedback by republishing:
1. Open the Publishing tool
2. Select **Advanced Settings**
3. Toggle on **Enable Feedback**
4. Republish your app
If you don't see the feedback widget in your published app, try refreshing the page
## Submitting feedback
When feedback is enabled on a published app, visitors can submit feedback directly from the app. Users can:
* Sign in to leave feedback
* Leave text feedback describing their experience or suggestions
* Select elements to illustrate issues or features
* Upload files to provide additional context
## Managing feedback in your Inbox
All feedback submitted by visitors appears in your Inbox, accessible from inside the Project Editor. From the Inbox, you can:
* **Add to Chat**: Send feedback to your chat with Agent, to add context before submitting
* **Send to Agent**: Immediately send feedback to Agent and start work right away
* **Resolve**: Mark feedback as resolved once it has been addressed
* **Delete**: Remove feedback that's no longer needed
You can also use filters to organize and find specific feedback entries.
## Republishing with updated feedback settings
After your app is published, you can enable or disable the feedback widget at any time by republishing with updated settings:
1. Open the **Overview** tab on the Publishing tool
2. Select **Advanced Settings**
3. Toggle **Enable Feedback** on or off
4. Republish your app to apply the changes
Any changes to the feedback setting take effect once the app is republished.
## Next steps
To learn more about publishing your apps, see the following resources:
* [Publishing overview](/learn/projects-and-artifacts/replit-deployments): Learn about different deployment types
* [Published App Monitoring](/features/publishing/monitoring-a-deployment): View logs and monitor your published app
# Import from a provider
Source: https://docs.replit.com/build/import-from-providers
Bring projects, code, and designs from another tool into Replit and continue building with Agent.
Import lets you bring existing code or designs into Replit Apps and continue building with Agent.
## Supported sources
| Source | What you provide | Best for |
| --------------------- | ---------------------------------------------------- | -------------------------------------------------- |
| GitHub | Repository URL or repository picker | Public and private repository imports |
| Bitbucket | Repository URL or repository picker | Bitbucket-hosted repository imports |
| Vercel | GitHub repository behind your Vercel project | Migrating Vercel apps |
| Figma | Frame URL | Turning designs into React apps |
| Claude | Design sent from Claude | Turning a Claude design into an interactive app |
| Bolt | GitHub repository exported from Bolt | Migrating Bolt projects |
| Lovable | GitHub repository exported from Lovable | Migrating Lovable projects |
| Base44 | GitHub repository exported from Base44 | Migrating Base44 projects |
| ZIP | `.zip` file upload | Importing local project archives |
| Spreadsheet | `.xlsx`, `.csv` file, or Google Sheets URL | Building an app from spreadsheet data |
| Previous Agent export | GitHub repository exported from a previous Agent App | Re-importing a previous Agent App |
| Empty | Nothing | Power users who want a blank project without Agent |
Replit validates compatibility before import starts.
For Figma designs, see [Import Figma designs into Replit Design](/design/import-figma-designs-into-replit-design).
For designs sent from Claude, see [Import Claude designs into Replit Design](/design/import-claude-designs-into-replit-design).
## Quick imports
Pick a source for step-by-step instructions:
⏰ *Estimated time: four minutes*
Import a Lovable project into Replit by exporting it to GitHub, then importing that repository.
**Before you start**
* A Lovable project you can export
* A GitHub account connected to Lovable
* A Replit account
**Steps**
1. Export your Lovable project to GitHub.
2. Open [replit.com/import](https://replit.com/import).
3. Select **Lovable**.
4. Connect your GitHub account.
5. Select the exported Lovable repository.
6. Select **Import**.
## What gets imported
Replit imports the following from your project:
* **Code**: Application logic and source files
* **Design and styles**: UI components and styling rules
* **Assets**: Images, icons, and static files
* **Backend logic**: Server-side functionality, if present
* **Database schema**: Table structure, if present
## What is not imported
* **Supabase data**: Existing database records are not migrated
* **Secrets**: Environment variables and API keys must be added separately
Use Agent to rebuild missing functionality, add secrets, and recreate database data.
## Configure and run your app
During import, . If your app needs changes, use these Project Editor tools:
* **[Agent](/features/agent/overview)**: Refine features, debug issues, and make code changes
* **[Secrets](/core-concepts/project-editor/app-setup/secrets)**: Add API keys and environment variables
* **[Workflows](/features/workspace-tools/workflows)**: Set the **Run** command for your app
## Continue your journey
Now that you've imported your , explore these next steps:
* [Replit Agent](/features/agent/overview): Get help with feature work, debugging, and refactoring
* [Replit Deployments](/learn/projects-and-artifacts/replit-deployments): Publish your app
* [Database setup](/features/data-and-storage/sql-database): Configure your database with Agent help
* [Collaborate](/build/invite-teammates): Build with teammates
⏰ *Estimated time: four minutes*
Import a Base44 project into Replit by exporting it to GitHub, then importing that repository.
**Before you start**
* A Base44 project you can export
* A GitHub account connected to Base44
* A Replit account
**Steps**
1. Export your Base44 project to GitHub.
2. Open [replit.com/import](https://replit.com/import).
3. Select **Base44**.
4. Connect your GitHub account.
5. Select the exported Base44 repository.
6. Select **Import**.
## What gets imported
Replit imports the following from your project:
* **Code**: Application logic and source files
* **Design and styles**: UI components and styling rules
* **Assets**: Images, icons, and static files
* **Backend logic**: Server-side functionality, if present
* **Database schema**: Table structure, if present
## What is not imported
* **Supabase data**: Existing database records are not migrated
* **Secrets**: Environment variables and API keys must be added separately
Use Agent to rebuild missing functionality, add secrets, and recreate database data.
## Configure and run your app
During import, . If your app needs changes, use these Project Editor tools:
* **[Agent](/features/agent/overview)**: Refine features, debug issues, and make code changes
* **[Secrets](/core-concepts/project-editor/app-setup/secrets)**: Add API keys and environment variables
* **[Workflows](/features/workspace-tools/workflows)**: Set the **Run** command for your app
## Continue your journey
Now that you've imported your , explore these next steps:
* [Replit Agent](/features/agent/overview): Get help with feature work, debugging, and refactoring
* [Replit Deployments](/learn/projects-and-artifacts/replit-deployments): Publish your app
* [Database setup](/features/data-and-storage/sql-database): Configure your database with Agent help
* [Collaborate](/build/invite-teammates): Build with teammates
⏰ *Estimated time: three minutes*
Import a Vercel project into Replit by linking the GitHub repository behind the project.
**Before you start**
* A Vercel project connected to GitHub
* Access to the backing GitHub repository
* A Replit account
**Steps**
1. Open [replit.com/import](https://replit.com/import).
2. Select **Vercel**.
3. Connect your GitHub account.
4. Select the repository for your Vercel project.
5. Add any requested secrets and environment variables.
6. Select **Import**.
**What gets imported**
* Project files and directory structure
* Dependency and framework configuration
* Run and build defaults for Replit
**What is not imported**
* Existing environment variable values
* Custom domains
* Vercel-specific edge or middleware behavior
* External analytics or monitoring configuration
## Configure and run your app
During import, . If your app needs changes, use these Project Editor tools:
* **[Agent](/features/agent/overview)**: Refine features, debug issues, and make code changes
* **[Secrets](/core-concepts/project-editor/app-setup/secrets)**: Add API keys and environment variables
* **[Workflows](/features/workspace-tools/workflows)**: Set the **Run** command for your app
## Continue your journey
Now that you've imported your , explore these next steps:
* [Replit Agent](/features/agent/overview): Get help with feature work, debugging, and refactoring
* [Replit Deployments](/learn/projects-and-artifacts/replit-deployments): Publish your app
* [Collaborate](/build/invite-teammates): Build with teammates
⏰ *Estimated time: four minutes*
Agent currently supports Bolt imports for Vite + React apps.
Import a Bolt project into Replit by exporting it to GitHub, then importing that repository.
**Before you start**
* A Bolt project you can export
* A GitHub account connected to Bolt
* A Replit account
**Steps**
1. Export your Bolt project to GitHub.
2. Open [replit.com/import](https://replit.com/import).
3. Select **Bolt**.
4. Connect your GitHub account.
5. Select the exported Bolt repository.
6. Select **Import**.
## What gets imported
Replit imports the following from your project:
* **Code**: Application logic and source files
* **Design and styles**: UI components and styling rules
* **Assets**: Images, icons, and static files
* **Backend logic**: Server-side functionality, if present
* **Database schema**: Table structure, if present
## What is not imported
* **Supabase data**: Existing database records are not migrated
* **Secrets**: Environment variables and API keys must be added separately
Use Agent to rebuild missing functionality, add secrets, and recreate database data.
## Configure and run your app
During import, . If your app needs changes, use these Project Editor tools:
* **[Agent](/features/agent/overview)**: Refine features, debug issues, and make code changes
* **[Secrets](/core-concepts/project-editor/app-setup/secrets)**: Add API keys and environment variables
* **[Workflows](/features/workspace-tools/workflows)**: Set the **Run** command for your app
## Continue your journey
Now that you've imported your , explore these next steps:
* [Replit Agent](/features/agent/overview): Get help with feature work, debugging, and refactoring
* [Replit Deployments](/learn/projects-and-artifacts/replit-deployments): Publish your app
* [Database setup](/features/data-and-storage/sql-database): Configure your database with Agent help
* [Collaborate](/build/invite-teammates): Build with teammates
⏰ *Estimated time: two minutes*
Import a GitHub repository into Replit to run, test, and publish faster.
**Before you start**
* A GitHub repository URL
* Access to the repository (public or private)
* A Replit account
**Option one: rapid import**
Rapid import works for public repositories.
1. Copy the repository path after `github.com/`.
2. Open `https://replit.com/github.com//`.
3. Press Enter to start import.
*Example*
* GitHub URL: `https://github.com/exampleUser/my-app`
* Replit import URL: `https://replit.com/github.com/exampleUser/my-app`
**Option two: guided import**
Guided import supports public and private repositories.
1. Open [replit.com/import](https://replit.com/import).
2. Select **GitHub**.
3. Connect your GitHub account.
4. Choose a repository.
5. Select **Import**.
**What gets imported**
* Repository files and folders
* Dependency files
* Common run and build configuration
**What is not imported**
* Existing secret values and environment variable values
* Platform-specific services that do not run in Replit by default
## Configure and run your app
During import, . If your app needs changes, use these Project Editor tools:
* **[Agent](/features/agent/overview)**: Refine features, debug issues, and make code changes
* **[Secrets](/core-concepts/project-editor/app-setup/secrets)**: Add API keys and environment variables
* **[Workflows](/features/workspace-tools/workflows)**: Set the **Run** command for your app
## Continue your journey
Now that you've imported your , explore these next steps:
* [Replit Agent](/features/agent/overview): Get help with feature work, debugging, and refactoring
* [Replit Deployments](/learn/projects-and-artifacts/replit-deployments): Publish your app
* [Collaborate](/build/invite-teammates): Build with teammates
**Troubleshooting GitHub connection issues**
If you see `Failed to get repository, please re-authenticate with GitHub`, or the repository dropdown shows `No repositories found`, the GitHub import flow uses a separate connection from the one in your **Account → Connected Services** page. Reconnecting under Connected Services alone will not fix the import flow.
Open the **Git Providers** section in your Replit account settings, disconnect GitHub, and reconnect from the same screen. After this, your personal repositories should appear in the import dropdown.
If the repository is owned by a GitHub organization, open [https://github.com/settings/applications](https://github.com/settings/applications), find the Replit OAuth app, and grant it access to the organization under the third-party application access settings. Organization admins may need to perform this step if you are not an org owner.
Open [replit.com/import](https://replit.com/import) and try the import again, both from the repository dropdown and by pasting the repository URL.
⏰ *Estimated time: three minutes*
Import a local project by uploading a `.zip` file.
**Before you start**
* A `.zip` file that contains your project
* A clear project root folder in the archive
* A Replit account
**Steps**
1. Open [replit.com/import](https://replit.com/import).
2. Select **ZIP**.
3. Upload your `.zip` file.
4. Add any requested secrets and environment variables.
5. Select **Import**.
**What gets imported**
* Project files and directory structure
* Dependency files
* Run and build defaults for Replit
**What is not imported**
* Existing environment variable values
* Custom domains
* Platform-specific services that need manual setup
* Existing database data
* Existing third-party connector configuration
## Configure and run your app
During import, . If your app needs changes, use these Project Editor tools:
* **[Agent](/features/agent/overview)**: Refine features, debug issues, and make code changes
* **[Secrets](/core-concepts/project-editor/app-setup/secrets)**: Add API keys and environment variables
* **[Workflows](/features/workspace-tools/workflows)**: Set the **Run** command for your app
## Continue your journey
Now that you've imported your , explore these next steps:
* [Replit Agent](/features/agent/overview): Get help with feature work, debugging, and refactoring
* [Replit Deployments](/learn/projects-and-artifacts/replit-deployments): Publish your app
* [Collaborate](/build/invite-teammates): Build with teammates
## Other sources
### Bitbucket
* Paste a Bitbucket repository URL, or connect your Bitbucket account to search your repositories.
* Agent support during the import may be limited compared to GitHub-hosted projects.
### Spreadsheet
* Upload an Excel (`.xlsx`) or CSV file, or paste a public Google Sheets URL.
* Agent reads your spreadsheet structure and builds a full-stack app with a database seeded from your data.
* Includes a UI to view, search, and manage your records.
### Previous Agent export
* Re-import a previously exported Agent App from a GitHub repository.
* Replit preserves Agent-specific structure (code, database schema, backend functionality).
* Database values and secret values are not imported.
### Empty
* Start with a completely empty project — no Agent, no framework selection, and no scaffolding.
* Best for power users who want full control over project setup.
## Limitations
* Existing database data is not migrated.
* Some complex or proprietary dependencies may need manual setup.
* Large projects can take longer to process.
## Best practices
* Remove sensitive credentials before import.
* Keep your source project structure clean.
* Verify dependencies and run commands after import.
* Test core flows before publishing.
## Troubleshooting
If import fails, check these areas first:
* **Compatibility errors**: Verify required project files and supported frameworks.
* **Access errors**: Confirm repository or source permissions.
* **Processing errors**: Retry after simplifying project structure or reducing size.
If issues continue, visit the [Replit Community Hub](https://replit.com/community) or [contact Support](https://replit.com/support).
## Billing
Imports that require Agent migration work can consume credits. Credit usage depends on project complexity.
# Improve your app's SEO
Source: https://docs.replit.com/build/improve-seo
Use Replit's SEO rating and Agent to make your published app rank higher in search engines.
By the end, your published app will rank higher in search engines — and the SEO rating in the Publishing tool will reflect it.
After every successful publish, Replit runs an SEO audit and shows an SEO rating. If the rating has room to grow, one click hands the specific issues to Agent. For most builders, the workflow is just: **publish → glance at the rating → ask Agent to optimize**.
For details on how the rating is calculated (Lighthouse audit, what each rating means, supported deployment types), see [SEO Rating](/features/publishing/seo-rating).
## Optimize with SEO Agent
[SEO Agent](/features/publishing/seo-agent) runs a technical SEO audit on your published app and turns each finding into a one-click fix. It lives in the **Growth** pane in the Project Editor and is available to builders on a paid plan. Follow these steps to scan your app and apply the fixes.
SEO Agent works on a published app. Until you publish, the **Growth** pane is locked and prompts you to **Go to Publishing**. Publish from the Agent chat or the **Publishing** tool, then return to the Growth pane.
Open the **Growth** pane and find the **SEO Rating** card. Select **Run scan with Agent** to start a technical SEO audit of your project. A scan usually takes a few minutes.
When the scan finishes, the issues appear in a table with **Severity** (Low, Medium, or High) and **Status** (Unresolved) columns, grouped into categories such as **AI Readiness**, **Crawlability & Discovery**, **Landing Page Rendering & Metadata**, and **Performance Proxies**. Expand any issue to read what SEO Agent found.
Apply fixes at whatever granularity you want:
* **Fix with Agent** on a single issue hands just that item to Agent.
* **Fix with Agent** on a category fixes every issue in that group.
* **Fix all with Agent** sends every issue to Agent at once. The **Fix all issues** button in the chat does the same thing.
Agent spins up a fix task for each issue and works through them in the background, so you can keep building. Rows update to **Fix in progress**, and a **Go to task** link lets you open any task to follow along.
When a fix is ready, the task shows a **Ready for review** state. Review the changes, then select the green **Apply changes to main version** button to merge the fix into your app. Republish to refresh your SEO Rating against the new build.
You can also skip the scan UI entirely. Open Agent and say **"optimize my
SEO"** — Agent will pick up your latest results and start working through
them.
Common fixes Agent will apply:
* Add or rewrite missing or generic `
` tags so each page has a unique, descriptive title.
* Add a meta description to every page.
* Add descriptive `alt` text to images.
* Set the `lang` attribute on the `` element.
* Make sure links have discernible text (no "click here" or empty anchors).
* Add a `robots.txt` and a `sitemap.xml`.
* Add a viewport meta tag for mobile rendering.
* Improve color contrast on text that fails accessibility checks.
* Add Open Graph and Twitter card meta tags so links to your app preview well on social platforms.
## Best practices for an SEO-optimized app
Whether you ask Agent to handle these for you or write them yourself, these are the highest-leverage things to get right:
* **Give every page a unique title and meta description.** Aim for titles under 60 characters and descriptions around 150–160 characters.
* **Use semantic HTML.** Wrap your layout in ``, ``, ``, and ``. Use `` once per page and step heading levels in order.
* **Add alt text to every image.** Describe what the image shows, not just what it is.
* **Generate a `sitemap.xml` and `robots.txt`.** Ask Agent to create both so search engines know what to crawl.
* **Add Open Graph and Twitter card tags.** Control how your app looks when shared on social media.
* **Use a custom domain.** A branded domain builds trust with both visitors and search engines. See [Add a custom domain](/build/add-custom-domain).
* **Pick the right deployment type.** For content-heavy sites, [Static Deployments](/features/publishing/deployment-types#static) deliver pre-rendered HTML that search engines parse instantly.
* **Add structured data.** JSON-LD markup helps search engines show rich results for products, articles, FAQs, and events.
* **Keep your app fast.** Optimize images, avoid render-blocking scripts, and lean on Replit's hosting to keep response times low.
A simple way to apply most of these in one shot:
Audit my site for SEO best practices and apply the fixes. Add a sitemap,
robots.txt, Open Graph tags, structured data where it makes sense, and make
sure every page has a unique title and meta description.
## Improve it next
Run a technical SEO audit and apply one-click fixes for crawlability,
metadata, and structured data.
See exactly how the rating is calculated, what each rating means, and which
deployment types support it.
Move your app to your own domain — a branded URL builds trust with both
visitors and search engines.
The best deployment type for content-heavy, SEO-critical sites.
Choose where your app runs to keep response times low for your audience.
## Need further help?
* **The rating didn't update after a republish:** wait a minute or two — the audit runs asynchronously after the deployment goes live, and the badge refreshes when results land.
* **The rating is the same after Agent's changes:** ask Agent which specific Lighthouse items it addressed, then check the badge tooltip for the items that are still flagged.
* **Some pages have a lower rating than others:** the badge surfaces the lowest rating across all crawled URLs. Ask Agent to focus on the specific page Lighthouse flagged.
* **You don't see a rating on a published app:** SEO ratings only run for public web-facing deployment types (Autoscale, Reserved VM, Static). Scheduled and private deployments don't produce a rating.
# Invite teammates
Source: https://docs.replit.com/build/invite-teammates
Invite teammates to your project and build together — each person can start new threads with Agent while working on the same project.
## Build with teammates
Replit lets multiple people work in the same project at the same time. Each person can start new planning threads with Agent, and everyone's tasks appear on the shared board — so your team builds together instead of taking turns.
## Start building with teammates
### Inviting teammates
1. Open your project
2. Click **Invite** or share the project link
3. Teammates join and start new threads with Agent
### Working in parallel
Each person can create new threads, so you can work independently without interrupting each other. Everyone's tasks show up on the shared Kanban board, making it easy to see who's working on what and avoid stepping on each other's work.
On Core, only 1 background task can run at a time across the project. On Pro, up to 10 tasks can run in parallel — so multiple people can have Agent building different parts of the project simultaneously.
## The shared task board
When your team works together, everyone's tasks appear on the same board. You can see at a glance who's working on what, what's in progress, and what's ready to apply.
Each task moves through four stages:
Draft — Agent has proposed this task. It has a plan ready for review.
Active — Agent is building this task right now in its own isolated copy of the project.
Ready — The task is complete. Review the changes and apply them to the main version.
Done — This task is finished and its changes are part of the main version.
### How teams use the board
When multiple people are building at the same time, each person's tasks appear on the shared board. Here's what that looks like — one teammate is working on sequels and story regeneration while another tackles the gift flow, and the rest of the team's completed work sits in Ready and Done.
When a task moves to Ready, anyone on the team can review and apply the changes. Agent handles conflicts automatically when multiple tasks are applied.
## What you can build together
* **Split a feature across the team**: One person builds the frontend while another handles the backend, each through their own chat with Agent. The Kanban board keeps everyone aligned.
* **Onboard a new teammate**: They can explore the project through their own Agent chat, ask questions about how things work, and start contributing — all without blocking anyone else.
* **Ship faster on Pro**: With parallel execution, two or three people can each dispatch tasks that run at the same time. A project that would take one person a full session can be done in a fraction of the time.
## Frequently asked questions
No. Agent isn't a messaging tool — it's always listening and will try to act on anything you type. Use Slack, Discord, or another tool for team communication.
The task system helps prevent this by giving each task its own isolated copy, but is aware of what other tasks exist. When tasks complete, you apply them back to the main version and resolve any conflicts at that step.
Check the Kanban board to see active tasks. You can also see cursor presence and which files teammates are viewing.
Yes. Project owners can manage team members and revoke access at any time.
## Availability
| Capability | Core | Pro |
| ----------------------- | ---- | --- |
| Collaboration seats | 5 | 15 |
| Simultaneous chats | ✅ | ✅ |
| Shared Kanban | ✅ | ✅ |
| Active background tasks | 1 | 10 |
# Launch a landing page
Source: https://docs.replit.com/build/landing-page
Build and publish a landing page with one clear offer, one call to action, and a working form that captures responses.
A landing page gives an idea, campaign, waitlist, event, or offer one focused place to live.
## What you'll learn
You will learn how to:
* Turn an audience, offer, and call to action into a page.
* Ask Agent for page copy, layout, and form behavior.
* Check whether the page is clear before sharing it.
* Test a form from the published URL.
* Improve the page based on response quality.
## Refine and explore alternatives in Canvas
Once Agent finishes the first build, open Canvas to give visual feedback and ask Agent for alternate directions without rewriting the prompt.
Copy the prompt and paste it into the prompt box on [replit.com](https://replit.com), or click **Build on Replit** to open Replit with the prompt prefilled.
When Agent finishes, the right pane switches to **Preview** so you can interact with the landing page in real time. Scroll the hero, click the calls to action, and check that the copy and imagery match what you asked for before you start refining.
Select the **Canvas** button under the Preview and Tools tabs to switch the right pane from Preview to Canvas.
Use the Canvas **Text** and **Draw** tools to add notes and arrows in the empty space around the mockup, then point them at the specific element you want Agent to change. Annotations placed on the canvas — outside the preview — stay attached to your feedback so Agent can read them together with the design.
Keep each annotation focused on one change. Short, specific notes ("Reduce the width of this button") work better than open-ended feedback.
Marquee-select your annotations together with the preview frame, type a short prompt in **Chat about selected items**, and send it. Agent reads the annotations and the design as one piece of context, so it knows which element each note refers to.
Keep the chat message general — something like "Apply the changes from the annotations." Let the annotations carry the specifics.
Click the design on Canvas and pick a suggestion beside it, such as **Explore different approaches**, to ask Agent for alternate visual directions.
Wait for Agent to finish generating. **Explore different approaches** updates the same artifact with new variants — switch between them from the artifact dropdown above the mockup. **Explore different vibes** generates separate visual mockups that appear on the canvas next to the original.
Once the variants land, pick a direction and keep iterating. Add another annotation on the chosen frame, marquee-select it together with the design, and send a new request — for example, "Apply the requested changes from the annotations." Agent uses the variant context plus your fresh annotations as one prompt.
When the page works in Preview, click **Publish** (or **Republish** on subsequent deploys) in the top-right of the workspace to push the latest version to your public URL. Open the published URL in a new tab and submit one test response to confirm the live page captures it before sharing.
## Next steps
Send follow-up emails or sync responses to a CRM.
Give the page a branded campaign URL before sharing it.
Store more structured responses you can sort and export.
Create a second variant and compare messaging head-to-head — change one element per round so you know what moved the needle.
## Related
* [Add integrations](/build/add-integrations)
* [Add a custom domain](/build/add-custom-domain)
# Build a mobile app
Source: https://docs.replit.com/build/mobile-app
Build a phone-first app with Agent, test it in a simulator and on your phone, and share it for feedback.
⏰ *Estimated time: 15 minutes*
A mobile app should feel natural on a phone: quick to open, easy to tap, and comfortable to use with one hand.
You will build **Pace Mobile**, a phone-first running tracker inspired by the running tracker example from [What is Replit?](/build/welcome). The goal is to test a focused mobile flow before committing to the full App Store path.
## What you'll achieve
By the end of this guide, you will have:
* A mobile app project created with Agent.
* A first version scoped around one phone-friendly flow.
* The app running in a simulator or emulator.
* The app running on your phone with Expo Go.
* A shareable version you can send to someone for feedback.
## What you'll learn
You will learn how to:
* Start a mobile app from a prompt.
* Scope the first version around phone constraints.
* Test the app in a simulator or emulator.
* Test the app on a real device with Expo Go.
* Decide when to keep iterating before App Store or TestFlight work.
## Who this is for
Use this guide when your idea should be used on a phone.
This is useful for trackers, booking flows, field tools, event apps, learning tools, habit apps, and anything people should use away from a desktop.
TestFlight and App Store publishing are separate from this guide. When you are ready for that path, see [Build and launch a mobile app](/build/mobile-app).
## Before you start
You need:
* A [Replit account](https://replit.com).
* A phone with [Expo Go](https://expo.dev/go) installed.
* One mobile flow you can test in a few minutes.
For exact simulator, emulator, and device-preview details, see [Native Mobile Apps](/features/artifact-types/building-mobile-apps).
## Define the mobile flow
Before building, decide what someone should do on their phone.
For Pace Mobile:
* **Audience**: runners who want to log a run quickly.
* **Main flow**: choose run type → enter distance and time → save run → see today's summary.
* **Mobile constraint**: the primary action should be easy to reach with one thumb.
* **First version**: no accounts, no social feed, no advanced analytics.
This keeps the first mobile slice small enough to test.
## Build the first version
Open Replit and start a new app. Describe what you want to build, then select **Mobile app** as the app type.
Use this prompt:
Build Pace Mobile, a phone-first running tracker.
A runner should be able to choose a run type, enter distance and time, save the run, and see today's summary.
Design it for one-handed use with large tap targets, simple navigation, and a polished fitness-app feel.
Keep the first version small enough to test today in a simulator and on a real phone.
If you want Agent to think before it builds, use [Plan mode](/features/agent/plan-mode). Ask Agent to check the screens, navigation, tap targets, and phone-specific constraints before it starts building.
## Test in a simulator or emulator
When Agent finishes the first build, open [Preview](/features/editor/preview). In the device selector, choose **iOS Simulator** or **Android Emulator**.
Tap through the app like someone using it on a phone.
Check that you can:
* Start the app without errors.
* Choose a run type.
* Enter distance and time.
* Save the run.
* See today's summary update.
* Navigate without getting stuck.
* Read text without zooming.
## Test on your phone
Simulator testing is useful, but a phone tells you whether the app feels right.
Open the mobile device preview panel and scan the QR code with your phone. This opens the app in Expo Go.
On your phone, check:
* Can you complete the main flow one-handed?
* Are buttons and inputs large enough to tap?
* Is the main action easy to reach?
* Does the keyboard cover important fields?
* Does the app still make sense on a small screen?
If something feels awkward, ask Agent to fix that specific part instead of redesigning the whole app.
Improve Pace Mobile for one-handed phone use.
Make the Save Run button easier to reach, increase tap targets where needed, and keep the run form simple.
Do not add new features.
After the change, test that saving a run still updates today's summary.
## Share for feedback
When the phone flow works, publish the app to create a shareable Expo Go version for early feedback.
Share it with one focused task:
> Open Pace Mobile on your phone, save one run, and tell me anything that felt awkward to tap, read, or understand.
Focused feedback is easier to use than general opinions. If the feedback points to one clear issue, ask Agent for the smallest fix and test the app again on your phone.
## Publish to the App Store
After you've tested Pace Mobile in the simulator and on your phone with Expo Go, you can promote the same app to TestFlight and the App Store. This flow requires an **Apple Developer Program** membership with two-factor authentication. For background on enrollment, individual vs. organization accounts, TestFlight vs. App Store review, and external testing, see [Build and launch a mobile app](/build/mobile-app).
After your Expo Go preview is live, open the **Publishing** tab. Under **Production**, you'll see a **Ready to publish Pace to the App Store?** card. Select **Start publishing to the App Store**.
Replit opens **Launch** — an Expo flow embedded in Replit. Enter or confirm your Expo project name and slug, then select **Continue**. If you already have an Expo project, select **Use existing** instead.
Connect the Apple Developer account that will own the App Store listing. The account must be enrolled in the Apple Developer Program, and Apple enforces two-factor authentication — be ready to approve a verification code on a trusted device.
Enter the **App name** and **Bundle ID** (for example `app.replit.pace`) that will appear on the App Store. The bundle identifier cannot be changed after the first build, so pick it carefully.
Replit configures Apple certificates on your behalf. When the **Ready for launch** step lights up, select **Launch to App Store**. Replit builds your native app in the cloud and submits the build to App Store Connect for TestFlight beta review.
When Launch finishes, you'll see a confirmation that the app is targeting the App Store, then the dialog closes and returns you to the Project Editor.
The first build of a version typically requires a TestFlight beta review before testers can install it. After approval, additional builds usually push to testers faster. To share with external testers or submit for App Store release, finish the listing in **App Store Connect** — see [Build and launch a mobile app](/build/mobile-app) for the full App Store Connect checklist.
## You're done when
* The app opens in the iOS Simulator or Android Emulator.
* The app opens on your phone with Expo Go.
* You can complete the main mobile flow.
* Text, buttons, and navigation feel comfortable on a phone.
* You published or shared a testable mobile version.
* At least one person can try it and give feedback.
* (Optional) You submitted the app to TestFlight via the App Store flow.
## Improve it next
Let each person see their own progress.
Save run history beyond the first test session.
Connect the app to notifications, health data, or external services.
Move a working mobile app toward TestFlight and the App Store.
## Need further help?
* **Agent builds a web app instead:** start again and select **Mobile app** as the app type before building.
* **Expo Go preview looks stale:** shake your phone, open the developer menu, and select **Refresh**.
* **Tap targets feel too small:** ask Agent to increase touch targets and keep primary actions within thumb reach.
* **Navigation feels crowded:** ask Agent to reduce the app to the fewest screens needed for the main flow.
* **The simulator works but the phone does not:** test hardware-specific behavior on a real device and see [Native Mobile Apps](/features/artifact-types/building-mobile-apps).
* **Publishing fails:** see [Mobile app troubleshooting](/features/troubleshooting/mobile-app).
## Try it now
## Related
* [Native Mobile Apps](/features/artifact-types/building-mobile-apps)
* [Build and launch a mobile app](/build/mobile-app)
* [Vibe coding 101](/learn/foundations/vibe-coding-101)
* [Mobile app troubleshooting](/features/troubleshooting/mobile-app)
# Generate an app icon
Source: https://docs.replit.com/build/mobile-app-icon
Use Replit's built-in image generation to create PixelGames' app icon.
Both stores require an app icon before they'll accept a submission. Replit can generate one
directly, no separate design tool required.
## What each store needs
* **App Store:** 1024×1024, no transparency, no rounded corners, Apple adds those.
* **Google Play:** 512×512.
## Generate it
Switch to **Design** mode before sending the prompt, this tells Agent to generate images.
Agent generates a few directions at once, so you can compare and pick before committing to
one.
## What's next
Create the marketing screenshots each store needs.
Use this icon in the App Store listing.
## Related
* [Submit to Google Play](/build/mobile-publish-android)
# Set up your Apple Developer account
Source: https://docs.replit.com/build/mobile-apple-account
Enroll in the Apple Developer Program before publishing to the App Store.
Apple requires a developer account before you can upload anything, even to share a build
privately with testers. Verification takes time, so start this early, you can keep building
while it's pending.
Sign up at [developer.apple.com](https://developer.apple.com). The program has an annual
membership fee, billed annually.
Individuals verify with a government ID. Organizations verify the business itself, which
needs a D-U-N-S number.
Usually about a day, occasionally longer. You'll get an email once you're enrolled.
## What's next
Get your app into App Store Connect.
Keep previewing while enrollment is pending.
# Use the camera
Source: https://docs.replit.com/build/mobile-camera
Let players take a profile photo in PixelGames.
Adds a button on the player's profile that opens the camera or photo library, whichever they
prefer.
On iOS, the system prompt appears once. If declined, PixelGames can only ask again by sending
the player to **Settings → PixelGames → Camera**. On Android, the runtime permission dialog
can reappear on the next attempt, until the player checks "Don't ask again".
## What's next
Let players see which friends are playing.
Save the photo in App Storage.
## Related
* [Use iOS native components](/build/mobile-native-components)
# Collect reviews and ratings
Source: https://docs.replit.com/build/mobile-collect-reviews
Prompt happy players to rate PixelGames using each store's native review prompt.
More ratings help your app rank higher and build trust with new users. Both stores have a
native prompt for this: a popup asking for a rating right inside the app.
## Ask for a review at the right moment
Ask for a review after a win, a new high score, or a level up. The moment matters more than
how often you ask.
StoreKit on iOS, Google Play's In-App Review API on Android, both cap how often it actually
shows, regardless of how often your code asks.
Never bribe or require a rating, like unlocking a game only after rating 5 stars. Apple and
Google both prohibit incentivized reviews, and PixelGames can be rejected or removed for it.
## Troubleshooting
* **Prompt never appears:** expected sometimes, both platforms cap how often the system shows
it regardless of how many times your code calls the API.
* **Prompt shows every time in testing:** normal on a TestFlight or Internal Testing build,
the yearly rate limit only applies to real production installs.
* **Players complain about being asked too often:** confirm you're calling the native API and
not a custom popup shown on every launch, that bypasses the built-in rate limiting.
## What's next
Charge players for content in PixelGames.
## Related
* [Submit to the App Store](/build/mobile-publish-ios)
* [Submit to Google Play](/build/mobile-publish-android)
# Access contacts
Source: https://docs.replit.com/build/mobile-contacts
Let players see which friends are already playing PixelGames.
Players choose who to share with the system picker, so PixelGames only sees the contacts they
select. Both iOS and Android use this picker instead of a blanket address-book permission.
PixelGames matches shared phone numbers or emails to existing players and shows their scores,
unmatched contacts are left alone.
## What's next
See other native iOS patterns used across PixelGames.
Save profile photos to App Storage.
# Design your app
Source: https://docs.replit.com/build/mobile-design
Use Design mode to shape how your app looks, screen by screen.
How your app looks is as much a part of it as what it does. PixelGames is a Game Boy on a
phone: the cream shell, the olive-green screen, and the chunky buttons are the whole point.
A generic app layout would lose it.
Switch to Design mode on the toggle at the top left of your workspace:
Describe the result and Agent handles the rest. Ask for several versions at once to find a direction.
Agent lays them out side by side on the canvas, so you judge them as whole screens rather
than one at a time.
Select a design, then use the suggestions that appear next to it to try other variations.
Once a version is right, click the send icon in the toolbar above it. Agent takes that
design off the canvas and builds it as a real screen in your app.
## Troubleshooting
* **The change went further than you wanted:** ask Agent to revert it and describe a smaller
change, one screen or one element at a time.
* **It looks right in preview, wrong on a phone:** name the device and what you saw, safe
area and screen size handling are the usual causes.
* **A change keeps getting undone:** the same value may be set in more than one place, ask
Agent where the styling for that screen actually lives.
## What's next
Design the icon players tap on their home screen.
Pair a custom look with native alerts and menus.
## Related
* [Generate App Store screenshots](/build/mobile-store-screenshots)
* [Preview and test on your phone](/build/mobile-preview-testing)
# Start your first mobile app
Source: https://docs.replit.com/build/mobile-first-app
Build PixelGames, a retro-style game app, as a native iOS and Android app with Agent.
Building a mobile app on Replit works the same way as building a web app: you describe what
you want, and Agent writes the code. This guide walks through that process with one example,
so you can see the pattern before applying it to your own idea.
## Before you start
All you need is a [Replit account](https://replit.com/), free to create.
The goal is to complete one full loop:
* Build it with [Agent](/features/agent/overview)
* Test it as a mobile app
* Publish it, and share it
Agent is Replit's AI builder. You describe what you want, and it creates the app, explains
what it did, and fixes what's broken.
## 1. Tell Agent to build the app
Open Replit and start a new app. Describe what you want to build, then select **Mobile app**
as the app type.
## 2. Confirm it works in preview
Replit simulates PixelGames as iOS or Android directly in the preview pane. This is the
fastest way to check a change.
Replit launches the simulation as soon as PixelGames is ready, no setup needed.
Use the **Simulate on...** dropdown in the preview pane toolbar (next to the wrench and
refresh icons) to switch between **iOS**, **Android**, and **Web**.
### Check that it actually works
Use PixelGames like a player would:
* See the **MENU** screen with **Blocks** selectable and the other three games marked "SOON."
* Open Blocks and play a few pieces with the D-pad and A/B buttons.
* Confirm the score, level, and lines in the HUD update as you play.
If something looks wrong, describe what you saw to Agent, you don't need to find the bug
yourself.
## You've got PixelGames running
You went from a single prompt to a playable game, previewed right inside Replit.
## Troubleshooting
The first build takes a minute or two, so give it a moment before assuming it's stuck.
If it's still blank after that, check the console for an error and share it with Agent.
Press **R** in the console to reload PixelGames, then use the refresh icon in the preview
pane toolbar if it still looks stale.
This usually means a JavaScript error or a missing package. Read the message, it often
points to the exact file and line, then share it with Agent and ask for a fix.
Some packages behave differently across platforms, one that works on web might not
support native, or need different setup. Ask Agent "Does this package support native?"
before relying on it.
The first build is always slower since nothing is cached yet, later ones should be
quicker. If it stays slow, ask Agent to check for unnecessary packages in the project.
This means a package isn't installed, or is installed but the cache is stale. Ask Agent to
install it or clear the cache, and double check the package name isn't misspelled.
## What's next
Feel PixelGames as a real phone app: buttons under your thumb, haptics, the real screen
size.
Let players sign in and save progress.
Save profile photos to App Storage.
Tell players when a new game ships.
Charge players for content in PixelGames.
# Set up your Google Play Console account
Source: https://docs.replit.com/build/mobile-google-account
Register with Google Play Console before publishing to Google Play.
Google requires a Play Console account before you can upload anything, even to share a build
privately with testers. Verification takes time, so start this early, you can keep building
while it's pending.
Sign up at [play.google.com/console](https://play.google.com/console) with the Google
account that will own the app. The registration has a one-time fee, with no yearly renewal.
Pick **Personal** or **Organization**, the choice is permanent.
Google checks your name, address, and a government ID. This step can take a few days.
## What's next
Get your app into Play Console.
Keep previewing while registration is pending.
# Add haptics
Source: https://docs.replit.com/build/mobile-haptics
Add haptic feedback to PixelGames' D-pad and buttons.
Haptics are the small vibrations a phone gives back when you tap something, like the tiny
buzz when you press a button.
**iOS:** Supports several distinct feedback styles, light, medium, heavy impact, plus success
and warning notification feedback.
**Android:** Supports a smaller set of vibration patterns. Agent picks the closest equivalent
so it still feels intentional, not identical to iOS.
## Troubleshooting
* **No feedback on a physical device:** confirm the phone's haptics/vibration setting isn't
disabled in system settings, PixelGames can't override that.
* **Nothing happens using Replit's Simulate on iOS/Android preview:** that view only renders
the screen, it has no way to trigger your phone's vibration motor. Switch to Expo Go on a
real device to feel haptics, see [preview and test on your phone](/build/mobile-preview-testing).
* **Feels different between iOS and Android:** expected, the two platforms don't expose the
same feedback styles. Ask Agent to tune each separately if the difference is jarring.
## What's next
Let players invite friends to compete.
Haptics only show up on a real phone.
## Related
* [Use iOS native components](/build/mobile-native-components)
# Beta test with Internal Testing
Source: https://docs.replit.com/build/mobile-internal-testing
Hand PixelGames to real testers on Google Play's Internal Testing track, before it's public.
Once PixelGames works well on your own phone, the next step is getting it in front of other
people, without them near your computer, and without publishing it to everyone yet.
Internal Testing is a Play Console release track. Testers get a plain link, no separate app
needed, and you can promote the exact same build straight to production once you're happy
with it.
It distributes a build you've already [uploaded](/build/mobile-upload-android), and you set
it up by hand in Play Console.
In Play Console, go to **Testing → Internal testing**. If your build isn't there yet,
create a release and upload the `.aab`.
On the **Testers** tab, create an email list and add your testers to it.
Copy the link Play Console generates and send it to your testers.
They open the link, opt in, and install PixelGames from Google Play, no separate app
needed.
## Troubleshooting
* **Tester can't opt in:** confirm they're using the Google account you actually added,
opt-in links are tied to a specific account.
* **Build works for you, not for testers:** confirm they're on the same build version, an
older invite link can point at a stale build.
## What's next
Take the tested build to a public release.
Do the same for iOS testers.
# Build PixelGames with a team
Source: https://docs.replit.com/build/mobile-invite-team
Invite teammates to build PixelGames in parallel, each with their own Agent task.
PixelGames doesn't have to be a solo project. Invite teammates and each one can run their own
Agent task at the same time, all tracked on a shared board so nobody duplicates work.
## Invite a teammate
From the PixelGames app, open **Invite** and share the link, or add someone by email.
Once they're in, they can open their own Agent conversation right away, no need to wait
for anyone else to finish first.
## Track work on the board
Each Agent task moves through four stages: **Draft** (a plan is ready for review), **Active**
(Agent is building it), **Ready** (finished, waiting to be applied), and **Done** (merged into
PixelGames).
For example, one teammate could build Snake while another adds payments, both tasks move
across the board independently, so it's clear who's working on what.
Agent builds each task in its own isolated copy of PixelGames, so two people working at once
don't step on each other's changes. Conflicts only come up once a task is actually applied
back, and only if it touches the same code as another applied task.
## What's next
Shape how PixelGames looks, screen by screen.
Try the team's build on a real device.
## Related
* [Start your first mobile app](/build/mobile-first-app)
# Add login
Source: https://docs.replit.com/build/mobile-login
Let players sign in to PixelGames using Clerk.
Add sign-in to PixelGames now, even before there's anything to save. Once a player has an
account, you can attach things to it later, high scores, unlocked games, whatever you build
next.
Use [Clerk Auth](/features/auth-and-identity/clerk-auth), Replit's built-in integration for
sign-in. Agent provisions it automatically and gives PixelGames its own branded sign-in screen.
## Add Sign in with Apple
Apple's App Store review requires offering **Sign in with Apple** as an equivalent whenever
another social login, like Google, is available, but only on iOS. Android has no such
requirement.
## Enable the providers
Adding a provider in the code isn't enough, each one also has to be switched on in your app's
auth settings. Open **Users & Auth → Configure → SSO providers → Production**, and confirm
**Google** and **Apple** both show as Enabled.
**Development** and **Production** have separate provider lists. Enabling one doesn't enable
the other, so check Production before you publish.
## Test it
One account isn't enough, you need two to prove PixelGames tells players apart.
1. Play a round without signing in, PixelGames should still work.
2. Sign in with your own account.
3. Sign out, then sign in with a different account and confirm you're in a separate session,
not the first account.
4. Sign back into the first account and confirm you land back in that one.
5. On iOS, confirm **Continue with Apple** appears above Google. On Android, confirm it
doesn't show up at all.
## What's next
Save profile photos once players are signed in.
Add more capabilities to PixelGames.
## Related
* [Store images in your mobile app](/build/mobile-store-images)
* [Add in-app purchases](/build/mobile-payments)
* [Configure sign-in providers](/features/auth-and-identity/sign-in-providers)
# Use iOS native components
Source: https://docs.replit.com/build/mobile-native-components
Use alerts, action sheets, SF Symbols, and more native iOS components in PixelGames.
## Why this matters
Every iPhone already has alerts, share sheets, switches, and menus built in, and players use
them in every other app they own. When your app uses those same native components, players
already know how they work before they've even tapped one, that's what makes it feel like a
real iPhone app.
Below are example prompts for native components you can add to your app: alerts, action
sheets, switches, and more.
## Native alerts
This renders a real `UIAlertController` alert, the same style as the popups iOS itself uses.
Reach for an alert when there's one clear decision to confirm.
## Native action sheets
An action sheet is the sibling of an alert, use it when there are a few distinct options to
choose from, rather than a single yes/no decision. Android gets its own native equivalent,
Agent picks the right one per platform automatically.
## Native switches
The same on/off switch used throughout the iOS Settings app, instantly recognizable, so
players don't have to figure out a custom toggle design.
## SF Symbols
SF Symbols is Apple's built-in icon set. Symbols automatically match the surrounding text
size, weight, and dark mode, something a custom icon set has to be built to do manually.
SF Symbols is iOS-only. Ask Agent to pick a matching icon set for Android, the icons won't be
pixel-identical between platforms, and that's expected.
## Native share sheet
Opens the same system share sheet as Photos or Safari, so it lists whatever apps the player
already has installed.
## Troubleshooting
* **Alert or action sheet shows a custom modal instead:** confirm Agent used the native API
rather than a JS-rendered lookalike, they can look similar but behave differently.
* **Icons look wrong on Android:** expected for SF Symbols specifically, they're iOS-only. Ask
Agent what fallback icon set it used.
* **Share sheet doesn't include an app you expected:** that's controlled by the OS and the
installed apps on the test device, not something PixelGames can add to directly.
## What's next
Pair the share sheet with invite links.
Confirm native components render correctly on-device.
## Related
* [Add haptics](/build/mobile-haptics)
# Add payments with RevenueCat
Source: https://docs.replit.com/build/mobile-payments
Charge players for content in your app using RevenueCat.
## What is RevenueCat
In PixelGames, Snake, Racer, and Pinball are marked coming soon. RevenueCat lets your app sell
a subscription that unlocks them, without wiring up Apple and Google's purchase systems
directly, ask Agent to add a subscription, connect RevenueCat, and it handles the rest.
Apple and Google both require using their own in-app purchase system for digital content
like this, and both take a cut of the sale. You can't route around it with an external
payment link.
## Before you start
* A Replit project with your project set up as a mobile app.
* A RevenueCat account, just an email and password, no bank account needed yet.
## Get started
Agent prompts you to connect RevenueCat, select **Connect RevenueCat** to begin.
On RevenueCat's authorization page, grant **Read & Write** access.
Agent creates the RevenueCat project, configures the product and entitlement, and wires
up the purchase flow in your app.
## Test subscriptions
Replit previews use RevenueCat's test mode. Testing a purchase in Expo Go shows a test
purchase dialog, no real charges. Once Apple approves your app for the App Store,
purchases use real money, so double check the price before submitting.
The test purchase dialog above isn't what players actually see. Expo Go is a shared app
previewing every Expo project, so it can't resolve your app's real RevenueCat identity, it
shows a generic test flow instead. Once you have a real build or your app is published, the
paywall itself is RevenueCat's own screen, served remotely rather than hardcoded in your app.
## Customize the paywall
Because the paywall is served remotely, you can change its design without a new build, two
ways:
**Ask Agent**
**Or edit it manually**
In your RevenueCat dashboard, go to **Paywalls** and create or edit one with their visual
editor: colors, background image, title text, button style, whatever fits your app's look.
Connect the paywall to your current offering.
The new design appears next time the paywall opens, on TestFlight or after publishing, no
App Store update required.
This is what players actually see, a real purchase confirmation instead of Expo Go's test
dialog, and your customized design instead of the default layout.
## Sync to App Store Connect
Syncing allows you to create or modify an in-app subscription or product directly from
RevenueCat or Replit Agent.
Before you can connect App Store Connect, three things need to be in place:
* **Enroll** in the Apple Developer Program, if you haven't already. It has an annual membership
fee.
* **Submit** your app to the App Store, see [upload your app](/build/mobile-upload-ios)
if you haven't yet, RevenueCat needs an app record to sync products against.
* **Connect** a bank account and **sign** Apple's Paid Apps Agreement, both done inside App
Store Connect, Apple won't process any payout without them.
In Replit, open **Publishing → Manage**, and select **Sync RevenueCat to App Store
Connect**. This button appears once your app is submitted to TestFlight.
In App Store Connect, go to **Users and Access → Integrations → App Store Connect API**
([open it directly](https://appstoreconnect.apple.com/access/integrations/api)) and
select the **+** to add a new key.
Name it (for example "RevenueCat"), set **Access** to **App Manager**, and select
**Generate**.
Copy the **Key ID** and download the key file.
Back in Replit's sync modal (Step 1 of 2), upload the key file, paste the **Key ID** and
**Issuer ID**, then select **Continue**.
Same place in App Store Connect, the **In-App Purchase** tab this time
([open it directly](https://appstoreconnect.apple.com/access/integrations/api/subs)),
generate another key and copy its details.
Back in Replit's sync modal (Step 2 of 2), upload this key file too, paste its **Key ID**
and **Issuer ID**, then select **Continue**.
Once synced, you can manually change your product's price anytime from the same
**Publishing → Manage** pane in Replit.
## Troubleshooting
* **Purchase succeeds but nothing unlocks:** check the entitlement in RevenueCat is mapped
to the right product ID.
* **Works in test, not after publishing:** confirm the products are synced to App Store
Connect and Apple's Paid Apps Agreement is signed.
## Frequently asked questions
No. Only an email and password to create the account. A bank account is connected
separately, through Apple or Google, once you're ready to receive payouts.
No. Replit previews use RevenueCat's test mode, purchases are simulated. Real charges
only start once Apple approves your app for the App Store.
Pricing, entitlements, and the paywall itself. Ask Agent to make any change, it updates
both the RevenueCat configuration and your app's code.
## What's next
Ask happy players to rate PixelGames.
## Related
* [Store images in your mobile app](/build/mobile-store-images)
* [Submit to the App Store](/build/mobile-publish-ios)
* [Submit to Google Play](/build/mobile-publish-android)
# Preview and test on your phone
Source: https://docs.replit.com/build/mobile-preview-testing
Test PixelGames on your own phone with Expo Go.
Expo Go is the fastest way to see PixelGames on your own phone. Start here, and move to
TestFlight or Internal Testing once you hit what Expo Go can't do.
## What is Expo?
Expo is the toolkit Agent used to build PixelGames. It lets Agent write the app once in
JavaScript and run that same code as a real iOS app and a real Android app.
Expo Go is a free app from the App Store or Google Play. Install it once, and it can preview
any Expo project, including PixelGames, just by scanning a QR code.
Open the **Expo Go** app on your phone (iOS or Android).
Scan the QR code Replit shows in the preview pane.
Metro, Expo's bundler, packages up PixelGames and sends it to your phone. The first
load can take a minute or two, it's faster after that.
PixelGames opens on your phone. Agent's changes show up in a few seconds, no
reinstalling.
## What Expo Go cannot test
Expo Go covers screens, flows, and UI. A few features only work once PixelGames runs as its
own app on the phone: **push notifications**, **in-app purchases**, and **Sign in with Apple**
are the common ones.
To test those, upload PixelGames to Apple or Google, then install it from their beta testing
track. Your app stays private to you and to the testers you invite, and you can keep iterating
before anything goes public.
* [Upload your iOS app](/build/mobile-upload-ios)
* [Upload your Android app](/build/mobile-upload-android)
## Troubleshooting
* **QR code won't scan, or the app won't connect:** confirm your phone and computer are on the
same WiFi network, some corporate and public networks block the connection between them. On
one of those, ask Agent to start the app in tunnel mode.
* **Changes aren't appearing on your phone:** shake your phone to open the Expo developer menu,
then tap **Reload** to redownload PixelGames.
* **Red error screen:** usually a JavaScript error or a missing package. The message often
points to the exact file and line, share it with Agent and ask for a fix.
* **Works on iOS, breaks on Android (or vice versa):** paste the error into Agent along with
which platform it happens on.
* **Console shell looks broken on one device:** ask Agent to check the screen size or safe area
handling for that device.
## What's next
Go beyond what Expo Go can test.
Add more device capabilities before you publish.
## Related
* [Start your first mobile app](/build/mobile-first-app)
* [Store images in your mobile app](/build/mobile-store-images)
# Submit to Google Play
Source: https://docs.replit.com/build/mobile-publish-android
Complete the Play Console listing and send PixelGames for Google's review.
Your build should already be in Play Console, see
[upload your app](/build/mobile-upload-android) if it isn't. What's left is the listing
players see, choosing a release track, and the review itself.
## 1. Create the Play Console listing
Screenshots, a feature graphic, a description, and the content rating questionnaire Google
requires. See [generate an app icon](/build/mobile-app-icon) and
[generate store assets](/build/mobile-store-screenshots) if you need these.
## 2. Choose a release track
Google splits releases into tracks, each reaching a wider audience than the last.
Internal, Closed, or Open testing, covered in
[internal testing](/build/mobile-internal-testing).
Once you're confident it's solid, promote the same build to the **Production** track so
all players can install it.
## 3. Submit for review
Google reviews the app before it goes live on the Production track. Review time varies by app
and can be longer for a first submission.
## Troubleshooting
* **Rejected by Google:** paste the reviewer's notes into Agent and ask it to fix the smallest
issue that caused it.
* **Stuck in review:** review times aren't fixed. Check Play Console for the current status
rather than resubmitting.
* **Content rating rejected:** answer the questionnaire based on PixelGames' actual content,
not the most conservative option, mismatches can trigger a rejection.
## What's next
Do the same for iPhone players.
Prompt happy players to rate PixelGames.
## Related
* [Upload your app](/build/mobile-upload-android)
* [Beta test with Internal Testing](/build/mobile-internal-testing)
# Submit to the App Store
Source: https://docs.replit.com/build/mobile-publish-ios
Complete the App Store listing and send PixelGames for Apple's review.
Your build should already be in App Store Connect, see
[upload your app](/build/mobile-upload-ios) if it isn't. What's left is the listing Apple
shows to players, and the review itself.
## 1. Complete the App Store listing
In App Store Connect: screenshots for each device size, a description, keywords, and an
age rating questionnaire. See [generate an app icon](/build/mobile-app-icon) and
[generate App Store screenshots](/build/mobile-store-screenshots) if you need these.
Apple's App Privacy section asks exactly what data PixelGames collects, accounts,
location, photos, and how it's used. Answer this accurately, mismatches are a common
rejection reason.
## 2. Submit for review
With the listing complete, select **Add for Review** at the top right of the version page.
Every submission goes through Apple's review before it reaches the App Store. It's often a day
or two, and sometimes longer, especially the first time you submit a new app.
If it's rejected, Apple sends notes explaining what to fix. Paste those into Agent, fix the
smallest issue that caused it, and resubmit, rejections are common and you can resubmit right
away.
## Troubleshooting
* **Rejected by Apple:** paste the reviewer's notes into Agent and ask it to fix the smallest
issue that caused it.
* **Stuck in review:** review times aren't fixed. Check App Store Connect for the current
status rather than resubmitting.
* **Privacy details mismatch:** if a feature was added after the listing was filled in (a new
permission, a new data type collected), update the privacy section before resubmitting.
## What's next
Do the same for Android players.
Prompt happy players to rate PixelGames.
## Related
* [Upload your app](/build/mobile-upload-ios)
* [Beta test with TestFlight](/build/mobile-testflight)
# Send push notifications
Source: https://docs.replit.com/build/mobile-push-notifications
Notify players about new games and friend activity in PixelGames.
Android can test this right away in Expo Go. iOS needs the app
[uploaded and installed from TestFlight](/build/mobile-testflight)
first, Apple requires the app to be registered with them before it can receive any
notification, even for testing.
iOS and Android both prompt once before the first notification. Decline means silence
until the player re-enables it from Settings.
Agent registers a push token for the signed-in player, so PixelGames knows which device to
notify.
A notification fires when a friend beats that player's high score.
## Test it
1. Grant notification permission when prompted, PixelGames can't send anything until this is
accepted, and the prompt only appears once.
2. Trigger the real condition, like beating a friend's high score from a second account,
rather than only asking Agent for a one-off test notification. This confirms the whole
path works: the score save, the check for who to notify, and the send, not just that
permission was granted.
3. Confirm it arrives on the lock screen, then tap it and confirm it opens PixelGames. Tapping
checks that the notification actually routes back into the app, not just that it displays.
Do this on a real phone, notifications never reach a simulator. See
[test with Expo Go](/build/mobile-preview-testing) for setup.
## Troubleshooting
* **Notification never arrives on iOS:** confirm you're testing from
[TestFlight](/build/mobile-testflight), Expo Go can't receive pushes on iOS.
* **Player granted permission but gets nothing:** check the token was actually saved against
their account, a common gap when sign-in and notification setup happen separately.
## What's next
Pair a notification with a haptic tap.
Save profile photos to App Storage.
## Related
* [Submit to the App Store](/build/mobile-publish-ios)
# Store images in your mobile app
Source: https://docs.replit.com/build/mobile-store-images
Save profile photos and other images to App Storage, linked to each player.
PixelGames needs somewhere to keep the photos players take. This guide assumes players can
already [sign in](/build/mobile-login), storage relies on knowing who's uploading.
Agent wires up [App Storage](/features/data-and-storage/object-storage) and links each upload to
the signed-in player. PixelGames can then show a real profile: their uploaded photo next to their
name.
## Test it
1. Sign in to PixelGames with an existing account.
2. Take or choose a profile photo and upload it.
3. Close and reopen the app, confirm the photo is still there.
4. Sign in from a second phone with the same account and confirm you see the same photo.
## Troubleshooting
* **Signed in but the photo doesn't appear:** the app is likely pointed at a different storage
or auth instance than expected. Ask Agent to check the connection.
* **Upload fails:** confirm the app requested camera and storage permissions before the upload.
## What's next
Move from Expo Go to a dev build for full native access.
Submit PixelGames for review.
## Related
* [Add login](/build/mobile-login)
* [Use the camera](/build/mobile-camera)
* [Add payments to PixelGames](/build/mobile-payments)
# Generate App Store screenshots
Source: https://docs.replit.com/build/mobile-store-screenshots
Use Replit's built-in image generation to create PixelGames' store screenshots.
Both stores also require screenshots, and Google Play a feature graphic, before they'll accept
a submission. Replit can turn real screenshots of PixelGames into polished marketing images
directly.
## What each store needs
* **App Store:** at least one screenshot at **1284×2778 px**, the 6.5" iPhone size.
* **Google Play:** at least two phone screenshots, plus a 1024×500 feature graphic shown at
the top of the listing.
## Generate marketing screenshots
## Generate a feature graphic (Google Play)
## What's next
Create the icon each store needs.
Use these assets in the Play Console listing.
## Related
* [Preview and test on your phone](/build/mobile-preview-testing)
# Beta test with TestFlight
Source: https://docs.replit.com/build/mobile-testflight
Hand PixelGames to real testers with TestFlight, before it's public on the App Store.
TestFlight is Apple's own app for testing apps before they're public. Testers install
TestFlight, then get PixelGames through it. It distributes a build you've already
[uploaded](/build/mobile-upload-ios).
## Test it yourself
You can start the moment the upload finishes. Apple emails you an invite for your own build,
select **View in TestFlight** to install PixelGames on your phone, the same step covered in
[upload your app](/build/mobile-upload-ios).
PixelGames now runs as its own app, so you can test push notifications, in-app purchases,
Sign in with Apple, and anything else that needs a real installed app.
## Invite other testers
To let other people try PixelGames, without them near your computer, add them as testers in
App Store Connect.
In App Store Connect, open PixelGames and select the **TestFlight** tab. In the sidebar,
select **+** next to **External Testing**.
Give it a name you'll recognize later, like **Beta Testers**, then select **Create**.
On the group page, select **Add Builds** to choose the build testers receive, then
**Invite Testers** to add them by email. They each get an invite.
Testers install the free **TestFlight** app from the App Store, accept your invite, and
install PixelGames through it. Updates show up the same way.
External groups go through Apple's Beta App Review before testers can install, usually about a
day for the first build. Testers you add under **Internal Testing** can install right away.
## Troubleshooting
* **Tester never got the invite:** double-check the email address in App Store Connect, and
ask them to check spam.
* **Build works for you, not for testers:** confirm they're on the same build version, an
older invite link can point at a stale build.
* **Tester lost access to the app:** TestFlight builds expire after 90 days, that's usually
why. Submit a fresh build.
## What's next
Take the tested build to a public release.
Do the same for Android testers.
# Upload your app to Play Console
Source: https://docs.replit.com/build/mobile-upload-android
Build a production release and upload it to Google Play Console by hand.
Uploading puts your app inside Play Console. Nothing before this point is visible to Google,
and nothing after it, internal testing or submitting for review, works until it's done.
You'll need a [Play Console account](/build/mobile-google-account) first.
## What gets uploaded
A **build** is a real, installable copy of your app, the same kind of file you'd get from
Google Play, except it isn't published yet. Expo Go runs your code inside a shared preview
app, a build is your app on its own, which is why features like push notifications and
in-app purchases only work here.
Android builds are `.aab` files (Android App Bundle), the format Google Play expects.
## Build it
Agent runs a production build on Expo's servers and gives you a download link once it's
ready, typically 10 to 15 minutes. You can also find it in your Expo dashboard under
**Builds**.
## Upload it
Open the build link Agent gives you and download the `.aab`.
If you haven't already, select **Create app** in Play Console and fill in the name,
default language, and whether it's an app or a game.
Pick a track, **Internal testing** to start, then select **Create new release**.
Drop the file into the release, and Play Console processes it. Once it finishes, the
build is ready to assign to testers or promote to Production.
## Troubleshooting
* **Play Console rejects the upload:** the version code has to increase with every upload.
Ask Agent to bump it and rebuild.
* **Build stuck compiling:** builds are queued and typically take 10 to 15 minutes. Check
your Expo dashboard under **Builds** before assuming something's broken.
* **"App signing" prompt on first upload:** let Google manage the signing key, it's the
default and it means Google can re-sign future uploads for you.
## What's next
Hand the uploaded build to real testers first.
Finish the listing and send it for review.
# Upload your app to App Store Connect
Source: https://docs.replit.com/build/mobile-upload-ios
Use Replit's Launch feature to build, sign, and upload your app to App Store Connect.
Uploading puts your app inside App Store Connect. Nothing before this point is visible to
Apple, and nothing after it, TestFlight or submitting for review, works until it's done.
You'll need an [Apple Developer account](/build/mobile-apple-account) first.
## What gets uploaded
A **build** is a real, installable copy of your app, the same kind of file you'd get from the
App Store, except it isn't published yet. Expo Go runs your code inside a shared preview app,
a build is your app on its own, which is why features like push notifications and in-app
purchases only work here.
Replit's **Launch** feature creates that build, signs it, and uploads it from the
[Publishing](/features/publishing/overview) tab.
PixelGames' backend needs to be live before the App Store launch, select **Publish** at
the top of your workspace to publish it.
Once the web app is published, a **Start publishing to the App Store** button appears
under **Publishing**. Select it to open the Launch wizard.
Confirm the project name and slug, or select **Use existing** if PixelGames already has
one.
Use the same Apple account enrolled in the Apple Developer Program. Replit uses these
credentials only to authenticate with Apple and does not store your password.
Set the app name and bundle identifier, or select **Use existing** if you already created
one in App Store Connect. The bundle identifier can't change later.
Launch selects a valid distribution certificate and provisioning profile automatically,
or creates new ones if none exist yet.
Once every step above is checked off, select **Launch to App Store**. Your build compiles
on Expo's servers, then lands in App Store Connect.
Publishing can take up to 45 minutes. You can keep building with Agent while it runs, and
installing the Replit app gets you a notification when it completes.
When publishing completes you get an email titled **"\[Your name] has invited you to test
PixelGames"**. Select **View in TestFlight** to open the app and install it on your phone.
Once it finishes, your build appears in App Store Connect under your app.
From there it can go two ways: hand it to
[testers on TestFlight](/build/mobile-testflight) first, or go straight to the listing and
[submit it for review](/build/mobile-publish-ios). Nothing is public yet either way, the
build just sits in App Store Connect until you submit it.
## Uploading again later
Changed something in PixelGames? Run the same flow again to get the new version up.
It goes much faster the second time. Your Expo project, Apple account, app, and certificates
are all still filled in, so most steps are just confirming what's already there.
## Troubleshooting
* **No distribution certificates found:** normal on a first launch, select **Create new
certificate** and Launch generates one.
* **Sign in with Apple fails:** confirm the account is enrolled in the Apple Developer
Program, not just a regular Apple ID.
* **Publishing seems stuck:** it can take up to 45 minutes, and builds are queued at peak
times. Check your Expo dashboard under **Builds** before assuming something's broken.
## What's next
Hand the uploaded build to real testers first.
Finish the listing and send it for review.
# Prototype a product idea
Source: https://docs.replit.com/build/prototype-an-idea
Turn a product idea into a focused prototype, collaborate with others, and use feedback to decide what to build next.
⏰ *Estimated time: 15 minutes*
A prototype is the smallest version of a product idea that someone can try and react to.
You will use **Pace** as the example: a premium running tracker that gives runners a polished overview of their training, recovery, and progress.
## What you'll learn
You will learn how to:
* Turn a broad product idea into one testable flow.
* Use Plan mode to scope a prototype before building.
* Review whether Agent's plan is small enough to test.
* Use Canvas annotations and collaboration to collect feedback in context.
* Explore two prototype directions in parallel when the product question is unclear.
The prompt above describes **Pace** — a personal running tracker with a polished home dashboard, an Add Run flow, stats, a placeholder plan view, and realistic San Francisco sample data. Use **Copy the prompt** to paste it into Replit yourself, or **Build on Replit** to open Replit with the prompt already attached.
The prompt is intentionally specific about the visual direction, the screens, what data to mock, and what's a placeholder — that's what gives Agent a clear target to evaluate against.
If you want Agent to think through the product question before writing any code, toggle **Plan** next to the prompt input. Plan mode produces a structured plan you can review before approving the build — useful when the direction isn't fully decided yet.
Review the plan: target user, main flow, what should be real, what can be mocked, and a test checklist. If the plan adds too many features, ask Agent to reduce it.
This prototype is too broad.
Reduce it to one target user, one main flow, and one question I can answer with feedback.
Move the other ideas into a future improvements list.
When Agent finishes, open Preview and use Pace like a first-time visitor.
Check that you can:
* See the Alex Morgan dashboard populated with realistic sample runs.
* Log a new run from the floating **+** or the hero **Start a Run** button.
* See the run appear in **Recent Runs** and the **This Week** stats update.
* Browse the Runs, Stats, Plan, and Profile tabs.
* Resize Preview to a phone-sized width to check the mobile layout.
If something feels off, describe the symptom to Agent and ask for the smallest fix.
Publish when the main flow works.
Once published, open the public URL in a new browser tab to make sure the experience works for first-time visitors before you share it.
Share the URL with one focused task:
> Use Pace as a runner trying to track a week of training. Log one run, browse the dashboard, and tell me what feels confusing or motivating.
Good feedback should help you decide what to build next. Avoid asking, "What do you think?" unless you want vague answers.
Product prototypes get better when teammates can review the same artifact and give feedback in context.
Invite collaborators based on how closely they need to work with you:
* Invite someone to the project when they need to review or help with this prototype only. See [Invite teammates](/build/invite-teammates).
* Invite someone to a workspace when they are part of an ongoing team and need access across projects. See [Team workspaces](/features/collaboration/team-workspaces).
Then, use [Canvas](/design/canvas) when the feedback is visual. Add notes directly on the prototype, annotate the area you want changed, and ask Agent to use those notes when it updates the app.
Use the Canvas annotations on Pace to improve the prototype.
Keep the run-logging flow unchanged.
Apply the notes to the hero section, weekly progress card, and recent runs list only.
After the update, test that logging a run still updates today's progress.
For PMs, this means the prototype works as a shared artifact: designers can annotate flows, engineers can inspect feasibility, and stakeholders can try the published version.
## 🎉 Congratulations
You've turned a product idea into a focused, shareable prototype — a working Pace dashboard that teammates and customers can try and react to. The hard part wasn't this prototype. It was learning how to reduce a broad idea to one testable flow, collect feedback in context, and decide what's worth building next.
## Next steps
Use feedback to choose one next step:
Save run history so it survives refresh.
Give each runner an account with their own progress.
Take Pace to phone-first tracking on iOS or Android.
Turn run history into progress insights.
### Build in parallel
When the product question is about direction, not just implementation, exploring multiple ideas at once helps you compare options instead of committing too early. Replit Agent supports parallel tasks — you can ask Agent to work on more than one prototype, feature, or experiment at the same time and review them side by side.
For how tasks queue, run, and finish, see [Task system](/core-concepts/agent/task-system).
When you are not sure which direction is better, ask Agent to create two parallel tasks. For Pace, you could compare:
* **Motivation-first prototype**: streaks, achievements, encouraging recommendations.
* **Analytics-first prototype**: deeper stats, week-over-week trends, personal records.
Create two parallel tasks for improving Pace as a product prototype.
Task 1 should explore a motivation-first version with streaks, achievements, and encouraging recommendations.
Task 2 should explore an analytics-first version with deeper stats, week-over-week trends, and personal records.
Keep both versions small enough to test today.
For each task, define the user flow, what to build, and how I should evaluate the result.
After both tasks finish, compare them with the same feedback question:
> Which version makes you more likely to come back tomorrow, and why?
## Need further help?
* **The prototype has too many features:** ask Agent to reduce it to one target user and one flow.
* **The audience is unclear:** ask Agent to rewrite the welcome section for one target user.
* **Mocked data hides risk:** ask Agent to list what is real and what is mocked.
* **Feedback is vague:** give reviewers one task and one question.
* **Publishing fails:** use [Troubleshoot publishing](/build/troubleshooting).
## Related
* [Build and publish your first app](/build/your-first-app)
* [Vibe coding 101](/learn/foundations/vibe-coding-101)
* [Invite teammates](/build/invite-teammates)
# Publish your app
Source: https://docs.replit.com/build/publish-your-app
Take your app live with a public URL you can share — in four clicks.
Take your Replit App live at a public URL you can share. The **Publish** button does it in four clicks.
## Publish your app
Open your project. In the top-right of the Project Editor, select **Publish**.
Publishing is available on every plan. The free Starter plan includes 1 published app. Replit Core and Pro remove that limit and add more publishing options.
The Publish dialog opens. Pick your **Domain** — it auto-fills, but you can change it. Choose who can access the app (**Public**, **Invite only**, etc.) and, if you want, enable the feedback widget. Then select **Publish**.
Replit runs through **Provision → Security checks → Build → Bundle → Promote**. This usually takes a minute or two.
Your app is live. Select the `.replit.app` URL in the Publishing tab to open it. Share that URL anywhere — anyone with the link (subject to your access settings) can use the app.
## Update your app
Every time you make changes and select **Publish** again, your app updates at the same URL. Visitors get the latest version on next load — no need to share a new link.
## Next steps
Use your own domain instead of `.replit.app`.
Compare Autoscale, Reserved VM, Static, and Scheduled deployments.
Common publishing problems and how to fix them.
# Troubleshoot publishing
Source: https://docs.replit.com/build/troubleshooting
Diagnose common issues when a Replit app works in Preview, fails to publish, or behaves differently at its public URL.
Publishing turns your project into a public app. If publishing fails, or the public URL behaves differently from Preview, work through the problem in order.
This page is both a Build recovery guide and a deployment troubleshooting reference. Start with the simplest question: does the app work in Preview?
## What you'll achieve
By the end of this page, you should know whether the issue is in your app, publishing setup, production Secrets, deployment type, port configuration, or network/DNS access.
## Start with Preview
Before publishing, verify that the app runs correctly in the Project Editor.
Select **Run** at the top of the Project Editor and open Preview. If Preview does not display your app with a `replit.dev` URL, fix the app before publishing.
Ask Agent to diagnose Preview first:
This app does not work in Preview.
Check the run command, dependency installation, app errors, ports, and missing Secrets.
Fix the smallest issue first and tell me how to verify Preview works before publishing.
If Preview is broken, publishing will not fix it.
## If Preview works but publishing fails
When Preview works but publishing fails, check publishing-specific setup.
### Check logs
Open the **Logs** tab in the **Publishing** pane. Look for stack traces, missing packages, failed commands, missing environment variables, or startup errors.
Paste the relevant error into Agent:
Publishing failed with this log output: \[paste error].
Explain the likely cause.
Tell me whether this is a command, dependency, Secret, port, build, or app error.
Recommend the smallest fix and how I should verify it.
### Check run and build commands
Common mistakes include typos, incorrect flags, wrong entry files, or commands that only work locally.
Review commands in the **Publishing** pane. If your app needs a build command and a start command, confirm both are correct.
### Check production Secrets
Secrets you set in the Project Editor do not automatically carry over to your published app. Add all production Secrets and environment variables in the **Publishing** pane.
Missing Secrets can cause errors about undefined values, failed API calls, database connection failures, login errors, or payment failures.
See [Secrets](/core-concepts/project-editor/app-setup/secrets).
### Check long-running process behavior
Published apps expect your program to keep running. If your program runs once and exits, the platform restarts it automatically.
Make sure your application starts a long-running process such as a web server.
### Check host and port configuration
If you are running a web server, Deployments can automatically detect which port your server uses, but the server must listen on `0.0.0.0`. Listening only on `localhost` or `127.0.0.1` does not work for published apps.
If you have [ports specified in your `.replit` config](/features/project-setup/configuration), automatic port detection is disabled. You must specify a port with `externalPort` set to `80` for the promotion step to pass. Verify your server listens on the specified `localPort`.
Ask Agent to check this carefully:
Check whether this app is configured correctly for publishing.
Verify that the server starts a long-running process, listens on 0.0.0.0, uses the expected port, and matches any .replit port configuration.
Do not change app behavior beyond the publishing fix.
### Check health check timing
Before marking your published app as live, Replit sends an HTTP request to your app. If your homepage takes more than five seconds to respond, the health check can time out and publishing can fail at the final step.
If startup is slow, ask Agent to reduce startup work, move expensive work behind a user action, or cache data where appropriate.
## If publishing succeeds but the public URL is broken
If Preview works and publishing succeeds, but the public URL is broken, compare Preview and production behavior.
Check:
* Production Secrets and environment variables.
* Database connection settings.
* Login callback or redirect URLs.
* Payment webhook or redirect settings.
* API allowlists or CORS settings.
* Files that were written locally instead of stored in a database or storage service.
* Mobile layout and browser differences.
Ask Agent to compare environments:
The app works in Preview but not at the published URL.
Help me compare Preview and production behavior.
Check Secrets, database settings, API calls, login redirects, payment redirects, build output, and logs.
Give me the safest next check.
## Static deployment issues
Static Deployments serve static files such as HTML, CSS, and JavaScript.
If your app includes server-side behavior, API routes, authentication callbacks, database calls from the server, or long-running backend logic, it may not be a good candidate for Static Deployments. Change the deployment type to Autoscale in the **Publishing** pane instead.
Static deployment issues often come from an incorrect public directory or choosing Static for an app that needs a server.
## File and size limits
Reserved VM and Autoscale Deployments support Replit Apps up to 8 GB. Static Deployments support up to 1 GB.
To reduce app size, delete unnecessary files, avoid committing generated output, or use external storage for large assets.
The file system in published apps is not persistent and resets every time you publish. For data persistence, use a database such as [SQL Database](/features/data-and-storage/sql-database).
If uploaded files or generated data disappear after publishing, store them in a database or storage service instead of the app filesystem.
## Access issues with `replit.app` and `replit.dev` URLs
If you have trouble accessing your app at its `replit.app` or `replit.dev` domain, web filters or network restrictions may be the cause.
Try using public DNS resolvers like Google DNS (`8.8.8.8`) or Cloudflare DNS (`1.1.1.1`).
### Change DNS settings
1. Open the **Control Panel**.
2. Go to **Network and Sharing Center**.
3. Select **Change adapter settings** on the left.
4. Right-click your active network connection and select **Properties**.
5. Select **Internet Protocol Version 4 (TCP/IPv4)** and select **Properties**.
6. Choose **Use the following DNS server addresses**.
7. Enter a public DNS server IP address, such as `8.8.8.8` for Google DNS or `1.1.1.1` for Cloudflare DNS.
8. Select **OK** to save your changes.
For more detailed instructions, refer to the [Microsoft DNS configuration guide](https://support.microsoft.com/en-us/windows/change-tcp-ip-settings-bd0a07af-15f5-cd6a-363f-ca2b6f391ace).
1. Open **System Preferences**.
2. Select **Network**.
3. Select your active network connection on the left.
4. Select **Advanced** in the lower-right corner.
5. Go to the **DNS** tab.
6. Select the **+** button to add a DNS server.
7. Enter a public DNS server IP address, such as `8.8.8.8` for Google DNS or `1.1.1.1` for Cloudflare DNS.
8. Select **OK** and then **Apply**.
For more detailed instructions, refer to the [Apple DNS configuration guide](https://support.apple.com/guide/mac-help/change-dns-settings-on-mac-mh14127/mac).
1. Edit the `/etc/resolv.conf` file to add public DNS servers. The exact method varies by distribution.
2. Add the following lines:
```bash theme={null}
nameserver 8.8.8.8
nameserver 1.1.1.1
```
For more information on configuring DNS across different distributions, refer to the [Debian Wiki network configuration guide](https://wiki.debian.org/NetworkConfiguration#Defining_the_.28DNS.29_Nameservers).
### Clear DNS cache
After changing DNS settings, clear the DNS cache to apply the new configuration:
* **Windows**: Run `ipconfig /flushdns` in Command Prompt.
* **macOS and Linux**: Run `sudo systemctl restart NetworkManager` in Terminal. The exact command may vary by distribution.
To enhance regional performance and stability, `replit.dev` URLs for your
Replit Apps may occasionally change during cluster migrations. Once migration
is complete, URLs remain stable for approximately one year unless you
explicitly request a location change.
## Publish a Streamlit application
Streamlit applications work with Replit Deployments. The easiest way to get started is with the [Streamlit template](https://replit.com/@replit/Streamlit?v=1).
Alternatively, set the run command for publishing to:
```bash theme={null}
streamlit run --server.address 0.0.0.0 --server.headless true --server.enableCORS=false --server.enableWebsocketCompression=false main.py
```
If your application uses a different entry file, replace `main.py` with your filename.
## You're done when
* Preview works.
* Publishing completes.
* The public URL loads.
* The main app flow works at the public URL.
* Production Secrets and settings are configured.
* Logs do not show hidden startup errors.
## Related
* [Replit Deployments](/learn/projects-and-artifacts/replit-deployments)
* [Add a custom domain](/build/add-custom-domain)
* [Custom domains](/features/publishing/custom-domains)
* [Secrets](/core-concepts/project-editor/app-setup/secrets)
* [SQL Database](/features/data-and-storage/sql-database)
If you need additional help after trying these steps, visit the [Replit Community Hub](https://replit.com/community) for more resources.
# Use Agent Skills
Source: https://docs.replit.com/build/use-agent-skills
Give Agent specialized knowledge with Agent Skills — attach one to a message, install one in your project, or start a project from one.
Skills teach Agent new capabilities — preferred patterns, library specifics, design system rules, or solutions to problems you've already solved. Attach one to a message, install one in your project, or pick one as a starting point for a new project.
## Use a skill in chat
The fastest way to try skills is to attach one to a single message — no installation needed.
Click the **+** button next to the chat input and select **Use a skill**.
Browse skills by category — Business & finance, Creative, Research & analysis, and more. Select one or more skills to attach to your message.
Type your request and send. Agent uses the selected skills for that message only. A skill chip appears on your message so you can see which skills are active.
For example, attach **Stock Analyzer** and ask Agent to build an equity research report, or attach **Deep Research** to have Agent investigate a topic with structured findings.
Skills attached in chat don't install anything in your project. They're available instantly in every project.
## Start a project with a skill
When you create a new project, you can pick a pre-vetted skill as the starting point. Agent uses the skill's instructions to scaffold the project.
On the new-project screen, click **+** and select **Use a skill**.
Browse curated skills like **AI SDR**, **SEO Auditor**, **Ad Creative**, or **Programmatic SEO**. Select the one that matches the kind of app you want to build.
Tell Agent what you want. Agent builds the project with the skill's patterns and conventions applied from the start.
## Install a skill in your project
When you want Agent to apply a skill consistently across every conversation in a project, install it. Installed skills live in your project's `/.agents/skills` directory and persist across chat sessions.
### Install from the Skills pane
Open the **Skills pane** in the Project Editor and select the **Discover** tab to search community-contributed skills. Find one you want, click **Install**, and it's added to your project automatically.
For example, when building a portfolio site with advanced animations, you might install:
* **GSAP React** — teaches Agent scroll-triggered animations, text reveals, and SVG path drawing
* **Tailwind design system** — gives Agent knowledge of Tailwind CSS patterns for typography, spacing, and view transitions
* **Find skills** — teaches Agent how to discover and install new skills on your behalf
You can also install skills via the [npx skills CLI](https://github.com/vercel-labs/skills):
```bash theme={null}
npx skills -a replit
```
### Create a skill from a conversation
The most natural way to create a skill is through conversation with Agent. After solving a problem together or researching a new library, ask Agent to capture what it learned:
Research best practices for GSAP React integration and create a skill for this project.
Agent uses the full conversation context to write a detailed skill file. This works particularly well after debugging sessions where you've built up shared understanding of a problem.
### Write a custom skill
For advanced use cases, write skills directly following the [Agent Skills specification](https://agentskills.io/specification). Toggle **Show Hidden Files** in the file sidebar, open `/.agents/skills/`, and create a new Markdown file. This gives you complete control over what Agent knows and how it behaves.
## Next steps
Learn when to use skills, proactive vs reactive patterns, and how skills compare to MCP servers.
Technical details on skill structure, management, and how skills work under the hood.
Find skills built by the community at skills.sh.
Read the open standard so you can write skills that work across any agent.
# How to use these docs
Source: https://docs.replit.com/build/use-the-docs
Learn when to use Build, Learn, Reference, Enterprise, Trust and Billing, and Changelog pages in Replit Docs.
Replit Docs are organized around what you are trying to do next.
Use this page when you know you are in the right place, but you are not sure which kind of page will help you most.
## Use Build to make progress
Use [**Build**](/build/welcome) when you want to create, improve, publish, import, or fix something.
Build pages are practical. They show examples, workflows, and next steps for turning an idea into something you can try. Start here when your question sounds like:
* How do I build my first app?
* How do I turn this idea into a prototype?
* How do I add login, a database, payments, integrations, or a custom domain?
* How do I import an existing project?
* How do I update, recover, or publish safely?
Start with a guided project that teaches the build, test, and publish flow.
Learn how to work with Agent in practice.
Save submissions, profiles, settings, orders, or progress after refresh.
## Use Learn to understand concepts
Use [**Learn**](/build/welcome) when you want to understand how Replit works.
Learn pages explain the concepts behind the product: Agent, the Project Editor, Workspaces, published apps, Deployments, Secrets, databases, checkpoints, and how the pieces fit together.
Start here when your question sounds like:
* What is Agent doing?
* How does Replit run my project?
* What is the difference between Preview and a published app?
* Where do secrets, databases, and deployments fit?
* How do checkpoints and rollbacks work?
Understand the main parts of Replit and how they fit together.
Learn how Agent helps you plan, build, explain, debug, and improve projects.
Understand where you edit, run, preview, and manage your project.
Learn how to recover when a change makes your project worse.
## Use Reference for exact details
Use reference-style pages when you need a precise answer: a setting, command, config key, environment variable, limit, API, or SDK detail.
Reference pages are meant to be scanned. They are useful when you already know what you are looking for and need the exact value or option.
Start here when your question sounds like:
* What should this setting be called?
* Which environment variable do I need?
* What command runs this workflow?
* What are the deployment limits?
* Which SDK method should I use?
Store values your app needs but should not expose, such as API keys.
Look up project configuration options and setup details.
Compare ways to publish and run your app.
Look up SDK details when your app needs object storage.
## Use Enterprise for teams and organizations
Use [**Enterprise**](/category/teams) when you need to adopt Replit across a team or organization.
Enterprise pages are for admins, IT and security teams, team leads, and evaluators who care about identity, access, governance, rollout, auditability, and support.
Start here when your question sounds like:
* How do I set up Replit for my team?
* How do permissions work?
* How do I configure SSO?
* How do I review security or audit requirements?
Start here for team setup, collaboration, and organization workflows.
Manage access for people and groups.
Configure single sign-on for your organization.
Review activity and support governance requirements.
## Use Trust and Billing for cost, policy, and security
Use Trust and Billing pages when you need to understand plans, credits, usage, spend controls, privacy, compliance, or security.
Start here when your question sounds like:
* What costs money?
* How do I manage spend?
* How is AI usage billed?
* What security information can I share with my team?
* What policies apply to Replit?
Understand plans, billing, and usage-based charges.
Control usage and avoid surprises.
Understand how AI usage is billed.
Review security information for teams and organizations.
## Use Changelog to see what changed
Use [**Changelog**](/updates/2026/05/01/changelog) when you want to see recent product updates.
Changelog entries announce what changed. They are not always the canonical how-to page. When an update changes how you build, follow the linked Build, Learn, or Reference page for current guidance.
See recent Replit product updates.
## If you are not sure where to start
If you want to build something, start with [Build and publish your first app](/build/your-first-app).
If you want to understand the product, start with [How Replit works](/build/welcome).
If you need an exact setting, command, or limit, search for the specific feature name.
If Agent changed the wrong thing, start with [Checkpoints and rollbacks](/features/version-control/checkpoints-and-rollbacks). If publishing fails, start with [Troubleshoot publishing](/build/troubleshooting).
# Welcome to Replit
Source: https://docs.replit.com/build/welcome
Replit is the fastest way to go from idea to app, website, dashboard, mobile experience, slide deck, video, or prototype.
If you have an idea you want to build, you are in the right place.
Replit is the fastest way to go from idea to app, right from your browser. You can also use Replit to create websites, dashboards, mobile experiences, slide decks, animated videos, prototypes, and more.
Your journey with Replit starts with a prompt. Describe your idea, and Replit will help you shape it, build a first version, publish it, and share it with the world.
This way of building is often called vibe coding: you bring the idea, taste, and judgment; Agent helps turn it into software you can test and improve.
## See what you can build
Replit can help you create apps that work and look polished enough to share.
**[Premium booking app →](https://luxury-ride-finder.replit.app/)** Browse cars, search availability, and reserve a high-end rental experience.
**[Running tracker →](https://run-tracker-pace.replit.app/)** Track runs, progress, recovery, and training insights in a polished product dashboard.
**[Coaching landing page →](https://rachel-jones-coach.replit.app/)** Launch a beautiful page for a service business with testimonials, offers, and a consultation call to action.
Create your Replit account and ship your first app from a single prompt.
## Getting started
Pick the project closest to what you want to make and open the guide. Each one walks you from a single prompt to a published URL you can share — no setup, no decisions to agonize over.
A guided first project from prompt to a live URL.
Publish an offer or waitlist page people can respond to today.
Turn a concept into a working flow you can test this week.
Import a frame, see it as a working app, refine from there.
Turn a spreadsheet, database, or API into useful insight.
Make something designed for phones — no Xcode, no Android Studio.
## Import an existing project
Already have code, a design, or a project on another platform? Import it into Replit and continue with Agent.
Bring a public or private repository into Replit and get it running.
Convert a Figma frame into an interactive React app.
Pull in the GitHub repository behind a Vercel project.
Export from Bolt to GitHub, then import in Replit.
Export from Lovable to GitHub, then import in Replit.
Upload a `.zip` archive and continue building with Agent.
## Your next step
If you want a guided first project, start with [Build and publish your first app](/build/your-first-app).
If you came with a specific goal, choose the card that best matches what you want to make.
To understand how the documentation is organized, see [Guide to Replit Docs](/build/use-the-docs).
# Build and publish your first app
Source: https://docs.replit.com/build/your-first-app
Build a premium running tracker with Agent, test it in Preview, and publish it to a URL you can share.
⏰ *Estimated time: 10 minutes*
By the end of this guide, you will have a small app published at a URL you can share.
You will build a running tracker. The app is focused on purpose: it gives you a complete first build without needing to plan a large project.
## Before you start
You need a [Replit account](https://replit.com).
The goal is to finish one complete loop:
* Build with [Agent](/features/agent/overview),
* Test the app,
* Publish, and share.
Agent is Replit's AI builder. You describe what you want, and Agent helps create, explain, and fix the app.
## Build the first version
The prompt is split into four short sections so Agent gets clear intent instead of a wall of text:
* **Context** — what the app is and who it's for.
* **Visual direction** — how it should look and feel.
* **Scope** — which screens to build and what each should show.
* **Data and navigation** — what sample data to use and how the layout adapts to mobile and desktop.
Agent may show a plan before it builds. Check that the plan includes the Home, Add Run, and Progress screens, sample runs and shoe mileage, and the mobile + desktop layouts.
If something important is missing, ask Agent to update the plan before it starts building.
If you want Agent to think through the design before writing any code, toggle **Plan** next to the prompt input. Plan mode lets Agent ask clarifying questions and produce a structured plan you can review before approving the build — useful for projects bigger than this one.
Learn more in [Plan mode](/features/agent/plan-mode).
Agent plans, generates, and wires up the app. This usually takes a few minutes — you can follow along in the chat panel as it works.
When Agent finishes, open [Preview](/core-concepts/project-editor/editor-and-tools/preview) and use the app like a visitor. Preview is where you test the app while you are building, before publishing it.
Check that you can:
* Open Add Run and choose outdoor or treadmill.
* Enter distance, duration, and notes.
* Save the run.
* See the run appear in Recent Runs.
* See the weekly distance and shoe mileage update.
* See an encouraging recommendation or insight.
* Refresh the page and use the app again.
* Resize Preview to a phone-sized width.
If something breaks, describe the symptom to Agent. You do not need to diagnose the code yourself.
Want to explore visual variations before publishing? See [Explore suggestions](/design/explore-suggestions) to generate alternative looks side by side and apply the one you like.
When Preview works, you can publish in two ways:
* **From the Agent chat:** after Agent finishes the build, it suggests deployment with an inline **Publish** card. Confirm your subdomain, choose who can access the app, and select **Publish**.
* **From the Tools & files panel:** open **Publishing** to configure the same options. Use this path if you've dismissed the inline card or want to publish later.
Either way, publishing creates a public version of your app with a URL you can share.
Open the public URL in a new browser tab and repeat the same checks. The app should work outside the Project Editor before you share it.
If the published app behaves differently from Preview, check the publishing logs and any production settings the app needs. For common publishing problems, see [Troubleshoot publishing](/build/troubleshooting).
## 🎉 Congratulations — you shipped your first app
You went from a single prompt to a live, shareable URL. Along the way you:
* Described Runwell to Agent and got a working first version back.
* Tested it in Preview to confirm runs save and weekly totals update.
* Published the app and opened it at its public URL.
That's the loop every Replit project follows — prompt, test, improve, publish.
## Next steps
Explore visual variations of Runwell and apply a new design without rebuilding.
Run multiple Agent tasks at once so different parts of the app move forward together.
Learn how to guide Agent from idea to working app.
Save run history after refresh.
# Task system
Source: https://docs.replit.com/core-concepts/agent/task-system
Agent breaks work into tasks you can review, run in the background, and apply back to your main version.
## What is the task system?
A **task** is a unit of work that Agent can plan and execute. Tasks let Agent separate a larger goal into smaller pieces, so you can review each piece before it changes your app.
Agent can work in two places: the **main thread** and **background tasks**. The main thread is the conversation where you describe what you want, refine direction, and decide what gets applied to your main version. Background tasks are separate threads where Agent works independently in isolated copies of your project.
Use the main thread for direction and decisions. Use background tasks for execution that can happen in parallel. Background tasks do not change your main version until you review and apply them.
The task system is how Agent organizes that work. When you describe what you want to build, Agent can split your request into discrete tasks and place them on a board with columns: **Drafts**, **Active**, **Ready**, and **Done**.
Each task moves from left to right as it progresses, so you can see at a glance what's planned, what Agent is working on, what's ready for your review, and what's finished. Background tasks queue automatically based on your plan, so work keeps moving without crowding the main thread.
When a task is ready, you review the changes and apply them back to your main version, or dismiss them if they're not what you wanted.
## How background tasks work
Start a conversation in the main thread, or create a new thread and plan there. Agent reviews your project, identifies what would have the most impact, and writes up a detailed plan for each task, including what it will do and what "done" looks like.
Agent proposes a set of tasks, each with a title, description, and a detailed plan you can inspect with **View plan**. Review the full list, then choose:
* **Accept tasks**: start all tasks and send them to the background
* **Revise plan**: ask Agent to adjust the tasks before starting
Once accepted, tasks start running in isolated copies of your project. Core runs 1 background task at a time, while Pro supports up to 10 concurrent background tasks. Your main version stays untouched until you choose to apply changes. You can track progress in two ways:
* **Thread view**: each task runs in its own thread with a live status indicator, so you can follow along or jump into any task's conversation
* **Board view**: a column-based board showing all tasks organized by status: **Drafts**, **Active**, **Ready**, and **Done**
When a task finishes, Agent shows you what it did: the work log, test results, and a live preview of the changes. You decide what happens next:
* **Apply changes to main version**: merge the task's work into your project
* **Dismiss**: discard the changes if they're not what you wanted
Agent handles conflict resolution automatically when applying changes from multiple tasks.
## Learn more about tasks
Review Drafts, Active, Ready, and Done tasks from the board.
Understand task states, queued work, applying changes, archiving, and cancelling.
Start suggested next tasks and manage many follow-ups at once.
## What you can build
The task system works for any project. Here are a few patterns where it shines:
* **Ship large features in smaller pieces**: split authentication, a dashboard, and an API layer into separate tasks so Agent can work through them cleanly
* **Plan complex projects**: break a large feature into well-scoped tasks with dependencies, then execute with confidence
* **Compare different design directions**: use separate tasks to try multiple UI approaches, then pick the best result
## Frequently asked questions
No. The main thread works exactly the same. Agent automatically creates tasks behind the scenes when it helps. You can also use [Plan mode](/features/agent/plan-mode) to see and manage tasks explicitly.
Core runs 1 background task at a time. Pro supports up to 10 concurrent background tasks. Once you hit your plan's limit, additional tasks queue and start as slots open up.
Agent uses AI-assisted conflict resolution. It understands what each task was trying to accomplish and applies the changes intelligently. If something looks off, you can ask Agent to fix it in the thread.
Yes. Agent automatically detects dependencies. For example, a task that builds a dashboard depends on the task that creates the database schema. Dependent tasks wait until their prerequisites complete.
**Archive** applies to planning sessions: drafts that haven't started building yet. Archived planning sessions are preserved and can be restored from the **Done** column.
**Cancel** applies to tasks that have already moved from planning into building. Cancelling stops the task and discards its work, and cancelled tasks can't be restored. Start a new task instead.
## Availability
| Capability | Core | Pro |
| ----------------------- | ---- | --- |
| Task planning | ✅ | ✅ |
| Background tasks | ✅ | ✅ |
| Active background tasks | 1 | 10 |
# Development URLs
Source: https://docs.replit.com/core-concepts/project-editor/app-setup/development-urls
Learn how to use development URLs to preview and share your in-progress app.
Development URLs allow you to preview and test your applications while building them. These URLs follow the format `UUID.servername.replit.dev` and provide a live preview of your app as you develop.
To view your development URL, click the `{...}.replit.dev` text in the location bar.
## Understanding development URLs
Development URLs are only live while you actively work on a Replit App. The URL can change each time you reopen the app. Development URLs allow you to view your work in a browser as you build and test.
By default, development URLs are public to the web. Anyone with the URL can view your app while you're building it. This makes it easy to share your work-in-progress with collaborators, testers, or stakeholders.
Development URLs are temporary and intended for testing only. For sharing applications with others, it's recommended to [publish your app](/learn/projects-and-artifacts/replit-deployments) instead.
### Educational banner
When you open a development preview in a new tab, an educational banner appears at the top of the page. This banner helps you understand the purpose of `.replit.dev` URLs as you build and test your applications. The banner provides context about development URLs and their intended use during the development process.
## Making development URLs private
You can restrict access to your development URL to keep your in-progress work secure.
To make your development URL private:
1. Open **Developer tools** in the Project Editor.
2. Select the **Networking** tab.
3. Enable the **Private development URL** toggle.
When enabled, your development URL requires authentication to access. Only you and authorized team members can view your in-progress work.
Enterprise customers can require private development URLs for all projects, enhancing security by ensuring development work remains protected within the organization's environment.
## Best practices
* **Use private URLs** for sensitive or proprietary applications during development
* **Use public URLs** to share your work with external stakeholders while you are actively building or when you want to test your app in a different browser
# Add templates and inspiration to your design
Source: https://docs.replit.com/design/add-templates-and-inspiration
Use the library panel to add starter templates to your design, or pull in Mobbin-curated app screens as visual reference while you explore.
Mid-exploration, the library panel keeps you moving without leaving your design: add a starter template to build on, or pull in screens from real apps to steer by.
Open the **library panel** in Replit Design. It has three tabs: **Templates**, **Inspiration**, and **Library** (your own creations). The first two look similar but behave differently.
## Add a template
Search templates or browse by kind: posters, social posts, landing pages, mobile, banners, and prototypes. Click or drag one to add it to your design; it lands as a live, editable frame you can restyle and build on.
## Add inspiration
App screenshots from real products, curated by Mobbin. Click one and it lands on the canvas as a static image to reference, not part of your design. Use it to steer: point at it in chat, or reference it in your next generation (*"a hero like this, but for a bakery"*).
The [Library panel reference](/design/library-panel) has the full Templates vs. Inspiration comparison.
## Next steps
* [Explore suggestions](/design/explore-suggestions): branch new directions from the frame you added.
* [Chat about your design](/design/chat-about-your-design): steer a template or reference an inspiration in your own words.
# Apply a design system to an existing app
Source: https://docs.replit.com/design/apply-design-system
Rebuild an existing artifact under your design system — from the canvas or the composer — and what the time and credits warning means.
A design system isn't just for new work: you can apply it to an existing artifact, and Agent rebuilds the artifact's look under the system.
Open the project with the artifact you want to restyle.
From the canvas: select the target frame, open its **⋯** menu, and choose **Apply design system**. Or ask for it in the composer (an Agent rebuild): *"apply my design system to this app."*
Applying a system to existing work is a real rebuild — you'll see a **time and credits warning** before it starts. That's expected: Agent is re-generating the artifact's styling layer, not swapping a stylesheet.
Check key screens against the system. Continued edits keep using the system — if you spot drift back to old styling, flag it in the chat.
# Build your design
Source: https://docs.replit.com/design/build-your-design
Turn the winning frame into real software: build it as a new app, or apply its look to an app you already have.
A design frame is never just a picture, it's the spec for real software. When a frame is right, hand it to Agent: select the frame, choose **Build…** in its action bar, and pick a path:
* Build the design as a new app in the same project
* Apply the design's look to an app you already have
* Roll back safely either way, Agent makes a checkpoint before it starts
## Two paths from frame to app
The **Build…** menu on a selected Design frame covers both:
### Build this design
Picking **Build this design** starts a new artifact from the frame. Agent builds the layout, styling, and assets into a live, running app that lands in your project's artifact list.
### Apply to an existing app
The menu also lists every artifact in the project. Picking one applies the design to it: Agent rewrites the artifact's code to match the frame, and the Design frame stays on the canvas for reference. This is how you restyle an app you've already built without starting over.
## The flow
Settle on the frame you want to ship. Compare candidates side by side on the canvas first — building closes this round of exploration, though Agent makes a checkpoint so you can always roll back.
Select the frame, choose **Build…** in its action bar, and pick your path: a new artifact or an existing one. Agent builds the design, layout, styling, and assets, and reports its progress in the chat.
Agent reports what it changed and makes a checkpoint. Open the result to see the design live, and keep chatting to adjust anything that didn't translate.
Building a new app from a Design frame requires Core or Pro; applying a design and every other Replit Design capability work on every plan. See [Billing](/billing/ai-billing) for plan details.
## After you build: make it real
Building the frame gives you a running app with your design in place. The mockup only pretended to work; now Agent can add the real thing. Ask for what you need in chat:
* **Let people sign in**: add user accounts with [Replit Auth](/features/auth-and-identity/authentication), users sign in with their Replit accounts with zero setup, or bring your own provider.
* **Save real data**: store and retrieve orders, messages, and preferences with the built-in [Database](/features/data-and-storage/sql-database).
* **Charge for it**: add payments and subscriptions with [Monetization](/features/monetization/overview) integrations.
* **Connect other services**: Agent activates [integrations](/features/integrations/overview) automatically based on your prompts, from email to Slack to Google services.
## Ship it and grow it
When the app works, put it in front of people and keep improving it:
* **Publish**: ship it from the [Publishing tool](/features/publishing/overview), then see [After you publish](/features/publishing/after-you-publish) for updating the live app.
* **Get a real address**: buy or connect a [custom domain](/features/publishing/custom-domains).
* **Get found**: run the [SEO Agent](/features/publishing/seo-agent) for a technical audit with one-click fixes.
* **Hear from your visitors**: add the [feedback widget](/features/publishing/feedback-widget) so people can report issues and ideas you can send straight to Agent.
* **Keep it healthy**: track status, performance, and uptime with [published app monitoring](/features/publishing/monitoring-a-deployment).
## Next steps
* [Design vs. Build](/design/design-vs-build): when to start in each entry point.
* [Create a design system](/design/create-a-design-system): extract the design you shipped so the next one starts on brand.
# Canvas
Source: https://docs.replit.com/design/canvas
Open, navigate, and add to the canvas, the infinite surface where Replit Design displays your frames.
The canvas is the infinite pan-and-zoom surface where Replit Design displays your frames. Everything you design lives here: generate frames, drag them around, zoom in on a detail, and iterate until one is right.
## Open the canvas
The canvas is the first thing you see in Replit Design. In a project, select **Design** in the header and the canvas fills the pane; select **Build** to switch back to your running app.
Starting fresh at [replit.com/design](https://replit.com/design) prompts you to create a new design, which opens on the canvas. See [Design vs. Build](/design/design-vs-build) for when to use each surface.
## What lives on the canvas
* **Frames**: every tile on the board. A frame can be a design mockup, a web app, a mobile app, slides, an image, a video, or a vector graphic. Generate them from a chat prompt, the toolbar's [Generate menu](/design/toolbar#generate), or the [library panel](/design/library-panel). Everything you do to a frame, Build, Focus, suggestions, happens through the frame itself: see [Frames](/design/frames).
* **Drawings and notes**: markup you add with the [Draw tool](/design/toolbar#draw), such as sketches, arrows, shapes, and sticky notes. Agent reads your markup, so you can circle a problem area and ask for a change.
* **The chat panel**: Agent chat docked alongside the canvas. Selecting frames before sending a message attaches them as snapshots so Agent has visual context.
For what each component is and how they fit together, see the [components overview](/design/core-components).
## Navigate the board
Pan, zoom, and select work from any tool unless noted.
**Panning:**
* Trackpad: two-finger drag.
* Mouse: middle-click-and-drag, or hold spacebar and left-click-drag.
* [Pan tool](/design/toolbar#pan): click-and-drag with the left mouse button.
**Zooming:**
* Trackpad: pinch.
* Mouse: `Ctrl` (or `Cmd` on macOS) + scroll wheel.
* Keyboard: `Cmd`/`Ctrl` + `+` to zoom in, `Cmd`/`Ctrl` + `-` to zoom out, `Cmd`/`Ctrl` + `0` to reset zoom.
Zoom is anchored on the cursor, so the spot under the cursor stays put as the rest of the board scales around it.
**Selecting:**
* Single frame: click it with the [Interact tool](/design/toolbar#interact).
* Multi-select: hold `Shift` and click each frame, or drag a marquee rectangle across the board.
* Deselect: click an empty area, or press `Escape`.
Selecting one or more frames surfaces the [per-frame action bar](/design/frames#per-frame-action-bar) and attaches those frames to the next Agent message as snapshots.
### Keyboard shortcuts
| Shortcut | Action |
| ------------------------------ | ------------------------------------ |
| `V` | Activate the Interact tool |
| `H` | Activate the Pan tool |
| Hold `Space` + drag | Pan from any tool |
| `Cmd` / `Ctrl` + scroll | Zoom |
| `Cmd` / `Ctrl` + `+` | Zoom in |
| `Cmd` / `Ctrl` + `-` | Zoom out |
| `Cmd` / `Ctrl` + `0` | Reset zoom |
| `Shift` + click | Add a frame to the current selection |
| `Cmd` / `Ctrl` + `Shift` + `C` | Copy the selected frame as a PNG |
| `Escape` | Deselect |
## Right-click menu
Right-click anywhere on the board to open a context menu. The menu is contextual, so the actions adapt to what's under the cursor: a frame gets frame actions, while empty canvas gets board-level actions, and app frames add **Refresh artifact**.
On a selected frame the menu includes:
| Action | Shortcut | What it does |
| ------------------------------ | ----------------------------- | ------------------------------------------------------------ |
| Edit | | Switch to the Edit tool to select elements inside the frame. |
| Chat | | Chat with Agent about the frame. |
| Focus | | Enter [focus mode](/design/frames#focus-mode) on the frame. |
| Cursor chat | `/` | Start a quick chat at the cursor position. |
| Reorder | | Move the frame forward or backward in the stacking order. |
| Copy, Paste, Duplicate, Delete | `⌘C`, `⌘V`, `⌘D`, `Backspace` | Standard clipboard and frame management. |
| Export as… | | Export the frame as a file. |
| Select all | `⌘A` | Select every frame on the board. |
### Export a frame as PNG
Save any artifact or design frame as a PNG image. This is useful for sharing a preview in a doc or chat, capturing a snapshot before you iterate further, or sending a screenshot to a teammate.
Select the artifact or design frame you want to export, then wait for it to finish loading.
Select **Export** in the frame's action bar. You can also right-click the frame and select **Export as…** > **PNG**. The image downloads to your computer with a filename based on the frame's name.
To copy the selected frame as a PNG instead of downloading it, press `Cmd+Shift+C` (or `Ctrl+Shift+C` on Windows and Linux).
The exported PNG matches what the frame currently shows on the canvas. If your app or design is still loading, wait for it to fully render before exporting.
## The canvas and the live app
The canvas and the live app preview share the same pane, and a few modes bridge them:
* **Focus mode**: the **Focus** action on a selected frame expands it to fill the view. Select **Exit focus** at the top of the board to return to the canvas.
* **Read-only mode**: when the canvas is locked inside a background-task context, iteration actions hide and only Focus remains.
Building a new app from a Design frame requires Core or Pro; every other canvas capability works on every plan. See [Billing](/billing/ai-billing) for plan details.
**Reference**
* [Components overview](/design/core-components): the building blocks and how they fit together.
* [Frames](/design/frames): frame kinds; the per-frame action bar; Build and Focus.
* [Elements](/design/elements): the individual pieces inside a frame.
* [Toolbar](/design/toolbar): the full tool catalog.
**Learn**
* [Explore suggestions](/design/explore-suggestions): branch new directions from a selected frame and apply the winner to your app.
* [Design vs. Build](/design/design-vs-build): when to use each surface.
# Chat about your design
Source: https://docs.replit.com/design/chat-about-your-design
Chat with Agent about your design, from the main chat with a frame attached or with the Chat tool aimed at a single element.
Suggestions are great for exploring; chat is how you steer precisely. There are two ways to chat, matched to how much of the design you're talking about: the main chat for a whole frame, and the Chat tool for a single element inside it.
## Chat about a frame from the main chat
Select the frame you're discussing and it attaches to the main chat as a chip. Then describe the changes you want to see, like you'd brief a designer mid-review: *"warmer colors"*, *"the hero feels empty"*, *"try the nav on the left."*
## Chat about an element with the Chat tool
Select **Chat** in the toolbar, then click an element inside a frame, such as a button, a heading, or an image. The rest of the board dims, the element appears as a chip in a composer, and your message applies to just that piece.
## While it generates
Generation states show in the chat as Design works. When the result lands as a new frame, keep chatting, switch to [suggestions](/design/explore-suggestions), or [build it](/design/build-your-design).
# Replit Design components
Source: https://docs.replit.com/design/core-components
Meet the building blocks of Replit Design: Canvas, frames, elements, chat, ambient intelligence, the toolbar, and the library panel, and how they fit together.
At its core, Replit Design is an infinite canvas that displays frames. Everything else on this page is how you act on those frames:
* Generate and arrange design frames on an infinite board
* Iterate on each frame with chat, suggestions, and the toolbar
* Target any piece of a frame and change just that piece
* Pull in templates and real-product inspiration without leaving the board
## The board at a glance
Seven components make up the Replit Design workspace:
* **[Canvas](/design/canvas)**: the design view of the Project Editor, an infinite pan-and-zoom board that holds every frame, shape, and note.
* **[Frames](/design/frames)**: every tile on Canvas. Frames can be live artifacts (websites, slides), design mockups, images, videos, or vector graphics.
* **[Elements](/design/elements)**: the individual pieces inside a frame, such as headings, buttons, images, and form fields.
* **[Chat](/design/chat-about-your-design)**: the Agent chat docked on the canvas. Describe what you want to make, or select a frame and ask for small or larger edits; minimize it for a full canvas.
* **[Ambient intelligence](/design/explore-suggestions)**: suggested next steps that appear beside a selected frame, each one click from generating a new direction. See [Explore suggestions](/design/explore-suggestions) for how it works.
* **[Toolbar](/design/toolbar)**: the floating bar at the bottom of Canvas with the Interact, Pan, Chat, Draw, Edit, and Generate tools.
* **[Library panel](/design/library-panel)**: starter templates, Mobbin-curated inspiration, and your own past creations, ready to drop onto the canvas.
## How they fit together
Each component picks up where the previous one leaves off, from a blank board to a design you can build.
### 1. Put frames on the canvas
Generate frames from a chat prompt or the toolbar's **Generate** menu. A frame can be a design mockup, a web app, a mobile app, slides, an image, a video, or a vector graphic.
### 2. Iterate on a frame
Select any frame to work on it individually. Chat about it in your own words, follow a [suggestion](/design/explore-suggestions) to branch a new direction, or **Focus** it to work up close. When it's right, **Build** it into a live app.
### 3. Edit, annotate, or generate with the toolbar
The toolbar covers three jobs: **Edit** selects a single element inside a frame and opens the Visual Editor, **Draw** annotates the board with sketches, arrows, and sticky notes that Agent reads, and **Generate** creates the images, videos, and vector graphics your design needs.
### 4. Pull inspiration from the library panel
For inspiration and starting points, open the library panel. Templates land on the canvas as live, editable frames; Mobbin-curated inspiration lands as a static reference image to steer your next generation.
## Explore each component
The infinite board where you generate, arrange, and iterate on frames.
Frame kinds, the per-frame action bar, Build, and Focus.
Select and edit the individual pieces inside a frame.
Brief Agent about the board, a frame, or a single element.
One-click suggested next steps beside your selected frame.
The full tool catalog, keyboard shortcuts, and board gestures.
Templates, Mobbin-curated inspiration, and your own creations.
## Next steps
* [Design your first screen](/design/design-your-first-screen): generate your first frames from a prompt.
* [What is Replit Design](/design/what-is-replit-design): the full journey from prompt to on-brand app.
# Create a design system
Source: https://docs.replit.com/design/create-a-design-system
Create a design system from scratch with a prompt, or extract one from a mockup you already like — then save it to your workspace.
There are two ways to create a design system, depending on where your brand lives today.
## From scratch: prompt it from the home page
Start here when the system exists in your head (or your brand guidelines) but not in any design yet.
From the Replit home page, describe the design system you want in the prompt box — for example: *"Create a design system for Velocity, a premium supercar rental brand."*
Agent asks a short set of questions about your system — brand personality, colors, typography preferences. You can also point it at a source: a Figma URL, a website, code, reference images, brand assets, or an existing DESIGN.md.
## From a mockup: extract the design system
Start here when you already have a design you love — a generated frame, a dropped template — and want everything else to match it.
On the canvas, click the mockup whose look you want to capture.
Open the frame's **⋯** (three-dot) menu and choose **Extract design system**. Agent distills the mockup's tokens, colors, and typography into a living style guide — and applies it across the design.
## Review and save
Either way, review what was generated: a living style guide with your colors (by role — primary, accent, muted…), typography scale, and tokens (stored in `tokens.json`, feeding the CSS variables). Then select **Save design system** to keep it in your workspace.
## Next steps
* [Apply it to an existing app](/design/apply-design-system)
* [What's inside a design system](/design/design-md)
# Design system contents and DESIGN.md
Source: https://docs.replit.com/design/design-md
What a generated design system contains — tokens, colors, typography, components — and how DESIGN.md represents it in your project.
## Contents of a design system
A generated design system includes:
* **Tokens** — named values (colors, spacing, radii) the rest of the system references
* **Colors** — the palette with roles (primary, surface, accent…)
* **Typography** — families, sizes, weights
* **Example components** — 2–3 built components showing the system in use
* **Logos and brand assets** — included when you provide them clearly
## How it's stored
A generated system lives in your project as a **living style guide**: tokens in `tokens.json` feed the CSS variables (e.g. `src/index.css`) that your components consume. `DESIGN.md` is the document representation — readable by you, usable by Agent.
## Using DESIGN.md as a source
An existing `DESIGN.md` can seed a new design system: point at it when [creating one](/design/create-a-design-system), alongside other sources like a Figma URL, a website, code, or reference images.
# Design systems, explained
Source: https://docs.replit.com/design/design-systems-explained
A design system captures your tokens, colors, typography, and components so every design you generate stays on brand.
A design system is your brand, made machine-usable. It captures the decisions that make your product look like *your* product — color tokens, typography, spacing, and example components — so Design can generate on-brand results instead of generically pretty ones.
## What a design system contains
A generated design system includes:
* **Tokens** — the named values (colors, spacing, radii) everything else references
* **Colors** — your palette, with roles (primary, surface, accent…)
* **Typography** — families, sizes, and weights
* **Example components** — a few built components (buttons, cards…) showing the system in use
* **Logos and brand assets**, when you provide them
The system can also be expressed as a `DESIGN.md` file in your project — see the [reference](/design/design-md).
## Where design systems come from
Two ways to create one:
1. **From scratch** — prompt for one from the Replit home page, and answer a short questionnaire about your brand.
2. **From an existing design** — extract a system from a mockup you already like (three-dot menu on the frame → extract).
You can also seed one from a source: a Figma URL, a website, code, reference images, or an existing `DESIGN.md`. Details in [Create a design system](/design/create-a-design-system).
## When a design system pays off
* **You design more than once.** The second design is where inconsistency starts; a system keeps generation N looking like generation 1.
* **A team designs together.** Save the system to your workspace and everyone generates from the same brand.
* **You apply it to existing work.** An existing artifact can be rebuilt under the system — see [Apply a design system](/design/apply-design-system), including what the time/credits warning means.
## Where they live
Design systems are saved to your workspace, selectable when you create a new artifact, and switchable per project.
# Design vs. Build
Source: https://docs.replit.com/design/design-vs-build
Learn the difference between Design and Build in a Replit project, and when to start in each.
Every Replit project has two entry points, side by side in the header: **Design** and **Build**. Design is where you shape how your software looks; Build is where Agent makes it work. They open the same project, so nothing you design is stranded in a design tool.
## What is Design?
[Design](/design/what-is-replit-design) shows the canvas, where you generate design frames from a prompt, explore variants, and refine the winner, all before committing to code.
Design is perfect for:
* **Testing your ideas quickly**: visualize your app's design before building functionality
* **Creating polished websites**: landing pages, portfolios, restaurant menus, event pages
* **Fine-tuning your design**: adjust colors, layouts, and content instantly
Design mockups look and feel like real pages, but they don't store data or connect to external services yet. When you're happy with how everything looks, build the design into a full app with one click. The steps below show you how.
## What is Build?
Build is where your creation runs as a real, working application that can save data, let people sign in, and connect to other services.
Use Build when your app needs:
* **User accounts**: let people create accounts and log in
* **Saved information**: store data like orders, messages, or user preferences
* **Connections to other services**: process payments, send emails, or pull in data from other apps
* **Complex tasks**: run an online store, manage bookings, or power a dashboard
## Using both together
Design and Build work on the same project, so you don't have to choose one or the other. Start with the look and evolve into a full app.
Start in Design to quickly visualize your idea. Focus on how your app looks and feels: the layout, colors, buttons, and user experience.
Follow a [suggestion](/design/explore-suggestions) to explore new directions for a selected frame, or select the **Edit** tool and click an element to adjust it in the [Visual Editor](/design/visual-editor). You can also [chat with Agent](/design/chat-about-your-design) to describe the changes you want.
When you're happy with your design and ready to add real functionality, select **Build…** on the frame. Create a new artifact or apply the design to an existing one; Agent adds the ability to save data, handle user accounts, and connect to services, all while keeping your design intact.
Agent will prompt you to convert when you try to add a database or advanced features to a mockup.
Once your app is built, publish it so anyone can access it online. Replit handles all the technical infrastructure so your app works reliably for your audience.
## When to start in each
* The look is the hard part
* You want to see your idea quickly
* You want to explore and compare directions
* Speed is your priority
* The behavior is the hard part
* Your app must save data from day one
* People need to log in
* You're connecting to other services
**Not sure which to pick?** Start in Design. It's faster, and you can always build the design into a full app later. Your work is never wasted, it carries over when you build. And it works the other way too: get an app working in Build, then restyle it in Design.
## Key differences
| Feature | Design (mockups) | Build (apps) |
| -------------------------- | --------------------------- | ---------------------------------- |
| **Speed** | A few minutes | About 10 minutes for complete apps |
| **Data storage** | Visual only (no saving) | Saves and retrieves real data |
| **User accounts** | Shows what login looks like | Actual login functionality |
| **Connecting to services** | Not available | Payments, emails, external data |
## Next steps
The full journey from prompt to on-brand app
The board where your frames live
The guided flow from frame to working app
Explore what Agent can build for you
# Design your first screen
Source: https://docs.replit.com/design/design-your-first-screen
Generate your first design frames from a prompt on Replit Design, explore the AI's suggestions, and keep iterating, no design experience needed.
In this quickstart you'll generate your first design frames from a plain-language prompt, then use the AI's suggestions to explore new directions with one click. No design experience needed, you steer by choosing what you like.
Go to [replit.com/design](https://replit.com/design). The prompt box front and center is where your design starts.
Already in your workspace? Select **Design** under the create input on your workspace home instead. The input switches to design mode and a **Design** chip appears in the prompt box.
Write your prompt like you'd brief a designer friend: what it is, who it's for, and any vibe you have in mind. For example: *"A landing page for a supercar rental service, bold, dark, cinematic."* Then submit.
Agent picks up your prompt and starts building, reporting its progress in the chat panel as it works.
Your design lands as a frame on the canvas. Give it a moment, then look it over at full size.
Select the frame you like most. Suggestions appear for what to design next; click one and a new direction generates as a fresh frame, leaving your original untouched. Keep clicking until something feels right.
## Next steps
* [Explore suggestions](/design/explore-suggestions): go deeper on the exploration loop.
* [Start from a template](/design/start-from-a-template): begin from a pre-built design instead of a blank prompt.
* [Build your design](/design/build-your-design): turn the winning frame into a working app.
# Elements
Source: https://docs.replit.com/design/elements
Select and edit the individual pieces inside a frame on Canvas.
An **Element** is an individual piece inside a frame such as a heading, a button, an image, a form field, or any other component the frame renders. Elements are what you target when you want to change one piece of a frame without regenerating the whole thing.
## Selecting an element
Use the [Edit tool](/design/toolbar#edit) on the toolbar. With Edit active, click inside a live frame to select the element under the cursor. The selected element gets a highlight outline and a small inline prompt where you can ask Agent to change it.
Edit is disabled until at least one frame exists on Canvas, and is desktop-only.
## Acting on a selected element
### Ask Agent to change it
Ask agent to update the element's copy, color, layout, spacing, or behavior with the inline prompt.
### Swap an image directly
Select an image element and the Visual Editor's **Image** section shows the source path with an **Upload Image** button, so you can swap the file without writing a prompt.
## Visual Editor
Selecting an element opens the **Visual Editor** — a right-side panel paired with the inline prompt. The panel groups every control into clear sections so you can find the one you need faster: **Text**, **Layout**, **Color**, and **Border**. (The **Image** section also appears when you select an image element.)
### Layout
The **Layout** section is where you adjust how children sit inside a container without going through Agent. Select a flex container, expand Layout, and you get:
* **Alignment**: A 3×3 dot picker for where items sit along both axes inside the container.
* **Direction**: Two arrow buttons that stack children in a row or a column.
* **Gap**: A pixel value for the space between items. The icon next to the Gap input changes to match the current direction so you always know whether you're adjusting horizontal or vertical spacing. Next to it, an arrow icon toggles **Distribute space between items**, which pushes children to opposite edges of the container.
* **Outer space**: Per-side inputs for the space outside the element (one input per side, with a link toggle to lock all four sides at once).
* **Inner space**: Inputs for the space inside the element along each axis, with a link toggle for both axes at once.
The Layout section only appears when at least one layout control applies to the selected element. Plain text nodes with no spacing or layout properties hide the section entirely, so the editor stays compact.
For the **Text**, **Color**, **Border**, and **Image** sections, see the [Visual Editor guide](/design/visual-editor).
## Related pages
* [Canvas](/design/canvas) — overview and anatomy.
* [Frames](/design/frames) — the containers Elements live inside.
* [Toolbar](/design/toolbar) — where the Edit tool lives.
* [Visual Editor](/design/visual-editor) — full element-editing walkthrough.
# Explore
Source: https://docs.replit.com/design/explore
Go wide before you commit: follow suggestions, pull in templates and inspiration, and switch models, all landing as new frames.
Exploring in Replit Design means going wide before you commit. Every result lands as a new frame on the canvas, so you never lose a direction:
* Let suggestions propose what to design next, one click each
* Pull in starter templates and real-product inspiration without leaving the board
* Switch the model behind Design for a genuinely different direction
## Follow suggestions
Select a design frame and Replit Design proposes what to try next, grounded in what you're looking at. Click a suggestion and Agent builds it as a new frame next to the original; no prompt writing needed.
Suggestions are the fastest way to explore when you don't yet know what to ask for. See [Explore suggestions](/design/explore-suggestions) for the full loop, including applying the winning frame to your app.
## Pull in templates and inspiration
Mid-exploration, the library panel keeps you moving without a blank canvas. Templates land as live, editable frames to build on; Mobbin-curated inspiration lands as a static reference image to steer your next generation (*"a hero like this, but for a bakery"*).
See [Add templates and inspiration](/design/add-templates-and-inspiration) for the guided flow.
## Explore with a different model
Each model behind Replit Design has its own design sensibility and frontend strengths. Switch the primary model from the chat composer's mode selector and send the same brief again to land a genuinely different direction.
See [Explore with different models](/design/explore-with-different-models) for the model lineup and how to switch.
## Explore each path
Select a frame and build a suggestion with one click.
Start from a template or steer by real app screens.
Switch the model behind Design for a different sensibility.
## Next steps
When a direction feels right, stop going wide and start going deep:
* [Chat about your design](/design/chat-about-your-design): steer the winning frame precisely, in your own words.
* [Build your design](/design/build-your-design): turn the frame into a working app.
# Explore suggestions
Source: https://docs.replit.com/design/explore-suggestions
Select a design frame and Replit Design suggests what to design next; one click generates a new direction, and the winner can be applied to your app.
Suggestions are the center of the Replit Design interface. Instead of facing a blank prompt box and needing to know what to ask for, you select a design frame and Replit Design proposes what to try next. Each suggestion is one click away from becoming a new generation.
## How suggestions work
When you select a generated design frame, suggestions appear alongside it. They're grounded in what you're looking at, so exploring doesn't require design vocabulary. Click one and Replit Design generates the result as a new frame; your original stays put.
## What suggestions propose
Suggestions answer different exploration questions:
* **A new look**: the same design in a different direction, such as a dark editorial variant or a different layout.
* **An extension**: a section or page your design implies but doesn't have yet, such as a pricing section or a contact page.
* **A new context**: your design somewhere else, such as a mobile viewport.
## Explore with suggestions
The loop is deliberately short:
Click any generated design frame on the canvas.
Suggestions appear beside the selected frame, grounded in what you're looking at. Review them and click one, you don't need to add anything.
The moment you click, Agent starts building the suggestion as a new frame next to the original. Your earlier frames stay on the canvas, so nothing is lost by exploring.
The finished frame lands next to the original so you can compare the two side by side. The chat panel summarizes what changed.
Keep selecting and branching until one direction feels right; fresh suggestions appear for whichever frame you select. The winner doesn't have to stay a mockup: select it, choose **Build…** in its action bar, and pick your existing app under **Apply to an existing creation**. Agent rewrites the app's code to match the design, leaving the frame on the canvas for reference.
See [Build your design](/design/build-your-design) for the full flow, including building the frame as a new app instead. To polish details before applying, [refine with chat](/design/chat-about-your-design).
## Tips
* **Explore in directions, not steps.** Suggestions branch; following one doesn't commit you. Generate a few and compare on the canvas.
* **Mix in your own words.** Suggestions and the [design chatbox](/design/chat-about-your-design) work together: click suggestions to explore broadly, chat to steer precisely. Chat isn't just for polish; a message like *"try the nav on the left"* opens a new direction too.
* **Switch the model for a different sensibility.** Each model explores differently; see [Explore with different models](/design/explore-with-different-models).
# Explore with different models
Source: https://docs.replit.com/design/explore-with-different-models
Switch the model behind Replit Design to explore different directions: each model brings its own design sensibility and frontend strengths.
Suggestions explore directions with the same designer; switching models changes the designer. Each model has its own design sensibility and frontend strengths, so the same brief can land somewhere new with a different model behind it.
## Switch the model
Open the mode selector in the chat composer (it shows the current mode, such as **Power**), then select **Primary model** and pick from the list.
The current lineup:
* **Claude Fable 5** (recommended)
* **Claude Opus 5**
* **GPT-5.6 Sol**
* **Kimi K3**
The model lineup changes as new models ship. Check the in-product menu for what your account can use today.
Two more controls live in the same popover:
* **Mode** (Lite, Economy, Power): the balance between speed, cost, and capability. Power uses a higher-performance model for design work, best for complex designs and detailed visual changes. See [Agent modes](/features/agent/agent-modes) for the full reference.
* **Effort**: how much reasoning the model spends per response, from Low (fastest) to Max. Each model shows its recommended setting.
## Explore across models
Model switching is another axis of exploration, alongside [suggestions](/design/explore-suggestions):
* **Same brief, different designer**: generate a frame, switch the model, and send the same prompt again. Both directions land as frames on the canvas, so you can compare them side by side.
* **Match the model to the work**: use the recommended model for most work, and switch when a design calls for a different sensibility, or when you want a second opinion on a direction you're unsure about.
* **Switch anytime**: the model applies to your next message, so you can change it mid-project without losing anything on the canvas.
## Next steps
* [Explore](/design/explore): the full exploration toolkit at a glance.
* [Explore suggestions](/design/explore-suggestions): one-click directions proposed from your selected frame.
# Frames
Source: https://docs.replit.com/design/frames
Frame kinds, the per-frame action bar, and the Build and Focus actions on Canvas.
Every tile on the Canvas is a **frame**. Frames are what you select, drag, and act on. This page covers the frame kinds, the per-frame action bar that surfaces on selection, and the capabilities you trigger from it: Build and Focus.
## Frame kinds
The two main kinds are **Artifacts** (live, app-backed surfaces) and **Designs** (mockups). The frame's top-left header shows which kind it is.
| Kind | Header label | Backed by | Interact like a live app? | Convert to a real app? |
| --------------- | ----------------------------- | ------------------------- | ------------------------- | ------------------------------------------------------------- |
| Artifact | **Website**, **Slides**, etc. | A running artifact | Yes | Already an app. |
| Mobile artifact | **Mobile app** | A running artifact | Yes (in simulator) | Already an app. |
| Design | **Design** | Static / interactive mock | Interactive frame only | Yes — via the per-frame **Build…** menu. See [Build](#build). |
| Image | **Image** | Generated PNG / JPG | No | No — use as a reference. |
| Video | **Video** | Generated video | No | No. |
| Vector graphic | **Graphic** | Generated SVG | No | No — embed in a real app. |
Whether a Design frame behaves as a static image or an interactive prototype depends on the **Interactive frames** capability. When it's enabled, Design frames respond to clicks and form input like a real page; otherwise they render as a snapshot you can iterate on but not click through.
## Preview on different devices
See how a design looks on different screen sizes. Ask Agent to show you a mobile, tablet, or desktop version, for example "Show me the mobile version of this page", and it renders a frame at that size:
* **Mobile**: 390 × 844
* **Tablet**: 768 × 1024
* **Desktop**: 1280 × 720
## Per-frame action bar
Selecting a frame surfaces an action bar. The actions depend on the frame's kind.
### Artifact and Design frames
For Artifact (Website, Slides, etc.) and Design frames, the action bar runs across the top of the frame.
The action cluster compresses to icons at narrow widths and reveals labels as the frame gets wider. The full set, in left-to-right order:
| Action | What it does |
| -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Export | Downloads the frame as a PNG. See [Export a frame as PNG](/design/canvas#export-a-frame-as-png). |
| Build… | Opens a menu listing every Artifact in the project — choose one to apply the design to it, or choose **Build this design** to create a new Artifact. Design frames only. See [Build](#build). |
| Focus | Enters focus mode, expanding the frame as the main view. |
| More (…) | Additional frame actions. Copy, duplicate, reorder, and export also live in the board's [right-click menu](/design/canvas#right-click-menu). |
App frames (Website, Slides, Mobile app) show Focus and more options; Design frames add Build… before them. To branch new directions from a selected frame, follow its [suggestions](/design/explore-suggestions).
Selecting a frame also attaches it to the next Agent chat message as a snapshot — see [What lives on the canvas](/design/canvas#what-lives-on-the-canvas).
The action bar respects **Read-only mode**. When Canvas is locked inside a background-task context, the iteration actions hide and only Focus remains.
### Media frames
Image, Video, and Vector graphic frames show a small floating action bar above the frame. All three kinds share:
* **Replace media**: upload a new file to swap into the frame, keeping its position and size on Canvas.
* **Download**: save the media file to your computer.
* **Alt text**: add alternative text for accessibility and so Agent has more context when the frame is referenced.
Image frames add two more controls:
* **Crop**: trim the image directly on Canvas.
* **Generate video**: generate a video clip from the image.
## Explore new directions
Selecting a frame surfaces [suggestions](/design/explore-suggestions) beside it: one-click directions grounded in what you're looking at, such as a different layout, a new vibe, or a page your design implies. Each one generates as a new frame alongside the source, so the original stays untouched and you can compare.
## Build
The **Build…** menu on a selected Design frame graduates the design into a live, running app. The same menu also covers applying the design to an Artifact that already exists.
### Build this design
Picking **Build this design** in the menu starts a new Artifact from the selected Design frame. The new Artifact lands in the project's artifact list and becomes a live, running app. Build requires Core or Pro.
### Apply to an existing Artifact
The Build… menu lists every Artifact in the project. Picking one applies the selected Design's changes to that Artifact — Agent rewrites the Artifact's code to match the design, leaving the Design frame on the Canvas for reference.
## Focus mode
Focus mode lets you work with a selected frame full-size while staying in Design.
Select a frame, then choose **Focus** in its action bar.
The frame fills the view, so you can work on it up close without the rest of the board.
Select **Exit focus** at the top of the board to go back to the canvas.
## Related pages
* [Canvas](/design/canvas) — overview and anatomy.
* [Toolbar](/design/toolbar) — the floating toolbar; Generate creates new frames.
* [Elements](/design/elements) — the individual pieces inside a frame.
* [Visual Editor](/design/visual-editor) — element-level edits inside a focused frame.
# Import a website into Replit Design
Source: https://docs.replit.com/design/import-a-website-into-replit-design
Recreate a live website as a design frame in Replit Design, then refine it with suggestions and chat, and build it into an app.
⏰ *Estimated time: 10 minutes*
Sometimes the design you want to start from is already live on the web: your current site, or a page whose look you want to rebuild. Import from URL recreates a website as a design frame you can explore, refine, and build into an interactive app.
You'll use [creative-studio-landing.replit.app](https://creative-studio-landing.replit.app), a Replit-built landing page for a creative studio, as the example.
## Before you start
You need:
* A [Replit account](https://replit.com).
* The URL of a public website, or the example above.
## Import the website
Use your own site, or copy the example: `https://creative-studio-landing.replit.app`.
Go to [replit.com/design](https://replit.com/design) and select **Import URL** under the prompt box. Agent recreates the site's look and feel as a starting point.
Selecting **Import URL** prefills the prompt: *"Recreate the look and feel of this website:"*. Paste your URL after it and select **Start**.
Agent recreates the site as a design frame in your project.
## Make it yours
Select the imported frame and start reshaping it:
* **Follow a [suggestion](/design/explore-suggestions)**: the import arrives with proposed next steps, such as a dark editorial variant, a mobile viewport, or a contact page. Each generates as a fresh frame, so the original stays for comparison.
* **[Chat about it](/design/chat-about-your-design)**: use the input under the frame and brief it in your own words, *"swap the portfolio shots"*, *"make the hero type heavier"*.
## Next steps
Explore what to design next, one click at a time.
Polish text, colors, spacing, and images directly.
Turn the finished frame into a working app.
# Import Claude designs into Replit Design
Source: https://docs.replit.com/design/import-claude-designs-into-replit-design
Send a design from Claude to Replit, create a project from the static HTML, and let Agent turn it into an interactive app.
A design built in Claude shows what an experience should look like. With Claude's **Send to Replit** option, you can hand that design off to Replit, where it becomes a project and Agent turns it into a working, interactive app.
This is a new integration. **Send to Replit** appears in Claude's **Send to…** menu only when Claude offers Replit as a destination for your design. Availability is controlled by Claude, so the option may not show for every account yet. When you accept the handoff, Claude requests the **Access apps**, **Create and manage apps**, and **Stay signed in to this application** scopes on the Replit consent screen.
## How it works
The handoff starts in Claude and finishes in Replit:
1. You build a self-contained design in Claude's design canvas.
2. You send the design to Replit from Claude's **Share → Send to…** menu.
3. You authorize Claude to access your Replit account and choose a workspace.
4. Replit creates a project with your design as a static `index.html` file.
5. Agent picks up a **Turn this Claude design into a real app** task and makes it interactive.
This is Claude *sending* a design to Replit through an authorized app connection. You do not configure anything in Replit first — the flow begins from Claude.
## Before you start
You need:
* A [Replit account](https://replit.com).
* A Claude account with a design in Claude's design canvas.
* A target Replit workspace for the new project.
## Send a design from Claude to Replit
Start in Claude with the design you want to build on.
In Claude, open the design you want to turn into an app.
Select **Share**, then open the **Send to…** menu. Replit appears as a destination.
Select **Replit** to start the handoff to your Replit account.
On the Replit consent screen titled **Claude would like to access your Replit account**, review the access Claude requests — **Access apps**, **Create and manage apps**, and **Stay signed in to this application** — then authorize the connection.
Pick the Replit workspace where you want the new project created, then confirm.
After you confirm, Replit creates a project from your design and opens it in the workspace.
## What gets imported
Replit imports the design as a single, self-contained `index.html` file. The import preserves the visual layout, styling, and assets that Claude included in the design.
The import gives you a working starting point. Because the design arrives as static HTML, you still add behavior, data, and interactivity after import.
## What is not imported
The handoff carries the design, not a full application. The following are not part of the import:
* Backend logic and server-side functionality.
* A database or stored data.
* Interactivity such as working forms, state, and navigation.
Agent adds this functionality when it turns the design into a real app.
## Let Agent make the design interactive
After import, Agent starts a **Turn this Claude design into a real app** task in the workspace. Agent works from your static design and builds the interactive behavior the design implies.
Open Preview when the task finishes to test the result. Compare the running app to your original Claude design and confirm:
* The layout and styling match the design closely enough.
* Buttons, forms, and navigation work as expected.
* The app still works after a refresh.
If something is missing or off, describe the change to Agent and let it refine the app.
## Configure and run your app
During import, . If your app needs changes, use these Project Editor tools:
* **[Agent](/features/agent/overview)**: Refine features, debug issues, and make code changes
* **[Secrets](/core-concepts/project-editor/app-setup/secrets)**: Add API keys and environment variables
* **[Workflows](/features/workspace-tools/workflows)**: Set the **Run** command for your app
## Continue your journey
Now that you've imported your , explore these next steps:
* [Replit Agent](/features/agent/overview): Get help with feature work, debugging, and refactoring
* [Replit Deployments](/learn/projects-and-artifacts/replit-deployments): Publish your app
* [Collaborate](/build/invite-teammates): Build with teammates
## Billing
Turning a design into a working app uses Agent, which can consume credits. Credit usage depends on how much Agent builds on top of the imported design.
## Related
* [Import from a provider](/build/import-from-providers)
* [Import Figma designs into Replit Design](/design/import-figma-designs-into-replit-design)
# Import Figma designs into Replit Design
Source: https://docs.replit.com/design/import-figma-designs-into-replit-design
Import a Figma frame into Replit Design, refine it with suggestions and chat, and build it into an interactive app.
⏰ *Estimated time: 15 minutes*
A Figma design shows what the experience should look like. Replit Design turns a Figma frame into a design frame you can explore, refine, and build into an interactive app.
You'll use the [Personal Fitness Trainer Template](https://www.figma.com/community/file/1569006333493544411) from Figma Community as the example.
## Before you start
You need:
* A [Replit account](https://replit.com).
* A [Figma](https://www.figma.com) account, with the file you want to import or the example file above.
## Import the Figma frame
Bring the frame into Replit Design and let Agent turn it into a working design.
Use your own Figma file, or follow along with this guide's example: the [Personal Fitness Trainer Template](https://www.figma.com/community/file/1569006333493544411) on Figma Community.
In Figma, right-click the frame you want to import, choose **Copy/Paste as**, then **Copy link to selection**.
Go to [replit.com/design](https://replit.com/design) and select **Import Figma** under the prompt box.
Paste your frame URL into the **Import Figma design** dialog and select **Attach to prompt**. The frame attaches to your prompt; submit it to start building.
Agent imports the frame and rebuilds it as a design frame in your project.
## Make it yours
Select the imported frame and start reshaping it:
* **Follow a [suggestion](/design/explore-suggestions)**: the import arrives with proposed next steps, such as a dark editorial variant, a pricing section, or a mobile viewport. Each generates as a fresh frame, so the original stays for comparison.
* **[Chat about it](/design/chat-about-your-design)**: use the input under the frame and brief it in your own words, *"swap the hero photo"*, *"make the call to action bolder"*.
## Next steps
Explore what to design next, one click at a time.
Polish text, colors, spacing, and images directly.
Turn the finished frame into a working app.
## Related
* [Figma MCP Integration](/features/mcp/figma)
* [Canvas](/design/canvas)
* [Visual Editor](/design/visual-editor)
## Credits
The example design used in this guide is the [Personal Fitness Trainer Template](https://www.figma.com/community/file/1569006333493544411) on Figma Community.
# Library panel
Source: https://docs.replit.com/design/library-panel
Reference for the library panel: add starter templates to your design, browse Mobbin-curated inspiration, and reuse your own creations.
The library panel is Replit Design's built-in source of starting points and references. It has three tabs: **Templates**, **Inspiration**, and **Library**. Nothing in it creates a new project; everything lands on the canvas of the project you're in.
## Templates
Pre-built design frames made by Replit, searchable and grouped by kind: posters, social posts, landing pages, mobile, banners, and prototypes. Click or drag one to add it to your design; it lands on the canvas as a live frame, ready to edit like anything you generated yourself.
## Inspiration
UI screenshots from real products, curated by Mobbin. Search for app screens, such as *"Airbnb onboarding"* or *"Coinbase checkout"*, and click one to place it on the canvas as a static reference image. Inspiration adds no code to your project: it's something to look at, point to in chat, or reference in your next generation.
## Library
Your own creations: designs and artifacts you've already made in this project, ready to bring back onto the canvas.
## Templates vs. Inspiration
| | Templates | Inspiration |
| ------------- | ------------------------------------- | --------------------------------------------- |
| What it is | Replit-built starter design frames | UI screenshots from real products, via Mobbin |
| On the canvas | A live, editable frame in your design | A static reference image |
| Use it to | Start from a working design | Steer the look of your next generation |
See [Add templates and inspiration](/design/add-templates-and-inspiration) for the guided flow.
# Refine
Source: https://docs.replit.com/design/refine
Shape the winning frame with precision: chat with Agent in your own words, or adjust elements directly with the Visual Editor.
Exploring goes wide; refining goes deep. Once a frame is close to what you want, two tools shape it with precision, matched to how you like to work:
* Chat with Agent in your own words, about a whole frame or a single element
* Adjust elements directly with the Visual Editor, with simple edits applied instantly and without spending credits
## Chat
Brief Agent like you'd brief a designer mid-review. Select a frame and describe the changes in the main chat (*"warmer colors"*, *"the hero feels empty"*), or select the **Chat** tool in the toolbar and click an element to scope your message to just that piece.
See [Chat](/design/chat-about-your-design) for both entry points.
## Visual Editor
When you know exactly what you want, skip the prompt. Select the **Edit** tool in the toolbar and click any element; the Visual Editor opens with the properties that element can edit, such as content, layout, color, and border. Simple edits, like text changes, color picks, and spacing tweaks, apply to the source code instantly without spending credits.
See [Visual Editor](/design/visual-editor) for the full control reference.
## Which one to reach for
| You want to… | Use |
| -------------------------------------------------------------------- | ------------- |
| Describe an outcome and let Agent work out the details | Chat |
| Change one element's copy, color, spacing, or image to a known value | Visual Editor |
| Rework a section's structure or behavior | Chat |
| Make a quick, credit-free tweak | Visual Editor |
The two combine naturally: chat to get a direction in place, then click in with the Visual Editor to perfect the details.
## Explore each tool
Steer a frame or a single element in your own words.
Direct, credit-free edits to text, colors, layout, and images.
## Next steps
When the frame is right, stop refining and make it real:
* [Build your design](/design/build-your-design): turn the frame into a working app.
* [Create a design system](/design/create-a-design-system): extract what you refined so every future frame starts on brand.
# Start from a template
Source: https://docs.replit.com/design/start-from-a-template
Remix a featured template into a project of your own, open it in Replit Design, and restyle it until it's yours.
⏰ *Estimated time: 10 minutes*
A template gives you a running start: a finished design you copy and make yours. In this guide you'll remix a featured template into your own project, open it in Replit Design, and restyle it, no blank prompt required.
## Before you start
You need a [Replit account](https://replit.com). Nothing else: remixing and restyling happen with clicks and prompts.
## Remix a template into your project
This guide uses **Supercar showcase** (Apex 01) as its example. Any template works the same way.
Choose a template to start from. Selecting one opens its cover page, with a live preview and sharing options. Here are a few:
Looking for something else? Explore more templates at [replit.com/design](https://replit.com/design): landing pages, posters, social posts, mobile, and prototypes.
Select **Remix this App** to make your own copy. New to remixing? See [Remix an app](/features/projects-and-artifacts/remix-an-app).
Give your copy a name and an optional description, then select **Remix App**.
Your copy opens in Replit Design with the template as a frame on the canvas. This is now your project; nothing you do here affects the original.
## Make it yours
Select the template's frame and start reshaping it:
* **Follow a [suggestion](/design/explore-suggestions)**: new directions generate as fresh frames, so the original stays for comparison.
* **[Chat about it](/design/chat-about-your-design)**: select the frame and brief Agent in your own words, *"warmer colors"*, *"swap the hero car for a vintage roadster"*.
Keep going until the design reads as yours, not the template's.
## Already mid-design?
If you're exploring in an existing project and want a template inside the design you already have, don't remix; add one from the library panel instead. See [Add templates and inspiration](/design/add-templates-and-inspiration).
## Next steps
* [Build your design](/design/build-your-design): turn the restyled template into a working app.
* [Create a design system](/design/create-a-design-system): extract a system from your version so everything you make next matches it.
# Toolbar
Source: https://docs.replit.com/design/toolbar
Reference for the Canvas toolbar: Interact, Pan, Chat, Draw, Edit, and Generate.
The Canvas toolbar is a floating bar anchored to the bottom-center of the board. It exposes the tools you use to navigate, draw, edit, and add content. The toolbar surfaces in Canvas mode.
## Tools
Selecting a tool makes it active. The active tool is highlighted with a filled background. The leftmost cluster is navigation (Interact, Pan). The rest are content and markup tools. Tools are mutually exclusive, which means selecting one deactivates the others.
### Interact
**Interact** is the default tool. Use it to select frames, drag them around, and click into a live Artifact to use it as a real running app. With Interact active, clicking a frame selects it and surfaces the [per-frame action bar](/design/frames#per-frame-action-bar).
**Keyboard shortcut:** `V`. **Gate:** always on.
### Pan
**Pan** switches the cursor to a grab tool so you can drag the board itself. While Pan is active, click-and-drag moves the viewport instead of selecting a frame. You can also pan from any other tool by holding the spacebar and dragging, or by middle-click-dragging.
**Keyboard shortcut:** `H`. **Gate:** always on.
### Chat
**Chat** drops a small chat composer directly onto the board so you can prompt Agent without leaving Canvas. Selected elements and frames are still attached to the message as snapshots, the same as when you send from the side Agent chat panel.
**Gate:** Chat tool (desktop only).
### Draw
**Draw** activates the markup tools such as freehand draw, arrows, sticky notes, and shapes, so you can sketch on top of frames or annotate the board. Use it to circle problem areas, point to elements you want changed, or leave a written note next to a frame.
When Draw is active, a **Shape properties** bar surfaces above the floating toolbar with color, stroke, and fill controls for the current markup tool. It hides automatically when you switch back to Interact or Pan.
**Gate:** always on.
### Edit
**Edit** is the visual selector for elements. With Edit active, click inside a live Artifact to target an element (a button, a heading, an image). Selecting an element opens the **Visual Editor** — a right-side panel of controls (Layout, Color, Border, and more) paired with an inline prompt for asking Agent to change just that piece. See [Elements](/design/elements) and [Visual Editor](/design/visual-editor) for the full flow.
**Gate:** always on (desktop). Disabled until at least one frame exists; the tooltip reads *"Create an artifact or generate a design to edit."* Hidden on mobile.
### Generate
**Generate** opens the **Generate media** popover for images, videos, and vector graphics. Pick a kind, write a prompt, and Agent places the result as a new frame on the board.
The popover has four tabs at the top:
* **Design**
— **Image**
* **Video**
* **Vector Graphic**
Some controls are shared across kinds; others are kind-specific.
**Shared controls (all kinds):**
* **Model**: the generation model to use. Available models vary by kind (see the table below).
* **Prompt**: plain-language description of what you want Agent to generate.
* **Generate**: submits the request and reserves a placeholder frame at the cursor position. The placeholder transitions to a live frame once the asset is ready; if generation fails, the placeholder is removed and an error appears in the chat panel.
**Per-kind models and controls:**
| Kind | Best for | Current models | Kind-specific controls |
| ----------- | ----------------------------------------------------------------------- | --------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| **Image** | Raster output (PNG / JPG); moodboard imagery, hero shots, reference art | Nano Banana, Nano Banana 2, Nano Banana Pro, ChatGPT Images 2.0 | Aspect ratio (`1:1`, `16:9`, `9:16`, `4:3`, `3:4`) · Size (`1K`, `2K`, `4K`) |
| **Video** | Short motion clips and animations | Veo 3.1, Seedance 2.0 | Aspect ratio · Resolution (e.g. `720p`) · Duration (e.g. `4s`) · Audio toggle |
| **Graphic** | SVG vector output; icons, logos, diagrams, stylized illustrations | Claude 4.6 Opus, Gemini 3.1 Pro Preview | Animated toggle |
The model lineup changes frequently. The table reflects what's currently available; check the in-product dropdown for what your account can use today.
For what each frame kind is and what you can do with it once created, see [Frames](/design/frames).
#### Attach visual references
Before you generate, you can attach things already on your board as visual references. Agent uses these references to guide the result so it matches the look of your project. Open the **+** menu inside the **Generate media** form, then choose an option:
* **Upload file**: upload an image from your computer to use as a reference.
* **Select canvas elements**: pick existing items from the board. Frames are captured as screenshots; text and note shapes are attached as text summaries.
Each reference appears as a chip in the form. Add as many as you need, write your prompt, then select **Generate**. To remove a reference, select the chip.
ChatGPT Images 2.0 does not support uploads at the moment. Switch the model, for example to Nano Banana Pro, to attach visual references.
When the **Add menu** is enabled, the Generate button is replaced by a **+** menu that consolidates the popover's kinds with **Design** (a standalone visual mockup that doesn't touch live code):
**Gate:** Image generation. **Vector Graphic** needs Vector graphic generation; **Video** needs Video generation. The **+** menu requires Add menu (which itself requires Image generation).
## Board navigation
Panning, zooming, selection gestures, and their keyboard shortcuts are board-level behaviors, not toolbar tools. See [Navigate the board](/design/canvas#navigate-the-board) on the Canvas page.
## Related pages
* [Canvas](/design/canvas) — the board itself: opening it, navigating it, and what lives on it.
* [Frames](/design/frames) — Frame kinds; the per-frame action bar; Build and Focus.
* [Elements](/design/elements) — the individual pieces inside a frame.
* [Visual Editor](/design/visual-editor) — the element-targeting flow Edit drops you into.
# Visual Editor
Source: https://docs.replit.com/design/visual-editor
Make direct visual edits to your designs and apps — adjust text, colors, layout, and images by clicking, without writing code.
## What is Visual Editor?
The Visual Editor lets you make hands-on changes to your UI by clicking directly on elements. It works both on the [canvas](/design/canvas) in Replit Design and in the Preview, so you can edit mockups and running applications the same way.
Simple edits — text changes, color adjustments, spacing tweaks — update the source code directly without consuming AI credits. For changes that involve hidden complexity, the Visual Editor hands off to Agent automatically.
Key concepts:
* **Deterministic edits**: Simple changes (text, colors, spacing) apply directly to source code without an Agent loop
* **No credit cost**: Direct edits don't consume AI credits — only complex changes route through Agent
* **Dual context**: Works identically on canvas frames and in the Preview
* **Source code sync**: Every edit updates the underlying source code instantly
The Visual Editor is currently available only on **web browsers**. It is not supported on Mobile App or Desktop App.
## How to use Visual Editor
### Editing on the canvas
Select the **Edit** tool in the toolbar, then click any element within a frame. The element gets a highlight with a chip naming it, and the Visual Editor panel opens on the right showing the properties you can edit for that element, such as content, layout, color, and border. Adjust them, then select **Save edits** to apply or **Discard** to throw them away.
The properties shown match the element you select: text elements expose font controls, images expose the source and upload, and containers expose layout controls.
### Editing in Preview
The same editing experience works in your running application.
Click any element in the Preview to start editing.
Edit text inline, adjust colors with the picker, change spacing with style controls, or swap images.
Hit save to update the source code. Simple changes apply directly without consuming AI credits. If the edit involves complexity, the Visual Editor sends targeted metadata to Agent for assistance.
### Text editing
Click any text element and type to change it directly. If the text is a string in your source code, the edit applies immediately.
### Color adjustments
Use the color picker to adjust text and background colors. Type a color name like "purple" in the input field, or use the eyedropper to pick a color from anywhere on your screen.
### Style changes
Adjust padding, margins, and layout across elements using intuitive controls.
### Layout controls
The Visual Editor groups every control into clear sections so you can find the one you need faster: **Text**, **Layout**, **Color**, and **Border**. (The **Image** section also appears when you select an image element.)
The **Layout** section is where you adjust how children sit inside a container without going through Agent. Select a flex container, expand Layout, and you get:
* **Alignment**: A 3×3 dot picker for where items sit along both axes inside the container.
* **Direction**: Two arrow buttons that stack children in a row or a column.
* **Gap**: A pixel value for the space between items. The icon next to the gap input changes to match the current direction so you always know whether you are adjusting horizontal or vertical spacing. Next to it, an arrow icon toggles **Distribute space between items**, which pushes children to opposite edges of the container.
* **Outer space**: Per-side inputs for the space outside the element (one input per side, with a link toggle to lock all four sides at once).
* **Inner space**: Inputs for the space inside the element along each axis, with a link toggle for both axes at once.
The Layout section only appears when at least one layout control applies to the selected element. Plain text nodes with no spacing or layout properties hide the section entirely, so the editor stays compact.
### Image updates
Select images to swap URLs or upload your own files with instant previews.
## What you can do
* **Quick text fixes**: Update copy, labels, and headings without opening source files
* **Color exploration**: Try different color schemes by clicking and adjusting — no need to find the right CSS
* **Layout tweaks**: Fine-tune padding, margins, and spacing visually instead of guessing pixel values
* **Image swaps**: Replace placeholder images with real assets by clicking and uploading
* **Design iteration**: Rapidly adjust canvas frames to compare visual directions without Agent round-trips
## Frequently asked questions
Simple, deterministic edits — text changes, color picks, spacing adjustments — don't consume AI credits. They update the source code directly. If the Visual Editor detects hidden complexity, it routes the change through Agent, which does use credits.
Yes. Selecting an element rendered in a loop or reused across components highlights and updates all instances at once.
Composite elements made up of multiple sub-elements can't be text-edited directly in the Visual Editor. Ask Agent in chat to make those changes instead.
Click the top-left label on a selected element to jump to its location in the source code.
# What is Replit Design
Source: https://docs.replit.com/design/what-is-replit-design
Replit Design is a design suite to generate design frames from prompts, explore the AI's suggestions, and keep everything on brand with design systems.
Replit Design is where you shape how your software looks and feels. You describe what you want, and Replit Design generates interactive mockups you can explore and refine. When one is right, it becomes a working app in the same project.
## Start fresh or import existing designs
Start at [Replit Design](https://replit.com/design), or select **Design** under the create input on your workspace home. Four ways in:
* **[Prompt](/design/design-your-first-screen)**: describe what you want and generate your first frames.
* **[Templates](/design/start-from-a-template)**: start from a pre-built landing page, poster, social post, mobile screen, or prototype, then remix it.
* **[Import](/design/import-figma-designs-into-replit-design)**: bring a design from Figma or [Claude](/design/import-claude-designs-into-replit-design), or recreate a site [from its URL](/design/import-a-website-into-replit-design) or a screenshot.
* **[Design system](/design/design-systems-explained)**: start from a saved system so your first frame is already on brand.
## Explore variants
Go wide before you commit. Every result lands as a new frame, so you never lose a direction.
* **[Suggestions](/design/explore-suggestions)**: select a frame and Replit Design proposes what to try next, one click each.
* **[A different model](/design/explore-with-different-models)**: switch the model behind Design and send the same brief for a genuinely different direction.
## Refine
Shape the winner however feels natural:
* **[Chat](/design/chat-about-your-design)**: brief Agent in your own words, about the whole board or one frame at a time.
* **[Visual Editor](/design/visual-editor)**: click into any element and adjust text, colors, spacing, and images directly. Simple edits apply to source code instantly, without spending credits.
* **[Draw](/design/toolbar#draw)**: circle problems, arrow the element you mean, leave a sticky note. Agent reads your markup.
* **[Generate assets](/design/toolbar#generate)**: create the images, video clips, and vector graphics your design needs, with references attached so they match your project's look.
## Build
When a frame is right, hand it to Agent. A design here is never just a picture, it's the spec for real software.
* **[Build your design](/design/build-your-design)**: turn the frame into a new working app.
* **[Restyle an existing app](/design/frames#build)**: apply the frame's look to an app you already have.
Building a new app from a design frame requires Core or Pro; every other Design capability works on every plan. See [Billing](/billing/ai-billing) for plan details.
## Scale
Make the next design faster than the last:
* **[Create a design system](/design/create-a-design-system)**: extract your colors, typography, tokens, and components from a design you love, or prompt one from scratch.
* **Start new work from it**: new artifacts generate on brand from the first frame.
* **[Bring existing apps under the system](/design/apply-design-system)**: rebuild the styling of apps you already have so everything matches.
* **Switch systems**: choose or change the system per project.
From here the journey loops back to **Start**, and now every design begins on brand.
## When to start in Design vs. Build
Design and Build are two entry points into the same project. Build is where Agent makes your software work; Design is where you shape how it looks. Nothing you design is stranded in a design tool.
* Start in **Design** when the look is the hard part: explore directions first, build the winner.
* Start in **Build** when the behavior is the hard part: get it working, then restyle it in Replit Design.
## Next step
Generate your first design frames from a prompt, no design experience needed.
# Editor & Tools
Source: https://docs.replit.com/features/editor/editor-and-tools
Learn about the tools available in the Project Editor — the editor, preview, console, shell, and more.
The Project Editor includes layout management and integrated tools that power your app-building experience.
These Project Editor features specialize in handling specific aspects of the development process, letting you
focus on creating instead of configuring.
## Customizable Project Editor layout
The Project Editor layout management tools let you customize the components of the development environment.
It consists of the following user interface element types:
| Element | Description | Capabilities | Use Cases |
| ----------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| **Windows** | Browser tabs that contain one or more panes | Can be organized across multiple screens | Organizing the Project Editor across multiple screens Work on different projects simultaneously |
| **Panes** | Sections of a window that contain one or more tabs | Support horizontal and vertical splitting Can be resized and rearranged Can be converted to a floating pane within the window | View code and preview side-by-side Create custom layouts for different development tasks |
| **Tabs** | Contain exactly one Project Editor tool, such as the file editor, Preview, or Agent | Can be moved between panes and reordered within them Can switch between different files or tools with a single click | Open different tools or files when you need them |
The following video identifies each Project Editor layout element:
## File tree
The file tree lists all the files and directories in your Replit App.
Select the folder icon on the left to toggle
the file tree's visibility.
You can perform the following actions in the file tree:
* Select a folder to display its contents
* Select a file or drag it to a pane to open it in a file editor
* Perform file operations such as duplicating, renaming, moving, downloading, or deleting
The following video shows several file tree actions:
## Tools dock
The tools dock lets you search for and open Project Editor tools in new tabs.
Select from commonly used tools or select the **All tools**
icon to open the tools search popup menu.
The following screenshot shows the open **All tools** popup menu in the tool dock:
## Run button
The **Run** button executes the Replit App's selected workflow.
The **Run** button is located at the top of the Project Editor screen. Select the button to run the workflow.
When your Replit App is running, the button label is replaced by **Stop**. Select the button to stop the app.
To learn how to select, view, and manage workflows, see [Workflows](/features/workspace-tools/workflows/).
The following video shows how to view and run a workflow:
## Spotlight page
The spotlight page lets you view and modify your Replit App cover page and access sharing options.
Select your project name in the top left of the Project Editor to toggle the spotlight page.
The following video shows how to access the spotlight page:
## Options menu
The options menu lets you perform the following types of layout actions:
* **Window management**: Open the Project Editor for the Replit App in a new window
* **Pane management**: Add panes, move a pane, maximize a pane, and toggle between floating and fixed positions
* **Tab management**: Open or select other tabs, move a tab to another pane, and close a tab
Select the three vertical dots
located in the top right corner of the active tab to open the options menu.
The following screenshot shows the options popup menu in the left pane:
## Search bar
The search bar lets you find files, text, or tools within the Project Editor.
1. To open the search bar, select the magnifying glass icon at the top.
2. Enter your search text and select from the auto-complete suggestions.
The following screenshot shows the search popup menu:
## Resources panel
The resources panel displays your development environment's computing resources and usage, including RAM, CPU, and storage.
This information can help you estimate and optimize your Replit App's publishing requirements.
1. Select the resources icon located next to your app's name to toggle the panel.
2. Hover over the **Compute** or **Storage** line items for more detail.
The following screenshot shows the resources panel:
## Tools
To learn more about other Project Editor tools, select from the following list:
Safeguard your app's API keys, credentials, and passwords.
Rewind time to recover lost edits with Replit's version tracking feature.
Code together in real-time with two or more users.
Customize your coding experience through the Settings tool.
View your Replit App's output
Interact with the Project Editor using a command-line interface.
Preview and debug your web application.
# Keyboard Shortcuts
Source: https://docs.replit.com/features/editor/keyboard-shortcuts
Learn how to view, add, and modify keyboard shortcuts that can boost your productivity in Replit.
Keyboard shortcuts let you run commands, modify text, and navigate the Project Editor
using configurable key combinations. You can set and use keyboard shortcuts in
the Replit.com web app.
## Viewing keyboard shortcuts
To view your keyboard shortcut settings, follow these steps:
1. Open a Replit App to navigate to the Project Editor.
2. Open the **User Settings** tab from **All tools** in the dock.
Alternatively, search for "User Settings" using the magnifying glass.
3. Select the **Keyboard shortcuts** tab to view the list of commands and their assigned shortcuts.
## Customizing keyboard shortcuts
To add or modify a keyboard shortcut, follow these steps:
1. Select **Add shortcut**, located next
to the unassigned command, or the pencil icon for assigned commands.
2. When "Recording..." appears next to the command, press the key combination you want to assign.
To cancel recording, click an empty area inside the tab.
3. To revert the shortcut, select the rollback icon.
## Removing keyboard shortcuts
To remove a keyboard shortcut, select the trash icon next to the command.
## Tab navigation
You can use the browser **Tab** key navigation to navigate between the interactive elements
on a page. However, the File Editor, Console, and Shell tools capture the **Tab** key as
input for purposes including indentation.
To continue cycling through page elements while in these tools, follow these steps:
1. Press **Esc** to release focus from the tools
2. Press **Tab** to move to the next element
# Preview
Source: https://docs.replit.com/features/editor/preview
Learn how to use Preview to view and interact with your web app as you build.
Preview shows your web app output and offers browser developer tools and debugging
capabilities.
When you launch your web app using the **Run** button, Replit assigns it a temporary URL
that's reachable on the internet. The Preview tool renders the page just as you would
see in a browser. It also includes developer tools with functionality similar to
what you find in popular browsers.
Preview is the new name for Webview.
## Features
Preview includes the following functionality to let you seamlessly test and debug your web apps:
* **Live web view**: See your app and interact with it without leaving your browser tab
* **Developer tools**: Use built-in tools to diagnose problems quickly
* **Responsive testing**: View your app in different mobile device screen sizes
## Usage
The Preview tool automatically opens when you run a web app.
You can toggle this behavior in the **User Settings** tool under the **Automatic Preview** setting.
The following instructions explain how to open Preview.
From the left **Tool dock**:
1. Select **All tools** to see a list of Project Editor tools.
2. Select **Preview**.
From the **Search bar**:
1. Select the magnifying glass at the top to open the search tool
2. Type "Preview" to locate the tool and select it from the results.
## Location bar
The location bar at the top of the **Preview** tab includes the following tools:
* **Back button**: Navigate to the previous page in the browsing history
* **Forward button**: Navigate to the next page in the browsing history
* **App domain**: View information about your Replit App's temporary URL by selecting `{...}.replit.dev`
* **Address field**: View the current URL path or enter a new path
## Browser tools
The browser tools on the right side of the location bar include the following functions:
* **Screen size**: Select from different device screen size presets to test responsive designs
* **Devtools**: Toggle the [developer tools](#Developer_tools) pane
* **New tab**: Open your web app URL in a new browser tab
**Building a mobile app?** The Preview panel also supports previewing on an **iOS Simulator** or **Android Emulator**. See [Native Mobile Apps](/features/artifact-types/building-mobile-apps#preview-on-a-simulator-or-emulator) for details.
## Developer tools
Developer tools, powered by the Eruda open source project, help you perform the following tasks:
* View and interact with the JavaScript console in the context of your app
* Inspect DOM elements
* Monitor network requests
* Configure display and behavior preferences
To access the developer tools, select the **Devtools**
button at the top of the **Preview** tab to toggle them.
The following sections describe the actions you can perform in each developer tools tab.
### Console
The **Console** tab displays JavaScript logs generated by your application.
In this tab, you can perform the following actions:
* **Clear output**: Remove all console output by selecting the circle with slash icon.
* **Filter output**: View console output filtered by type (All, Info, Warning, or Error).
* **Filter matching text**: Show output that matches by selecting the filter icon and entering the text.
* **Copy output**: Copy selected console messages by selecting the copy button.
* **Run JavaScript code**: Run JavaScript code in your app's context by selecting the right angle brace. Enter the expression and select **Execute**.
### Elements
The **Elements** tab lets you inspect and modify the DOM structure of the web page.
* **View element details**: View details about the DOM element and the location in the HTML code
* **Copy output**: Copy selected console messages by selecting the copy button.
Use the arrow selection to toggle selection mode.
After entering selection mode, select an element on the web page.
The HTML and CSS for that element should appear in the Elements tab.
### Network
The **Network** tab monitors requests initiated by the web page.
In this tab, you can perform the following actions:
* **Track requests**: View all network requests initiated by your app. Select a request to view details.
* **Filter**: View matching results by selecting the funnel icon to show results that match your text. Enter an empty filter to clear it.
* **Copy**: Copy storage information by selecting the copy button.
### Resources
The **Resources** tab shows assets loaded by the page and browser storage, such as cookies and local storage.
You can view and refresh lists for the following asset types:
* JavaScript files
* Stylesheets
* Iframes
* Images
In this tab, you can perform the following actions:
* **View storage**: Review local storage, session storage, and cookies.
* **Filter**: View matching results by selecting the funnel icon to show results that match your text. Enter an empty filter to clear it.
* **Clear**: Delete all data for that storage type by selecting the clear button.
* **Delete selected**: Remove storage items by selecting the "X" icon.
* **Copy**: Copy storage information by selecting the copy button.
### Settings
The **Settings** tab allows you to customize the developer tools' appearance and behavior.
This tab includes customization options for the following:
* **Tool settings**: Customize options that apply to each tool tab
* **JavaScript controls**: Specify JavaScript behavior options, such as turning it off to test how your app behaves
* **Display preferences**: Change the theme, panel size, transparency, and other behavior of the developer tools
# What's an Artifact?
Source: https://docs.replit.com/features/projects-and-artifacts/artifacts
Artifacts are publishable outputs on Replit — web apps, mobile apps, slide decks, animations, data visualizations, 3D games, and designs you can publish and share.
## What are artifacts?
Artifacts are the things you can publish on Replit, such as: web apps, mobile apps, slide decks, animations, data apps, 3D games, and designs. Each one is a complete, standalone output that gets its own shareable URL when you publish.
Everything else in your project — files, images, CSVs, code — supports your artifacts but can't be published on its own.
## What you can create
| Type | What it is |
| --------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| **[Web app](/features/artifact-types/web-apps)** | Beautiful and powerful websites that handle users, databases, and more. |
| **[Mobile app](/features/artifact-types/building-mobile-apps)** | Native apps for iPhones and Android phones. |
| **[Slide deck](/features/artifact-types/slide-decks)** | Presentation decks you can present or export. |
| **[Animation](/features/artifact-types/animated-videos)** | Motion graphics and animated videos. Export as MP4. |
| **[Data Visualization](/features/artifact-types/data-apps)** | Interactive dashboards and visualizations for exploring data and creating charts. |
| **3D game** | 3D games, simulations, and interactive experiences. |
| **[Design](/design/canvas)** | Explore visual directions and prototype ideas on the design canvas. |
For plan availability, see each type's dedicated page.
## Getting started
There are two ways to create from the Replit homepage:
* **Describe it**: Type what you want — "build me a recipe app" or "make a pitch deck for my startup." Agent figures out which type fits and builds it.
* **Pick a type**: Choose the artifact you want — Web app, Mobile app, Data Visualization, Animation, 3D game, or another supported type — before describing your idea.
You can also add more to an existing project at any time by asking Agent in chat or clicking the **+** button in the preview panel.
## Switching between artifacts
Once you have multiple artifacts in a project, switch between them in the **preview panel** or the **Library sidebar**. You can also ask Agent — "show me the mobile app" or "switch to the slides."
### Library sidebar
The Library sidebar gives you a central place to browse everything in your project. It shows your artifacts, images that Agent generated or downloaded, and other project assets. Open the Library sidebar from the left panel to find and reuse any asset across your project.
## Multiple artifacts in one project
A single project can hold up to **7 artifacts**, with a maximum of **1 mobile app** per project. For example, you could build a web app for your customers, a mobile app for your team, and a slide deck for investors — all in the same project.
### Adding artifacts to a project
There are three ways to add an artifact to an existing project:
* **Chat**: Ask Agent — "add a mobile app to this project" or "create a slide deck for the investor pitch"
* **Plus button**: Click the **+** button in the preview panel and choose what you want to build
* **Library sidebar**: Browse your existing artifacts, images, and other assets, and add new artifacts from there
### Shared data and backend
When artifacts live in the same project, they automatically share the same data and backend logic. If a customer places an order through your web app, your mobile app and data dashboard see that order too. You don't need to set up any connections or duplicate code — it just works.
Publishing pushes your entire project live at once. All artifacts go live together, so they always stay in sync.
### Example combinations
* **Web app + mobile app**: A restaurant with a customer-facing web app and a mobile app for staff — both connected to the same API and database
* **App + admin dashboard**: A main product alongside an internal admin panel for managing content, users, or settings
* **App + slide deck**: Your product and a pitch deck in the same project, so the slides always reflect the latest version
* **Data dashboard + video**: A live data visualization paired with an animated video that walks through the highlights
## Publishing
Apps, slides, and videos can all be published and shared. Each one gets its own shareable URL when you publish.
Files and assets that aren't artifacts (like CSVs, images, or markdown files) can't be published on their own. To share them, add them to an app or create a new artifact.
## Frequently asked questions
Yes. A single project can hold up to **7 artifacts total**, with a limit of **1 mobile app per project**. All artifacts in a project share the same backend and data automatically.
If you reach the mobile app limit and want to build a second mobile app, create it in a new project. If you reach the 7-artifact total, remove an existing artifact before adding another, or split your work across projects.
No. Just describe what you want and Agent picks the right type for you. You can also choose a type manually from the dropdown if you prefer.
Not currently. Publishing pushes the entire project live together, so all artifacts stay in sync. If you need independent publishing, use separate projects.
Yes. All artifacts in a project share the same database and backend services. If your web app writes data, your mobile app and data dashboard can read it immediately.
Artifacts are things you can publish — apps, slides, and videos. Files (like CSVs, images, or code) are assets within your project that support your artifacts but can't be published on their own.
When Agent translates features between artifact types, some things may not carry over perfectly — especially interactions or layouts that work differently across platforms. You can follow up in chat to fill in the gaps.
For a full list of what you can build, see the [Projects overview](/features/projects-and-artifacts/projects).
# Multiple Artifacts vs. Separate Projects
Source: https://docs.replit.com/features/projects-and-artifacts/multiple-artifacts-vs-projects
Learn when to combine artifacts in one project and when to create separate projects on Replit.
A [project](/features/projects-and-artifacts/projects) is the container for everything you build on Replit. A project contains your designs, apps, slides, data, and all the outputs you create.
[Artifacts](/features/projects-and-artifacts/artifacts) are the publishable outputs inside a project: web apps, mobile apps, slide decks, and videos.
When you're building more than one thing, you have two options:
* add multiple artifacts to a single project,
* or create separate projects.
The right choice depends on whether your apps share data, logic, and a deployment lifecycle. This guide covers when to keep artifacts in a single project and when to create separate ones.
## What artifacts share in a project
When [artifacts](/features/projects-and-artifacts/artifacts) live in the same [project](/features/projects-and-artifacts/projects), they automatically share:
* **Database**: One artifact writes data, the others read it instantly
* **Backend and API**: Shared server logic, no duplicate code
* **File storage**: Images, documents, and uploads accessible across artifacts
* **Deployment**: Publishing pushes everything live together in sync
This means you don't need to set up connections or duplicate code between artifacts. But it also means you can't publish one artifact without publishing the others.
## Quick guide
Here are the key scenarios to consider when deciding whether to add artifacts to an existing project or create a separate one.
| **Use multiple artifacts in one project** | **Use separate projects** |
| ----------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Apps share the same data and backend | Apps don't share underlying logic or data |
| You want everything to publish together | You need independent publishing cycles |
| They're complementary (like a customer app and an admin dashboard) | They're unrelated products or for different clients |
| You want changes in one artifact to automatically reflect in the others | The project is short-lived, like a campaign landing page or event site |
## Examples
### Same project: Web app + mobile app for one product
A restaurant builds a web app for customers to browse the menu and a mobile app for staff to manage orders. Both connect to the same database of menu items, orders, and customer information.
**Why one project:** The apps share the same data and backend. When a customer places an order through the web app, the staff sees it immediately on the mobile app.
### **Same project**: App + admin dashboard + investor pitch deck
A startup builds their main product, an internal admin panel for managing content, and a slide deck for fundraising—all in one project.
A startup builds their main product, an internal admin panel for managing content, and a slide deck for fundraising — all in one project.
**Why one project:** The admin dashboard manages the same data the app displays, and the pitch deck can reference live metrics from the shared backend.
### **Separate projects**: Two unrelated client apps
A freelancer builds an e-commerce store for one client and a booking system for another.
**Why separate projects:** The apps have no shared data or logic. Each client needs independent publishing and you don't want changes to one affecting the other.
### **Separate projects**: Campaign landing page alongside a main product
You have a production app that runs year-round and a short-lived landing page for a marketing campaign.
**Why separate projects:** The campaign page has its own lifecycle — you'll spin it up, run it for a few weeks, and take it down. Keeping it separate avoids cluttering your main product and lets you publish or remove it independently.
## Frequently asked questions
Not currently. If you need to separate an artifact, create a new [project](/features/projects-and-artifacts/projects) and ask Agent to rebuild it there.
A project can contain a maximum of 7 artifacts. This limit exists because additional artifacts consume more memory, which can slow down the preview. If you need more artifacts, start another [project](/features/projects-and-artifacts/projects).
Not currently. Publishing pushes everything live together. If you need independent publishing, use separate projects.
# What's a Project?
Source: https://docs.replit.com/features/projects-and-artifacts/projects
Learn what projects are on Replit — the container for everything you build, from web apps and mobile apps to slide decks and animated videos.
## What is a project?
A project is the container for everything you build on Replit. It holds your code, data, and all the artifacts you create — web apps, mobile apps, slide decks, data dashboards, and videos. When you tell Agent what you want, it sets up a project and builds the artifacts inside it.
Think of a project like a workspace on your desk. Everything lives in one place and can share the same information, but each piece serves a different purpose.
For example, if you ask Agent to build a fitness tracking app, it creates a project with a mobile app artifact along with the backend, database, and storage it needs to work.
Key concepts:
* **Project**: The container that holds everything — your code, data, and all your artifacts
* **Artifact**: A publishable output within a project (a web app, slide deck, video, etc.)
* **Resources**: Every artifact gets automatic access to a backend, database, and file storage — no setup required
Publishing pushes your entire project live at once. All artifacts go live together, so they always stay in sync.
## What you can build
| Type | What it is | Example |
| --------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- |
| **[Web app](/features/artifact-types/web-apps)** | A website or web application people visit in their browser | An online store, a booking tool, a portfolio site |
| **[Mobile app](/features/artifact-types/building-mobile-apps)** | A native app people install on their phone | A fitness tracker, a restaurant ordering app |
| **[Data Visualization](/features/artifact-types/data-apps)** | An interactive dashboard with charts, filters, and live data | A sales report, a metrics tracker, an analytics view |
| **[Slide deck](/features/artifact-types/slide-decks)** | A presentation you can present or export | A pitch deck, a team update, a product overview |
| **[Animation](/features/artifact-types/animated-videos)** | A motion graphics video you can export as MP4 | A product launch video, an explainer, social media content |
| **3D game** | A 3D game, simulation, or interactive experience | A puzzle game, a physics simulation, an interactive experience |
| **[Design](/design/canvas)** | Visual directions and prototypes explored on the design canvas | Mood boards, mockups, design exploration |
A single project can hold multiple artifacts. For example, you could build a web app for your customers, a mobile app for your team, and a slide deck for investors — all in the same project. When artifacts live in the same project, they automatically share the same data and backend logic. To learn more, see [Artifacts](/features/projects-and-artifacts/artifacts#multiple-artifacts-in-one-project).
## Managing your projects
Your Projects page lists every project you've created or been invited to. It's the fastest way to jump back into recent work and find the right project in a busy workspace.
### See at a glance what's inside each project
Every project card shows small icons for the artifacts it contains for each web app, mobile app, slide deck, data visualization, or animation in the project. Hover any icon to preview that artifact's screenshot directly on the card, so you can tell projects apart without opening them.
### Filter by artifact
Use the **Build type** dropdown at the top of the Projects page to filter your list by artifact. Pick one to see only the projects that contain that kind of artifact:
* **Web** — projects that contain a web app
* **Mobile** — projects that contain a mobile app
* **Data** — projects that contain a data visualization
* **Slides** — projects that contain a slide deck
* **Design** — projects in Design mode
* **3D Game**, **Agent & Automation**, and more
Select **Any build type** to clear the filter.
### Sort by last opened
The Projects page is sorted by **last opened by you** by default — the projects you've spent time in most recently appear at the top. This is especially useful in team workspaces, where other members' recent edits would otherwise bury your current work.
You can switch the sort by selecting a different column header (for example, **Last updated** or **Name**).
### Pin the projects you use most
Pin a project to keep it at the top of your list. Pins are **private to you** — pinning a project in a team workspace doesn't change what other members see.
To pin a project, open the overflow menu (three dots) on the project card and select **Pin**. Select **Unpin** from the same menu to remove the pin.
## Next steps
Learn how to create, switch between, and manage artifacts
Build full-stack web applications
Create native iOS and Android apps
Build interactive dashboards and data exploration tools
Create presentations through conversation
# Remix an app
Source: https://docs.replit.com/features/projects-and-artifacts/remix-an-app
Create your own copy of a public Replit App or template to explore, customize, and build on in your workspace.
Remixing lets you start from existing apps created by the community. It's faster than building from scratch and a great way to learn from working code.
New to Replit? Try [building your first app](/build/your-first-app) to learn how Agent works from scratch.
## What is a Remix
A **Remix** is a new Replit App you create from an app that you currently have access to. When you remix a public app or template, you get your own copy to interact with and iteratively improve. Changes you make in your Remix don't affect the original app.
Your Remix credits its source: it shows a **Remixed from** link back to the original, and the original's build prompt appears on its cover page.
## What your Remix includes
A Remix is a complete, working copy, with a clean separation from the original:
* **All files and configuration** copy over, so the app runs exactly as the source did.
* **The source's checkpoint history** comes along, labeled as history from the source app. You can roll back to any of those checkpoints; the conversation that produced them stays with the original.
* **A brand-new Agent.** Your Remix starts with a fresh Agent and no inherited chat history.
* **Secret names, not values.** If the app uses secrets (such as API keys), your Remix lists them so you know what to fill in, with empty values. Values copy only when you remix your own app.
* **A fresh database.** Your Remix never connects to the original's database. If the original offers it, a **Copy data from original App** option copies the data itself; your changes still never touch the source.
* **A fresh sign-in setup** for apps that use Replit Auth.
Not copied: deployments, domains, and connector configurations, which you set up on your own copy. Remixes also start private, so nothing is shared until you choose to publish.
## How to remix an app
Find an app you want to remix, such as one from the [community](https://replit.com/community/all). Its cover page shows a live preview and sharing options.
Select **Remix this App** to start creating your own version.
In the **Remix App** dialog, give your copy a name and an optional description, then select **Remix App**. You can edit these details later.
Your copy opens in your workspace and starts automatically. Navigate to the **Preview** tab to see it running.
## Try it
Create a Remix of the **Supercar showcase** template, one of the featured templates from [Start from a template](/design/start-from-a-template):
## Build on your Remix
Once your Remix opens in the workspace, use Agent to modify and extend it. Enter a prompt in the **Agent** tab describing the feature you want to add.
To undo Agent's changes, select **Rollback to here** in the Checkpoint created after the change. Learn more about [Checkpoints and Rollbacks](/features/version-control/checkpoints-and-rollbacks).
## Remix or build from a prompt?
Both paths end in the same place: an app of your own that Agent helps you evolve. They start differently:
| | Remix | Build from a prompt |
| ------------------ | -------------------------------------- | ------------------------------------------ |
| Starting point | A working app, copied exactly | An app Agent creates from your description |
| First result | Immediate, and identical to the source | Takes longer, and output varies |
| Agent's first move | Waits for your direction | Plans and builds from your prompt |
If an app close to what you want already exists, remix it: Agent's first turn works on a real, working app instead of starting from a blank slate. Build from a prompt when your idea doesn't resemble anything you can find.
## Next steps
* **Explore more remixes**: Browse the [community](https://replit.com/community/all) to find apps to remix and learn from
* **Build from scratch**: Try [creating your own app](/build/your-first-app) with Agent to compare the experience
* **Publish for remixing**: Share your enhanced version so others can build on your work
# Updating older projects for multiple artifact support
Source: https://docs.replit.com/features/projects-and-artifacts/updating-projects-for-multiple-artifacts
Add a second artifact to an older Replit project with a one-time structural update that preserves your URL, data, and deployment.
If your project was created before March 11, 2026, Agent may need to run a one-time structural update before it can add a second artifact to it. This page explains why, what changes, and which projects are eligible.
## Background
On **March 11, 2026**, Replit released [Agent 4](/updates/2026/03/13/changelog). One of the biggest changes in that release was **multi-artifact support**: a single [project](/features/projects-and-artifacts/projects) can now hold several [artifacts](/features/projects-and-artifacts/artifacts) (for example, a web app, a mobile app, and a pitch deck) that share the same database, backend, secrets, and deployment.
Before March 11, 2026, each project was built around a single app with a different file layout. That older structure doesn't have the separation the backend needs to host more than one artifact. Because of those differences, projects created before March 11, 2026, need a **one-time structural update** before Agent can add a second artifact to them. Projects created on or after that date already use the new layout and don't need this step.
## What the update does
When you ask Agent to add a second artifact to an older project (for example, adding a mobile app to an existing web app), Agent reorganizes your project into the new multi-artifact layout first. Your URL, collaborators, secrets, database, and domains are all preserved. Only the internal structure changes.
## How it works
Ask Agent for something like, "Create a pitch slide deck for my website."
Agent pauses before making any changes and shows you a proposal in chat. For up to two eligible projects, you'll also see a one-time **\$5 credit** offer to get you started with the project update. Click **Update project** to continue, or **Not now** to skip.
Agent reorganizes your project into the new structure in a task — you can follow along in the task list. Your original app is backed up before anything changes, so you won't lose any previous work if something goes wrong.
Once your original app is running in the new structure, Agent builds the artifact you originally requested.
## Eligibility
Not every project can be updated at this time. Your project must be one of these types:
* **Web App** (fullstack JavaScript)
* **Design-to-app mockups**
* **Mobile App** (Expo)
Other project types created before March 11, 2026, including Python, Flask, Streamlit, game stacks, video projects, and agent stacks, aren't supported. If you need multiple artifacts in those cases, [create a new project](/features/projects-and-artifacts/projects) instead.
Your project's ports and workflows must also match the default configuration for its type. If you've manually edited `.replit`, you'll see this message:
> *This project cannot be migrated automatically: workflow config does not match expected.*
To fix it, revert your port or workflow customizations to the defaults and try again.
## Frequently asked questions
Projects created before March 11, 2026 (when Agent 4 launched) used a single-app layout. The newer shared workspace layout is what lets a web app, mobile app, and admin dashboard live together and share the same database and backend. The update is a one-time step to get onto that layout.
Click **Not now**. Agent keeps building in the existing single-artifact layout. You can revisit the offer later if your needs change.
No. Once your project is on the new structure, no further updates are needed. Future artifacts are added directly without another update step.
Create a separate project for the new artifact, or start a fresh project that supports multiple artifacts from day one.
## See also
* [What's an Artifact?](/features/projects-and-artifacts/artifacts)
* [What's a Project?](/features/projects-and-artifacts/projects)
* [Multiple Artifacts vs. Separate Projects](/features/projects-and-artifacts/multiple-artifacts-vs-projects)
# Agent skills
Source: https://docs.replit.com/learn/agent-skills
Understand when and how to use Agent Skills — proactive vs reactive patterns, being selective, security, and how skills differ from MCP servers.
Skills teach Agent new capabilities. They let you share your expertise, preferred patterns, and specialized knowledge with Agent so it produces better, more consistent results.
## Why skills matter
Every time you build with Agent, you create useful context: solutions to problems, design decisions, framework preferences. But that context disappears when the chat ends. Skills preserve it.
A GSAP animation skill teaches Agent how to use a specific library correctly. A design system skill ensures it applies your exact colors and spacing rules. A bug fix skill captures a solution so Agent doesn't repeat the same mistake. Tasks that were previously inconsistent become reliable.
Skills are also an [open standard](https://agentskills.io/specification). They work with any agent, including Replit Agent, so you can carry them between tools.
## Proactive vs. reactive skills
A framework for thinking about when and how to create skills. Understanding both patterns makes you more effective.
### Proactive skills
Proactive skills are ones you add *before* you start building. Research the libraries or patterns you want to use, find or create skills for them, then start prompting.
**Example:** Before building a portfolio site with handwritten SVG animations, research animation libraries and find GSAP. Install a GSAP React skill, then prompt Agent to build the animations. Agent has the specialized knowledge it needs from the start — it understands the library's API, best practices, and common patterns. Without the skill, it might produce something generic or incorrect.
This pattern works well when:
* You're using a library that's popular but has nuanced patterns Agent may not nail on its own
* You want consistent design choices across the project (typography, spacing, animation style)
* You're starting a project and already know the technical direction
### Reactive skills
Reactive skills are ones you create *after* solving a problem. You encounter an issue, debug it with Agent, fix it, and then capture the solution so it doesn't happen again.
**Example:** While building a canvas for a mobile app, you notice jagged edges on images that get worse when zooming in. Debugging with Agent reveals this is minification aliasing — a rendering issue where images look worse as they shrink, counterintuitively. After implementing a fix, ask Agent to create a skill:
Create a skill that captures what we just learned about fixing minification aliasing. Include the root cause, the solution, and when this issue typically occurs so you can prevent it in the future.
Agent uses the conversation history to write a project-specific skill. Next time the issue comes up, you can point Agent to the skill instead of debugging from scratch.
This pattern works well when:
* You've fixed a non-obvious bug and want to prevent it from recurring
* You've learned something about your app's architecture during a debugging session
* You want to encode a solution that took significant effort to discover
## Being selective with skills
Think of skills like directions you'd give a friend to find your apartment. A targeted list of instructions works. A binder full of documentation doesn't — nobody has time to read that, and the important details get lost.
The same applies to Agent. If you add too many skills, Agent can get confused. Be deliberate about which skills you enable for a given project, and remove ones you no longer need.
Skills work best when they capture specific, repeatable patterns rather than general guidance. Focus on concrete workflows, established conventions, and proven solutions.
## Authoring skills well
Skills can be complex and intricate. A few principles keep them effective:
* **Describe the happy path.** Tell Agent how to do the thing right. If you catch yourself listing what *not* to do, that is usually a sign you should reframe the whole approach.
* **Use scripts wherever you can.** A deterministic script takes the thinking off Agent's plate and is more reliable than asking it to reason through the same steps every time.
* **Link out.** Structure a skill so it points to other Markdown files, and Agent pulls in only the ones it needs for the task in front of it.
* **Benchmark regularly.** That is how you confirm a skill actually works, instead of assuming it does.
* **Write them yourself.** The goal is concise, deliberate context, and you get there by hand-writing skills rather than generating them wholesale. Agent can help you draft one, but refine it yourself so every line earns its place.
* **Keep them bespoke.** Do not build generic skills for code cleanliness or security — those already ship with Agent. Your skills should capture the things specific to you or your organization.
Most skills fail in diagnosable ways:
* **A skill fires when it should not.** The description is too broad. Narrow it, and say when *not* to use it — "not for blog posts or help docs" is often more useful than any positive instruction.
* **A skill fires but the output is off.** The instructions are too generic. Replace vague guidance like "make it professional" with specific rules: exact names, concrete requirements, explicit things to avoid.
* **Two skills conflict.** Fix the descriptions so both do not fire on the same task. Conflicts are almost always a scoping problem, not an instructions problem.
Skills go stale, so treat them like documentation you actually maintain.
## Taking skills workspace-wide
Everything so far applies to skills in a single project. On a team, you can also customize Agent for your entire workspace, so everyone starts from the same conventions without re-explaining them in every project. Workspace customization has two parts:
* **Custom instructions** — always-on rules injected into Agent's context on every project and every message, before anyone types a prompt. Reserve these for the few rules that are truly universal, such as "never store credentials in plain text." Because they load on every turn, every word spends part of Agent's context budget — keep them short.
* **Workspace skills** — the same skills described above, made available to everyone in the workspace and managed centrally. They stay nearly free until a relevant task invokes them, so you can offer many without degrading output.
A simple way to decide what goes where: if a rule should hold no matter what anyone is building, it is a custom instruction; if it only matters for a certain kind of task, it is a skill.
For how to set up custom instructions and workspace skills, and who can manage them, see [Agent Customization](/features/agent/agent-customization).
## Security considerations
Skills from the Replit Skills pane are audited for safety. But skills can be installed from anywhere — they come from an [open source repository](https://github.com/vercel-labs/skills) where anyone can contribute.
Since skills are instructions that Agent follows, a malicious skill could tell Agent to exfiltrate sensitive data from your project. Before installing any skill from an external source:
1. **Open the file.** Skills are just markdown. Read the contents in `/.agents/skills/` before using them.
2. **Check the source.** Verify the skill comes from a trusted repository or author.
3. **Review what it instructs.** Make sure the skill doesn't reference suspicious external URLs or request sensitive information.
Always review skills from external sources before installing them. Skills in the Replit Skills pane have been audited, but skills installed via CLI or copied from the internet have not.
## Skills vs. MCP servers
Skills and MCP servers are the two main ways to extend agents, and they serve different purposes.
**Skills** are context-efficient. Only a brief description loads until the skill is invoked. Use skills for:
* Workflows and conventions ("how to publish," "code review checklist")
* Reference materials (API patterns, style guides, design systems)
* Reusable prompts and specialized knowledge (animation libraries, framework patterns)
**MCP servers** are context-heavy. All tool descriptions load upfront, which can degrade output quality if you add too many. Use MCP servers for:
* Connecting to external services (Notion, Linear, Figma)
* Actions that need API access
* Tools that *do* things, not just instruct
The key distinction: skills define *how* your agent should work. MCP servers define *what* your agent can access. Both work for coding agents like Replit Agent and for agents you build yourself.
## Next steps
Set up workspace-wide custom instructions and skills for your whole team.
Attach a skill to a message, install one in your project, or start a new project from one.
Technical details on skill structure and how skills work under the hood.
Connect Agent to external services and tools via the Model Context Protocol.
Write clearer instructions so Agent gets you closer on the first try.
# Build in parallel
Source: https://docs.replit.com/learn/build-in-parallel
Learn how to build several features at once with parallel tasks: delegate safely, slice work small, and apply changes without surprises.
Handling multiple pieces of work at once is one of those skills that separates good builders from exceptional ones. This page teaches you how to build several features at the same time, safely, even if you've never worked this way before.
## A new way to work with Agent
So far, you've probably worked with Agent like a partner sitting next to you: you ask, you watch, you respond. Building in parallel is a different relationship. You hand a feature to Agent as a **task**, and it goes off and builds it in the background while you do something else.
You already work this way in everyday life. You don't stand in front of the washing machine until it finishes. You start the laundry, then go cook. Tasks work the same way: start one, and while it runs, start another, review something else, or just keep chatting with Agent in the main conversation.
This changes your role. You stop being a passenger watching one build and become the director of several.
## Your app is safe while tasks run
The first question everyone asks: *will a background task break my app while I'm not looking?*
No. Each task works on its own **copy** of your project. Your app doesn't change until you review a task's work and choose to apply it.
Each task also gets its own Agent and inherits your full project context, so you don't repeat yourself. Tasks are independent: you can start the next one the moment the first is running.
## A worked example: three features at once
Imagine a car rental app that already handles reservations and sign-in. You want to add three features:
* An events page
* Event registration
* A contact form
Built one after the other at about five minutes each, that's fifteen minutes. Built in parallel, it's about five.
Create a task for each feature. Tasks start in Plan mode, so each one shows you a plan before building. Approve the plans, and watch what happens: the events page and the contact form start building immediately, but event registration waits. Visitors can't register for events if the events page doesn't exist yet. Agent notices that dependency on its own, acts like a project manager, and runs that task after the one it depends on.
To see everything at once, open the task board, where every task moves through columns from draft to done in real time.
## Slice your work small
The skill that makes parallel building work is cutting features into small, self-contained tasks. Small tasks finish faster, are easier to review, and are less likely to interfere with each other.
A useful rule: **if your task description contains "and", consider splitting it.**
* Good: "Add an events page", "Add a contact form"
* Too big: "Add events and registration and email notifications and an admin view"
The big version isn't wrong, but it forces one Agent to do everything in sequence. Four small tasks give Agent the chance to run them together.
Test yourself. Which of these could run in parallel?
1. Add a dark mode toggle
2. Add a customer reviews section
3. Let customers reply to reviews
4. Translate the app into French
Tasks 1, 2, and 4 are independent and can all run at once. Task 3 depends on task 2: there's nothing to reply to until reviews exist. You don't need to catch this yourself. Agent detects the dependency and sequences those two tasks for you.
## Why you update before you apply
Here's the one concept that trips everyone up, so let's take it slowly.
Two friends each take home a copy of the same party invitation to improve it. One adds a map. The other rewrites the schedule. You accept the first friend's version, and it becomes the real invitation. Now the second friend's copy has a problem: their rewrite is based on an invitation that no longer exists. Before you can accept their work, they need to redo it on the newest version.
Tasks work exactly like this. Each one copied your project when it started. The moment you apply one task's changes, every other task's copy is one version behind. For unrelated features that's often fine, but since you're not reading the code, you can't be sure two tasks didn't touch the same thing.
Before applying a task's changes, **update** the task first. Updating syncs the task with the latest version of your app and resolves any conflicts, so your tasks build on top of each other instead of overwriting each other.
## Review like a manager
Parallel building makes you a manager, and the classic manager mistake is approving work you didn't check. The discipline is a simple loop, one task at a time:
Open the finished task and try the feature. Click through it like a user would.
Happy with it? Apply the changes to your main app.
Before touching the next finished task, update it so it syncs with the version you just changed.
Test, apply, update, until every task has landed.
Never batch-approve. Three unreviewed features applied at once means three suspects when something looks wrong.
## When to stay sequential
Parallel building is a tool, not a rule. Stay in the main conversation, one thing at a time, when:
* **Two ideas touch the same screen.** "Redesign the home page" and "change the navigation" will collide. Do them in order.
* **You're exploring.** In design work, the result of one attempt changes what you want next. Exploration is a conversation, not a work order.
* **You can't describe the task in one sentence.** If you can't state it simply, you're not ready to delegate it.
## Find your ceiling
The limit on parallel building isn't Replit. It's your attention. Every time you switch between tasks, you pay a small cost in focus, and everyone's budget is different.
Start with two tasks. If reviewing them feels comfortable, try three. Agents are good enough at building that you don't need to supervise every step, so most builders find the speed is worth the switching. But this is a skill you practice, not a setting you enable.
## Next steps
* [Task system](/core-concepts/agent/task-system): The full reference for how tasks work.
* [Plan and Build modes](/learn/plan-vs-build-mode): Why tasks start with a plan.
* [Vibe coding 101](/learn/foundations/vibe-coding-101): The build-in-small-slices mindset that makes slicing tasks natural.
# Build with Agent
Source: https://docs.replit.com/learn/build-with-agent
Learn five practical habits for working with Agent: be specific, plan the work, add context, review and test, and use checkpoints.
Agent is Replit's AI builder and your companion for turning ideas into software. Agent can plan changes, write code, explain behavior, debug issues, and improve your app.
[Vibe coding 101](/learn/foundations/vibe-coding-101) explains the mindset, while this page explains how to work with Agent in practice. [Effective prompting](/learn/effective-prompting) explains how to write clearer instructions.
Think of Agent as the quarterback on the field: it reads the situation, chooses a path, and moves the work forward. You are the coach: you set the strategy, call the play, review what happened, and decide the next move.
Agent can do a lot, but it works best when you lead the process: be specific, plan the work, add context, review and test, and use checkpoints when you need to recover.
## Five tips for building with Agent
Use these habits when you work with Agent:
1. Be specific.
2. Plan the work.
3. Add context.
4. Review and test.
5. Use checkpoints.
## Be specific
Agent can handle complex work, but it needs clear direction.
A useful request explains what you want, what matters, and what should stay the same. It does not need to describe every implementation detail, but it should give Agent enough direction to make good decisions.
Instead of:
Make my app better.
Try:
Improve the signup page so visitors understand what the product does before creating an account.
Keep the current color palette, keep the form fields the same, and make the primary button more obvious.
The second prompt gives Agent a goal, a focus area, and constraints.
When your request has several parts, say what matters most.
Add a simple admin view for managing catering requests.
The most important part is being able to see new requests, mark them as contacted, and filter by status.
Keep the first version simple.
Agent can break that work into steps, but your direction tells it what success looks like.
For more examples of specific instructions, see [Effective prompting](/learn/effective-prompting).
## Plan the work
Planning helps when the work has uncertainty, multiple steps, tradeoffs, or anything you want to approve before files change.
You can ask Agent to make a plan in the conversation:
Before making changes, create a plan for adding online ordering.
Include the user flow, data needed, pages or components that will change, risks, and how I should test it.
Use [Plan mode](/features/agent/plan-mode) when you want Agent to think first and wait for your approval before changing files. Toggle **Plan** in the prompt composer before submitting.
When Agent finishes thinking, you will see a **task plan is ready for review** banner with a **Review now** button.
## Add context
Context helps Agent understand what matters.
You can add context with text, screenshots, sketches, files, data, errors, or Canvas annotations. Use the format that best explains the problem.
Use text when the change is about behavior, goals, or constraints:
Context: this app is for parents ordering birthday cakes.
Keep the form short, make pickup details obvious, and avoid anything that feels corporate.
Use screenshots or sketches when layout is hard to describe in words:
Use this screenshot as layout direction for the request form.
Match the overall structure, but keep the existing fields and submission behavior.
Use [Canvas](/design/canvas) annotations when the change is visual and you want to point to a specific part of the app.
Use my Canvas annotations to update the hero section.
Apply the notes to the headline, image, and primary button only.
Do not change the catering request form.
Good context also includes what should not change. That helps Agent improve one area without accidentally rewriting another.
## Review and test
Agent may propose a plan before building, and it may summarize what changed afterward. Read both.
Open the plan by selecting **View** on the task plan card. The expanded plan shows what Agent intends to build, the success criteria, what is out of scope, and the steps Agent will follow.
Before Agent builds, review the plan:
* Does this solve the right problem?
* Is anything missing?
* Is anything out of scope?
* Is there a smaller version to build first?
* Does it explain how you should test the result?
If the plan is too broad, ask Agent to reduce it.
This plan is too broad.
Reduce it to the smallest version I can test today.
Move everything else into a future improvements list.
After Agent builds, test the app yourself. Open Preview and use it like the person it is for.
Check:
* Can someone complete the main action?
* Did the requested change happen?
* Does the app still work on mobile?
* Did any important behavior break?
* Did Agent change something unrelated?
* Is the result good enough to keep building on?
If something is wrong, describe what you saw.
Instead of:
Fix the form.
Try:
When I submit the catering request form, the success message appears, but the form still shows the old text.
Clear the form after submission and keep the success message visible.
Specific feedback helps Agent fix the right issue.
## Use checkpoints
Checkpoints help you recover when a change goes in the wrong direction.
Use focused feedback when the result is close:
This is close, but the form is now too long.
Keep the new visual style, remove the optional notes field, and make the pickup date easier to scan.
Use a checkpoint when the app is worse than before, important behavior broke, or Agent changed more than expected.
Open **History** in the Agent panel to see checkpoints. Each checkpoint shows what changed, with **Rollback here** and **Changes** controls.
When you select **Rollback here**, Agent confirms what will be restored before applying the rollback.
If you are unsure whether to fix forward or roll back, ask Agent to help compare.
The last change made the app worse.
Compare the current version to the previous working version.
Tell me whether it is safer to fix forward or roll back, and explain why.
Wrong turns are normal. Checkpoints let you explore without losing the ability to return to a safer version.
For more recovery guidance, see [Checkpoints and rollbacks](/features/version-control/checkpoints-and-rollbacks).
## What good Agent collaboration feels like
You are on the right track when:
* Your requests explain the goal and constraints
* Agent's plan is clear enough to review
* You add screenshots, files, or Canvas notes when words are not enough
* You test important flows after changes
* You give focused feedback when something is off
* You use checkpoints instead of trying to untangle a bad change forever
## Next step
Learn how to write clearer instructions that Agent can act on confidently.
Practice working with Agent from first prompt to published app.
Learn how to return to a safer state when needed.
# Effective prompting with Replit AI
Source: https://docs.replit.com/learn/effective-prompting
Learn principles and see examples for writing effective prompts when using Replit Agent.
Effective prompting is about giving clear instructions to a capable assistant. Guide [**Agent**](/features/agent/overview) well, and you'll go from idea to app fast.
## Quick examples
See the difference between vague and effective prompts:
**Vague:** "Fix my code."
**Effective:** "My script fails when processing user input. The error seems to be in the validation function. Can you help debug the `validate_input` part? Here's the error message: \[details]"
The effective prompt identifies the problem area, suspected function, and provides context.
**Vague:** "Make a website."
**Effective:** "Create a simple portfolio website with sections for Home, About Me, and Contact Form. Use a clean, modern design theme and placeholder content."
The effective prompt defines the purpose, core features, and desired aesthetic.
**Vague:** "Don't make it slow."
**Effective:** "Refactor the data processing function to handle larger inputs more efficiently. Could we use a different algorithm or data structure?"
Tell Agent *how* to improve rather than using negative constraints.
**Vague:** "Add animation."
**Effective:** "Animate the main image on the landing page so it gently fades in when the page first loads to create a welcoming effect."
Identify the specific element, desired effect, timing, and intended experience.
**Vague:** "Build the backend."
**Effective:** "Set up the server-side logic. Implement user authentication (signup/login) and create an API endpoint to retrieve user profile data securely."
Break large tasks into specific functionalities.
## Core principles
### Plan first
Before prompting, outline your app's features and user flows. A clear plan leads to more focused prompts.
Think through your application's structure like a product manager would. Break the overall goal into logical stages.
**Instead of:** "Build a task manager app."
**Try:** "1. Create the basic HTML structure with an input field and task list. 2. Add JavaScript to add tasks. 3. Use a database to store tasks. 4. Add functionality to mark tasks complete."
Then prompt Agent for each step.
### Build incrementally
Use [**Checkpoints**](/features/agent/overview#checkpoints) to save progress after each successful step. If something breaks, you can roll back to a working state and try a different approach.
**Instead of:** "Build a complete e-commerce platform."
**Try:** "Set up a basic full-stack project for an e-commerce site with user sign-up and login using Replit Auth." Then follow with prompts for product listings, cart, and checkout.
### Be specific
Define exactly what you need: output formats, constraints, edge cases.
**Instead of:** "Add a contact form."
**Try:** "Create a contact form page at `/contact` with fields for:
* Name (required)
* Email (required, must be valid format)
* Message (required, min 10 characters)
On submit, send the form data to `contact@mydomain.com`."
### Use positive language
State what you *want*, not what to avoid.
**Instead of:** "Don't make the user profile page confusing."
**Try:** "Design a clean user profile page. Display the username prominently, followed by email and join date. Include an 'Edit Profile' button."
### Keep it simple
Use clear, straightforward language. Break complex requests into bullet points.
**Instead of:** "Implement the necessary server-side infrastructure to facilitate the dynamic generation and retrieval of user-generated content artifacts."
**Try:** "Create backend functionality for users to submit blog posts. Users should enter a title and body content. Store posts in the database."
## Working with context
### Provide relevant files
Mention specific files rather than attaching your entire project.
**Instead of:** (Attaching everything) "Implement the user profile page based on our design system."
**Try:** "Create the user profile page. Fetch user data from the server endpoint. Style according to \[URL to design docs] and match this mockup: \[attach `profile_mockup.jpg`]."
Start a new chat when switching to unrelated tasks. This prevents confusion from accumulated context.
### Show examples
Reduce ambiguity by providing concrete examples—code snippets, sample data, or screenshots.
**Instead of:** "Make the product cards look better."
**Try:** "Redesign the product cards on the shop page. Each card should display the product image, name, price, and an 'Add to Cart' button, similar to this layout: \[attach screenshot]. Use a light gray border."
## Debugging effectively
When errors occur, provide:
* The **exact** error message
* Relevant code snippets
* File names where the error occurs
* What you were trying to achieve
* Steps you've already tried
**Instead of:** "My login page is broken."
**Try:** "When I log in with correct credentials on `/login`, I get a 'User not found' error in the browser console. The database check doesn't seem to work. Here's the login handling code in `auth.js`."
## Ask for guidance
Switch to Plan mode to explore options before building. Ask Agent about libraries, approaches, and trade-offs.
**Instead of:** "Add payments."
**Try:** "What are some good options for accepting credit card payments in a web app built on Replit? I need something relatively simple to integrate."
## Iterate on your prompts
Your first prompt might not be perfect—that's normal. If the result isn't right:
* Add more detail
* Provide an example
* Simplify the instruction
* Try a different way of explaining
**Initial:** "Create a header for my website."
**Refined:** "Create a sticky header component with the site logo on the left and navigation links (Home, About, Contact) on the right."
## Summary
Effective prompting comes down to:
* **Planning** before you prompt
* **Building** incrementally with Checkpoints
* **Being specific** about requirements
* **Providing context** through examples and relevant files
* **Iterating** when results aren't quite right
Master these principles and you'll build apps faster with Agent.
# Context management
Source: https://docs.replit.com/learn/foundations/context-management
Learn how context windows work and how to give AI the right information when building with Replit Agent.
Context is the information an AI model uses to produce its next response. Context management is the practice of giving the model the right information at the right time.
This matters because AI does not work from your intent alone. It works from the text, files, screenshots, logs, examples, and conversation history available in its context window.
## What is a context window?
An AI model has a limit on how much information it can consider at once. That limit is called the context window.
The context window can include:
* Your prompt
* Earlier messages in the conversation
* Files or code the model can see
* Error messages and logs
* Screenshots, images, or design references
* Project instructions, such as `replit.md`
* Tool results from previous steps
The model uses that context to decide what to generate next.
## Why context windows matter
If the important details are not in context, the model may guess. If too much unrelated information is in context, the model may focus on the wrong thing.
For example, this prompt gives little context:
```text theme={null}
Improve the signup page.
```
This prompt gives useful context:
```text theme={null}
Improve the signup page for first-time founders who are deciding whether to join the waitlist.
Keep the current fields. Make the value proposition clearer above the form.
Do not change the pricing section.
```
The second prompt tells the model who the page is for, what to improve, what to preserve, and what is out of scope.
## Context window sizes vary
Different AI models can handle different amounts of context. Larger context windows can consider more text at once, but larger is not always better. Relevant context still matters more than dumping every detail into the conversation.
Examples of public context window sizes:
| Model family | Example context window |
| ----------------- | ---------------------- |
| GPT-4.1 | Up to 1 million tokens |
| Claude Sonnet 4.5 | Up to 200,000 tokens |
| Gemini 2.5 Pro | Up to 1 million tokens |
These numbers change over time and do not guarantee that every product exposes the full model limit. The practical lesson is stable: keep the important information clear and focused.
## Types of context
| Context type | Example |
| ---------------------- | ------------------------------------------------------------ |
| **Goal** | "This landing page should collect waitlist signups." |
| **Audience** | "This is for busy restaurant owners." |
| **Constraints** | "Keep the current color palette and form fields." |
| **Non-goals** | "Do not add payments yet." |
| **Examples** | A screenshot, mockup, sample data, or competitor page. |
| **Project state** | The current file, component, error message, or user flow. |
| **Definition of done** | "A visitor can submit the form and see a thank-you message." |
## Fresh context and persistent context
Some context belongs in the current conversation. Use it when you are asking for a specific change, debugging one issue, or giving feedback on a recent result.
Other context should persist across the project. Use persistent context for coding style, brand guidelines, naming conventions, reusable product rules, and constraints Agent should remember across work sessions. On Replit, [replit.md](/features/project-setup/replit-dot-md) is one way to give Agent persistent project context.
## When context gets noisy
Long conversations can drift. If a thread has mixed too many unrelated decisions, Agent may pay attention to old context that no longer matters.
Start a fresh thread when:
* You switch to an unrelated feature
* The conversation has many abandoned directions
* Agent keeps applying old constraints
* You want a clean plan for a new area
When you start fresh, summarize the important context instead of assuming Agent knows what still matters.
```text theme={null}
Context: this project is a waitlist app for local fitness coaches.
The main flow is landing page → signup form → confirmation message.
For this thread, only improve the confirmation message and follow-up copy.
```
## Common misconceptions
* **"More context is always better."** Relevant context is better. Too much unrelated context can distract the model.
* **"The model remembers everything perfectly."** AI uses available context, but you should restate important constraints when they matter.
* **"Context is only text."** Screenshots, files, data, designs, logs, and examples can all be context.
## Where to go next
Learn how language models work and how AI agents use models with tools to take action.
Learn how to add context while working with Agent.
See prompt examples that include useful context.
Learn how to provide persistent project context.
# Introduction to AI
Source: https://docs.replit.com/learn/foundations/introduction-to-ai
Learn the practical AI concepts behind Replit Agent — large language models, tokens, variability — and how AI agents combine models with tools to build with you.
AI tools help you give instructions in natural language and get useful output back. On Replit, that output can become plans, code, designs, explanations, debugging steps, and changes to your project.
You do not need to understand AI deeply before building. A few concepts help you give better instructions and evaluate the results with confidence.
## Large language models
Most AI builders are powered by large language models, often called LLMs. An LLM is a model trained to recognize patterns in text and generate text that follows those patterns.
Text can mean prose, code, HTML, CSS, SQL, JSON, terminal commands, test output, error messages, or configuration. That is why the same kind of model can help write copy, explain a bug, create code, or summarize a plan.
## Text generation
An LLM does not retrieve a fixed answer from a database. It generates a response piece by piece based on the input you provide and the context it can see.
When you write a prompt, the model uses your words, the conversation, and any available project context to predict a useful next response. That response might be an explanation, a plan, or text that another system can use to take action.
This means the quality of your input matters. Clear goals, examples, constraints, and context make good results more likely.
## Tokens
AI models process text in small units called tokens. A token can be a word, part of a word, punctuation, whitespace, or a piece of code.
Tokens matter because they affect how much information an AI model can consider at once. Long conversations, large files, logs, screenshots, and instructions all contribute to the context the model has to reason from.
You do not need to count tokens while building. You do need to understand that Agent works better when the important information is clear, current, and focused.
## AI can vary
AI output is not always identical. The same request can produce different wording, designs, implementation details, or tradeoffs.
That variability is useful for exploration, but it also means you should review important work. Test what Agent builds, ask for explanations when something is unclear, and use checkpoints when you need a safe recovery point.
## What makes AI output better
Agent performs best when you provide:
* A clear goal
* The audience or user need
* Constraints and non-goals
* Examples, screenshots, files, data, or links
* The current problem or exact error
* Acceptance criteria for what "done" means
Compare these two prompts:
* *"Write code for a website."*
* *"Write code for a website to collect email addresses for my personal mailing list. Store submissions in Google Sheets."*
The second prompt names the goal, the data, and the destination, so Agent has enough to act without guessing.
This information is called context. To learn why context matters, see [Context management](/learn/foundations/context-management).
## From AI to AI agents
A chat model can respond to a message. An AI agent uses a model plus tools to perform multi-step work — it can reason about a goal, choose tools, inspect information, make changes, check results, and continue until the task is done or needs your input.
### Models and tools
An agent has two important parts:
| Part | What it does |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **Language model** | Understands instructions, generates text, reasons about options, and decides what to do next. |
| **Tools** | Let the agent take action, such as reading files, editing code, running commands, searching docs, testing an app, or publishing changes. |
The model decides what action might help. The tools let the agent act on that decision.
### What agents can do
Agents are useful for work that takes more than one step, such as:
* Planning a feature
* Creating files and code
* Reading existing project structure
* Running commands or tests
* Debugging errors
* Updating designs
* Connecting services
* Summarizing what changed
The agent does not just answer; it works through a task.
### Replit Agent
Replit Agent is an AI agent for building on Replit. It can help you create apps and other artifacts, inspect your project, edit files, run commands, test behavior, explain code, create tasks, and guide publishing workflows.
For example, you can ask Agent to:
```text theme={null}
Build a simple event signup app for a community meetup.
Visitors should see event details, submit their name and email, and get a confirmation message.
Keep the first version simple so I can publish it today.
```
Agent can turn that request into a project, create a first version, and help you refine it.
### You still lead the work
Agent can move quickly, but you still make the important decisions:
* What the artifact should do
* Who it is for
* What should be in scope
* What should not change
* Whether the result works
* When it is ready to publish
This is why context management and review matter. Agent is strongest when you give it clear direction and test the result.
## Common misconceptions
* **"AI should know what I mean."** AI works from the information you give it. If something matters, say it clearly.
* **"The first answer should be final."** Building with AI is iterative. Review, test, and refine.
* **"AI understands intent the way people do."** AI can infer patterns, but it does not automatically know your taste, audience, constraints, or definition of done.
* **"An agent is just a chatbot."** A chatbot mainly responds. An agent can use tools and take action.
* **"Agent knows the whole product goal automatically."** Agent works from your instructions and context. If something matters, include it.
* **"Agent removes the need to review."** Agent can build, but you decide whether the artifact matches your intent.
## Where to go next
Learn how context windows shape AI output.
Put AI, context, agents, and apps together into a builder workflow.
Learn practical habits for collaborating with Replit Agent.
Learn more about Agent's product capabilities.
# Vibe coding 101
Source: https://docs.replit.com/learn/foundations/vibe-coding-101
Learn the mindset for vibe coding: start with a goal, build in small slices, manage context, review results, and improve with feedback.
Vibe coding is a faster way to move from idea to software. Instead of starting with code, you start by describing what should exist, then use AI to help turn that direction into a working app you can see, test, and improve.
Replit is built for this loop. You can describe an idea, preview the result, give feedback, make changes, and publish from the same place.
This page is about the mindset behind vibe coding. The next page, [Build with Agent](/learn/build-with-agent), shows how to use Agent's tools. [Effective prompting](/learn/effective-prompting) shows how to write clearer instructions.
## Software used to be a team loop
Software has usually been built by teams.
A product manager or founder defines what should be built and why. A designer shapes the experience. Developers turn the idea into working software. Teammates test it, give feedback, find bugs, and decide what is ready to ship.
That collaboration is powerful because each role brings a different kind of judgment. Product decides what matters. Design decides how it should feel. Engineering decides how it should work. Testing decides whether it actually does.
But the loop can be slow. Every change has to move through handoffs: explain the idea, design the flow, write the code, review the result, test it, then revise.
Vibe coding compresses that loop.
With Replit, you can move through more of the product-building process yourself. You can define the goal, generate a first version, test it, give feedback, and improve it without waiting for every step to move between different people and tools.
## Your role changes
You do not have to be a developer to start building.
In vibe coding, your role is closer to the product lead. You decide what should exist, who it is for, what matters most, and whether the result is good enough.
Agent helps with implementation, but you still lead the work.
You bring:
* The goal
* The audience
* The taste
* The constraints
* The feedback
* The decision about what ships
Agent helps with:
* Turning ideas into working software
* Making changes
* Explaining behavior
* Debugging issues
* Improving the app over time
The better you lead, the better Agent can build.
## The five principles
Vibe coding works best when you follow five simple principles:
1. Start with the goal.
2. Build in small slices.
3. Manage context.
4. Review and test.
5. Improve with feedback.
The first principle sets direction. The next four repeat as a loop: build a slice, give the right context, review it, improve it, then build the next slice.
1
Start with
the goal
2
Build in
small slices
3
Manage
context
4
Review
and test
5
Improve with
feedback
Set direction once
Repeat 2 through 5 until the slice works
These principles matter more than writing a perfect first prompt. You will rarely get the final app in one step. The goal is to keep the loop clear and moving.
## Start with the goal
A good vibe coding session starts like a good product conversation:
Who is this for? What should they be able to do? What would make this useful?
Before asking Replit to build, describe the outcome you want.
Build a simple website for a local bakery. Customers should be able to see today's specials, learn about catering, and submit a catering request. Make it warm, polished, and easy to use on mobile.
This works because it gives Replit a product goal, not just a task. It explains the audience, the core actions, and the feel of the first version.
You do not need to know the technical implementation yet. Start with what should be true when the app works.
## Build in small slices
A slice is a small piece of the product that is complete enough to try.
For the bakery site, the first slice might be:
* A homepage with today's specials
* A catering request form
* A mobile-friendly layout
That is enough to test the idea. You can open it, click through it, and decide what should improve next.
Avoid asking for the whole product at once. Large requests are harder to review and easier to misunderstand. Small slices help you make progress without losing control.
After the first slice works, add the next one.
Add a confirmation message after someone submits the catering request form. Keep the rest of the page unchanged.
The instruction is small, clear, and testable.
## Manage context
Context is the information Replit uses to understand what you want.
Good context can include:
* Who the app is for
* What problem it solves
* What should be included now
* What should wait until later
* What should not change
* Examples, screenshots, sketches, files, or data
* Notes about tone, style, or brand
Managing context means giving the right information at the right time.
If you are continuing the same feature, stay in the same conversation so Replit can use the previous decisions. If you are starting a different feature or the conversation has become noisy, it can be better to start fresh with a short summary of what matters.
For example:
Context: this bakery site is for busy parents ordering birthday cakes. Keep the form short, make pickup details obvious, and avoid anything that feels corporate. For this change, only improve the catering request section.
You are not just adding more words. You are helping Replit focus.
## Review and test
Agent can build, but you decide whether the result works.
After each meaningful change, open the app and use it like the person it is for. Do not only read what Agent says it changed. Try the flow.
Ask yourself:
* Can someone complete the main action?
* Does the page make sense?
* Does it work on mobile?
* Did anything important break?
* Did Replit change something that should have stayed the same?
* Is this good enough to keep building on?
Reviewing and testing is where your product judgment matters most. You are checking whether the software matches the intent.
## Improve with feedback
The first version of a slice is a draft. That is normal.
Vibe coding gets better through feedback. Tell Replit what to keep, what to change, what to remove, and what to try next.
Instead of:
Make it better.
Try:
Make the catering request form easier to scan. Keep the same fields, but improve the spacing, labels, and submit button. Do not change the specials section.
Good feedback is specific. It protects what already works while improving one part of the app.
When the slice works, loop back and build the next small slice.
If a change goes in the wrong direction, narrow the scope.
That changed too much. Keep the new button style, but restore the original layout and only update the catering form.
Improving with feedback is how you keep the product moving without losing control.
## What good vibe coding feels like
You are on the right track when:
* You can explain the goal in plain language
* Each change is small enough to review
* You know what to test after Agent builds
* You give context instead of guessing what Agent knows
* You tell Agent what to preserve, not just what to change
* The app becomes more useful after each round
Vibe coding does not mean handing off an idea and disappearing. It means shortening the distance between idea, software, feedback, and improvement.
## Next step
Learn how to apply this mindset with Agent's tools, including plans, Canvas annotations, screenshots, and checkpoints.
Learn how to write clearer instructions that Agent can act on confidently.
# What is an app?
Source: https://docs.replit.com/learn/foundations/what-is-an-app
Learn what apps are, why they are useful, and how apps relate to the artifacts you can build and publish on Replit.
An app is software designed to perform a specific task for a specific person or group.
Apps can be simple or complex. A calculator, booking form, dashboard, internal tool, mobile experience, marketplace, and customer portal are all apps if they help someone do something useful.
## Apps are code that runs on infrastructure
Every app is two things working together:
* **Code** — the instructions that describe what the app does: the interface someone sees, the logic that responds to clicks and inputs, and the rules for how data moves around.
* **Infrastructure** — the machines, networks, storage, and services the code runs on so other people can reach it from a browser or phone.
Writing the code is the part most people picture when they think about "building an app." Infrastructure is everything that has to be in place for that code to actually work for users: a server to run it, a database to store information, a domain so people can find it, security to protect it, and a way to update it without breaking what already works.
On Replit, you describe what you want in natural language. Agent writes the code, and Replit provides the infrastructure — hosting, databases, secrets, domains, and deployments — so you can publish a working app without setting any of it up yourself.
## Why build an app?
You might build an app when existing tools almost work, but not quite.
An app is useful when:
* You want a custom workflow
* You have hit the limits of a spreadsheet, form, or template
* You need a repeatable process
* You want to test demand for an idea
* You want teammates, customers, or users to interact with something you control
For example, an entrepreneur might build a waitlist app to test demand. A marketer might build a campaign landing page with a form. A data analyst might build a dashboard that makes a spreadsheet easier to explore.
## Apps solve a focused problem
Good first apps are focused. They solve one clear problem for one clear audience.
Instead of starting with:
```text theme={null}
A platform for managing my entire business.
```
Start with:
```text theme={null}
A page where customers can request a catering quote and receive a confirmation message.
```
The smaller version is easier to build, test, publish, and improve.
## Apps and artifacts
On Replit, an app is one kind of artifact. An artifact is a publishable output from a project.
Artifacts can include:
* Web apps
* Mobile apps
* Data dashboards
* Slide decks
* Animated videos
* Designs
* 3D experiences
Apps are usually interactive. They often let people submit information, view data, log in, make choices, or complete a workflow. Other artifacts, such as slide decks or animated videos, may focus more on presentation or storytelling.
## What makes an app real?
An app starts to feel real when someone can use it outside your head.
That usually means:
* It has one clear purpose
* Someone can complete the main action
* You can test it in Preview
* You can publish it to a shareable URL
* You can improve it after feedback
The first version does not need every feature. It needs to work well enough to learn from.
## Common misconceptions
* **"An app has to be big."** Many valuable apps are small tools for a specific job.
* **"An app has to be public."** Some apps are private tools for you, your team, or your customers.
* **"An app has to be perfect before publishing."** Publishing a focused first version helps you learn what to improve.
## Where to go next
Learn the mindset for turning app ideas into working artifacts.
Build a guided first app and publish it to a URL.
Learn how Replit projects hold apps, data, and artifacts.
Learn about the publishable outputs you can create on Replit.
# Build mobile apps with Expo
Source: https://docs.replit.com/learn/mobile/expo
Learn how to create and preview cross-platform mobile apps using Expo on Replit.
Apps are the new websites, and everyone should be able to create them. By combining Replit's browser-based development environment [with Expo](https://expo.dev/blog/from-idea-to-app-with-replit-and-expo), mobile app creation is now as simple as building a website.
This tutorial will guide you through creating a mobile app using Replit and Expo in the Project Editor at [replit.com](https://replit.com), from setting up your environment to previewing your app on your device.
Watch Replit's two-part video series to learn how to create and preview a mobile app using Replit and Expo.
## Part 1: Create a mobile app in five minutes
Learn how to create a native iPhone/Android app using Replit and Expo in just five minutes - perfect for beginners.
### Getting started with Replit and Expo
Before getting started, you'll need:
* A Replit account (free)
* [Expo Go app](https://expo.dev/go) installed on your mobile device
* An Expo EAS account (free)
For App Store or Google Play submission later, you'll need:
* An [Apple Developer account](https://developer.apple.com/programs/) (\$99/year) for iOS
* A [Google Play Developer account](https://play.google.com/console/signup) (\$25 one-time) for Android
Start by visiting the [Expo Template on Replit](https://replit.com/@replit/Expo?v=1) and selecting "Remix" to create your own copy. This creates a complete copy of the Template in your Replit account, including all the files, configurations, and dependencies.
Select the "Run" button in the Project Editor. The Console will display a QR code that links the Expo Go app to your Replit project.
Open the Expo Go app on your phone and scan the QR code displayed in the Project Editor. This will load your app directly on your phone. It may take a minute or two for the project to compile.
Expo uses React Native to help you build apps for iOS, Android, and the web from a single codebase. This means you can build an app once and have it available on all platforms.
The democratization of mobile development through Replit and Expo makes app creation accessible to everyone, not just professional developers.
### Customizing your app with Agent
Use [Agent](/features/agent/overview) to build your Expo app:
* **Build mode**: Best for complex features and major changes. The Expo template uses [General Agent](/features/agent/general-agent), which supports any framework.
* **Lite mode**: Best for smaller changes and code explanations.
* **Plan mode**: Best for planning and brainstorming.
Describe what you want your app to do in natural language. For example, you might ask: "Create an app that shows me a random image of a cat every time I press a button."
Continue developing your native mobile app in the Project Editor at [replit.com](https://replit.com). Save your changes, then reload Expo Go to preview updates on your phone.
Want to build a mobile app from scratch with Agent? Check out [Building
Mobile Apps with Agent](/features/artifact-types/building-mobile-apps) to learn about
creating Expo React Native apps directly from the Replit homepage.
## Part 2: Preview your mobile app
Learn how to create an iOS preview build for your Replit Expo app.
### Create a preview build for your device
While this guide focuses on iOS deployment, the same Replit and Expo steps apply to Android development. For Android, follow the [Expo Android deployment guide](https://docs.expo.dev/build/setup/) and [Google Play Console process](https://play.google.com/console/about/).
Before creating an iOS preview build, you'll need:
* Your Replit App from Part 1
* An [Apple Developer account](https://developer.apple.com/programs/) (\$99/year) for iOS preview builds and App Store submission
* An iPhone (for iOS deployment)
* An [Expo account](https://expo.dev/signup)
Note: After setting up your Apple Developer account, you may need to wait 16-24 hours for Apple to approve your profile.
[EAS (Expo Application Services)](https://docs.expo.dev/eas/) acts as the interface between your build and Expo, as well as the App Store.
1. Stop your app if it's running
2. From the dropdown menu in the Project Editor, select "EAS init"
3. Log in to your Expo account when prompted
4. Create a new project or select an existing one
This step authenticates your application with your Expo account.
This initialization step helps configure your project and link it to your Apple Developer account.
1. From the dropdown menu, select "EAS update"
2. Wait for the Metro bundler to start and complete the export process
You'll know this step is successful when you see that bundles have been uploaded and a branch has been created.
Now it's time to create a preview build for your iOS device.
1. From the dropdown menu, select "EAS publish preview iOS"
2. Enter an iOS bundle identifier (e.g., com.yourname.yourappname)
3. Log in to your [App Store Connect](https://appstoreconnect.apple.com/) account when prompted
4. Select your individual developer team
5. Generate the device distribution certificates when asked
Learn more about [iOS certificates and provisioning profiles](https://docs.expo.dev/app-signing/ios-certificates/).
To install development apps on your iPhone, you need to register your device.
1. When prompted, select "website" to register your device
2. Scan the QR code that appears with your iPhone
3. Download the development profile when prompted
4. Go to Settings on your iPhone
5. Select "Profile Downloaded" at the top
6. Install the profile and enter your passcode when prompted
7. Go back to the Project Editor and press any key to continue
Expo will now build your app, which takes about 10-15 minutes depending on the complexity of your application.
1. The build will be queued
2. You can check progress in your [Expo dashboard](https://expo.dev) under the "Builds" tab
3. Once complete, a new QR code will appear for installing the app
When the preview build is complete, install it on your iPhone.
1. Scan the installation QR code with your iPhone
2. Select "Install" when prompted
3. The preview build will begin installing on your home screen
Before you can open the app, you need to enable developer mode on your iPhone.
1. Go to Settings > Privacy & Security
2. Scroll to the bottom and find "Developer Mode"
3. Toggle it on
4. Restart your device when prompted
5. After restarting, you can open and test your preview build.
## What you've accomplished
By following this tutorial, you now have an iOS preview build installed on your device for development testing. Most developers would need days or weeks to achieve this, but you've done it in about an hour.
After completing this tutorial, you can:
* Continue refining your app with more features
* Add [authentication](https://docs.expo.dev/develop/authentication/) and data storage
* Implement native device features like [camera](https://docs.expo.dev/versions/latest/sdk/camera/) or [location](https://docs.expo.dev/versions/latest/sdk/location/)
* [Submit your app to the App Store](https://docs.expo.dev/deploy/submit-to-app-stores/) for public distribution
* Create an Android version using similar steps
### Common issues and solutions
* Ensure your phone and computer are on the same Wi-Fi network
* Try using ["Tunnel" connection mode](https://docs.expo.dev/more/expo-cli/?redirected#tunneling) instead of "LAN"
* Check if your firewall is blocking connections
* See [Expo's troubleshooting guide](https://docs.expo.dev/troubleshooting/networking/)
* Try reloading the app (shake device and select "Reload")
* Ensure you've saved your changes in the Project Editor
* Check the Console for any errors
* Review [Expo's development mode documentation](https://docs.expo.dev/workflow/development-mode/)
* Verify your [app.json configuration](https://docs.expo.dev/workflow/configuration/)
* Check if all dependencies are compatible
* Ensure you have the correct [permissions](https://docs.expo.dev/guides/permissions/) set up
* Review any error messages in the build logs
* See [EAS Build troubleshooting](https://docs.expo.dev/build-reference/troubleshooting/)
### Conclusion
With Replit and Expo, building mobile apps has never been easier or faster. You can go from idea to a working native mobile preview in a matter of hours, not weeks or months. The combination of browser-based development and a cross-platform mobile framework removes traditional barriers to entry for mobile development.
For more detailed information, check out:
* [Expo documentation](https://docs.expo.dev/)
* [React Native documentation](https://reactnative.dev/docs/getting-started)
* [Apple App Store guidelines](https://developer.apple.com/app-store/guidelines/)
* [Google Play Store guidelines](https://play.google.com/console/about/guides/)
* [Replit documentation](https://docs.replit.com/)
# Model Context Protocol
Source: https://docs.replit.com/learn/model-context-protocol
Understand the Model Context Protocol (MCP) — what it is, how it works, and why it matters for AI applications.
AI models like Claude and GPT are powerful, but they're limited to what they were trained on. The Model Context Protocol (MCP) gives them a standard way to connect to external tools, data sources, and real-world capabilities.
## Why AI models need MCP
Without access to external tools and data, AI models can't:
* Access up-to-date information
* Interact with external systems
* Perform actions in the real world
* Work with your private data
MCP solves this by creating a universal way for AI to plug into tools and data — similar to how USB-C standardized device connections.
With MCP, AI models can:
* Access specialized tools and APIs
* Read from private data sources
* Take actions in the real world
* Connect to other systems seamlessly
## How MCP works
The MCP architecture has three main components:
1. **The client side** — AI models like Claude or applications that need to access external tools.
2. **The communication layer** — the protocol itself that standardizes how requests and responses are formatted.
3. **The server side** — programs that provide access to tools, data sources, and specialized capabilities.
An MCP client is something like Claude, Replit Agent, or a command-line interface that connects to a large language model. It's the "device" that plugs into external tools or data sources.
Examples of MCP clients:
* Claude in the browser
* Replit Agent
* Command-line interfaces for AI
* Custom applications built with AI SDKs
An MCP server provides tools and capabilities to AI models. Think of it like giving AI a set of specialized tools to solve problems.
Examples of what MCP servers enable:
* Accessing specific data sources to answer questions
* Connecting AI to APIs so it can take actions online
* Reading or writing files
* Making calculations or running code
* Pulling content from services like Notion, Linear, or Stripe
## What MCP unlocks
MCP defines several primitives that make it powerful for AI applications:
* **Resources** — share data and content with AI models
* **Tools** — let AI models perform actions through your services
* **Prompts** — reusable templates for consistent AI interactions
* **Sampling** — allow your services to request information from AI models
* **Transports** — connect clients and servers efficiently
## Skills vs. MCP servers
Skills and MCP servers are the two main ways to extend AI agents — and they serve different purposes.
| | Skills | MCP servers |
| ------------ | ----------------------------------------------------------------------- | -------------------------------------------------------- |
| **Best for** | Workflows, conventions, reference materials | Connecting to external services, taking actions |
| **Loads** | Lightweight — name + description only until invoked | Heavier — all tool descriptions load upfront |
| **Defines** | *How* your agent should work | *What* your agent can access |
| **Example** | "Stock Analyzer" skill — research investments with a specific framework | "Stripe" MCP server — read payment and subscription data |
See [Agent skills](/learn/agent-skills) for the matching mindset on skills.
## Real-world applications
MCP enables a wide range of AI applications:
* **Customer service systems** that access company databases to answer specific questions
* **Research assistants** that search and summarize content from multiple sources
* **Productivity tools** that interact with your files and applications
* **Content creation tools** that access media libraries and publishing platforms
## Benefits
MCP offers three key benefits:
* Ready-to-use integrations your AI can connect to immediately
* The ability to switch between AI providers without rewriting your connections
* Security features that keep your sensitive data protected
MCP is an emerging standard with growing support across the AI ecosystem. New tools and integrations are added regularly.
## Next steps
Hands-on: connect a pre-listed MCP server or add a custom one in Replit.
Catalog of pre-listed servers, security model, and authentication options.
The other way to extend Agent — when and how to use skills.
Read the open standard's official documentation.
# Plan vs. Build Mode
Source: https://docs.replit.com/learn/plan-vs-build-mode
Learn the difference between Plan and Build modes in Replit, and how to combine them for more effective development.
Replit Agent offers two interaction modes: **Plan Mode** and **Build Mode**. Use them together to think through your ideas first, then implement with confidence.
## What is Plan Mode?
[Plan Mode](/features/agent/plan-mode) lets you brainstorm, ask questions, and plan your work with Agent—without modifying any code. Think of it as a collaborative planning session where you can explore ideas freely.
Plan Mode is perfect for:
* **Brainstorming ideas**: Explore different approaches before committing to one
* **Breaking down complex projects**: Get a structured task list before building
* **Learning and understanding**: Ask questions about technologies, patterns, or your codebase
* **Planning architecture**: Design your app's structure before writing code
In Plan Mode, Agent reads your project and provides guidance, but it won't make any changes to your files. When you're ready to implement, switch to Build Mode or approve a plan to start building automatically.
## What is Build Mode?
Build Mode is the default mode where Agent writes code, modifies files, and implements features directly in your project. This is where ideas become reality.
Use Build Mode when you're ready to:
* **Create new features**: Let Agent write the code for your next feature
* **Set up your app**: Install dependencies, configure databases, and connect services
* **Fix issues**: Let Agent debug and resolve problems in your codebase
* **Refactor code**: Improve existing code structure and organization
## Using both modes together
**Plan Mode and Build Mode work best as a sequence.** Start by planning to clarify your thinking, then build with a clear direction.
Switch to Plan Mode and describe what you want to build. Agent will help you think through the requirements, suggest approaches, and identify potential challenges—all without touching your code.
Ask Agent to create a development plan. It will break down your project into specific, actionable tasks with clear priorities and dependencies.
Review the proposed plan. Ask follow-up questions, request changes, or explore alternative approaches. Keep iterating until the plan matches your vision.
When you're satisfied with the plan, select **Start building**. Agent automatically switches to Build Mode and begins implementing the approved tasks.
Monitor Agent's progress as it works through the task list. Each completed task creates a checkpoint, so you can review changes and roll back if needed.
## When to use each mode
* You're starting a new project and need direction
* You want to explore different approaches
* The task is complex and needs breaking down
* You want to learn before implementing
* You're unsure about the best solution
* You know exactly what you want
* You have a clear plan ready to execute
* You're making quick fixes or small changes
* You're following an approved task list
* Speed of implementation is the priority
**Not sure which to pick?** If your request involves multiple features or significant changes, start with Plan Mode. For simple, well-defined tasks, go straight to Build Mode.
## Key differences
| Feature | Plan Mode | Build Mode |
| ---------------- | -------------------------------- | ------------------------------ |
| **Purpose** | Brainstorm, plan, and learn | Implement and build |
| **Code changes** | None—read-only | Writes and modifies files |
| **Output** | Ideas, task lists, guidance | Working code and features |
| **Best for** | Complex projects, exploration | Clear tasks, implementation |
| **Transition** | Click "Start building" to switch | Already in implementation mode |
## Best practices
### Getting the most from Plan Mode
* **Be specific about requirements**: The more detail you provide, the better the plan
* **Ask follow-up questions**: Clarify suggestions you don't understand
* **Request examples**: Ask Agent to show code snippets or patterns
* **Discuss trade-offs**: Explore pros and cons of different approaches
* **Iterate on ideas**: Refine the plan until it feels right
### Seamless transitions
* **Review before building**: Always review the task list before approving
* **Start small**: Begin with a subset of tasks if the full plan feels overwhelming
* **Use checkpoints**: Agent creates checkpoints as it builds, so you can always roll back
## Next steps
Deep dive into planning features
Explore all Agent capabilities
Learn about rollbacks and recovery
Write better prompts for Agent
# Auth
Source: https://docs.replit.com/learn/projects-and-artifacts/auth
Learn what Auth is on Replit — how user accounts let your app save preferences, gate features, and personalize the experience, and how to choose between Replit Auth and Clerk Auth.
Auth — short for **authentication** — is what gives your app the concept of a "user". Without auth, every visitor is anonymous and your app can't tell one person from another. With auth, each visitor signs in, your app knows who they are, and you can save data specific to them: their bookings, their saved cars, their preferences, their progress.
Once auth is wired in, you can:
* Save data per user — bookings, settings, content, history.
* Gate features behind sign-in (a checkout, a profile page, an admin panel).
* Personalize the experience by name, role, plan, or past behavior.
* Track activity and usage by individual rather than by session.
## How auth works in a Replit app
Replit ships two built-in auth options. Both are provisioned by Agent — no separate dashboard signup, no copy-pasting of OAuth keys.
* **[Replit Auth](/features/auth-and-identity/authentication)** — your users sign in with their existing **Replit accounts**. The sign-in page is Replit-branded. There's no setup beyond asking Agent to add it.
* **[Clerk Auth](/features/auth-and-identity/clerk-auth)** — your app gets its own dedicated **Clerk tenant**. Users create accounts inside *your* app, not Replit. You control the branding, the login methods, and the look and feel of the sign-in screen.
Both options handle the heavy lifting — sign-in pages, sessions, secure password handling, social logins — so your app code only has to ask, "who is the signed-in user?"
## Replit Auth vs. Clerk Auth
| | Replit Auth | Clerk Auth |
| ------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------- |
| **User accounts** | Users sign in with a Replit account | Users create accounts within your app (no Replit account needed) |
| **Branding** | Replit-branded login page | Fully customizable — your app's name, icon, and colors |
| **SSO credentials** | Uses Replit's shared OAuth apps | Bring your own OAuth credentials per provider |
| **Environments** | Single environment | Separate Development and Production environments |
| **Best for** | Quick setup, prototypes, apps where Replit branding is acceptable | Branded apps, professional and commercial products |
If you're building a prototype or an internal tool, Replit Auth is the fastest path. If you're building something with its own brand identity, especially something customer-facing or commercial, Clerk Auth is the better fit.
## Add auth to your app
You don't have to choose up front — you can start with one and migrate later. The fastest path is to tell Agent which one to use:
* *"Add sign-in to my app. Use Replit Auth."*
* *"Add sign-in to my app. Use Clerk Auth."*
## Next steps
Replit-branded sign-in with zero setup — users sign in with their Replit account.
Your own branded auth tenant — fully customizable login, separate Dev/Prod environments.
Worked example: wire Clerk Auth into a real app and test it with two customers.
Move an existing app from Replit Auth onto a Clerk tenant.
# Project Editor
Source: https://docs.replit.com/learn/projects-and-artifacts/project-editor
Learn what the Project Editor is: your home base on Replit where you talk to Agent, see your app take shape, and manage everything.
## What is the Project Editor?
The Project Editor is your home base on Replit: the environment where you start building, manage your projects, and see your apps come to life. From here, you can describe what you want to build, and [Agent](/features/agent/overview) takes it from there, writing code, setting up your project, and showing you a live preview in real time.
## Getting started
Type what you want to build into the prompt box. Describe your idea in plain language — "a budget tracker that charts my spending", "a landing page for my coffee shop", "an AI comic book generator for kids" — and Agent handles the rest.
You can also select a project type from the carousel to tell Agent what kind of output you want — web app, mobile app, slides, design, and more. Or skip the selection entirely and just describe your idea; Agent figures out the right setup automatically.
To jump right in, follow [Build and publish your first app](/build/your-first-app).
## Plan mode
Plan mode allows you to brainstorm, ask questions, and map out your project. Agent creates an ordered task list you can review and refine — when you're happy with the plan, approve it and Agent starts building. You can also use Plan mode to ask questions or explore ideas; Agent won't make any changes until you exit.
Toggle Plan mode from the button at the bottom of the input. Learn more in the [Plan mode guide](/features/agent/plan-mode).
## What you can build
Select a project type to tell Agent what you want, or just describe your idea and let Agent pick the right setup.
* **Web apps** — Dashboards, internal tools, SaaS products, landing pages
* **Mobile apps** — iOS and Android apps from a single prompt
* **Slides and presentations** — Generate decks with rich layouts
* **Animations** — Interactive walkthroughs and motion graphics
* **Designs** — Visual mockups and prototypes on the [Design Canvas](/design/canvas)
* **Data visualizations** — Charts, dashboards, and database-backed tools
* **Documents** — CSVs, PDFs, PowerPoint files, Markdown docs
* **Spreadsheets** — Data tables and structured outputs
## The Project Editor
Once Agent starts building, the Project Editor is where you see your project take shape. It's split into panels: your conversation with Agent on one side, and a live preview of your app on the other.
### Threads
Every conversation with Agent happens in a thread. Your main thread is where you describe what you want and watch Agent build it. When you use the [task system](/core-concepts/agent/task-system), each background task gets its own thread — so Agent can keep task work isolated without mixing up the conversations.
### Task board
The task board organizes your work into columns: **Drafts**, **Active**, **Ready**, and **Done**. Each task moves from left to right as it progresses, so you can see at a glance what's planned, what Agent is working on, and what's finished. Learn more in [Task system](/core-concepts/agent/task-system).
### Design Canvas
The Design Canvas is a visual editor where you can create and refine mockups before committing to code. Drag elements, adjust layouts, and iterate on your design — then let Agent turn it into a working app. Learn more in [Design Canvas](/design/canvas).
## Collaboration
Create a Team Workspace to build together. Invite teammates, share projects, and work on the same app in real time. See [Team workspaces](/features/collaboration/team-workspaces) for team setup and [Invite teammates](/build/invite-teammates) for project-level collaboration.
## Import code and design
Already have a project? Bring it into Replit from GitHub, Figma, or upload files directly. Agent can pick up where you left off and continue building from your existing code or design. See [Import to Replit](/build/import-from-providers).
## Next steps
The main panels where you see your app's preview, console output, and other tools
Configure your app's settings, dependencies, secrets, and environment
Track changes, roll back to earlier versions, and manage your app's history
Deploy your app to a live URL so anyone can use it
## Frequently asked questions
No. Describe what you want in plain language and Agent handles the technical details. You can also make direct edits if you want to.
Your project is saved in the cloud. Come back any time and pick up right where you left off: your files, history, and running app are all preserved.
Yes. You can invite collaborators to a specific project or create a Team Workspace where members access all projects. See [Team workspaces](/features/collaboration/team-workspaces) and [Invite teammates](/build/invite-teammates).
When your app is ready, publish it to a live URL directly from the Project Editor. See [Deployments](/learn/projects-and-artifacts/replit-deployments).
## Availability
The Project Editor is available on all plans. Some features like increased compute and always-on deployments require a paid plan. See [Billing](/billing/ai-billing) for details.
# Projects & Artifacts
Source: https://docs.replit.com/learn/projects-and-artifacts/projects-and-artifacts
Learn what projects and artifacts are on Replit, and decide when to keep artifacts in one project or create separate projects.
A **project** is the container for everything you build on Replit. **Artifacts** are the publishable outputs inside it — web apps, mobile apps, slide decks, animations, data visualizations, 3D games, and designs.
When you're building more than one thing, you have two options: add multiple artifacts to a single project, or create separate projects. The right choice depends on whether your apps share data, logic, and a deployment lifecycle. This page covers both terms in depth and shows you when to keep artifacts in a single project versus when to create separate ones.
## What's a project?
A project is the container that holds your code, data, and all the artifacts you create. When you tell Agent what you want, it sets up a project and builds the artifacts inside it.
Think of a project like a workspace on your desk. Everything lives in one place and can share the same information, but each piece serves a different purpose.
For example, if you ask Agent to build a fitness tracking app, it creates a project with a mobile app artifact along with the backend, database, and storage it needs to work.
Key concepts:
* **Project**: The container that holds everything — your code, data, and all your artifacts.
* **Artifact**: A publishable output within a project (a web app, slide deck, video, and so on).
* **Resources**: Every artifact gets automatic access to a backend, database, and file storage — no setup required.
For everything you can do with a project — manage, filter, pin, sort — see [Projects](/features/projects-and-artifacts/projects).
## What's an artifact?
Artifacts are the things you can publish on Replit. Each one is a complete, standalone output that gets its own shareable URL when you publish.
Everything else in your project — files, images, CSVs, code — supports your artifacts but can't be published on its own.
| Type | What it is |
| --------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| **[Web app](/features/artifact-types/web-apps)** | Websites and web applications that handle users, databases, and more. |
| **[Mobile app](/features/artifact-types/building-mobile-apps)** | Native apps for iPhone and Android. |
| **[Slide deck](/features/artifact-types/slide-decks)** | Presentation decks you can present or export. |
| **[Animation](/features/artifact-types/animated-videos)** | Motion graphics and animated videos. Export as MP4. |
| **[Data Visualization](/features/artifact-types/data-apps)** | Interactive dashboards and visualizations for exploring data and creating charts. |
| **3D game** | 3D games, simulations, and interactive experiences. |
| **[Design](/design/canvas)** | Visual directions and prototypes explored on the design canvas. |
For everything you can do with artifacts — switch between them, add new ones, the Library sidebar — see [Artifacts](/features/projects-and-artifacts/artifacts).
## What artifacts share in a project
When [artifacts](/features/projects-and-artifacts/artifacts) live in the same [project](/features/projects-and-artifacts/projects), they automatically share:
* **Database**: One artifact writes data, the others read it instantly.
* **Backend and API**: Shared server logic, no duplicate code.
* **File storage**: Images, documents, and uploads accessible across artifacts.
* **Deployment**: Publishing pushes everything live together in sync.
This means you don't need to set up connections or duplicate code between artifacts. But it also means you can't publish one artifact without publishing the others.
## Quick guide
Here are the key scenarios to consider when deciding whether to add artifacts to an existing project or create a separate one.
| **Use multiple artifacts in one project** | **Use separate projects** |
| ----------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Apps share the same data and backend | Apps don't share underlying logic or data |
| You want everything to publish together | You need independent publishing cycles |
| They're complementary (like a customer app and an admin dashboard) | They're unrelated products or for different clients |
| You want changes in one artifact to automatically reflect in the others | The project is short-lived, like a campaign landing page or event site |
## Examples
### Same project: web app + mobile app for one product
A restaurant builds a web app for customers to browse the menu and a mobile app for staff to manage orders. Both connect to the same database of menu items, orders, and customer information.
**Why one project:** the apps share the same data and backend. When a customer places an order through the web app, the staff sees it immediately on the mobile app.
### Same project: app + admin dashboard + investor pitch deck
A startup builds their main product, an internal admin panel for managing content, and a slide deck for fundraising — all in one project.
**Why one project:** the admin dashboard manages the same data the app displays, and the pitch deck can reference live metrics from the shared backend.
### Separate projects: two unrelated client apps
A freelancer builds an e-commerce store for one client and a booking system for another.
**Why separate projects:** the apps have no shared data or logic. Each client needs independent publishing and you don't want changes to one affecting the other.
### Separate projects: campaign landing page alongside a main product
You have a production app that runs year-round and a short-lived landing page for a marketing campaign.
**Why separate projects:** the campaign page has its own lifecycle — you'll spin it up, run it for a few weeks, and take it down. Keeping it separate avoids cluttering your main product and lets you publish or remove it independently.
## Frequently asked questions
Not currently. If you need to separate an artifact, create a new [project](/features/projects-and-artifacts/projects) and ask Agent to rebuild it there.
A project can contain a maximum of 7 artifacts, with a limit of **1 mobile app per project**. This limit exists because additional artifacts consume more memory, which can slow down the preview. If you need more artifacts, start another [project](/features/projects-and-artifacts/projects).
Not currently. Publishing pushes everything live together. If you need independent publishing, use separate projects.
Yes. All artifacts in a project share the same database and backend services. If your web app writes data, your mobile app and data dashboard can read it immediately.
Artifacts are things you can publish — apps, slides, videos, and so on. Files (like CSVs, images, or code) are assets within your project that support your artifacts but can't be published on its own.
# Publishing
Source: https://docs.replit.com/learn/projects-and-artifacts/replit-deployments
Share your Replit Apps with the world in just a few clicks.
Publishing lets you share your Replit App with the world using a simplified process.
The action of making your app live is called "Publishing." This page describes the different types of deployments available.
## What is Publishing?
Publishing is a feature that saves a **snapshot** of your Replit App to the cloud,
where everyone can interact with it. A snapshot captures the current state of the files in your
Replit App.
When you publish your Replit App, you create a **published app**. A published app is a running instance
of your app on Replit's cloud infrastructure. This makes the app reliably available on the internet,
separate from the version in the Project Editor.
Replit's infrastructure is backed by Google Cloud Platform (GCP). All
published apps are hosted in the United States. Enterprise customers can
contact sales to request their published apps to be hosted in the European
Union instead.
Every individual, organization, and enterprise customer receives a dedicated,
single-tenant GCP project for their published apps. This means that published
apps' compute resources, secrets, and storage are fully isolated and never
shared with other customers' apps.
Publishing includes tools to monitor your published app status and view web analytics.
Replit offers the following deployment types:
Automatically adjusts resources based on your app's usage.
Provides an affordable way to host websites that don't change based on user input.
Provides a consistent amount of computing resources for your app to run continuously.
Runs your app at scheduled times that you choose.
## Getting started
Follow the steps below to publish your Replit App:
1. From your Project Editor, select **Publish** at the top.
2. In the **Publishing** tab, select your publishing option.
3. If **Add a payment method** appears, follow the prompts to add a payment method.
Replit automatically selects the best publishing option for your app based on the project type and your needs.
However, to choose a different deployment type, consider the following information.
## Choosing the right publishing option
The following video explains how to choose the right publishing option for your app:
Use the following decision tree featured in the video to help you choose:
## Key features
Publishing offers the following convenient features:
* **Multiple publishing options**: Select or update a deployment type that meets your needs in a few clicks.
* **Custom domains**: Serve your app from your web domain.
* **Analytics**: Track visitor data and other metrics for your published app.
* **Monitoring tools**: View your published app status and configuration.
* **Access controls**: Control who can see your app with a single click. Available only for **Pro** and **Enterprise** members.
* **Badge settings**: Core users can manage the "Made with Replit" badge in Publishing settings. If you published an app while on the Starter plan that include the badge, it may take a couple minutes to update your app to remove the badge after you upgrade.
* **Feedback collection**: Enable feedback on your published app to gather insights from your users.
## How it works
When you publish your Replit App, Replit creates a snapshot of your app's files and dependencies.
This snapshot is then sent to Replit's cloud infrastructure, where it runs as a separate instance of your app.
To update your published app with the latest changes, publish again to create a fresh snapshot.
Avoid saving and relying on data written to a published app's filesystem. To
store data, use a storage or database option such as Replit's [Storage and
Database](/learn/projects-and-artifacts/storage-and-databases) offerings.
## Use cases
The following examples show different types of published apps.
### Autoscale deployment: Typing speed assessment app
Let the cloud scale up resources when users take typing tests and reduce them when not in use.
### Static deployment: Solar system simulation
Learn about the planets in a solar system visualization app on the web.
This visualization renders in the browser and doesn't transfer any user input to a server.
### Reserved VM deployment: Discord bot
Run a Discord bot that helps you moderate and onboard members.
It's always online to chat with users and respond to commands with predictable pricing and performance.
### Scheduled deployment: Home automation triggers
Schedule API calls to start and stop your smart home devices at specific times and days.
## Next steps
To learn more about Replit Publishing, see the following resources:
* [Autoscale Deployment](/features/publishing/deployment-types#autoscale): Learn how to set up applications that scale with traffic
* [Static Deployment](/features/publishing/deployment-types#static): Discover how to publish static websites quickly and efficiently
* [Reserved VM Deployment](/features/publishing/deployment-types#reserved-vm): Explore dedicated VM options for specialized use cases
* [Scheduled Deployment](/features/publishing/deployment-types#scheduled): Set up recurring tasks with simple scheduling
* [Custom Domains](/features/publishing/custom-domains): Connect your published app to a custom domain
# Storage and Databases
Source: https://docs.replit.com/learn/projects-and-artifacts/storage-and-databases
Learn about file storage and database options on Replit.
Using Replit's flexible storage solutions, you can quickly add the perfect
data storage your app needs to run. You can use Replit's database or object storage
for apps with the following requirements, and Agent can automatically set up and integrate both solutions:
* A game that needs to save player information such as progress or high scores
* A content platform that manages media files
## What are Replit's storage and database options
Replit offers the following data storage options:
* **Database**: stores structured data such as user profiles, game scores, and product catalogs.
You can store or retrieve data by attributes and relationships between data points.
* **App Storage**: stores unstructured data such as images, videos, documents.
You can store and retrieve large files and binary data.
### App Storage and database comparison
| | Database | App Storage |
| --------------------- | :-------------------------------------- | :-------------------------------------- |
| **Ideal data format** | Structured data with relationships | Large files (images, videos, documents) |
| **Data model** | Tables, rows, columns | Buckets, files |
| **Query language** | SQL | REST API |
| **Clients** | PostgresSQL-compatible clients and ORMs | Replit SDKs and GCS client libraries |
| **Billing model** | Pay for compute time and storage space | Pay for bandwidth and storage space |
### Project Editor tools
Learn more about the following Replit tools to set up and manage your app's data storage:
Ideal for structured data and representing data relationships.
Backed by a fully-managed PostgresSQL database that scales with your app.
Ideal for unstructured data and large files, such as images, videos, and documents.
Backed by Google Cloud Storage (GCS) for high availability and scalability. Agent can automatically set up App Storage with advanced authentication and access controls.
## Use cases
The following examples show how the database and object storage tools can support your Replit Apps.
### E-commerce app
Store product information, customer profiles, and order history in the database.
Use SQL queries to filter products by category, search for items, and manage customer orders.
### File sharing app
Share large files such as images, videos, and documents using App Storage.
Use the Replit App Storage SDK to upload, download, and move files.
## Next steps
* [Database](/features/data-and-storage/sql-database): Learn about the Replit Database tool and how to connect your Replit App to a database
* [App Storage](/features/data-and-storage/object-storage): Learn how to use Replit's App Storage solution
# Version control
Source: https://docs.replit.com/learn/projects-and-artifacts/version-control
Learn how to track changes and manage your code's history with Replit's version control tools.
Version control on Replit enables you to track, manage, and collaborate on your codebase with confidence. With built-in Git integration and GitHub connectivity, you can:
* Track code changes and maintain a history of your development work
* Collaborate with team members without code conflicts or lost work
* Import, modify, and push code between Replit and GitHub
* Work with branches to experiment with new features safely
## What is version control?
Version control is a system that records changes to files over time, allowing you to recall specific versions later. On Replit, version control is powered by Git—the industry-standard tool for tracking code changes—with a user-friendly visual interface that eliminates the need for command-line knowledge.
### How version control works on Replit
All four version control options interact with the same underlying Git repository:
1. **Agent Checkpoints** create commits automatically at important milestones when building with [Replit Agent](/features/agent/overview). [Learn more about checkpoints and rollbacks](/features/version-control/checkpoints-and-rollbacks).
2. **Git Pane** provides visual access to the complete Git repository
3. **Git CLI** offers command-line access to all Git functionality
4. **File History** tracks granular changes within individual files
Choose the interface that best matches your needs, with the confidence that everything is backed by Git's robust version control system.
| Feature | Agent Checkpoints | Git Commits | File History |
| -------------------- | ----------------------------- | ----------------------------- | ----------------------- |
| **Creation** | Automatic at logical points | Manual or scheduled | Automatic |
| **Granularity** | Feature-level changes | Any change size | Character-level changes |
| **Description** | AI-generated summaries | User-written messages | Automatic timestamps |
| **Rollback** | One-click restore | Requires Git knowledge | One-click restore |
| **Git capabilities** | Full Git capabilities | Full Git capabilities | No Git capabilities |
| **GitHub sync** | Full GitHub sync capabilities | Full GitHub sync capabilities | No GitHub sync |
## Getting started
Access version control in your Replit App by adding the Git tool to the Project Editor:
1. Navigate to the Tools section in your Replit App
2. Select the **+** sign to add new tools
3. Select **Git** from the list of available tools
To import existing projects from GitHub, see [Import from GitHub](/build/import-from-providers).
## Version control options
Replit's version control is powered by Git at its core. You have multiple ways to interact with and benefit from version control:
### Automatic version control
Automatic snapshots created during AI-assisted development with [Replit Agent](/features/agent/overview).
**Best for**: Development with Replit Agent
**Key capabilities**:
* Automatic creation at logical milestones
* One-click rollback
* Feature-level snapshots
* Progress tracking
* No setup required
* Visual timeline of development progress
Agent checkpoints are stored in Git and can be accessed through the Git Pane or Git CLI. You can also visualize all your checkpoints using the History feature, which provides:
* Chronological checkpoint visualization
* Detailed checkpoint descriptions
* Direct access to checkpoint states
* One-click rollback to any checkpoint
Per-file version tracking with automatic saving for non-Agent changes done directly on the editor.
**Best for**: Quick recovery of recent file changes
**Key capabilities**:
* Single file focus
* Character-level changes
* Visual comparison
* 30-day history
* Playback feature
While File History provides its own interface, the underlying changes are part of Git's history. Learn more about [File History](/features/version-control/file-history).
### Git-based interfaces
A visual interface for Git operations that makes version control accessible without command-line knowledge.
**Best for**: Most projects requiring GitHub integration and visual workflow
**Key capabilities**:
* Repository-wide tracking
* Branch management
* Visual diff viewing
* One-click GitHub sync
* Team collaboration
For detailed instructions on using the Git pane, see [Using the Git pane](/features/workspace-tools/git-interface).
Full command-line access to Git through the [Shell](/features/workspace-tools/shell) for advanced operations.
**Best for**: Power users who need complete Git functionality
**Key capabilities**:
* Full Git command set
* Advanced branching strategies
* Custom workflows
* Script automation
* Complete repository control
For common Git commands and usage, see [Using the Git pane](/features/workspace-tools/git-interface#using-git-commands-in-shell).
## Key features
* **Visual Git interface**: Manage repositories, commits, and branches without typing Git commands
* **GitHub integration**: Connect to GitHub repositories for backup and collaboration
* **Import from GitHub**: Turn any [GitHub repository into a Replit App](/build/import-from-providers) with a few clicks
* **Branch management**: Create, switch between, and merge branches directly in the Project Editor
* **Conflict resolution**: Identify and resolve merge conflicts with visual assistance
## Use cases
**Tracking your personal projects**
Track changes to your code as you develop, allowing you to revert to previous versions if needed. The [Git pane](/features/workspace-tools/git-interface) shows your changes visually, making it easy to commit meaningful updates.
**Collaborating with a team**
Work with multiple developers on the same codebase without overwriting each other's changes. Create branches for new features, then merge them back when ready. Learn more about [inviting teammates](/build/invite-teammates).
## Agent checkpoints
When building applications with [Replit Agent](/features/agent/overview), you benefit from an additional layer of version control through checkpoints. Checkpoints automatically capture the comprehensive state of your project—including project contents, AI conversation context, and connected databases—at key moments during AI-assisted development.
### How checkpoints work
Agent checkpoints function as comprehensive snapshots of your entire Replit App state:
* **Automatic creation**: Agent creates checkpoints at logical points during development
* **Complete state capture**: Each checkpoint preserves project contents, AI memory, and database states
* **Implementation plans**: Before making changes, Agent presents a plan for your review
* **Complex task tracking**: Multiple checkpoints may be created for larger tasks
### Benefits for AI-assisted development
Agent checkpoints provide unique advantages when building with AI:
* **Safety net**: Experiment confidently knowing you can easily restore previous states across your entire development environment
* **Progress tracking**: See exactly how Agent built your application step by step
* **Logical milestones**: Checkpoints represent complete features rather than arbitrary save points
* **Instant rollback**: Return to any previous state with a single click, including database and AI context restoration
For detailed information about what checkpoints capture and comprehensive rollback capabilities, see [Checkpoints and Rollbacks](/features/version-control/checkpoints-and-rollbacks).
While Agent checkpoints are powerful for development with AI, consider using Git commits for long-term version tracking and collaboration, especially when working with external repositories.
## Next steps
To learn more about version control on Replit, see the following resources:
* [Using the Git pane](/features/workspace-tools/git-interface): Master Replit's visual Git interface
* [Import from GitHub](/build/import-from-providers): Turn GitHub repositories into Replit Apps
* [Invite teammates](/build/invite-teammates): Work with others on shared projects
* [File History](/features/version-control/file-history): Explore file-level version history
* [Replit Agent](/features/agent/overview): Learn more about AI-assisted development
# Security checklist
Source: https://docs.replit.com/learn/security-checklist
Follow this comprehensive security checklist to ensure your vibe coded applications follow best security practices.
This guide provides a comprehensive security checklist to ensure your vibe coded applications follow best security practices.
While Replit provides many security features [out of the box](/features/security/overview), it's important to understand and implement more security measures for your specific application needs.
## Prerequisites
* A Replit account
* Basic understanding of your preferred programming language
* Familiarity with the Project Editor
* An application you're building on Replit
## Front-end security
Replit uses HTTPS by default for all applications. So you don't need to worry about it!
Always validate and sanitize user input to prevent cross-site scripting (XSS) attacks:
```javascript theme={null}
// Bad: Direct use of user input
element.innerHTML = userInput;
// Good: Sanitize input before using
import { sanitize } from 'some-sanitizer-library';
element.innerHTML = sanitize(userInput);
```
Switch to [Lite mode](/features/agent/agent-modes) and ask Agent:
```
Help me validate and sanitize inputs to protect against XSS attacks
```
You should use Replit Secrets to store sensitive information like API keys.
Be sure you don't pass secrets to the client side or put them in the following places:
* Local storage
* Session storage
* Client-side JavaScript
* Cookies without proper security attributes
Switch to [Lite mode](/features/agent/agent-modes) and ask Agent:
```
Help me keep sensitive data out of the browser. Am I doing this correctly?
```
Implement Cross-Site Request Forgery (CSRF) protection for forms:
```javascript theme={null}
// Example of CSRF token implementation
const csrfToken = generateToken();
session.csrfToken = csrfToken;
```
Switch to [Lite mode](/features/agent/agent-modes) and ask Agent:
```
Help me implement CSRF tokens for forms
```
## Back-end security
When implementing authentication:
* Use Replit Auth when possible
* If building custom auth, use established libraries
* Never store plain text passwords
Ask Agent:
```
Help me implement authentication for my application with Replit Auth
```
Always verify permissions before performing actions:
```javascript theme={null}
// Example authorization check
if (!user.canAccess(resource)) {
return res.status(403).send('Access denied');
}
```
Ask Agent:
```
Help me implement authorization checks for my application
```
Secure your API endpoints:
* Add authentication to sensitive endpoints
* Implement proper CORS settings
* Consider rate limiting
Switch to [Lite mode](/features/agent/agent-modes) and ask Agent:
```
How do I properly authenticate endpoints in my app?
```
Agent uses ORMs by default, which helps prevent SQL injection. If writing custom database queries:
```javascript theme={null}
// Bad: String concatenation in queries
db.query(`SELECT * FROM users WHERE username = '${username}'`);
// Good: Parameterized queries with ORM
db.query('SELECT * FROM users WHERE username = ?', [username]);
```
Add important security headers to your application:
```html theme={null}
```
You can scan your site at [securityheaders.com](https://securityheaders.com) for recommendations.
Switch to [Lite mode](/features/agent/agent-modes) and ask Agent:
```
Can you add the security headers to my application?
```
## Ongoing security practices
Regularly check for outdated packages that might have vulnerabilities:
```bash theme={null}
npm audit
```
Don't expose sensitive information in error messages:
```javascript theme={null}
// Bad: Exposing sensitive details
catch (err) {
res.status(500).send(`Database error: ${err.message}`);
}
// Good: Generic error message
catch (err) {
console.error(err); // Log internally
res.status(500).send('An error occurred');
}
```
Ask Agent:
```
Help me implement proper error handling for my application
```
When using cookies:
* Set HttpOnly flag to prevent JavaScript access
* Use Secure attribute to require HTTPS
* Implement SameSite attribute to prevent CSRF
Ask Agent:
```
Help me secure my cookies for my application
```
If your application allows file uploads:
* Restrict file types and sizes
* Scan for malware if possible
* Store files in Replit's object storage
* Generate new filenames rather than using user-provided ones
Ask Agent:
```
Help me secure my file uploads for my application
```
Implement rate limiting for API endpoints, especially authentication-related ones:
```javascript theme={null}
// Example rate limiting middleware
const rateLimit = require('express-rate-limit');
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100 // limit each IP to 100 requests per windowMs
});
app.use('/api/', limiter);
```
Ask Agent:
```
Help me implement rate limiting for my application
```
## Checklist
Here's the above in a checklist to help you stay on top of your security practices.
## Front-end security
| | Security Measure | Description |
| - | ----------------------------------------- | ---------------------------------------------------------------- |
| ☐ | Use HTTPS everywhere | Prevents basic eavesdropping and man-in-the-middle attacks |
| ☐ | Input validation and sanitization | Prevents XSS attacks by validating all user inputs |
| ☐ | Don't store sensitive data in the browser | No secrets in local storage or client-side code |
| ☐ | CSRF protection | Implement anti-CSRF tokens for forms and state-changing requests |
| ☐ | Never expose API keys in frontend | API credentials should always remain server-side |
## Back-end security
| | Security Measure | Description |
| - | --------------------------- | --------------------------------------------------------------------- |
| ☐ | Authentication fundamentals | Use established libraries, proper password storage (hashing+salting) |
| ☐ | Authorization checks | Always verify permissions before performing actions |
| ☐ | API endpoint protection | Implement proper authentication for every API endpoint |
| ☐ | SQL injection prevention | Use parameterized queries or ORMs, never raw SQL with user input |
| ☐ | Basic security headers | Implement X-Frame-Options, X-Content-Type-Options, and HSTS |
| ☐ | DDoS protection | Use a CDN or cloud service with built-in DDoS mitigation capabilities |
## Practical security habits
| | Security Measure | Description |
| - | ------------------------- | ---------------------------------------------------------------------- |
| ☐ | Keep dependencies updated | Most vulnerabilities come from outdated libraries |
| ☐ | Proper error handling | Don't expose sensitive details in error messages |
| ☐ | Secure cookies | Set HttpOnly, Secure and SameSite attributes |
| ☐ | File upload security | Validate file types, sizes, and scan for malicious content |
| ☐ | Rate limiting | Implement on all API endpoints, especially authentication-related ones |
# Secrets
Source: https://docs.replit.com/core-concepts/project-editor/app-setup/secrets
Learn how to store API keys and other sensitive information securely as encrypted environment variables.
The Secrets tool stores and encrypts **secrets**, your Replit App's sensitive information, such as API keys, authentication tokens, and database connection strings.
When you add a secret, the tool automatically encrypts the data and makes it available to your Replit App as an environment variable.
This approach lets you eliminate hard-coding secrets in your code and reduce the risk of exposing them.
Hard-coding secrets in your codebase can lead to accidental exposure in the following scenarios:
* Sharing your code with others through a public Replit App or copy-paste
* Checking your code into version control in a public repository
* Live streaming or screen sharing your code
Use the Secrets tool to confidently share your code without worrying about exposing credentials.
## Features
Secrets include the following features:
* **End-to-end encryption**: Automatically protect your data using AES-256 encryption at rest and TLS encryption in transit
* **App-level secrets**: Store and manage secrets that are specific to a Replit App
* **Account-level secrets**: Store and manage secrets that you can make available across all your Replit Apps
* **Environment variable access**: Access your secrets from your code using environment variables
* **Collaborative access**: Share secrets with collaborators and team members
## Usage
Secrets are available for all deployment types except Static Deployments.
You can access Secrets in the Secrets Project Editor tool.
From the left **Tool dock**:
1. Select **All tools** to see a list of Project Editor tools.
2. Select **Secrets**.
From the **Search bar**:
1. Select the magnifying glass at the top to open the search tool
2. Type "Secrets" to locate the tool and select it from the results.
### Manage App Secrets
You can manage your app-level secrets in the **App Secrets** tab in the **Secrets** pane.
This tab displays a list of all secrets associated with your Replit App.
To add a secret:
1. Select **New Secret**.
2. Enter a **Key**, the name of the secret, and a **Value**, the secret itself.
3. Select **Add Secret** to save the entry.
To edit a secret:
1. Select the vertical dots menu next to the secret.
2. Select **Edit** from the contextual menu.
3. Update the text in the **Key** or **Value** field and select **Update Secret** to save changes or **Cancel** to discard changes.
You can also modify the entire list of App Secrets by selecting **Edit as JSON** or **Edit as .env** at the bottom of the tab.
To view a secret, select the eye icon next to the secret.
To hide the secret, select the eye with slash icon.
To delete a secret, select the vertical dots menu next to the secret and select **Delete**.
### Manage Account Secrets
You can manage your account-level secrets in the **Account Secrets** tab in the **Secrets** pane.
This tab displays a list of only secrets associated with your Replit account.
To add an account-level secret:
1. Navigate to the **Account Secrets** tab.
2. Select the icon to open **Settings** and manage account-level secrets.
3. Select **New Secret** to add a secret.
4. Enter a **Key**, the name of the secret, and a **Value**, the secret itself.
5. Select **Save** to save the entry.
To edit a secret:
1. Select the pencil icon next to the secret.
2. Update the text in the **Key** or **Value** field and select **Save** to save changes or **Cancel** to discard changes.
To view a secret, select the eye icon next to the secret.
To hide the secret, select the eye with slash icon.
To use an account-level secret in a Replit App, you must link it to the app.
To link an account-level secret:
1. Navigate to the **App Secrets** tab.
2. Select the checkbox to the left of the secret.
3. Select **Link to this App**.
To unlink a secret:
1. Navigate to the **App Secrets** tab.
2. Select the vertical dots menu next to the secret.
3. Select **Unlink**.
1. Select the pencil icon next to the secret.
2. Select **Delete**.
### Access secrets in your code
```python Python theme={null}
import os
print(os.getenv("MY_SECRET"))
```
```javascript JavaScript theme={null}
console.log(process.env.MY_SECRET);
```
```java Java theme={null}
System.out.println(System.getenv("MY_SECRET"))
```
```csharp C# theme={null}
using System;
Console.WriteLine(Environment.GetEnvironmentVariable("MY_SECRET"));
```
```go Go theme={null}
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println(os.Getenv("MY_SECRET"))
}
```
```ruby Ruby theme={null}
puts ENV["MY_SECRET"]
```
### Managing secrets visibility
Secrets visibility depends on your access to a Replit App and whether you authored it.
You can use one of the options to share your Replit App:
* **Multiplayer**: Invite Replit users to collaborate in real-time
* **Cover page**: Show a preview of your Replit App with the option to remix it
* **Remix**: Make your individual or organization's Replit App public so others can create their version
The following table shows secret name and value visibility in the different scenarios:
| Access Method | Who | Can See Names | Can See Values |
| ------------------ | ------------------------------------------ | ------------- | -------------- |
| Multiplayer | Multiplayer collaborator | ✓ | ✓ |
| Multiplayer | Organization member (Owner role) | ✓ | ✓ |
| Multiplayer | Organization member (Non-owner) | ✓ | |
| Cover Page | Any visitor | | |
| Remix | Owner/collaborator remixing own Replit App | ✓ | ✓ |
| Remix | Non-owner/collaborator remixing Replit App | ✓ | |
| Remix | Anyone remixing from cover page | ✓ | |
| Organization Remix | Organization member with Owner role | ✓ | ✓ |
| Organization Remix | Organization member without Owner role | ✓ | |
Organization members without the Owner role cannot view secret values in a Replit App, but can access their values by printing the environment variables.
## Database related secrets
When you add Replit's Database, the Project Editor automatically creates the following secret:
| Secret | Description |
| -------------- | ------------------------------ |
| `DATABASE_URL` | SQL database connection string |
Legacy Neon development databases may also include `PGHOST`, `PGUSER`, `PGPASSWORD`, `PGDATABASE`, and `PGPORT`. Current Replit development databases use `DATABASE_URL` instead.
To view all environment variables in your Replit App, run `printenv` in the Shell Project Editor tool or print them from your code.
## Predefined environment variables
Replit automatically sets the following environment variables that you can access from your app:
| Environment Variable | Description |
| -------------------- | -------------------------------------------------------------------------------------- |
| `REPLIT_DOMAINS` | Comma-separated list of all domains associated with your Replit App |
| `REPLIT_USER` | Username of the current editor, which may vary in Multiplayer sessions |
| `REPLIT_DEPLOYMENT` | Set to `1` if the code is running in a published app, unset otherwise |
| `REPLIT_DEV_DOMAIN` | Development URL on the `replit.dev` domain, which is different from the Deployment URL |
These are not listed in the Secrets tool, but you can access them in your code using the `os.environ` object or running `printenv` in the Shell.
# Replit Cheat Sheet
Source: https://docs.replit.com/features/additional-resources/cheat-sheet
A handy cheat sheet summarizing the key features and functionalities of Replit.
Here's a handy cheat sheet summarizing the key features and functionalities of Replit. Keep it nearby for quick reference!
# FAQ
Source: https://docs.replit.com/features/additional-resources/faq
Find answers to common questions about Replit, including account management, troubleshooting, billing support, and using key features.
The best place to get help with code is to use [Replit AI](/build/welcome/). In the Project Editor, open a new tab and search for **AI**. Replit AI can help you set up new projects, answer questions about your code, and assist your thinking. For further assistance, you can also check our [Community Hub](https://replit.com/community) for additional resources.
Sign in to Replit and use the **?** on the top right corner of the page for help. For additional support, refer to the [support policy doc](/legal-and-security-info/support-policy).
Before contacting the Support team, check if you can find a solution below under **Settings**. If that does not help, please sign in and use the **?** on the top right corner of the page for help.
Please email `support@replit.com` and include your account username and sign-in ID.
Replit support is generally available Monday through Friday from 9 a.m. to 8 p.m. Eastern Standard Time (UTC-5).
Navigate to your profile identity located on the top right corner of your Replit App, select **CLUI**, and in the search box that appears, search by typing *restore*. In the search results, you'll see an option **restore-folder** to restore a specific folder from the trash.
> Note: Deleted Replit Apps are permanently deleted and unrecoverable **30-days** after their original deletion date.
Navigate to your profile identity located on the top right corner of your Replit App, select **CLUI**, and in the search box that appears, search by typing *restore*. In the search results, you'll see an option **restore-repl** to restore a specific Replit App from the trash.
> Note: Deleted Replit Apps are permanently deleted and unrecoverable **30-days** after their original deletion date.
If your Replit App is failing to load, try these debugging steps:
1. Test your [internet connection](https://www.speedtest.net/).
2. Try a different browser.
3. Check if your browser has enabled JavaScript.
4. Open the command palette with `Cmd+K` (Mac) or `Ctrl+K` (Windows), search for **Restart compute**, and select it.
If none of the above steps helped, check Replit's [Service Status](https://status.replit.com). If you see the status as **All systems are go!** and you still have issues loading your Replit App, please get in touch with [Replit Support](https://replit.com/support).
If the file is too large for a standard GUI upload, you can use `scp` (Secure Copy) to securely transfer files between local and remote systems over [SSH](/features/workspace-tools/ssh). To copy files from your local machine to the remote machine, use this syntax:`scp filename username@ip_address:/home/username`
You can also copy entire directories using scp.
You can view your current balance at [https://replit.com/\~/cli/account/usage-credits-balance](https://replit.com/~/cli/account/usage-credits-balance).
1. Make sure you are using the correct email and password.
2. To reset your password, navigate to the [forgot password page](https://replit.com/forgot). Be sure to check your spam folder for the reset email from `notifications@replit.com`.
3. Try logging in through a different browser.
If all the steps you've tried don't succeed, please [Contact Support](https://replit.com/support).
We require a password to change the email on your account. If you sign up with a third-party authentication provider such as Google or GitHub, you will first need to create a password.
To create a password:
1. Open the sidebar and log out.
2. Return to the login page, select [forgot password](https://replit.com/forgot), and enter your email address.
3. You will receive an email with a link to create a new password. If you don't see the email, check your spam folder and allow up to thirty minutes for the email to be sent.
4. After logging in, open [Settings](https://replit.com/settings) to change your email address.
Replit users can change their username only **once**. Navigate to the [CLUI](https://replit.com/~/cli/account/change-username?run=1) and select **change-username**. If the option is unavailable to you, you've already changed it.
Explorers are Replit users who have opted to see and test new features that are still in development. To enable Explorer mode, open [Settings](https://replit.com/settings) and toggle the Explorer switch (e.g. under **Account** or **User**).
# Agent Customization
Source: https://docs.replit.com/features/agent/agent-customization
Teach Agent your team's conventions with workspace-wide custom instructions and skills, managed centrally in Workspace Settings.
Agent Customization gives Agent the context it needs to work the way you and your team work, from the very first prompt. Instead of re-explaining your conventions in every project, you define them once for your workspace and Agent applies them everywhere.
It has two parts:
* **Custom instructions**: always-on guidelines that apply to every project in your workspace.
* **Skills**: reusable instructions that Agent loads only when a relevant task comes up.
You manage both in **Workspace Settings → Customization**.
## Custom instructions vs. skills
Custom instructions load on every message; skills load only when Agent decides a task is relevant. Use custom instructions for the few guidelines that are always true, and skills for specific workflows, conventions, and reference material.
For the reasoning behind that split — the context budget, what belongs where, and how to author skills well — see [Agent skills](/learn/agent-skills). For how skills are structured and how Agent loads them, see [Agent Skills](/features/agent/skills).
## Custom instructions
Custom instructions are always-on guidelines injected into Agent's context on every project and every session, before anyone types a prompt. Write them once in Workspace Settings, and Agent applies them everywhere in your workspace. They are best for guidelines that are always true, such as security and compliance requirements, approved libraries and frameworks, or data-handling policies.
Keep them short. A focused, specific instruction is more likely to be followed closely, and it leaves more room for the work Agent is actually doing.
Custom instructions may impact Agent performance. Agent is guided to follow them, but strict requirements aren't guaranteed. Shorter, more specific guidelines are followed more reliably.
Workspace custom instructions are different from a project's `custom_instruction/instructions.md` file. The workspace custom instruction is set once in Workspace Settings and applies to every project. The per-project file lives inside a single project — see [Create a custom design system](/teams/custom-design-system) for that pattern.
## Skills
A skill is a reusable set of instructions Agent loads only when a relevant task comes up. Workspace skills appear at the top of the **+** menu in every project in your workspace, so your whole team shares the same set.
You can create a skill three ways:
* **Upload** an existing skill folder.
* **Write** a new skill directly in the form.
* **Ask Agent** to draft a skill for you, then refine it.
You can upload Skills drafted by Agent to your Workspace. Ask Agent to download the skill. Agent will package the skill as a downloadable `.zip` archive with a **Download file** button (shown below). Download the zip, then upload it back in **Workspace Settings → Customization → Skills** via **Create skill → Choose file or folder**, so it's shared across your workspace.
For the full skill structure (`SKILL.md`, supporting files, the open standard), see [Agent Skills](/features/agent/skills). To browse skills Replit and our partners have already built, see the [Skills directory](/features/agent/skills-directory).
Use skills sparingly. Agent reads every skill's name and description on each task, and too many (or overlapping ones) dilute its focus and can make it harder for Agent to pick the right one. Keep each skill tightly scoped, and remove ones you no longer need.
## Availability and permissions
| Feature | Available on | Who can manage |
| ------------------- | ------------------ | ------------------------------------------------------ |
| Custom instructions | Pro and Enterprise | Enterprise: admins. Pro: any workspace member |
| Skills | All paid plans | Enterprise: admins. Core and Pro: any workspace member |
On Enterprise workspaces, only admins can create, edit, or delete custom instructions and skills. On Pro workspaces, any workspace member can. On Core workspaces, any member can manage skills — custom instructions aren't available on Core. Either way, every member of the workspace can use the skills that have been created.
## Create a custom instruction
Go to **Workspace Settings → Customization**.
In the **Custom instructions** section, write the guidelines you want Agent to apply across every project.
Save your changes. The instruction applies to new projects in your workspace.
## Create a skill
Go to **Workspace Settings → Customization**.
In the **Skills** section, click **Create skill**, then upload a skill folder, write the instructions, or ask Agent to draft one.
Give the skill a sharp description that says when to use it — and when not to. This is what Agent reads to decide whether the skill applies.
Save the skill. It becomes available in the **+** menu of every project in your workspace.
## Use a workspace skill in a project
Sharp Skill description matters. Agent reads every workspace skill's description and pulls one in automatically when your prompt roughly matches what the skill is for, so you don't always need to pick a skill yourself. You can also select a skill explicitly when you want to be sure it's applied.
To select one manually:
In a project, click the **+** button next to the chat input. Your workspace skills appear at the top, grouped together.
Choose the skill you want active. You can also type `/` followed by the skill name to invoke it directly.
Continue as normal. Agent uses the skill when the task matches its description.
## Manage instructions and skills
All management happens in **Workspace Settings → Customization**. From there you can edit a custom instruction, and edit, disable, or delete any skill. Changes apply to future chats, not ones already in progress.
## Next steps
The mental model and best practices for writing instructions and skills that scale across your team.
How skills are structured and how Agent loads them.
Browse skills built by Replit and our partners, and learn how to install them.
Attach a skill to a message or install one in a project.
# Agent Modes
Source: https://docs.replit.com/features/agent/agent-modes
Learn how to choose between Lite, Economy, and Power for your Agent builds.
Agent modes let you control the balance between speed, cost, and capability when using Agent. Use the top-level mode selector in the Agent settings dropdown to choose a mode: **Lite**, **Economy**, or **Power**. Each mode has a recommended primary model you can change with the [Model selector](/features/agent/model-selector). The modes and settings you see depend on your plan and workspace.
**Keyboard shortcut:** Press **⌘+Shift+I** (Ctrl+Shift+I on Windows) to cycle through Agent modes without leaving the chat input.
## Lite mode
**Optimized for quick edits.** Lite uses fast, lightweight models for visual tweaks, bug fixes, and other small, scoped changes.
**Best for:** Quick fixes, UI polish, and short iteration loops while you stay at your keyboard.
**Keep in mind:** Lite works best in existing apps when you already know what you want to change. If you're starting from scratch, making large architectural changes, adding a new integration, or changing a database schema, switch to Economy or Power.
**Cost:** Lite uses the same effort-based pricing model as the other build modes, but focused requests often cost less than Economy or Power for the same targeted edit.
## Economy mode
**Optimized for cost.** Economy uses fewer credits per task and is the best default when you want strong results without paying for the most capable models.
**Best for:** Everyday builds, learning, and cost-conscious work across an existing project.
## Power mode
**Optimized for capability.** Power uses more capable models for complex tasks, larger codebases, and harder problems.
**Best for:** Production-grade projects, complex features, and when you want the best results from Agent.
## Which mode should I use?
Use the following as a guide:
| Goal | Recommended mode |
| ---------------------------------------------- | ------------------------------------------------------------------- |
| Small, scoped edits and quick iterations | Lite |
| Maximize number of prompts per credit | Economy |
| Balance cost and quality for most projects | Economy |
| Best results on complex, production-grade work | Power |
| Best possible result on the most complex tasks | Power with a higher [Effort](/features/agent/model-selector#effort) |
Use the Agent settings dropdown in the chat input to pick a mode, then set a [primary model and Effort](/features/agent/model-selector) if you want to steer further. No single mode is always best. Pick the mode that fits the task in front of you.
## Settings in shared projects
Your Agent settings are tied to you, not to the project. When you invite a teammate into a project, each of you keeps your own choices for:
* Mode (Lite, Economy, or Power)
* [Primary model and Effort](/features/agent/model-selector)
* [Plan Mode](/features/agent/plan-mode)
* Auto-merge for background tasks
* Auto-approve for plans
A teammate switching to Power on their next task does not flip your settings to Power. The mode and settings you see in the Agent settings dropdown are the ones Agent uses when you send the next message, regardless of how many collaborators are in the project.
## Related
* [Managing your spend](/billing/managing-spend): Set alerts, budgets, and use Plan Mode for cost control.
* [Replit Pro](/billing/plans/replit-pro): Plan features and tiered credits.
# App Testing
Source: https://docs.replit.com/features/agent/app-testing
Learn how Agent tests your app in a real browser and automatically fixes issues it finds.
App Testing lets Agent test the apps it builds using an actual browser. Agent navigates through your application like a real user would, clicking around and validating functionality. This self-testing capability helps ensure your app works correctly and allows Agent to catch and fix issues automatically.
## How App Testing works
Watch App Testing in action as Agent navigates through your app:
When App Testing is enabled, Agent will periodically decide to test itself when it thinks enough has changed to deem it necessary. Agent doesn't test after 100% of user messages, but intelligently determines when testing would be most valuable.
At this time, App Testing is available for Full Stack JavaScript and Streamlit Python web applications.
### Key Benefits
* **Extended Autonomy**: Enables Agent to work for longer periods without requiring human intervention
* **Higher Quality**: Produces apps with fewer mistakes by identifying and addressing issues early
* **Cost Efficiency**: Prevents the need for additional debugging sessions by catching problems during development
* **Interactive Review**: Provides video replays and section-by-section navigation for thorough result analysis
### The Testing Process
When Agent decides to test itself, here's what happens:
1. **Browser Preview**: You'll see a browser preview within the Agent pane
2. **Visual Testing**: Watch Agent's cursor as it clicks around your app, testing functionality
3. **Real User Simulation**: Agent navigates through your application just like a real user would, entering mock data when necessary
4. **Automatic Analysis**: Agent analyzes the test results and identifies any issues
5. **Self-Correction**: Agent reports back with a summary of its tests and automatically fixes any issues that crop up
## Key capabilities
Agent intelligently tests your application by navigating through it like a real user would, covering:
* **User interface validation**: Buttons, forms, navigation, and visual elements
* **Functionality verification**: Core features and user workflows
* **Integration testing**: API calls, database interactions, and third-party services
* **Performance and accessibility**: Load times, responsiveness, and accessibility standards
## Usage
App Testing lives in **Advanced settings** inside the Agent settings dropdown in your chat input. Turn it on when you're using Economy or Power mode. Lite mode keeps App Testing off.
App Testing is part of Agent's autonomous capabilities, alongside built-in code review. Learn more about other [Agent
features](/features/agent/overview).
## Take over
Sometimes the Agent will encounter a roadblock during testing that it needs your help with to continue. Most commonly this involves logging in to a user account (e.g. Gmail). In these cases, the Agent will pop up with a button to "Begin take over."
Pressing "Begin take over" enables you to click into the testing preview, complete the requisite steps, then allow the Agent to continue. You can also press "Skip" to skip take over, ending the App Testing if the Agent cannot proceed without your help. If you do not respond within 10 minutes, the Agent will continue as if you pressed "Skip."
### What to expect
* **Skip option**: Use the skip button to bypass testing if needed and continue with development
* **Interactive video replay**: After testing, click the video to replay the entire testing session
* **Section navigation**: Use the sliders at the bottom to jump to specific sections of the test
The interactive replay interface allows you to review the complete testing session:
## Troubleshooting
**Tests failing unexpectedly**
* Try skipping then prompting again to test
* Check for dynamic content that might affect test timing
* Review test scenarios for accuracy
**Missing test coverage**
* Provide more detailed descriptions of your app's functionality
* Explicitly mention critical user flows that should be tested
**App Testing not working at all?**
* App Testing only works with web applications[\*](#how-app-testing-works) at this time
## Pricing and usage
App Testing is included as part of Agent's effort-based pricing model with important cost considerations:
* **Usage-based**: Testing is charged based on the effort spent (simpler tests are less expensive)
* **Cost vs. Benefit**: While testing costs money, it can save costs by avoiding additional prompts and extra work from Agent by catching mistakes earlier
* **Efficient Development**: Automated approach reduces the need for manual debugging and rework
**Cost-Effective Testing**: Although App Testing adds to your usage costs, it often saves money overall by preventing the need for additional Agent sessions to fix issues that could have been caught during testing.
## Next steps
Ready to use App Testing with your projects?
1. **Start Building**: Create an app with Agent and let testing activate automatically
2. **Review Results**: Examine test reports and implement suggested improvements
3. **Iterate**: Use test feedback to refine your application
4. **Scale Up**: Apply App Testing to larger, more complex projects
Learn more about [Replit Agent](/features/agent/overview) and its full capabilities.
# Audio Generation
Source: https://docs.replit.com/features/agent/audio-generation
Generate music, sound effects, and speech for your apps with Agent.
Add sound to your apps with Agent's audio generation capabilities. Ask Agent to create background music, sound effects, or spoken narration, and it adds the audio directly to your project.
Audio generation helps you build richer experiences without recording studios, voice actors, or external tools. Whether you are making a game, a guided tutorial, or an app that needs a voice, Agent creates audio that fits your project.
## What you can create
Agent can generate three kinds of audio:
* **Music**: Background tracks and theme music in the mood and style you describe.
* **Sound effects**: Short clips like clicks, alerts, whooshes, and game sounds.
* **Speech**: Natural-sounding narration and voice-overs from text you provide.
## Usage
Audio generation is built into Agent, so there's nothing to toggle on. Open any Replit App with Agent and describe the audio you need. Agent decides when to generate audio based on your request, creates the clip, and adds it to your project.
### When Agent generates audio
Agent generates audio when you ask for sound in your project:
| Use case | Example prompt |
| ------------------------ | ------------------------------------------------------------------- |
| Background music | "Add calm background music to my meditation app" |
| Game sound effects | "Create a coin-collect sound and a jump sound for my game" |
| Voice narration | "Generate a friendly voice that reads my onboarding steps out loud" |
| Alerts and notifications | "Make a short chime that plays when a new message arrives" |
### Example prompts
Try these prompts to get started:
Add upbeat 8-bit background music to the main menu of my arcade game. Keep it short so it can loop without sounding repetitive.
Generate a calm, warm voice that reads this welcome message when the app loads: "Welcome back. Let's pick up where you left off."
Create three short sound effects for my to-do app: a soft click when I check off a task, a gentle error tone, and a celebratory sound when I clear my whole list.
## How audio fits into your app
Agent adds generated audio to your project the same way it handles other assets:
* **Automatic file creation**: Generated audio files are saved directly to your project.
* **Code updates**: Agent wires the audio into your app so it plays at the right moment.
* **Iteration**: Ask Agent to adjust the mood, length, voice, or style, and it regenerates the audio.
## Billing
Audio generation is an Agent service. Agent bills at the provider's rate, deducted from your Replit credits. Charges appear on your [usage page](/billing/managing-spend).
Replit's audio generation is powered by [ElevenLabs](https://elevenlabs.io/), which produces high-quality music, sound effects, and speech.
## Next steps
Create custom images, icons, and illustrations with Agent.
See every integration and Agent service available to your apps.
# Automation examples
Source: https://docs.replit.com/features/agent/automation-examples
Real-world automation examples built with Replit Agent using connectors like Linear, Jira, Gmail, Slack, Discord, and more.
Replit Agent can build full-stack automations that connect your tools, react to events, and run on a schedule — all from a single prompt. Combined with [Connectors](/features/integrations/overview) and [Deployments](/learn/projects-and-artifacts/replit-deployments), you can replace fragile glue code and expensive no-code platforms with real applications you own and control.
## What you can automate
Automations on Replit go beyond simple triggers. Because Agent builds real applications with full code, you can:
* **React to events** from any service with webhook support (Linear, Jira, GitHub, Confluence, Discord, and more)
* **Run on a schedule** with cron-based automations (daily digests, weekly reports, periodic syncing)
* **Chain multiple services** together in a single automation (Jira event triggers an SMS via Twilio, Google Drive file creates a Notion page)
* **Add AI processing** to any workflow — summarize, classify, extract, or generate content using built-in AI integrations
* **Deploy and forget** — automations run 24/7 on Replit's cloud infrastructure with no servers to manage
The key difference from traditional automation platforms: you get the full source code. You can customize logic, add error handling, extend functionality, and version control your automations like any other software project.
## How automations work
Most automations follow a simple pattern:
1. **Trigger** — An event happens (webhook, cron schedule, or API poll)
2. **Process** — Your app receives the event, applies logic, and optionally calls AI for summarization or analysis
3. **Action** — Your app calls another service to send a message, create a record, or update data
Agent handles the entire build process: setting up webhook endpoints, configuring cron schedules, authenticating with services through [Connectors](/features/integrations/overview), and deploying your automation.
To get started, select **Agents & Automations** from the Replit homepage and describe what you want to automate. See the [getting started guide](/features/agent/automations) for a walkthrough.
## Examples by integration
The following are real automations built and running on Replit. Use these as inspiration or as starting prompts for your own automations.
### Project management
When a comment is added to a Linear issue assigned to you, receive an email notification so you never miss feedback on your tasks.
**Services:** Linear, Email
When a comment is added to a Linear issue assigned to me, email me
When an issue is created in your Jira workspace, receive an email with an AI-generated summary highlighting the key details and context.
**Services:** Jira, Email, AI
When an issue is created in my workspace, email me with an AI summary
When a critical Jira issue is created, receive an immediate SMS notification via Twilio so you can respond to urgent issues even when away from your desk.
**Services:** Jira, Twilio
When a critical Jira issue is created, send me an SMS via Twilio
This automation uses a Jira webhook pointing to your app's webhook URL. Agent sets up the endpoint — you configure the Jira webhook to point to it.
When an Asana task is assigned to you with a due date this week, automatically send a Slack notification to keep your team informed.
**Services:** Asana, Slack
When an Asana task is assigned to me with a due date this week, send a Slack notification
When you complete a Todoist task, automatically log it to a Google Sheet to track your productivity over time.
**Services:** Todoist, Google Sheets
When I complete a Todoist task, log it to my productivity Google Sheet
This is a cron-based automation that periodically checks for completed tasks and logs them.
### Communication and notifications
Every morning at 7am, receive a Gmail email with a motivational quote and your full agenda for the day — a personal briefing to start your morning.
**Services:** Gmail, Google Calendar
Build me an automation that every day at 7am sends me a Gmail email with a motivational quote and my agenda for the day
When a Confluence page in a specific space is updated, automatically notify your team on Slack so everyone stays in sync on spec changes.
**Services:** Confluence, Slack
When a Confluence page in "Product Specs" is updated, notify the product team on Slack
When a new member joins your Discord server, automatically send them a welcome DM with onboarding resources and getting-started links.
**Services:** Discord
When a new member joins my Discord server, send them a welcome DM with onboarding resources
When you create a new Spotify playlist, automatically share it to your Discord server so your community discovers your latest music picks.
**Services:** Spotify, Discord
When I create a new Spotify playlist, share it to my Discord server
### Documents and file management
When a document is shared with you in Google Drive, automatically create a Notion page with AI-extracted key points and highlights.
**Services:** Google Drive, Notion, AI
When a document is shared with me in Google Drive, create a Notion page with key points
This is a cron-based automation that periodically checks for newly shared documents.
When a document is shared or a note is created in Box, receive an email with AI-generated key highlights so you can quickly assess whether it needs your attention.
**Services:** Box, Email, AI
When a document is shared or a Note is created in Box, email me the key highlights
When a file is shared with you in Dropbox, receive an email summary with key points extracted by AI.
**Services:** Dropbox, Email, AI
When a file is shared with me in Dropbox, email me a summary with key points
This is a cron-based automation that periodically checks for newly shared files.
### CRM and customer support
When a new contact is created in HubSpot, receive an email with AI-generated insights about the contact to help you prepare for outreach.
**Services:** HubSpot, Email, AI
When a HubSpot contact is created, email me with AI insights
When a Zendesk ticket is assigned to you, receive an email summary with the key details so you can prioritize and respond faster.
**Services:** Zendesk, Email
When a ticket is assigned to me, send me an email summary
## Building your own automations
These examples are starting points. Because Agent builds real applications, you can combine any services and add custom logic:
* **Multi-step workflows**: Chain three or more services together (e.g., Jira issue created → AI summarizes → Slack notification → Google Sheet log)
* **Conditional logic**: Add filters and conditions (e.g., only notify for high-priority issues, only log tasks from specific projects)
* **AI-enhanced processing**: Add summarization, classification, sentiment analysis, or content generation to any automation
* **Custom schedules**: Run automations every hour, every day at a specific time, weekly, or on any cron schedule
When a high-priority Jira issue is created in the "Backend" project, summarize it with AI, send a Slack notification to #engineering, and log it to a Google Sheet
## Supported services
Automations work with any service available through [Connectors](/features/integrations/overview), including:
Linear, Jira, Asana, Todoist
Slack, Discord, Twilio, Gmail, Outlook
Google Drive, Google Docs, Notion, Confluence, Box, Dropbox
HubSpot, Salesforce, Zendesk
Google Sheets, Google Calendar, Spotify
OpenAI, Anthropic, Gemini, Perplexity
You can also connect to any service with a public API by using [external integrations](/features/integrations/overview#external-integrations) with API keys.
## Next steps
* [Get started with Agents & Automations](/features/agent/automations) — set up your first automation
* [Browse available Connectors](/features/integrations/overview) — see all the services you can connect
* [Learn about Deployments](/learn/projects-and-artifacts/replit-deployments) — understand how automations run 24/7
* [Explore Agent features](/features/agent/overview) — see what else Agent can build for you
# Automations
Source: https://docs.replit.com/features/agent/automations
Build intelligent agents, chatbots, and automated workflows using Replit Agent. Connect Linear, Jira, Gmail, Slack, Discord, and more with event-driven or scheduled automations.
## Features
### Supported use cases
**Currently available:**
* **Slack Agent** - Create intelligent Slackbots that can answer questions, integrate with APIs, and automate tasks
* **Telegram Agent** - Build Telegram bots for customer service, scheduling, entertainment, and more
* **Timed Automation** - Set up scheduled workflows that run automatically at specified times
**Coming soon:**
* **Custom webhook triggers**: Respond to any external event or API call using a webhook URL
### Additional functionality
* **Rich integrations**: Connect with Outlook, Spotify, Notion, Linear, GitHub, and more
* **Testing environment**: Test your agents and visualize workflows before deployment
* **Cloud deployment**: Automatically configured for 24/7 availability with Autoscale or Scheduled deployments
## How to get started
### Step 1: Select Agents & Automations
From the Replit homepage after logging in, **select "Agents & Automations"** from the app type selector on the homepage.
### Step 2: Choose your trigger type
Next, you'll see a trigger type selector. Choose from the supported options:
* **Slack** - Create intelligent Slackbots that integrate with your workspace
* **Telegram** - Build Telegram bots for various use cases
* **Timed Automation** - Set up scheduled workflows that run automatically
### Step 3: Enter your prompt
**Enter your prompt** describing what you want your agent to do.
### Step 4: Let Agent build your automation
Agent will create your automation based on your prompt and selected trigger type, including all necessary integrations and deployment configuration.
Once your project is created, you'll find a dedicated **Agents & Automations pane** in the Project Editor:
* **Location**: Opens under the preview area in the Project Editor
* **Functions**:
* View and interact with your agent
* Test chatbot functionality before deployment
* Visualize automation workflows
* Monitor logs and debug issues
* **Testing**: Chat with your agent directly in the pane to test responses and behavior
### Deployment Requirement
**Deployment Required**: Your agent or automation must be deployed to function
with external triggers like Slack, Telegram, or scheduled automations. The
testing pane works for development and testing, but live triggers require
deployment.
Agent will automatically prompt you to deploy your project when it's ready. Choose the appropriate deployment type:
* **Autoscale deployments** - For chatbots and event-driven workflows
* **Scheduled deployments** - For time-based automations
## Supported use cases and examples
### Slack Agent examples
**Research assistant with Perplexity integration**
Create an AI Slackbot assistant that can answer research questions using the
Perplexity API. When someone asks a question in the #research channel, it
should search for current information and provide comprehensive answers with
sources.
**Codebase Q\&A with GitHub integration**
Create an AI Slackbot that can answer questions about my codebase using a
GitHub integration. It should be able to explain functions, find files, and
help with debugging by analyzing our repository.
**Email assistant with Outlook integration**
Create an AI Slackbot that can answer questions about my Outlook emails. It
should help me find specific emails, summarize conversations, and provide
quick responses to common email queries.
### Telegram Agent examples
**Business assistant with calendar scheduling**
Create an AI business assistant that can schedule emails on my Outlook
calendar. Users should be able to request meeting times and the bot will find
available slots and send calendar invites.
**Music recommendation bot with Spotify**
Make a fun AI chatbot that can return a Spotify song for any message I send
describing the vibe I want. It should understand mood descriptions and suggest
perfect tracks.
**Fictional character bot**
Make an AI bot that is a fictional character - specifically Sherlock Holmes.
It should respond to messages in character, solve puzzles, and engage in
detective-style conversations.
### Timed Automation examples
**Daily Linear task summary**
Send me an email every morning summarizing my new tasks from Linear. Include
task priorities, due dates, and project context to help me plan my day.
**Email digest automation**
Send me an email every 6hrs with a summary of all my emails. Group them by
importance and highlight any urgent messages that need immediate attention.
**Weekly competitor analysis**
Every week at 8am on Monday, send me a summary of any news about my
competitors using web search. Focus on product updates, funding news, and
market developments.
## Next steps
**Quick start ideas:**
* **Slack**: Build a research assistant or codebase Q\&A bot
* **Telegram**: Create a scheduling assistant or entertainment bot
* **Timed**: Set up daily summaries or weekly reports
Browse real-world automations connecting Linear, Jira, Gmail, Slack, Discord, HubSpot, and more.
See all available integrations you can use in your automations.
Want to be notified when new triggers become available? Follow
[@Replit](https://twitter.com/replit) for the latest updates on Agents &
Automations.
Learn more about [Replit Agent](/features/agent/overview), or explore additional [AI-powered features](/build/welcome).
# Follow-up tasks
Source: https://docs.replit.com/features/agent/follow-up-tasks
Review, start, and bulk manage Agent follow-up task suggestions after a task finishes.
## Follow-up task suggestions
After you apply a task, Agent reviews your project context and suggests **follow-up tasks** you might want to build next. The **Suggested next tasks** dialog shows the top recommendation inline, so you can keep going without leaving the main thread.
Follow-up suggestions can include:
* **New features to build**: capabilities that pair naturally with what you just shipped
* **Performance improvements**: optimizations Agent noticed while working on the task
* **User experience enhancements**: polish and refinements that round out the feature
Select **Start** on a suggestion to send it to the background, or select **View plan** to inspect the proposed work first. To see every suggestion, select **View more in the task board**. Suggested follow-ups appear under **Suggested** in the **Drafts** column.
Closing the **Suggested next tasks** dialog cancels the suggestions. Agent does not show the dialog on the main version when a proposed plan is already waiting there, so the two prompts do not compete for your attention.
## Managing many suggestions at once
For projects with many follow-up suggestions, open the task board and select **Edit** in the **Drafts** column. In edit mode, each suggested task gets a checkbox. Select the tasks you want, then use **Start** or **Cancel** to apply that action to every selected task. Select **Done** to leave edit mode.
# General Agent
Source: https://docs.replit.com/features/agent/general-agent
Learn how General Agent lets you work with any framework, create any output type, and read and write to connected services.
## What is General Agent?
General Agent is the most flexible way to work with Replit Agent. You don't need to pre-select an artifact type or commit to building something specific. Just start chatting — create a CSV, generate a PDF, research a topic, or build a full app when you're ready.
Key concepts:
* **No pre-selection**: Start working without choosing an artifact type upfront
* **Any output**: Generate files (CSV, PDF, docs), do research, or build apps
* **Connectors**: Read and write to external services like BigQuery, Linear, Slack, Notion, Amplitude, Segment, Hex, and more
* **Progressive disclosure**: Start with a lightweight chat and escalate to a full app build naturally
## How to access General Agent
You can access General Agent in several ways:
1. **Select "General" before writing a prompt** on the Replit home page
2. **Open any existing project** and start chatting with Agent directly
3. **[Import](/build/import-from-providers) from GitHub** — Projects imported from GitHub automatically get General Agent
## How to use General Agent
### Just start chatting
Open a project and start talking. You don't need to commit to building anything specific — Agent works within your current project context and can handle whatever you throw at it.
**Example prompts:**
* "Summarize the key points from this document"
* "Create a CSV of the top 100 companies by revenue"
* "What are my top five Linear tickets?"
* "Set up a Vue.js project with TypeScript"
Agent can work with files created during the session, generate single-file outputs, and execute code as part of its reasoning — all before you decide to build anything.
### Connecting external services
Connect your tools so Agent can read and write data directly:
1. Go to **Connectors** in your project settings
2. Connect your services (BigQuery, Linear, Slack, Notion, Amplitude, Segment, Hex, and more)
3. Ask Agent to read or write data through them
**Example prompts with connectors:**
* "What are the open tickets in Linear?"
* "Summarize today's Slack messages in #engineering"
* "Pull last month's sales data from BigQuery"
* "Show me upcoming events from my calendar"
* "Create a new ticket in Linear for the onboarding bug"
* "Send a summary to #engineering in Slack"
### From chat to full app
When you're ready to build, just say so. Agent transitions from lightweight chat into building your app seamlessly — no need to start over or switch contexts.
* "Turn this into a web app"
* "Build an app based on this data"
* "Create a dashboard for these metrics"
* "Set up a Rust CLI tool"
You can start casually — research a topic, generate a report, explore some data — and escalate to a full application build when the moment is right.
## What you can build
* **Knowledge work**: Research, summarize, and analyze without building an app
* **Single-file outputs**: CSVs, PDFs, documents, data exports, and formatted reports
* **Data applications**: Query connected services and visualize results in dashboards
* **Any framework or language**: Angular, Vue, Svelte, Rust, Go, C#, Python tkinter, Godot games, CLI tools, and more
* **Full-stack apps**: When you're ready, build a complete application from your chat context
## What to expect
General Agent offers more power and flexibility, which comes with some variability:
* **Single-shot setup**: Sometimes Agent configures everything in one go
* **Iterative collaboration**: Complex setups may require multiple rounds of refinement
* **Technology limitations**: Some technologies may not be fully supported in the Nix environment
Unlike standard Agent with pre-configured environments, General Agent sets up its own environment and run commands based on your request. You may need to ask it to configure publishing when you're ready to deploy.
## Frequently asked questions
No. Each chat is contained within a single project. You can't have Project A and Project B talk to each other.
You need to connect your services first through Connectors. Once connected, Agent can read and write to them, but it doesn't have access by default.
Currently supported: BigQuery, Linear, Slack, Notion, Amplitude, Segment, Hex, and more. Additional connectors are being added regularly.
No. Connectors are optional. You can use General Agent for knowledge work, file generation, and building apps without any external connections.
## Availability
| Capability | Core | Pro |
| --------------- | ---- | --- |
| General Agent | ✅ | ✅ |
| Any framework | ✅ | ✅ |
| Knowledge work | ✅ | ✅ |
| File generation | ✅ | ✅ |
| Connectors | ✅ | ✅ |
| Build apps | ✅ | ✅ |
General Agent is available to all users.
# Image Generation
Source: https://docs.replit.com/features/agent/image-generation
Learn how to generate AI images and add them to your projects with Agent.
Create visual content for your applications using Agent's image generation capabilities.
Transform your ideas into custom images, illustrations, and graphics that perfectly match your project's needs. Whether you're building a website, mobile app, or any creative project, Agent generates images that bring your vision to life.
Image generation empowers builders to create unique visual content without needing design skills or external tools. Generate everything from icons and illustrations to backgrounds and UI elements directly within your development workflow.
## Features
Build visually compelling applications with Agent's image generation. This eliminates the need for stock photos, external design tools, or hiring designers for basic visual content. Whether you're creating a portfolio website, building a game, or designing a mobile app interface, image generation provides custom visuals tailored to your project.
Agent can perform the following image generation actions:
* **Custom image creation**: Generate images based on detailed descriptions and specifications
* **Style adaptation**: Create images in various artistic styles, from realistic to cartoon-like
* **Transparent backgrounds**: Generate images as transparent PNGs, or remove the background from an existing image — ideal for logos, icons, stickers, and product cutouts
* **Project integration**: Seamlessly add generated images directly to your app's codebase
* **Iterative refinement**: Modify and improve images based on your feedback
## Usage
Image generation is built into Agent — there's nothing to toggle on. Open any Replit App with Agent enabled and ask Agent to create the visual content you need. Agent automatically determines when to generate images based on your requests, creating custom images that match your specifications.
### When Agent uses image generation
Agent triggers image generation when you request visual content for your projects:
| Use Case | Example Prompt |
| ------------------------------- | ------------------------------------------------------------- |
| **App icons and logos** | "Generate a modern logo for my fitness tracking app" |
| **Website backgrounds** | "Create a subtle gradient background for my portfolio site" |
| **Game assets** | "Generate pixel art sprites for my platformer game" |
| **UI illustrations** | "Create an illustration for my app's empty state screen" |
| **Marketing visuals** | "Generate a hero image for my landing page" |
| **Product mockups** | "Create mockup images of my app running on different devices" |
| **Transparent logos and icons** | "Generate a logo for my app with a transparent background" |
### Best practices for image generation
Follow these guidelines to get the best results from Agent's image generation:
**Be specific and descriptive**
* Include details about style, colors, composition, and mood
* Specify dimensions or aspect ratios when relevant
* Mention the intended use (icon, background, illustration, etc.)
* Ask for a transparent background when you need a logo, icon, sticker, or cutout to sit over other content
**Iterate and refine**
* Start with a basic description and refine based on results
* Ask Agent to modify specific aspects of generated images
* Request variations to explore different creative directions
**Consider your project's style**
* Maintain visual consistency across your app
* Specify style preferences that match your brand or design system
* Ask for images that complement your existing visual elements
### Example prompts
Try these example prompts to get started with image generation:
Generate a clean, modern icon for my task management app.
The icon should be circular with a gradient background from blue to purple,
featuring a simple checkmark symbol in white.
Make it suitable for use as an app icon.
Create a hero illustration for my coding tutorial website.
Show a friendly cartoon character sitting at a computer with code on the screen.
Use a warm color palette with blues and oranges.
The style should be approachable and encouraging for beginners.
Generate a set of pixel art enemies for my retro-style platformer game.
I need a flying bat, a walking mushroom, and a jumping slime.
Each should be 32x32 pixels with a limited color palette of 8 colors.
Make them cute but slightly menacing.
### Project integration
Agent seamlessly integrates generated images into your codebase:
* **Automatic file creation**: Generated images are saved directly to your project files
* **Code updates**: Agent updates your code to reference the new image files
* **Asset organization**: Images are placed in logical directories within your project structure
This streamlined workflow means you can generate and implement visual content without leaving your development environment.
Replit's image generation is powered by [Google's Imagen 4](https://deepmind.google/models/imagen/), a state-of-the-art text-to-image model that excels at creating high-quality, photorealistic images with fine details and improved text rendering capabilities.
Learn more about [working with Agent](/features/agent/overview) or explore other [AI tools](/build/welcome).
# Message Queue
Source: https://docs.replit.com/features/agent/message-queue
Learn how to queue follow-up messages for Agent so it handles them in order after finishing its current task.
The Message Queue is a new way of interacting with Replit Agent while it's working.
Instead of interrupting ongoing work, you can schedule follow-up tasks that will be executed in
order after every completion of an Agent work loop.
## How it works
When the Agent is actively handling a request, you can schedule a follow-up task by adding
messages to the Queue. These tasks or requests will be processed in order after every completion of
an Agent work loop. The queue is automatically cleared when Agent finishes all tasks.
All message options are available with the Queue, such as [Visual Editor](/design/visual-editor)
and file attachments.
Queued messages will only be processed automatically while you have an active
Project Editor session connected to the Agent (either on desktop or mobile).
## Using the Message Queue
### When the Queue appears
The Message Queue appears automatically as a drawer above the chat input when you submit a message
while Agent is working. It closes once all queued messages are processed.
### Managing queued messages
When the queue drawer is open, you can:
* **Edit messages**: Click the edit icon to modify a queued message before it's processed
* **Delete messages**: Remove unwanted tasks from the queue
* **Reorder items**: Drag and drop to change the execution order of queued messages
* **Add more messages**: Continue adding new tasks to the queue via the chat input
### Immediate interruption
If you need to interrupt Agent and send a message immediately, you can use the **Pause** button
in the status bar. This will stop the current Agent work loop and allow you to send an immediate
message, bypassing any queued messages (if any exist).
## Best practices
### When to use the Message Queue
* **Multi-step workflows**: Queue a series of related tasks that build upon each other
* **Batch operations**: Group similar requests together for efficient processing
* **Follow-up requests**: Add clarifications or additional requirements after the initial task
* **Non-urgent tasks**: Queue lower-priority requests while Agent works on critical tasks
### When to use immediate interruption
* **Urgent changes**: When you need to stop current work immediately
* **Critical errors**: If you notice an issue that needs immediate attention
* **Change of direction**: When you want to completely change what Agent is working on
## Queue behavior
* **Ordered execution**: Messages are processed in the order they were added to the queue
* **Work loop completion**: Each queued message is processed after Agent completes its current work loop
* **Context preservation**: Agent maintains context between queued messages in the same conversation
# Model selector
Source: https://docs.replit.com/features/agent/model-selector
Choose an available primary model for Replit Agent and understand how models map to Lite, Economy, and Power modes.
By default, Agent automatically picks the best model for each request, balancing speed, cost, and accuracy.
The Model selector is for when you want to make that choice yourself: it lets you pick the primary model Agent uses for most of a task. Select a mode first, then choose from the models available in that mode.
## Choose a model
1. Open the Agent settings dropdown in the chat input.
2. Choose **Lite**, **Economy**, or **Power**.
3. Select **Primary model**, then choose a model from the list.
Your selection applies to your next message; you can change it at any time.
## Models by mode
The built-in catalog maps model choices to Agent modes as follows:
| Model | Lite | Economy | Power |
| -------------------- | :--: | :-----: | :---: |
| Kimi K2.7 | ✓ | | |
| GPT-5.6 Luna | ✓ | | |
| Gemini 3.5 Flash | ✓ | | |
| DeepSeek V4 Flash | ✓ | | |
| Auto | | ✓ | |
| Claude Sonnet 4.6 | | ✓ | |
| Claude Sonnet 5 | | ✓ | |
| GPT-5.6 Luna Fast | | ✓ | |
| GPT-5.6 Terra | | ✓ | |
| Gemini 3.1 Pro | | ✓ | |
| GLM 5.2 | | ✓ | |
| Claude Fable 5 | | | ✓ |
| Claude Opus 4.8 | | | ✓ |
| Claude Opus 4.8 Fast | | | ✓ |
| Claude Opus 5 | | | ✓ |
| Claude Opus 5 Fast | | | ✓ |
| Kimi K3 | | | ✓ |
| GPT-5.6 Sol | | | ✓ |
The list in your Model selector is the source of truth for your account. Model selection is rolling out, and the available models can vary by rollout, organization settings, and authorization. Some fast variants require Turbo access, Replit's paid speed feature for Pro and Enterprise plans. If you don't see **Primary model**, the Model selector isn't available for your account yet.
## Effort
**Effort is a per-model control, not a separate mode.** It sets how much reasoning the selected model spends on each response, from **Low** to **Max**. Each model shows its recommended setting, and you can raise it only when a task calls for it.
Use the level descriptions as your guide:
| Effort | Use it for |
| -------------- | ---------------------------------------------------------------------------------------------------------- |
| **Low** | Fastest responses with minimal reasoning. Routine, well-defined changes where speed matters most. |
| **Medium** | Balanced reasoning for everyday tasks. A solid default when the recommended setting doesn't say otherwise. |
| **High** | Deeper reasoning for more complex work, such as multi-step features and less familiar territory. |
| **Extra High** | Extended reasoning for the hardest problems, such as large refactors and tricky bugs. |
| **Max** | Maximum reasoning depth. The highest cost and slowest, when the best possible result is all that matters. |
At higher Effort, Agent performs deeper, more deliberate reasoning and invokes its most capable frontier models, improving outcomes on the most complex tasks. Agent applies that extra power selectively — it routes to the more capable models only when a request is genuinely hard, not on every run.
Because Agent only reaches for the most capable model on the hardest work, higher Effort adds cost up to \~2x on the toughest tasks — and often little to nothing on the simpler ones. Raise it when you're tackling complex problems, and keep it low for routine changes.
## Compare models
**Compare models** runs your next prompt across several models at once, so you can judge results side by side instead of guessing which model fits. It's in beta.
To turn it on, expand **Advanced settings** at the bottom of the Agent modes popover and switch on **Compare models**.
Comparing models is only supported with Chat.
With the toggle on, add up to **4 models** to the comparison.
Your next prompt then runs once per selected model, and each produces its own variant to compare.
Each model in a comparison runs a separate agent and uses credits, so a Compare 4 run costs about as much as four single runs.
## Model selection in Build and Design
Build and Design keep separate model selections. This page covers selecting a model for Agent builds. To explore visual directions with Design's model selector, see [Explore with different models](/design/explore-with-different-models).
## Related
* [Agent modes](/features/agent/agent-modes) — Choose between Lite, Economy, and Power
* [Explore with different models](/design/explore-with-different-models) — Use models to explore Design directions
# Replit Agent
Source: https://docs.replit.com/features/agent/overview
Replit Agent turns your ideas into apps, designs, slides, and more, all from plain language. No coding required.
## What is Replit Agent?
Agent is your creative partner. Agent takes your ideas, helps you refine them, and then makes them real. Unlike a chatbot that only answers questions, Agent takes action: it sets up your project, creates applications, checks its work, and fixes problems along the way.
Describe what you want in everyday language. No code or technical knowledge required. Agent handles the rest, from planning to deployment.
## How to use Replit Agent
### Getting started
In the [Project Editor](/learn/projects-and-artifacts/project-editor), just start chatting. Describe an app you want to build, ask a question, research a topic, or pull data from [connected services](/features/agent/general-agent) like BigQuery, Slack, or Notion. There are no constraints. Replit Agent handles whatever you throw at it.
Optionally, select a project type: web app, mobile app, slides, design, data visualization, and more. If you already described what you want in step 1, Agent figures out the right setup automatically.
Agent writes code, sets up infrastructure, and tests the result. Once you're in your project, you can switch between [Agent modes](#agent-modes) to control how it builds.
Chat with Agent to refine your project, then publish when you're ready. All artifacts publish together.
You're not locked into one type. Start with a web app and add a mobile app, slides, or a video later — all in the same project.
### Plan mode
Enable Plan mode to brainstorm, ask questions, and map out your project before Agent changes any code or data. In Plan mode, Agent will:
* **Break down complex projects** into ordered task lists
* **Explore different approaches** and weigh trade-offs
* **Review and refine** before any code is written
Click "Plan" in the chat input — or simply ask Agent — to switch to Plan mode. Example: "Create a plan to build a project tracker for my team"
Agent creates an ordered task list you can review and refine. When you're happy with the plan, approve it and Agent starts building.
Learn more in the [Plan mode guide](/features/agent/plan-mode).
### Agent modes
Choose how Agent builds your project:
* **Lite**: Make lightweight, inexpensive changes quickly. Lite mode is ideal for visual tweaks, bug fixes, and scoped features.
* **Economy**: Use Agent's cost-optimized models for everyday tasks. Expand **Advanced settings** to manage features like App Testing and High effort.
* **Power**: Use Agent's most capable models for harder problems, larger changes, and longer builds. In **Advanced settings**, you can also turn on **Turbo** for up to 2.5x faster builds at higher cost (Pro and Enterprise).
You can raise the [Effort](/features/agent/model-selector#effort) so Agent reaches for its most powerful frontier model on the most complex tasks.
Tip: You can also enable **[Plan mode](/features/agent/plan-mode)** to review and iterate on Agent's plan before building begins. Max mode is no longer available; use Power for the most capable standard builds.
## What you can build with the Replit Agent
* **Web apps, mobile apps, data dashboards, and AI-powered tools**
* **Visual designs and prototypes** — explore mockups on the [Design Canvas](/design/canvas) before committing to code
* **Multiple outputs in one project** — web apps, mobile apps, slides, and videos sharing the same backend
* **Files and documents** — CSVs, PDFs, PowerPoint files, Markdown docs
* **Connected service queries** — pull data from BigQuery, Linear, Slack, Notion, and more directly from chat
Describe your idea and let Agent bring it to life — no setup required.
## Frequently asked questions
No. Agent handles all the technical work — writing code, setting up infrastructure, configuring databases. You describe what you want in plain language and Agent builds it.
**Lite** is for quick, targeted changes (10-60 seconds) such as visual tweaks, bug fixes, and scoped features. **Economy** is the best default for most builds when you want to balance cost and quality. **Power** uses the most capable models for harder tasks, and **Turbo** is an optional Power-only toggle in Advanced settings when you need the fastest runs. You can raise the [Effort](/features/agent/model-selector#effort) so Agent applies its most powerful frontier model to the most complex tasks.
Yes. You can add web apps, mobile apps, slides, videos, and data visualizations to the [same project](/features/projects-and-artifacts/artifacts#multiple-artifacts-in-one-project) — all sharing the same backend and data.
Agent tests its own work on a regular basis. Agent also creates checkpoints as it works, so you can roll back to any previous state. You can also chat with Agent to describe what went wrong and it will fix the issue.
## Availability
| Capability | Core | Pro |
| ----------------------- | ---- | --- |
| Agent chat and building | ✅ | ✅ |
| Lite mode | ✅ | ✅ |
| Economy mode | ✅ | ✅ |
| Power mode | ✅ | ✅ |
| Design Canvas | ✅ | ✅ |
| Multi-Artifacts | ✅ | ✅ |
| Active background tasks | 1 | 10 |
| Turbo | ❌ | ✅ |
Turbo is off by default on every plan—turn it on per project when you need it. On Enterprise, it isn't available until an admin enables it for the organization.
For detailed pricing, see [Agent billing](/billing/ai-billing#agent-billing).
## Next steps
Teach Agent specialized knowledge — use pre-built skills or create your own.
Kanban planning, background tasks, and changes applied back to the main version.
Visual mockups and the hands-on visual editor.
Connect BigQuery, Linear, Slack, Notion, and more.
Agent pricing, plan comparison, and spending management.
Tips for effective prompting and building with AI.
# Plan Mode
Source: https://docs.replit.com/features/agent/plan-mode
Learn how to use Plan mode to brainstorm and plan with Agent without changing your app's code or data.
Plan mode introduces a new way of chatting with Replit Agent that focuses on asking questions, brainstorming, and planning your work.
## What is Plan Mode?
Plan mode enables you to:
* **Brainstorm ideas** and explore different approaches to your project
* **Plan development work** with structured task lists
* **Collaborate with AI** on project architecture and feature planning
* **Get strategic guidance** and ask questions without modifying your project's code or data
* **Transition seamlessly** to Build mode when you're ready to implement
The default mode is now referred to as **Build** mode.
Unlike Build mode, Plan mode focuses on planning and ideation, helping you think through projects before writing code.
## Getting Started
### Accessing Plan Mode
Plan mode is available in any Replit App that has Agent enabled. To access it:
1. **Open your Replit App** in the Project Editor
2. **Look for the mode selector** at the bottom left of the chat input box
3. **Choose Plan mode** from the dropdown
## Key Features
### Task Planning
Plan mode excels at breaking down complex projects into manageable tasks. Provide the Agent some requirements and it will generate an ordered task list of the development tasks necessary to complete your request.
### Collaborative Brainstorming
Work together with AI to explore different approaches:
* **Multiple solution paths** for complex problems
* **Pros and cons analysis** of different approaches
* **Risk assessment** and mitigation strategies
## Workflow: From Planning to Building
### 1. Planning Phase (Plan Mode)
Start your development process in Plan mode:
* **Define your project scope** and objectives
* **Break down requirements** into specific features
* **Plan your architecture** and technology stack
* **Create a development roadmap** with milestones
### 2. Task Approval
When Agent generates a task list:
* **Review** the proposed tasks
* Select **Start building** to approve the plan
or, keep chatting to refine the plan.
### 3. Transition to Build Mode
When you're ready to start implementing:
* **Click "Start building"** to approve the plan
* **Agent automatically switches** to Build mode
* **Agent begins implementation** of approved tasks
* **Track progress** through the development phase
Plan Mode usage follows the same effort-based pricing as other Agent interactions. You are charged for all Agent work in Plan Mode, including answering questions, providing guidance, and generating task lists. Charges scale up for more complex requests, or requests in longer context conversations.
**All Agent interactions are billable** - whether Agent responds with text guidance or makes code changes, there is always a charge, though smaller requests cost less.
## Use Cases
### Feature Planning
Ideal for adding new functionality:
* **Break down complex features** into implementable tasks
* **Plan database changes** and API modifications
* **Design user interface** and user experience flows
* **Consider edge cases** and error handling
### Learning and Exploration
Excellent for educational purposes:
* **Understand different approaches** to solving problems
* **Learn about new technologies** and frameworks
* **Explore design patterns** and best practices
* **Get guidance** on development methodologies
## Best Practices
### Effective Prompting
To get the most out of Plan mode:
* **Be specific** about your project requirements
* **Ask follow-up questions** to clarify AI suggestions
* **Request examples** when discussing complex concepts
* **Discuss trade-offs** between different approaches
* **Iterate on ideas** before committing to implementation
* **Save important decisions** by referencing them in follow-up conversations
# Agent Skills
Source: https://docs.replit.com/features/agent/skills
Preserve patterns, conventions, and solutions across sessions with Agent Skills.
## What is a Skill?
A skill is a folder. Inside it lives a file called `SKILL.md` with the instructions Agent follows, plus any supporting files you want it to reference. Skills live in your project's `/.agents/skills` directory and conform to the [Agent Skills specification](https://agentskills.io/specification) — an open standard that works across agents.
Agent sees the name and description of every installed Skill, but only loads the full content when relevant to the current task. This makes skills context-efficient: you can install many without degrading Agent's output.
## Pre-defined Skills
Replit ships with pre-defined skills available from the **Use a skill** picker in chat and from the new-project starting-point picker. These skills work in every project without installation. For the full catalog, partner skills, and how to install them, see the [Skills directory](/features/agent/skills-directory).
To add a pre-defined skill, open the **Use a skill** picker from the chat input and select a skill, or simply ask Agent to load the skill.
## Skill scope
Skills can be scoped at different levels:
| Scope | Availability | Where it lives |
| ------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| **Project-level** | Specific to one project | Versioned with your files in `/.agents/skills` |
| **Workspace-level** | Available to everyone in your workspace | Managed centrally in Workspace Settings |
| **Enterprise** | Company-wide standards | Included in [custom templates](/teams/custom-templates) and [design systems](/teams/custom-design-system) |
For workspace-level skills, see [Agent Customization](/features/agent/agent-customization) to set up workspace skills and custom instructions for your team.
## How Agent loads skills
Agent reads the metadata (name and description) of every installed skill on every chat. The full body of a skill loads only when Agent determines the skill is relevant to the current task. This keeps skill content out of the context window until needed.
Installed skills persist in your project across Agent sessions and can be committed to version control for team sharing.
## Working with other AI coding tools
If you work across multiple AI coding tools, [rulesync](https://github.com/dyoshikawa/rulesync) has Replit support and helps you maintain consistent configurations.
You can import skills from other AI coding assistants:
```bash theme={null}
npx rulesync init
npx rulesync import --targets claudecode --features skills
npx rulesync generate --targets replit --features skills
```
This allows you to maintain a single set of skills that work across different development environments.
## Next steps
* [Agent Customization](/features/agent/agent-customization) — Make skills and custom instructions available across your whole workspace
* [Skills directory](/features/agent/skills-directory) — Browse skills built by Replit and our partners
* [Use Agent Skills](/build/use-agent-skills) — Hands-on guide for using skills in chat or installing them in a project
* [Agent skills](/learn/agent-skills) — When and how to use skills effectively
* [Agent Skills specification](https://agentskills.io/specification) — Open standard for writing skills
* **Enterprise**: include skills in [custom templates](/teams/custom-templates) and [design systems](/teams/custom-design-system) for your organization
# Skills directory
Source: https://docs.replit.com/features/agent/skills-directory
Browse skills built by Replit and our partners, and learn how to install them in a project or your workspace.
The skills directory is a catalog of ready-made skills you can install and use right away — built by Replit and by our partners. Install one, try it, then edit it to fit how your team actually works.
For what a skill is and how Agent loads it, see [Agent Skills](/features/agent/skills). To make a skill available across your whole workspace, see [Agent Customization](/features/agent/agent-customization).
## Install a skill
You can add a skill from the directory in a few ways:
* **In chat** — click the **+** button next to the chat input, select **Use a skill**, and choose one. The skill applies to that message only, with nothing installed in your project.
* **In a project** — open the **Skills pane** in the Project Editor, select the **Discover** tab, find a skill, and click **Install**. Installed skills live in your project's `/.agents/skills` directory and persist across chats.
* **From the command line** — install a skill with the [skills CLI](https://github.com/vercel-labs/skills):
```bash theme={null}
npx skills -a replit
```
Skills in the Replit skill picker are audited for safety. Skills installed from external sources are not. Because a skill is instructions Agent follows, always review an external skill before installing it — see [Agent skills](/learn/agent-skills) for what to check.
## Replit skills
Replit ships with pre-defined skills available from the **Use a skill** picker in chat and from the new-project starting-point picker. These work in every project without installation. Descriptions appear inline when you open the picker.
| Category | Skills |
| --------------------- | ------------------------------------------------------------------------------------------------------------- |
| Sales & marketing | Ad Creative, AI SDR, SEO Auditor, Programmatic SEO, GEO, Content Machine, Storyboard |
| Career | AI Recruiter, Resume Maker, Interview Prep |
| Research & analysis | Competitive Analysis, Deep Research, GitHub Solution Finder, Supplier Research |
| Business & finance | Stock Analyzer, Excel Generator, Invoice Generator, Tax Reviewer |
| Documents & tools | Website Cloner, File Converter, Flashcard Generator, Legal Contract, Infographic Builder, Recreate Screenshot |
| Creative | Photo Editor, Podcast Generator, Podcast Marketing, Branding Generator, Video Editing |
| Productivity | AI Secretary, Product Manager, Design Thinker, Skill Finder, Skill Creator |
| Personal | Travel Assistant |
| Security & compliance | Secrets, Sensitive Data, Input Validation, AI Security, Dependency Vetting, License Check |
| Quality & reliability | Accessibility, Responsive UI, Observability, Resilience, Ship Review |
Inside a workspace, the picker also discovers any additional skills installed in the project's `.local/secondary_skills/` directory.
## Partner skills
Replit's partners publish skills that teach Agent how to build with their products. Install one to give Agent the patterns and conventions for that service.
| Partner | What it teaches Agent |
| ---------------- | ----------------------------------------------- |
| Stripe | Payments and billing integration patterns |
| PayPal | Payments integration patterns |
| RevenueCat | Subscription and in-app purchase patterns |
| Mixpanel | Analytics and tracking implementation |
| BigQuery | Data warehouse query patterns |
| Resend | Transactional email integration |
| Google Workspace | Gmail, Drive, Docs, and Calendar integration |
| Atlassian | Jira and Confluence issue and page workflows |
| Google Maps | Maps, places, routes, and geocoding integration |
## Community skills
Beyond Replit and partner skills, the community publishes skills you can install. Browse them at [skills.sh](https://skills.sh), and read the [Agent Skills specification](https://agentskills.io/specification) to write your own.
## Next steps
How skills are structured and how Agent loads them.
Make skills available across your whole workspace.
Attach a skill to a message or install one in a project.
When and how to use skills effectively.
# Task board
Source: https://docs.replit.com/features/agent/task-board
Use the task board to review, start, monitor, and apply Agent tasks as they move through each stage.
## How the task board works
The task board gives you one place to review, start, monitor, and apply Agent tasks. Use it when Agent breaks a large request into multiple pieces, when you want to run work in the background, or when you need to understand what has already changed in your project.
Tasks are organized into columns based on status. The board shows what Agent has planned, what is running, what is ready for review, and what has already been applied.
Each task moves from left to right as it progresses:
* **Drafts**: tasks Agent has planned but has not started
* **Active**: tasks Agent is building now, including tasks queued behind your active task limit
* **Ready**: tasks Agent has finished and are ready for your review
* **Done**: tasks that are finished, archived, or cancelled
## Drafts
**Drafts** are planned tasks that Agent has not started building yet. Each draft includes a title, description, and step-by-step plan.
Use Drafts to review Agent's proposed approach before work starts. You can inspect the plan, ask Agent to adjust it, or start the task when you're ready.
Drafts are useful when you want to plan a larger feature before committing background work. For example, Agent might split an onboarding project into separate drafts for authentication, profile setup, dashboard UI, and deployment polish.
## Active
Once you accept a task, it moves to the **Active** column and Agent starts building. Each task runs in its own isolated copy of your project, so nothing changes in your main version until you apply the work.
Some tasks depend on others. For example, a task that builds a dashboard may need the database schema task to finish first. Dependent tasks wait as **Queued** until their prerequisites finish. Tasks also queue if you reach your plan's active background task limit.
## Ready
When a task finishes building, it moves to **Ready**. This means the work is complete, but nothing has changed in your main version yet.
You can apply changes in two ways:
* **From the thread**: open the task's thread and select **Apply changes to main version** to bring the work into your project, or **Dismiss** to discard it
* **From the board**: select the three-dot menu on any Ready task card, then select **Apply changes**
Review Ready tasks before applying them. Check the work log, test output, and preview so you understand what Agent changed.
## Done
Once applied, the task card moves to the **Done** column.
The Done column also includes archived planning sessions and cancelled tasks. This gives you a history of what happened without mixing finished work back into Drafts or Active.
Agent handles conflicts automatically when you apply changes from multiple tasks. If something doesn't look right, ask Agent to fix it.
## Find and filter tasks
Use the task board when your project has many tasks in flight. You can search by task title or task number, filter drafts, and use edit mode to manage groups of tasks at once.
For example, search by task number when someone references a task from a thread, review, or Slack conversation. Filter drafts when you want to focus on planned work without scanning active or finished tasks.
For suggested follow-ups, see [Follow-up tasks](/features/agent/follow-up-tasks).
## Rename a task
Long-running task lists can get hard to scan as scope shifts. To rename any task, open the three-dot menu on its card (in the task list sidebar or on the task board) and select **Rename**. Type a clearer title and select **Save**.
Renaming a task only changes how it appears to you and your teammates. The work Agent has already done, the task's history, and any pending changes are untouched.
## Settings on each task
Every task has its own settings dropdown next to its title. Open it to control how Agent finishes the task and how the result lands in your project:
* **Auto-apply changes** (Drafts and Active): when the task is ready, apply it to the main version immediately instead of waiting for review.
* **Auto-approve plan** (Drafts): when Agent suggests a plan for the task, accept it automatically and start building.
* **Apply changes** (Ready): apply the finished work to your main version.
* **Rename**: change the title shown on the card.
* **Review changes** (Ready): jump straight to the diff for a task that's ready.
* **Cancel**: stop the task or remove a draft.
Auto-apply and auto-approve are quick actions you select once, not toggles you leave on. The menu keeps a consistent width so the labels don't shift as you open different tasks.
# Task lifecycle
Source: https://docs.replit.com/features/agent/task-lifecycle
Understand task states, queued work, applying changes, archiving, and cancelling Agent tasks.
Every Agent task moves through a lifecycle: planned, running, ready for review, and finished. The lifecycle keeps work isolated until you decide what should become part of your main version.
## Draft
A **Draft** is a task Agent has planned but has not started building yet. Drafts are safe to review because they only contain the proposed work: the task title, description, and plan.
Use Drafts to decide whether Agent understood the goal. You can start the task, ask Agent to revise the plan, or archive the draft for later.
## Active
An **Active** task is running in the background. Agent works on it in an isolated copy of your project, so your main version stays unchanged while the task runs.
You can keep using the main thread while Active tasks run. If a task needs feedback, open its thread and continue the conversation there.
## Queued
A **Queued** task is approved but waiting to start. A task can queue when it depends on another task, or when you have reached your plan's active background task limit.
Queued tasks start automatically when their prerequisites finish and an active task slot opens.
## Ready
A **Ready** task is finished, but its changes have not been applied to your main version yet. Review the task's work log, test results, and preview before applying changes.
If the work looks right, apply it to main. If it is not what you wanted, dismiss it and start a new task.
## Applying
An **Applying** task is in the middle of moving its changes into your main version. Agent handles conflicts automatically when applying changes from multiple tasks.
Wait for applying to finish before judging the final result. If something looks off afterward, ask Agent to fix it in the main thread.
## Done
A **Done** task is finished and no longer needs action. Done can mean the task was applied to your main version, archived before it started, or cancelled after it moved into building.
Use the **Done** column as a history of completed, archived, and cancelled task work.
## State examples
Every task moves through a series of stages, from an idea to part of your app. Each stage has its own icon so you can tell what's happening at a glance.
Draft : Agent has proposed this task. It has a plan ready for your review.
Active : Agent is building this task right now. It runs in its own copy of your project so your main version stays safe.
Queued : This task is approved but waiting for a slot to open up before it can start building.
Ready : This task is complete. You can review the changes and apply them to your main version whenever you're ready.
Applying : The changes from this task are being applied to your main version right now.
Done : This task is finished and its changes are part of your main version.
Archived : A planning session you set aside before it started building. Archived planning sessions can be restored later from the Done column.
Cancelled : A task you stopped after it had moved into building. Cancelled tasks can't be restored. Start a new task if you change your mind.
## Archiving and cancelling tasks
You can stop a task at any point in its lifecycle, but the option you see depends on where the task is on the board. Both **Archive** and **Cancel** move a task to the **Done** column, but they behave differently:
| Action | When it's available | What happens | Reversible? |
| ----------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| **Archive** | While the task is still a planning session: a **Draft** that hasn't started building | The planning session is set aside without running. Its plan is preserved. | Yes. Open the archived card in the **Done** column and restore it back to **Drafts**. |
| **Cancel** | After the task has moved from planning into building: any **Active**, **Queued**, or **Ready** task | Agent stops the task and discards any in-progress work. No changes are applied to your main version. | No. Cancelled tasks can't be restored. Start a new task if you want to revisit the work. |
Use **Archive** for planning sessions you want to revisit later. Use **Cancel** as the permanent stop button for tasks that are queued, already running, or finished building.
You can find both archived planning sessions and cancelled tasks in the **Done** column on the far right of the task board, alongside completed tasks.
# Voice Mode
Source: https://docs.replit.com/features/agent/voice-mode
Speak your prompts to Agent instead of typing. Voice Mode transcribes what you say into the chat box so you can review and send it.
Describe what you want to build out loud with Voice Mode. Tap the microphone in the Agent chat box, speak your prompt, and Replit transcribes your speech into editable text. Review the text, make any edits, and send it like any other message.
Voice Mode is helpful when typing is slow or awkward — especially on mobile, where dictating a full prompt is often faster than thumb-typing it.
Voice Mode turns your speech into text in the chat box. It does not read Agent's responses aloud — you still send a written message, and Agent replies in the chat as usual.
## How it works
Voice Mode records your speech, transcribes it, and inserts the result into the chat box for you to review before sending:
1. Open Agent and select the microphone in the chat box.
2. Allow microphone access if your browser or device prompts you.
3. Speak your prompt. A waveform shows that Agent is recording.
4. Stop recording when you're done. Recording also stops automatically after a pause or when you switch away from the tab.
5. Wait briefly while your speech is transcribed.
6. Review the transcribed text, edit it if needed, then send your message.
Because the transcript appears as regular text in the chat box, you can mix voice and typing freely — dictate part of a prompt, then type the rest, or fix a word before you send.
Speak naturally. Voice Mode focuses on capturing what you mean rather than transcribing every word literally, so filler words like "um" and "uh" are left out of the result.
## Where you can use it
Voice Mode is available in the Agent chat box:
* In the **Project Editor** when working with Agent on an app.
* When **starting a new app** from the Agent prompt on the home screen.
You can use Voice Mode on desktop web, mobile web, and the Replit mobile app.
## Good to know
Keep these details in mind when using Voice Mode:
| Detail | What to expect |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Recording length | Record up to 6 minutes at a time. You'll see a warning shortly before the limit. |
| Automatic stop | Recording stops on its own after about 30 seconds of silence, or when you switch tabs or background the app. |
| Review before sending | Transcribed text lands in the chat box so you can read and edit it before sending — nothing is sent automatically. |
| Microphone access | Voice Mode needs permission to use your microphone. If recording doesn't start, check that your browser and device allow microphone access for Replit. |
## Availability
Voice Mode is available on all Replit plans. The microphone appears in the Agent chat box on browsers and devices that support audio recording, and you'll be asked for microphone permission the first time you record.
## Next steps
Learn what Agent can do and how to prompt it effectively.
Generate music, sound effects, and speech for your apps with Agent.
# Web Search
Source: https://docs.replit.com/features/agent/web-search
Learn how Agent searches the web to build apps with up-to-date information and the latest documentation.
Build applications with current, real-world data using Agent's Web Search capabilities.
This feature overcomes knowledge cutoffs by accessing the latest information on the web. When you ask Agent to create something requiring up-to-date information, it searches the web and fetches detailed content to make your app more accurate and useful.
Web Search is valuable for finding the latest packages, tools, and information. This ensures your apps use current best practices and are more accurate.
## Features
Build applications with current information using Agent's Web Search. This eliminates manual research and data gathering. Whether you're creating a dashboard with financial data or building a website showcasing recent startup launches, Web Search ensures your app reflects reality.
Agent can perform the following Web Search actions:
* **Search**: Find current information, latest documentation, and real-time data from the internet
* **Content fetching**: Retrieve detailed information from specific websites and URLs
* **Source citations**: View exactly where Agent found information so you can verify and reference sources
## Usage
Web Search is built into Agent — there's nothing to toggle on. Describe what you want to build, and Agent automatically determines when to search the web for current information. Include keywords like "search," "research," or "use Web Search" in your prompt to nudge Agent to search explicitly.
### When Agent uses Web Search
Agent triggers Web Search when you request information that requires current data:
| Use Case | Example Prompt |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| Finding optimal packages | "I need to build an image editor - research the best libraries for canvas manipulation and build an app" |
| API research | "Build a Discord bot that tracks GitHub commits - find the most reliable Discord.js tutorial and the best way to communicate with GitHub" |
| Framework comparison | "Help me decide how to implement inventory management for my shopping app. Research the best authentication solutions and their trade-offs" |
| Tool discovery | "Create an app with smooth animations - research the best animation libraries" |
| Current market data | "Build a crypto tracker showing today's top 10 coins with real prices" |
| Company research | "Make a portfolio site for Michele Catasta, president of Replit" |
| Documentation updates | "Build a Stripe payment form using their latest API changes" |
| Technology trends | "Create a developer tools dashboard - what are the trending VS Code extensions?" |
### How Web Search enhances your apps
Web Search transforms your applications from using placeholder data to incorporating real, accurate information:
| Benefit | Description |
| ---------------------- | ------------------------------------------------------------------ |
| Up-to-date technology | Your apps use latest information and packages not in training data |
| Best tool selection | Agent researches options to choose optimal packages |
| Current best practices | Access to latest development patterns and security practices |
| Breaking limitations | Overcome knowledge cutoffs to use packages released after training |
| Accurate data | Your apps display current information instead of outdated examples |
| Professional results | Applications that reference real companies appear credible |
| Time-saving | Avoid manually researching packages and gathering data |
### Source citations
When Agent uses Web Search, it provides **source citations** that show exactly where the information came from. Use these citations to:
* **Verify information**: Check the reliability and accuracy of sources
* **Learn more**: Visit the original sources for more context
* **Reference sources**: Include proper attribution in your applications
* **Track research**: Understand what information informed Agent's work
### Content fetching
Agent can fetch detailed content from specific websites to gather comprehensive information for your project. This allows Agent to:
* Read entire web pages to extract relevant details
* Process documentation and reference materials
* Gather specific data points from authoritative sources
* Integrate structured information into your application
### Examples of Web Search in action
**Package discovery for image processing**
Build a React app that lets people apply filters to photos. Research the best image processing libraries for React and implement blur, sharpen, and vintage effects
Agent searches for current image processing libraries, compares their features and performance, then builds the app using the most suitable tools.
Web Search works best with specific, detailed requests. For technology discovery, mention your specific requirements
**Latest framework features**
Do research to understand the latest security best practices for authentication and authorization. Implement those best practices in my app.
Agent researches the latest security best practices for authentication and authorization and implements them in your app.
**Modern API integration**
Build a weather app that uses the most reliable and feature-rich weather API available
Agent researches current weather APIs, compares their features, reliability, and pricing to select the best option for your needs.
**Startup showcase website**
Build a website showcasing the latest Y Combinator batch startups
Agent searches for current YC batch information and creates a site with real startup data, logos, and descriptions.
**Personal portfolio site**
Create a personal website for Michele Catasta, a former researcher at Stanford and President of Replit.
Agent searches for professional information and creates an authentic portfolio with relevant experience and background.
**Travel planning app**
Build a trip planner for Japan with current prices and recommendations
Agent finds up-to-date travel costs, attractions, and planning information to create a realistic travel application.
**Financial comparison dashboard**
Create a dashboard comparing the latest quarterly earnings of major cloud providers
Agent searches for recent financial reports and builds a dashboard with current, accurate data visualizations.
Always verify information from Web Search results, especially for critical applications. While Agent searches reputable sources, confirm important details for production applications.
## Next steps
Combine Web Search with other Agent features for maximum impact:
* Learn about [Agent](/features/agent/overview) capabilities for building apps
* Explore [Replit AI tools](/build/welcome) for more development features
# Animated Videos
Source: https://docs.replit.com/features/artifact-types/animated-videos
Learn how to create animated videos with Agent — describe what you want in everyday language and export polished motion graphics.
Create professional animated videos with Replit Agent. Describe the video you want in everyday language, and Agent generates motion graphics you can export and share — no video editing skills or expensive agencies required.
## Overview
Replit Animation lets you create polished motion graphics entirely through conversation with Agent. These are programmatic animations built with React — Remotion is not used; instead, Animated Videos rely on a combination of website animation libraries and custom Agent skills. This is not AI-generated video like Runway or Sora. Your videos can include text overlays, smooth transitions, AI-generated images, and more.
Videos auto-play in a loop in the Preview pane, and you can iterate on them by chatting with Agent, just like building any other app.
**Available to all builders**, including the free tier.
## Creating an animated video
You can start creating an animated video in two ways from the Replit homepage:
### Option 1: Type a prompt
Select the **App** tab on the homepage and type a prompt that describes the video you want. Agent will automatically detect video-related prompts and select the Animated Video stack.
Example prompts:
* "Make a promo video for my new sparkling water brand"
* "Create a 30-second explainer video for how large language models work"
* "Make a cinematic promotional video for the city of Austin, Texas"
### Option 2: Select from the dropdown
1. Go to the **App** tab on the homepage.
2. Open the app type dropdown.
3. Select **Animation**.
4. Type a description of the video you want to create.
Once Agent starts building, it generates the animation and displays it in the preview pane. You can watch the video auto-play in a loop and continue chatting to make changes.
## Iterating on your video
After Agent generates the first version, you can refine it through conversation. A few approaches that work well:
* **Use the Enhance Prompt button** in the chat input, which is tuned specifically for video prompts.
* **Ask for improvements** — saying something like "make it better" or "add more complex animations within the scenes, be more creative" after reviewing the first version tends to produce strong results.
* **Be specific** about what you want changed — for example, "make the transitions smoother," "change the color scheme to dark blue and gold," or "add a logo reveal at the end."
If you submit a few different prompts, you'll likely be happy with at least one of the results.
## Exporting your video
When your video looks good, you can export it as an MP4 file.
1. Locate the **Export** button in the top right of the Preview pane.
2. Select your preferred quality settings:
* **Resolution**: 720p or 1080p
* **Frame rate**: 30fps or 60fps
3. Select **Export**. Rendering may take a few minutes depending on the complexity of the video.
4. Once rendering is complete, the MP4 file downloads automatically.
You can also select **Publish** to share a link to the video.
**Export times**: Longer or more complex videos may take several minutes to render. The export runs server-side, so you can continue working while it processes.
## Use cases
Animated Videos work well for a range of creative and professional needs:
* **Product launch videos** — announce a new app, feature, or product release with a polished promo.
* **Brand and cinematic videos** — create visually rich videos for companies, cities, universities, or events.
* **Explainer videos** — break down how a product, feature, or concept works in 30–60 seconds.
* **Social media content** — make scroll-stopping motion graphics for Twitter/X, LinkedIn, Instagram, or TikTok.
* **Landing page videos** — add animated hero sections or background videos to your website.
* **Fundraising and investor updates** — create professional announcement videos for milestones.
## Video specifications
| Property | Details |
| ---------------- | ------------------------------------------------------------------------------------------------------ |
| **Format** | MP4 |
| **Resolution** | 720p or 1080p |
| **Frame rate** | 30fps or 60fps |
| **Aspect ratio** | 16:9 (default) |
| **Rendering** | Server-side; animation libraries (typically used for websites) plus custom Agent skills — not Remotion |
| **Playback** | Auto-play loop in preview pane |
## Common questions
* **Can I pause or play the video?** The Preview does not include built-in pause/play controls. Videos always auto-play in a loop. If you want pause/play (or scene selection) in your video, you can ask Agent to add them — though adding these controls can sometimes degrade design quality, so you may prefer to keep the default loop.
* **Is there scene selection?** There is no built-in scene selector in the preview. You can ask Agent to add scene selection or other controls if you want; the same tradeoff applies as above.
## Limitations
Animated Videos is a new feature and has some current limitations to be aware of:
* **Programmatic animation only**: Videos are React-based motion graphics. This is not AI-generated video (like Runway or Sora) — though it can generate videos and use those in the code.
* **Rendering time**: Complex animations may take several minutes to export. Simpler videos render faster.
* **Iteration may be needed**: While many prompts produce great results in one shot, you may need to iterate through 2–3 versions to get the exact result you want. Using the Enhance Prompt button for the initial prompt and giving feedback after the first checkpoint helps.
## Next steps
* **Try example prompts**: Start with one of the demo prompts above to see what Animated Videos can do.
* **Use Enhance Prompt**: The Enhance Prompt button in chat is tuned for video prompts and tends to improve results.
* **Publish or download**: Export your finished video as MP4, or publish it to share a link.
* **Explore other app types**: Learn about [building apps with Agent](/features/agent/overview) or creating visual designs with [Canvas](/design/canvas).
# Native Mobile Apps
Source: https://docs.replit.com/features/artifact-types/building-mobile-apps
Learn how to build a native mobile app with Agent, test it on your phone, and submit to App Review for App Store publishing.
Build iOS and Android apps with Agent, preview them on your phone, and prepare builds through a guided flow.
To build or preview a native iOS app, use the Project Editor at [replit.com](https://replit.com). Native mobile app work is also available in the Replit Android app where supported.
## Getting started
You can get to a working mobile app in a few steps:
On the Replit home screen, describe your app idea and select **Mobile app** as the app type.
You have two ways to preview a mobile app while you build:
* **In the Project Editor**: In the Preview panel's device selector, choose **iOS Simulator** or **Android Emulator**. A real simulator streams into the Project Editor so you can tap around without leaving Replit. No Xcode or Android Studio required.
* **On a real phone with Expo Go**: Install [Expo Go](https://expo.dev/go) on your iPhone or Android device. In the Project Editor, select **Open in Expo Go** in the Preview panel and scan the QR code.
Ask Agent to add features, connect data sources, or integrate services. Keep testing in the simulator or on your phone as you iterate.
The Project Editor's **iOS Simulator** and **Android Emulator** show the native version of your app, including platform-specific styling and most native components. For features that rely on real hardware — haptics, the camera, push notifications, or location — test on a real phone with Expo Go.
## Preview on a simulator or emulator
Replit allows you to run and test your mobile apps on your phone using Expo. Alternatively, Replit streams a real **iOS Simulator** or **Android Emulator** right into the Preview panel. Changes you make with Agent hot-reload in the simulator, just as they do on a real device.
iOS Simulator and Android Emulator previews are available to builders on Core, Pro, and Enterprise plans. Mobile apps only — the option is hidden for web-only projects.
### How to open a simulator
Open a project that has a mobile artifact.
In the Preview panel's device selector at the top, choose **iOS Simulator** or **Android Emulator**. The simulator boots in place of the web preview.
Tap, swipe, type, and navigate using your mouse and keyboard. Select **Restart** in the toolbar to reload the app without restarting the simulator.
The simulator runs in the cloud and streams to your browser, so there's nothing to download and nothing to set up. Your project's files stay on Replit.
### Browser support
* **Chrome**, **Safari**, and Chromium-based browsers are fully supported.
* **Firefox** is not supported. The iOS and Android options appear disabled with a "Firefox not supported" note when you open Replit in Firefox. This is a limitation of the streaming technology that powers the simulator.
### When to use Expo Go instead
Use Expo Go on a real phone when you need to test features that rely on real hardware or when you want to share a preview with someone who isn't at your computer:
* Camera, microphone, haptics, or other native sensors
* Push notifications
* Real-world GPS location
* Sharing a development preview with a teammate, tester, or investor
To open your app in Expo Go, open the project on [replit.com](https://replit.com), select **Open in Expo Go** in the Project Editor's Preview panel, and scan the QR code with the [Expo Go](https://expo.dev/go) app on your phone.
### Fullscreen simulator
From a mobile artifact card, select **More actions** → **Open in iOS Simulator** or **Open in Android Emulator** to open the simulator in its own tab for a larger viewport.
## Why build a mobile app?
Build a mobile app when you want:
* **A native experience**: Fast performance, smooth interactions, and platform-native UI.
* **Device capabilities**: Camera, push notifications, location, and more.
* **App Store distribution**: A shareable listing that people can discover and install after Apple's App Review process.
## Key features
* **AI-first creation**: Describe your app, and Agent scaffolds a working mobile app.
* **Project Editor preview**: Test on an iOS Simulator or Android Emulator without leaving Replit, or preview on your phone with Expo Go.
* **Full-stack by default**: Add server routes, a Database, App Storage, Connectors, and AI integrations as your app grows.
* **Guided submission**: Prepare builds for TestFlight and App Store submission without managing local iOS toolchains.
## Development workflow
There are three stages for accessing your app, each with different audiences and capabilities:
| Stage | Who can access | How to access | Best for |
| --------------- | -------------------- | ------------------------------------------------ | -------------------------------------------- |
| **Development** | You | Project Editor simulator, or QR code for Expo Go | Building and iterating |
| **Deploy** | Testers with Expo Go | Public URL with QR code | Development previews, prototyping, and demos |
| **App Store** | Anyone | Download from App Store after App Review | Production release |
**Development**: When you start your app, you can preview it in the Project Editor's **iOS Simulator** or **Android Emulator**, or scan a QR code from the Preview panel to open it in Expo Go on your phone.
**Deploy**: When you click **Publish**, Replit creates a public URL with a QR code for Expo Go. This is ideal for development previews and prototyping—show investors, gather feedback, or test with friends before committing to the App Store process.
**App Store**: When you submit to the App Store, Apple reviews your app. After approval, people can download and install it from the App Store. This requires an Apple Developer account.
## Publishing overview
When you prepare an iOS release, the flow typically goes:
* Publish from the Project Editor
* Submit a build to TestFlight
* Promote a TestFlight build to the App Store in App Store Connect
To submit builds to TestFlight and the App Store, Apple requires an Apple Developer Program membership.
For a complete walkthrough, see the [Build and launch a mobile app](/build/mobile-app) tutorial.
## Where to build native mobile apps
Your Replit environment runs in the cloud, not on your local machine. To build a native mobile app, use the Project Editor at [replit.com](https://replit.com). The mobile app workflow—Agent scaffolding, Expo Go previews, simulator and emulator testing, TestFlight builds, and App Store submission—runs in the Project Editor.
Native mobile app work is also available in the [Replit Android app](/features/platforms/mobile-app) where supported. If you're using the Replit iOS app, open the project on [replit.com](https://replit.com) to create, preview, build, or submit native mobile apps.
## How the technology works
Your mobile app is built with a stack of technologies that work together. This section explains what powers your app and how the pieces fit together.
### The technology stack
* **React Native** is an open-source framework that lets you write one codebase and compile it to iOS, Android, and web. It renders platform-native UI components, not a webview.
* **Expo** simplifies React Native development by handling builds, managing native modules, and providing tools like Expo Go for previews.
* **Expo Go** is a free app you install on your phone. It runs your development preview so you can test on a real device without building a full native binary.
When you run your app, the Metro bundler compiles your code and pushes it to your device. The first build takes longer because there's no cache. Subsequent builds are faster.
### Architecture: server and client
When you prepare a mobile app for preview or distribution, you're working with two things:
1. **A server** that runs on Replit in the cloud. This handles your database, API routes, AI integrations, and backend logic.
2. **A client app** that runs on a person's phone. This is the native app previewed in Expo Go during development or distributed through app stores after review.
This separation gives you flexibility. You can run complex logic on the server (where you have access to Replit's Database, Object Storage, and Connectors) and keep the client lightweight. As you build, think about what should happen on the phone versus what should happen in the cloud.
## Considerations
* **Publishing requirements**: Apple sets the requirements for TestFlight and the App Store, and Apple reviews iOS apps before distribution.
* **Android publishing**: You can build cross-platform apps for iOS and Android. Publishing to Google Play is not supported through a guided experience yet, but can be accomplished manually.
* **Native changes**: Changes like app icons or permissions usually require a new store build.
## Troubleshooting
If you run into issues while developing your mobile app, see [Mobile app troubleshooting](/features/troubleshooting/mobile-app) for common problems and solutions.
## Next steps
* Learn how Agent works: [Agent](/features/agent/overview)
* Explore integrations: [Integrations](/features/integrations/overview)
* Use Replit on mobile: [Replit Mobile App](/features/platforms/mobile-app)
* Read more about Expo: [Expo](https://expo.dev/)
* Manage TestFlight and submissions: [App Store Connect](https://appstoreconnect.apple.com/)
## FAQs
Expo is what Agent uses to build your mobile app on Replit. It is an open-source platform and toolchain for building, running, and deploying cross-platform native apps with React Native. Learn more at [https://expo.dev](https://expo.dev).
React Native is an open-source framework from Meta for building native iOS and Android apps using React and JavaScript or TypeScript. It renders platform-native UI components (not a webview), so your app looks and feels native.
Expo Go is a free app you install on your phone from the App Store or Google Play. It lets you preview your mobile app during development without building a full native binary. When you scan the QR code in the Project Editor, Expo Go downloads and runs your app code.
**Expo Go** is a pre-built app that runs your code. It's fast to set up but only supports modules included in the Expo SDK.
**Dev builds** are custom native binaries that can include any native module. They require more setup (EAS Build or local Xcode/Android Studio) but offer more flexibility.
Replit uses Expo Go for development previews. If you need native modules not supported in Expo Go, you may need to explore dev builds through [Expo's documentation](https://docs.expo.dev/develop/development-builds/introduction/).
A mobile-responsive web app is a website that adapts its layout in the browser. A React Native app is a native application installed on the device that uses platform APIs (camera, haptics, push notifications), offers better access to hardware and offline capabilities, and is distributed via app stores. Responsive web can be great for reach and zero-install; native is best when you need device features, performance, or App Store distribution.
No. Replit and Expo manage the build process for you in the cloud.
Yes. You can preview in the Project Editor's iOS Simulator or with Expo Go on your phone. You only need an Apple Developer account when you're ready to submit to TestFlight or the App Store.
Yes. You can build cross-platform apps for iOS and Android from the same codebase. Preview on an Android Emulator in the Project Editor or on an Android device with Expo Go. Publishing to Google Play can be done manually.
Use Replit's built-in PostgreSQL, Object Storage, Connectors, and AI integrations—no separate infrastructure required. Your server runs on Replit and your mobile app connects to it.
Use both at different times. The **iOS Simulator** and **Android Emulator** in the Project Editor show the native version of your app and cover most day-to-day testing — layout, navigation, native components, and platform styling. Switch to a real phone with **Expo Go** when you need to test features that depend on real hardware, like the camera, haptics, push notifications, or GPS location.
# Data Visualization
Source: https://docs.replit.com/features/artifact-types/data-apps
Build interactive dashboards, reporting tools, and data exploration interfaces through conversation with Agent.
## What is a data visualization?
A data visualization is an interactive dashboard or reporting tool you build through conversation with Agent. Describe what you want to visualize and where your data lives—Agent selects appropriate KPIs, chart types, and layouts automatically, generating a comprehensive dashboard in a single prompt.
Key concepts:
* **One-shot generation**: Describe your goal and data source, and Agent builds a complete dashboard with appropriate charts and metrics
* **Connected data sources**: Pull from databases, [warehouse connectors](/connectors/warehouses/overview), external APIs, or uploaded files
* **Built-in features**: Every dashboard includes refresh, auto-refresh, export to PDF, export charts to CSV, and light/dark mode
* **Analysis summary**: Agent generates insights based on your request and the resulting data
* **Multiple artifacts**: Data visualizations can share the same backend and database as your other artifacts in the [same project](/features/projects-and-artifacts/artifacts#multiple-artifacts-in-one-project)
## How to use Data Visualization
### Creating from a prompt
Select the **App** tab on the homepage and describe the dashboard you want. Agent detects data-related prompts and selects the Data Visualization stack.
**Example prompts:**
* "Build a sales analytics dashboard that tracks revenue by region"
* "Create a reporting tool that visualizes our monthly metrics"
* "Build a dashboard from our BigQuery sales data showing top-performing products"
* "Connect to Snowflake and create a customer churn analysis dashboard"
### Creating from the dropdown
1. Go to the **App** tab on the homepage.
2. Open the app type dropdown.
3. Select **Data Visualization**.
4. Describe the dashboard or data tool you want to build.
### Connecting to data warehouses
Connect your data visualization to BigQuery, Databricks, or Snowflake through [warehouse connectors](/connectors/warehouses/overview) to build dashboards on top of your existing datasets.
When you query warehouse data, Agent uses parallel multi-agent search to explore your schema and datasets. This speeds up exploration and helps Agent select the right tables and fields for your dashboard.
To get started, set up a warehouse connector in your project's [Integrations](/features/integrations/overview), then tell Agent what you want to visualize.
### Adding filters and features
After Agent builds your dashboard, you can prompt it to add filters, drill-downs, or other interactive features. For example, ask Agent to add a date range filter, a region selector, or a search bar.
### Exporting and sharing
* **Export to PDF**: Export your entire dashboard as a PDF for sharing or offline review.
* **Export charts to CSV**: Download individual chart data as CSV files for further analysis in spreadsheets or other tools.
* **Analysis document**: Ask Agent to produce a detailed analysis document based on your dashboard's data.
## What you can build
* **Analytics dashboards**: Track key metrics like revenue, signups, or engagement across time periods
* **Reporting tools**: Build internal reports that stakeholders can filter and explore without direct database access
* **Data exploration interfaces**: Browse and query datasets with visual feedback
* **Monitoring panels**: Display real-time or near-real-time data from APIs, databases, or external services
## Frequently asked questions
You can pull data from your project's Replit Database, warehouse connectors (BigQuery, Databricks, Snowflake), external APIs, or uploaded files like CSVs. Set up warehouse connections through [Integrations](/features/integrations/overview).
Yes. You can customize colors, layouts, and typography through conversation—ask Agent to match your brand or adjust the design. Dashboards also support light and dark mode.
After building a dashboard, Agent generates an analysis summary based on your request and the resulting data. You can also ask for a more detailed analysis document.
Yes. You can combine a data visualization with a [web app](/features/artifact-types/web-apps), [slide deck](/features/artifact-types/slide-decks), or other artifact types in the [same project](/features/projects-and-artifacts/artifacts#multiple-artifacts-in-one-project). They share the same backend and database.
## Availability
Data Visualization requires a paid Replit plan.
| Capability | Core | Pro |
| ------------------------------ | ---- | --- |
| Data visualization creation | ✅ | ✅ |
| Interactive filters and charts | ✅ | ✅ |
| Export to PDF and CSV | ✅ | ✅ |
| Warehouse connectors | ✅ | ✅ |
| Refresh and auto-refresh | ✅ | ✅ |
| Light and dark mode | ✅ | ✅ |
# Slide Decks
Source: https://docs.replit.com/features/artifact-types/slide-decks
Learn how to create and refine slide decks through conversation with Agent — pitch decks, presentations, and more.
## What are Slide Decks?
Slide Decks let you create polished, professional presentations entirely through conversation with Agent. Describe what you want and get a complete, beautiful deck instantly — then iterate by chatting, editing visually, or exploring variations on the [Design Canvas](/design/canvas).
Under the hood, slides are built with React, which means they export to pixel-perfect, fully editable PPTX, Google Slides, or PDF files. You can also publish your deck as a live, shareable URL.
Key concepts:
* **One-shot generation**: Describe your presentation and Agent creates a complete deck — layouts, text, and visuals included
* **React-based**: Slides are real React components, not static images, so they export cleanly to any format
* **Export anywhere**: Download as PPTX, Google Slides, or PDF — pixel-perfect and fully editable
* **Deployable**: Publish your deck as a live URL that anyone can view or present from their browser
## How to use Slide Decks
### Creating a slide deck
There are two ways to create a slide deck from the Replit homepage:
* **Type a prompt**: Describe the presentation you want. Agent detects presentation-related prompts and selects the Slide deck stack automatically.
* **Select from the dropdown**: Open the app type dropdown, select **Slides**, then describe your presentation.
**Example prompts:**
* "Create a pitch deck for my AI-powered fitness app"
* "Make a 10-slide investor presentation for a Series A raise"
* "Build a product overview deck for our team offsite"
Specify the length and visual style up front and Agent builds the deck right away, with no clarifying questions. For example, try "make an 8-slide minimal deck on remote work."
### Starting with brand guidelines or a reference
You can give Agent a head start:
* **Brand guidelines**: Upload your brand guidelines so Agent matches your colors, fonts, and visual style across every slide.
* **Reference file**: Upload an existing presentation or document as a starting point. Agent uses it as a foundation and builds from there.
### Iterating on your slides
After Agent generates the first version, refine it through conversation:
* **Adjust content**: "Make the problem slide more concise" or "Add a competitive landscape slide after the market size section."
* **Change styling**: "Use a dark theme with blue accents" or "Make the fonts larger and more minimal."
* **Add or remove slides**: "Add two more slides about our roadmap" or "Remove the last slide."
* **Add visuals**: "Add a chart showing projected growth" or "Include icons for each feature on slide 4."
* **Reorder or restructure**: "Move the team slide to the end" or "Split the features slide into two slides."
Slides auto-render in the preview pane as you iterate, so you can see changes immediately.
### Editing slides directly
You can make hands-on edits without going through chat:
* **[Visual Editor](/design/visual-editor)**: Click on any element to adjust text, colors, spacing, and layout directly — no AI credits consumed.
* **Duplicate or delete**: Right-click any slide to duplicate or delete it.
Drag and drop for elements within a slide is not yet supported. To move or rearrange elements, ask Agent in chat.
### Using Design Canvas for variations
You can use the [Design Canvas](/design/canvas) to explore alternative designs for individual slides or sections, then bring your preferred version back to the main deck. This is useful when you want to compare multiple visual directions before committing.
### Presenting and publishing
When your deck is ready:
* **Presenter mode**: Enter full-screen presentation mode to present directly from the preview pane. This is the same view your audience sees when you publish.
* **Mobile support**: Slides work on mobile devices, so your audience can view them from any screen.
* **Publish**: Publish your slide deck as a live, shareable URL. Anyone with the link can view or present the deck in their browser.
### Exporting
Download your slides for use outside of Replit:
* **PowerPoint**: Open and edit your `.pptx` file in PowerPoint or Keynote. Backgrounds, text, and graphics carry over reliably.
* **Google Slides**: Open your deck directly in Google Slides. After the export finishes, select **Go to Google Slides** to open it in one step.
* **PDF**: Share a static, print-ready version. Photo-heavy decks export at a small file size, so you can email them without trouble.
All exports are pixel-perfect and fully editable, so your slides look the same outside Replit as they do inside it. Exports also run up to 10 times faster than before.
You can also bring existing presentations in. Import a `.pptx` file and its backgrounds, text, and graphics come through reliably.
### Finding your slide decks
Your slide decks appear in your Projects list alongside your other apps. Open the **Build type** dropdown on the Projects page and select **Slides** to list only the projects that contain a slide deck artifact.
## What you can build
* **Pitch decks**: Create investor-ready presentations with clear narratives and professional design.
* **Product overviews**: Build decks that introduce your product's features, architecture, or roadmap.
* **Team presentations**: Prepare slides for standups, offsites, or all-hands meetings.
* **Sales decks**: Design client-facing presentations with tailored messaging and visuals.
* **Educational content**: Create lecture slides, workshop materials, or training decks.
## Frequently asked questions
Not yet. To move or rearrange elements within a slide, ask Agent in chat. You can use the Visual Editor to edit text, colors, and spacing directly.
You can export to PPTX, Google Slides, or PDF. All exports are pixel-perfect and fully editable.
Yes. Upload your brand guidelines when creating a deck and Agent matches your colors, fonts, and visual style across every slide.
Yes. Slides render on mobile devices, so your audience can view published or shared decks from any screen.
Yes. Publish your deck and it becomes a live, shareable URL that anyone can view or present from their browser.
## Availability
Slide Decks are available on all plans for both Core and Pro builders.
# Web Apps
Source: https://docs.replit.com/features/artifact-types/web-apps
Learn how to build full-stack web applications with Agent — responsive by default, instantly deployable, and shareable.
Web apps are the default output type on Replit. When you describe an idea to Agent, it builds a full-stack web application unless you specify a different artifact type.
## Getting started
There are two ways to create a web app:
* **Type a prompt**: Describe what you want to build on the Replit homepage. Agent automatically creates a web app.
* **Select from the dropdown**: Open the app type dropdown on the homepage and choose **Web app**, then describe your idea.
## Key features
* **Full-stack by default**: Every web app includes a frontend and backend. Agent sets up API routes, a database, and server-side logic as your app needs them.
* **Responsive design**: Apps adapt to different screen sizes automatically.
* **Instant publish**: Publish your app with one click. Replit handles hosting, SSL, and infrastructure.
* **Shared infrastructure**: If your project has multiple artifacts — like a mobile app or data dashboard — they all share the same backend, database, and services.
## Use cases
* **SaaS products**: Build customer-facing tools, dashboards, and platforms.
* **Internal tools**: Create admin panels, CRMs, or workflow apps for your team.
* **Landing pages**: Launch marketing sites with forms, animations, and dynamic content.
* **Marketplaces and directories**: Build listing sites, job boards, or community platforms.
## Next steps
* Add a [mobile app](/features/artifact-types/building-mobile-apps) or [data visualization](/features/artifact-types/data-apps) to the [same project](/features/projects-and-artifacts/artifacts#multiple-artifacts-in-one-project)
* Customize your app's look with the [Visual Editor](/design/visual-editor)
* Connect external services through [Integrations](/features/integrations/overview)
# Replit Auth
Source: https://docs.replit.com/features/auth-and-identity/authentication
Learn how to add user authentication to your app with Replit Auth — users sign in with their Replit accounts, with zero setup required.
Replit Auth lets you create personalized user experiences in your app. With user accounts, you can save user preferences, create custom dashboards, build social features, control access to premium content, and track user activity — all the features that make apps engaging and valuable.
Replit Auth uses Replit's own login system — when someone signs in to your app, they are creating or using an existing **Replit account**. The login page is Replit-branded, and the sign-in flow is the same one used across replit.com.
**Replit Auth vs. Clerk Auth** — Replit offers two authentication options. **Replit Auth** (this page) uses Replit's own login system, so your app's users sign in with Replit accounts and see Replit-branded login pages. **[Clerk Auth](/features/auth-and-identity/clerk-auth)** gives your app its own dedicated authentication tenant powered by Clerk, with fully customizable branding and user accounts that are independent of Replit. Choose Clerk Auth if you need your own brand on the login experience or want user accounts that are not tied to Replit.
Instead of spending months building authentication from scratch, Replit Auth gives you enterprise-grade capabilities with a single Agent prompt. Powered by the same infrastructure as Fortune 500 companies — Firebase, Google Cloud Identity Platform, reCAPTCHA, Stytch, and Clearout — you get professional-level security, fraud prevention, and global scale built in.
## Why use Replit Auth
Authentication is a challenging problem that entire companies dedicate themselves to solving. Your app's primary purpose likely isn't authentication — it's whatever unique idea or solution you're building.
Replit Auth offers:
* **Zero setup** — Add authentication with a single prompt in Agent
* **Replit account integration** — Users sign in with their existing Replit accounts, so there is no separate account creation step
* **Built-in security** — Uses Replit's infrastructure with protections against common attacks
* **User management** — Simplified user administration through the Auth pane
* **Database integration** — Automatic user entries in your database
* **Customizable login page** — Personalize the login experience for your app (with Replit branding)
* **Password reset** — Replit sends password reset emails for you, so you don't need to set up your own email delivery provider
* **Referral program** — Users who sign up via Replit Auth are added to your pending Replit Referrals
* **Development and Published Apps** — Replit Auth works seamlessly across development (replit.dev), and published apps (replit.app, and custom domains)
## Enterprise-grade infrastructure
Replit Auth is more than simple user management—it's a fully managed authentication solution built on enterprise-grade infrastructure. This powerful combination gives your app the same authentication capabilities used by Fortune 500 companies:
* **Firebase & Google Cloud Identity Platform** - Enterprise-tier SLA with Google's battle-tested authentication infrastructure
* **Advanced security scanning** - Automatic protection against bots and malicious actors with reCAPTCHA integration
* **Fraud prevention** - Email verification and validation powered by Clearout to prevent fake accounts
* **Multi-factor authentication** - Secure login options backed by Stytch's enterprise authentication platform
* **Global scale** - Built to handle millions of users with automatic scaling and reliability
This enterprise foundation means you can focus on building your app's unique features while knowing your authentication is powered by the same infrastructure that secures billion-dollar companies. Instead of spending months integrating multiple services, you get all these capabilities with a single Agent prompt.
## Getting started with Replit Auth
The only way to implement Replit Auth is by using Agent. Simply include a request for Replit Auth in your prompt:
```
Help me create an app that [your app idea] and should feature Replit Auth.
```
Agent will set up all the necessary code and configurations for authentication. Manual implementation is not supported, as Agent handles all the complexity for you.
To learn more about Agent capabilities, see the [Replit Agent documentation](/features/agent/overview) and [Agent integrations](/features/integrations/overview).
For tips on writing effective prompts, check out [Effective prompting with Replit](/learn/effective-prompting).
## Managing users
Replit Auth provides a built-in user management interface accessible through the Auth pane in the Project Editor.
From this interface, you can:
* View all authenticated users
* Ban users from your application
* View user details
* Track user activity
## Customizing the login page
You can customize the login page to match your app's branding:
1. Navigate to the Auth pane in the Project Editor
2. Click on **Configure**
3. Customize the following elements:
* App name
* App icon
* Login methods (Google, GitHub, X, Apple, Email)
Your changes will immediately appear on your app's login page.
## Connecting user data with your database
Replit Auth automatically creates user entries in your database. This makes it easy to store user-specific data. Agent will guide you on properly connecting user data with your database.
For more information on databases, see the [Replit Database documentation](/features/data-and-storage/sql-database).
## Security considerations
Replit Auth leverages Replit's infrastructure, providing built-in protections against common security threats. However, you should still follow these best practices:
* Always validate user authentication server-side before performing sensitive operations
* Never store sensitive information like passwords in your code
* Use environment variables for any API keys or secrets
* Implement proper access controls for user data
For more information on security, check out:
* [Replit's built-in security features](/features/security/overview)
* [Security checklist for vibe coding](/learn/security-checklist)
* [Secrets management](/core-concepts/project-editor/app-setup/secrets)
## Referrals
To encourage applications that teach people about Replit, any user that signs up via Replit Auth will automatically be added to your pending Replit Referrals. If they later upgrade to Replit Core, you will receive any referral bonus you are entitled to according to the current terms of the referral program.
## Troubleshooting
### Common issues
1. **User not recognized after login**
* If you're experiencing issues, ask [Replit Agent](/features/agent/overview) for help debugging your authentication implementation.
2. **Custom icon not displaying**
* Make sure the icon URL is accessible and in a supported format (PNG or JPG).
3. **Newly linked custom domain isn't working**
* Republish to refresh the domain list (REPLIT\_DOMAINS environment variable).
## Additional resources
* [Replit Database documentation](/features/data-and-storage/sql-database)
* [Replit Agent](/features/agent/overview)
# Clerk Auth
Source: https://docs.replit.com/features/auth-and-identity/clerk-auth
Learn how Clerk Auth gives your Replit app its own dedicated authentication system with customizable branding, independent user accounts, and SSO providers.
Clerk Auth gives your app its own dedicated authentication system powered by [Clerk](https://clerk.com). Unlike [Replit Auth](/features/auth-and-identity/authentication), which uses Replit's login system and creates Replit accounts, Clerk Auth provisions a **separate Clerk tenant** for your app. Your app's users create accounts directly within your app — not Replit accounts — and you get full control over branding, login methods, and the sign-in experience.
**Clerk Auth vs. Replit Auth** — With **Clerk Auth** (this page), your app gets its own authentication tenant with fully customizable branding and user accounts independent of Replit. With **[Replit Auth](/features/auth-and-identity/authentication)**, users sign in with Replit accounts and see Replit-branded login pages. Choose Clerk Auth when you want your own brand on the login experience or need user accounts separate from Replit.
## Clerk Auth vs. Replit Auth at a glance
| | Clerk Auth | Replit Auth |
| ------------------- | ---------------------------------------------------------------- | ----------------------------------------------------- |
| **User accounts** | Users create accounts within your app (no Replit account needed) | Users sign in with a Replit account |
| **Branding** | Fully customizable — your app name, icon, and colors | Replit-branded login page |
| **SSO credentials** | Bring your own OAuth credentials per provider | Uses Replit's shared OAuth apps |
| **Environments** | Separate Development and Production environments | Single environment |
| **Referrals** | No Replit referral integration | Sign-ups count toward Replit Referrals |
| **Best for** | Custom-branded apps, professional/commercial products | Quick setup, apps where Replit branding is acceptable |
## Getting started
To add Clerk Auth to your app, include it in your Agent prompt:
```
Help me create an app that [your app idea] and should feature Clerk Auth.
```
Agent handles everything — creating the Clerk tenant, storing credentials, configuring routes, and adding middleware. You don't need a Clerk account or any manual setup.
## How Clerk Auth works with Replit
When Agent sets up Clerk Auth for your app, it:
1. **Creates a dedicated Clerk tenant** — Your app gets its own Clerk application with separate Development and Production environments
2. **Provisions credentials** — API keys and secrets are stored as environment variables
3. **Configures a proxy** — Authentication works seamlessly on your published domain
4. **Sets up sign-in and sign-up routes** — Pre-built Clerk React components are added to your app
5. **Adds server-side middleware** — Your API routes are protected with Clerk's Express middleware
You don't need to create a Clerk account or manage any infrastructure. Everything is managed automatically for you by Replit.
## Capabilities
### What's supported
Clerk Auth provides your app with:
* **Independent user accounts** — Your app's users are not Replit users; they exist only within your app's Clerk tenant
* **Fully branded sign-in pages** — Your app name, logo, colors, fonts, and copy on the sign-in and sign-up pages are configured in your app's code
* **Custom-branded SSO** — Supply your own OAuth credentials per provider so the provider's OAuth consent screen displays your app's name and branding instead of generic defaults
* **Email and password authentication** — Built-in sign-up and sign-in with email verification
* **Social sign-in (SSO)** — Let users sign in with Google, GitHub, Apple, or X (Twitter)
* **User management** — View, search, and moderate users from the Auth pane
* **Session handling** — Secure session tokens managed automatically
* **Development and Production environments** — Test authentication in development before going live
You can manage most Clerk Auth configuration from the **Auth** tool in the Project Editor — no Clerk account required, and no need to touch the Clerk dashboard.
### What's not supported
The following capabilities are not available in Clerk Auth today (compared to the external Clerk app you set up on your own). Check [this FAQ](#how-does-clerk-auth-compare-to-external-clerk) for the full breakdown.
* **Sign-in with phone number** — SMS-based sign-in and verification
* **MFA support** — Multi-factor authentication for end users
* **Full SSO provider coverage** — Only Google, GitHub, Apple, and X are supported today
* **Organization tenants** — Clerk's organization and team-membership features
## Development and Production environments
Every app with Clerk Auth gets two completely separate Clerk environments: a **Development** environment that powers your dev/preview app while you build, and a **Production** environment that powers your published app. These environments are isolated by design — they have separate API keys and separate user stores.
### Separate API keys
Each environment has its own publishable and secret API keys. The keys exposed to your app are switched automatically depending on whether the app is running in development or in production:
* In your workspace, the `CLERK_PUBLISHABLE_KEY` and `CLERK_SECRET_KEY` secrets contain **test keys** (`pk_test...` and `sk_test...`) that point at the Development environment.
* When you publish your app, the published deployment runs with **live keys** (`pk_live...` and `sk_live...`) that point at the Production environment. To verify the prefixes, open **Publishing → Overview → Adjust settings** and inspect `CLERK_PUBLISHABLE_KEY` and `CLERK_SECRET_KEY`.
You don't need to do anything to switch between environments — Replit manages the keys for both Development and Production automatically. Just develop, test, and publish — you're good to go.
Don't replace your test keys with live keys, edit them in the Secrets pane, or hand-configure anything in the Clerk dashboard. Doing so will break the automatic dev/production switch and is not supported with Replit-managed Clerk Auth.
### Separate user stores
Each environment has its own user store. Accounts that sign up in the Development environment do **not** exist in the Production environment, and vice versa:
* A user who signs up while testing in the dev/preview app is created only in the Development store.
* A user who signs up on your published app is created only in the Production store.
* Sessions, user metadata, and any data you key off a Clerk `userId` are likewise scoped to the environment in which the account was created.
This is the expected behavior. To inspect users in each environment, open the **Auth pane** in your Workspace and use the environment toggle on the **Users** tab to switch between Development and Production.
Development is where you experiment and build; Production serves your live app's real users. The two are intentionally isolated, so accounts and data created in Development will not appear in Production.
## Managing users
The **Auth pane** in the Project Editor gives you a complete view of your authenticated users. Because Clerk Auth creates a separate user store for your app, the users listed here are accounts in your app — not Replit accounts.
From the **Users** tab, you can:
* **View all users** with details like email, name, last login, and account creation date
* **Search and filter** to find specific users
* **Ban or unban users** to control access to your app
* **Sort users** by different criteria
* **Switch environments** — Toggle between Development and Production to manage users in each
## Customizing your sign-in page
The visual branding of your sign-in and sign-up pages — the app name, logo, colors, fonts, and copy — is configured in your app's code, not in the Auth pane. To change it, ask Agent:
```
Update my sign-in page to use [your app name] as the title, [describe your logo], and match my site's colors.
```
Under the hood, this is driven by the `appearance` and `localization` props passed to `` and the logo file in your app's `public/` directory. Agent keeps these in sync with the rest of your app's theme.
The app name shown on **Google's, Apple's, GitHub's, or X's own consent screen** (the screen that appears after a user clicks "Sign in with Google", etc.) is separate — it comes from the OAuth app registered with that provider and is **not** changed by editing your sign-in page code. To change it, configure [custom OAuth credentials](#configuring-oauth-credentials-for-an-sso-provider) for that provider.
## Configuring login providers
Clerk Auth supports Google, GitHub, Apple, and X as social sign-in providers. From the **Configure** tab in the Auth pane, you control which providers appear on your sign-in page and — in Production — whether each provider uses Replit-managed OAuth credentials or your own custom credentials for branded sign-in.
Open the **Configure** tab. In the sidebar under **SSO providers**, select **Development** or **Production** — **Development** powers the dev/preview app in the Workspace; **Production** powers your published app. Each environment has its own list in the main panel. From there you can:
* **Enable or disable a provider** — Use the toggle to control whether the provider appears on your sign-in page. Disabled providers are hidden from users.
* **Configure custom OAuth credentials (Production only)** — See [Configuring OAuth credentials for an SSO provider](#configuring-oauth-credentials-for-an-sso-provider) below.
### Configuring OAuth credentials for an SSO provider
By default, providers use **Replit-managed credentials** — sign-in works out of the box, but the OAuth consent screen shows Replit branding. Switch to **Custom credentials** to use your own OAuth client from the provider's developer console so the consent screen displays your app's name and branding.
1. Open the **Auth pane** from the Project Editor. Go to the **Configure** tab, then under **SSO providers** in the sidebar select **Production**.
2. Select the **Edit** icon next to the provider you want to configure. **Replit-managed credentials** are selected by default.
3. Select **Custom credentials**. The panel expands to show the credential fields and a **Provider setup** checklist with the values you need to register on the provider's side.
4. Follow the instructions to finish configuration. The instructions contain links directly to the console and relevant helper docs. You can also find these helper docs under [Additional resources](#additional-resources) for your provider.
5. Fill in all the required credential values.
6. In the provider's developer console, register every entry listed under the **Provider setup** checklist in the provider's developer portal. Use the copy icons to copy each value exactly, and tick items off as you complete them or select **Mark all as done** when finished.
7. Select **Save changes**.
### Rechecking setup after domain changes
Domain-related operations — such as linking a new external domain or [purchasing a domain through Replit](/build/domain-purchasing) — can change your app's redirect callback URLs and JavaScript origins. When that happens, any provider configured with custom credentials may need the new values registered in its developer console.
After a domain change, return to the **Configure** tab. Setup reminders appear as warning icons on the tab, in the sidebar, and next to providers in the **SSO providers** list. A warning icon and **setup steps remaining** next to a provider mean its **Provider setup** checklist has new items to complete.
Open the provider's edit panel, copy the updated values under **Provider setup**, register them in the provider's developer console, and select **Mark all as done**.
## Domain setup for email verification
If your app offers **email and password sign-up**, Clerk sends a verification code to each new user's inbox. Configuring your domain for email delivery ensures those codes arrive from your app's URL instead of being delayed or blocked by spam filters.
### When you need this setup
You only need to configure DNS records when your app links an **external domain managed by another provider** (for example, a domain you registered with Cloudflare, GoDaddy, Namecheap, or similar).
No setup is required if your app is served from:
* A `.replit.app` subdomain
* A domain [purchased through Replit](/build/domain-purchasing)
In both cases, Replit manages the DNS records for you.
### Add DNS records for email sending
To authorize your app to send verification emails from your external domain, add a set of DNS records at your domain provider.
1. In the Project Editor, open **Publishing**.
2. Select **Domains**.
3. Find your linked external domain and select **Manage**.
4. Under **Authentication DNS setup required**, copy the CNAME records Replit displays — these are the records Clerk needs in order to send verification emails from your domain.
5. Sign in to your DNS provider (Cloudflare, GoDaddy, Namecheap, etc.) and add each record exactly as shown.
DNS changes can take up to 48 hours to propagate. Once the records are live, email and password sign-up will deliver verification codes from your domain automatically — no additional action is needed in the Auth pane.
### Troubleshooting
* **Verification emails not arriving** — Confirm every record was added exactly as shown in the Manage panel, including trailing dots where required by your DNS provider. Check the recipient's spam folder.
* **Records still not detected** — Allow time for DNS propagation (up to 48 hours) and re-check the Manage panel for any records still flagged as missing.
## Security best practices
* **Always validate server-side** — Check authentication in your API routes, not just in the UI
* **Use environment variables** — Never hardcode keys or secrets in your code
* **Keep the proxy middleware first** — The Clerk proxy must be mounted before body parsers in your Express app
* **Don't redirect the homepage to sign-in** — Keep your landing page accessible to unauthenticated visitors
## FAQ
### Do I need a Clerk account to use Clerk Auth?
No. The Clerk tenant behind Clerk Auth is created and managed automatically by Replit when Agent sets up your app — you don't need to sign up for Clerk or manage any Clerk infrastructure yourself.
### Can I access the Clerk dashboard for the Replit-managed Clerk instance?
No. The Replit-managed Clerk instance is not exposed through the Clerk dashboard. Manage it from the **Auth** tool in the Project Editor instead — that's where you configure providers, view users, and switch between Development and Production environments.
### My Clerk publishable key starts with `pk_test`. How do I switch to a live key?
You don't need to. The `pk_test...` and `sk_test...` keys you see in the workspace Secrets pane belong to your app's **Development** Clerk environment and are used while you build. When you publish your app, the deployment runs with `pk_live...` and `sk_live...` keys for the Production environment automatically. To verify, open **Publishing → Overview → Adjust settings** in your Workspace and check the `CLERK_PUBLISHABLE_KEY` value for the published app — it will start with `pk_live`. Don't edit these keys manually. See [Development and Production environments](#development-and-production-environments) for the full breakdown.
### Why can't I sign in to my published app with the account I created during development?
Clerk Auth's **Development** and **Production** environments have separate user stores. An account you create on the dev/preview app exists only in the Development environment and is not copied to Production when you publish — you'll need to sign up again on the published app. The same is true for any data you've keyed off a Clerk `userId`. Open the **Auth pane** in your Workspace and use the environment toggle on the **Users** tab to inspect users in each environment. See [Separate user stores](#separate-user-stores) for details.
### Is Clerk Auth free to use?
Clerk Auth is free for now. Usage-based pricing may be introduced later, in line with other usage-based services on Replit. Any future charges will be applied through your existing Replit billing — you won't need a separate Clerk invoice or payment method.
### Does Clerk Auth have an MAU limit like external Clerk plans?
No. Clerk Auth does not impose a monthly active user (MAU) limit, unlike external Clerk plans, which cap MAUs by tier.
### How does Clerk Auth compare to external Clerk?
The Replit-managed Clerk tenant behind Clerk Auth has some nuances compared with Clerk apps you create in your own Clerk account (**external Clerk**). The table below highlights where the two differ today — this reflects the current state of Clerk Auth, and the set of supported features will keep evolving.
| | Clerk Auth | External Clerk |
| ---------------------------------- | ----------------------------------------------------------------------- | ----------------------------- |
| **Setup** | Auto-provisioned by Replit | Set up on your own |
| **Clerk tenant ownership** | Managed by Replit, owned by your app | Owned by your Clerk account |
| **Fee structure** | Currently free (plan to have pay-as-you-go in the future) | Subscription + pay-as-you-go |
| **Billing** | Replit billing (currently free) | Billing on your Clerk account |
| **MAU limit** | Unlimited | Limitation by tiers |
| **Proxy and domain configuration** | Automated for replit.app and purchased domain, manual for linked domain | Manual |
| **SSO providers** | Supported on certain providers: Google, Apple, GitHub, X | Supports more providers |
| **User management surface** | Auth tool in the Project Editor | Clerk app dashboard |
| **SMS** | Not supported | Supported |
| **MFA** | Not supported | Supported |
| **Org Tenants** | Not supported | Supported |
### What common Clerk Auth setup do I need to handle manually?
Most Clerk Auth setup is automated, but a few configurations require you to take action outside the **Auth** tool:
* **Custom OAuth credentials for SSO providers** — If you want the provider's consent screen to display your app's name and branding (instead of Replit's defaults), register an OAuth app in the provider's developer console and paste the credentials back into the Auth pane. See [Configuring OAuth credentials for an SSO provider](#configuring-oauth-credentials-for-an-sso-provider).
* **DNS records for email verification on external domains** — If your app links an external domain managed by another provider, you'll need to add DNS records so verification emails deliver from your domain. See [Domain setup for email verification](#domain-setup-for-email-verification).
### Can I bring my own Clerk app instead of using the Replit-managed one?
Yes. If your app already has a Replit-managed Clerk app provisioned, delete it first before wiring up your own external Clerk app:
1. Open the **Auth** pane in the Project Editor.
2. Go to the **Configure** tab.
3. Scroll to the bottom of the page and click **Delete Clerk app**.
Deleting the Clerk app removes the Replit-managed Clerk tenant and releases any domains attached to it, so you can then wire up your own Clerk app and reuse those domains. If your app doesn't have a Replit-managed Clerk app yet, you can skip this step and integrate your external Clerk app directly.
## Additional resources
* [Migrate from Replit Auth to Clerk](/features/auth-and-identity/clerk-auth-migration) — Use Agent to move an existing Replit Auth app onto Clerk Auth
* [Configure Google SSO](/features/auth-and-identity/sign-in-providers#google) — Set up custom Google OAuth credentials
* [Configure GitHub SSO](/features/auth-and-identity/sign-in-providers#github) — Set up custom GitHub OAuth credentials
* [Configure Apple SSO](/features/auth-and-identity/sign-in-providers#apple) — Set up custom Apple Sign In credentials
* [Configure X (Twitter) SSO](/features/auth-and-identity/sign-in-providers#x-twitter) — Set up custom X OAuth credentials
* [Clerk documentation](https://clerk.com/docs) — Reference for builders integrating an external Clerk app
# Migrate from Replit Auth to Clerk
Source: https://docs.replit.com/features/auth-and-identity/clerk-auth-migration
Use Agent to move an existing Replit Auth app to Clerk Auth while preserving your app's user data.
Use this guide to move an existing [Replit Auth](/features/auth-and-identity/authentication) app to [Clerk Auth](/features/auth-and-identity/clerk-auth). Agent handles the migration for eligible apps, so returning users keep access to their existing data.
This automated migration is for apps that use Replit Auth. If your app uses a different authentication system, do not use this flow.
## Start the migration
Agent migrations should always run in a new task.
You can start the migration in either of these ways:
### Start from Main Agent
1. In the main Agent conversation, ask Agent to migrate your app from Replit Auth to Clerk.
2. Agent proposes a separate migration task for you to review and start.
### Start from Auth Pane
1. In the Project Editor, open **Tools** and select **Users & Auth**.
2. In the **Introducing a new Replit Auth** banner, select **Update now**.
3. Select **Ask Agent to migrate**.
Do not change your app's authentication code or Clerk credentials while Agent is working.
## What Agent does
Agent completes the migration in this order:
1. It moves your Replit Auth user data to Clerk, including account identity details and supported sign-in credentials.
2. It waits for the data migration to finish before changing your app.
3. It updates your app's sign-in and session logic, restarts the app, and runs available automated checks.
## Your app data stays in place
Agent changes only your app's authentication code. It does not update your app's existing database data or schema. Your tables and relationships remain intact.
Your existing users remain connected to the records they already own, such as profiles, saved work, and permissions.
## How long it takes
Expect Agent to work for 10 minutes to an hour. The data migration itself can take several minutes for smaller apps and up to a couple of hours for apps with many users. Agent does not begin changing your app's code until that migration completes.
## After the migration
Before publishing, test the updated app in Development:
1. Sign in with an existing account and confirm its saved data is available.
2. Sign out and sign back in.
3. Create a new test account and confirm it can use the app as expected.
## Additional resources
* [Clerk Auth overview](/features/auth-and-identity/clerk-auth) — How Clerk Auth works on Replit
# Users & Auth
Source: https://docs.replit.com/features/auth-and-identity/overview
Manage the people who sign in to your app and choose how they sign in, with Replit Auth or Clerk.
The Users & Auth tool manages the people who use your app and how they sign in. Open **Users & Auth** under **Replit Cloud** in the **Tools** pane.
The tool has two tabs:
* **Users**: Everyone who has signed in to your app, with their name and last sign-in time. Search the list to find a specific user.
* **Configure**: Your app's sign-in experience: the login screen's name and icon, which sign-in providers your app offers, and the session secret.
This tool manages your **app's** users: the people who sign up and log in to what you built. To control who can open your published app at all, see [Who can access your app](/features/publishing/private-deployments).
## Choose your auth system
* **[Replit Auth](/features/auth-and-identity/authentication)**: The zero-setup option. Ask Agent to add Replit Auth, and your app gets a prebuilt login page, user management, and secure sessions with no configuration.
* **[Clerk](/features/auth-and-identity/clerk-auth)**: A full-featured authentication service for apps that need more control, such as custom sign-in flows and your own OAuth branding. Set up [custom sign-in providers](/features/auth-and-identity/sign-in-providers) for Google, GitHub, Apple, and X.
## Next steps
* [Replit Auth](/features/auth-and-identity/authentication): Zero-setup sign-in for your app.
* [Clerk Auth](/features/auth-and-identity/clerk-auth): Full-featured authentication.
* [Sign-in providers](/features/auth-and-identity/sign-in-providers): Bring your own OAuth credentials.
# Sign-in providers
Source: https://docs.replit.com/features/auth-and-identity/sign-in-providers
Set up custom OAuth credentials for Google, GitHub, Apple, and X sign-in on apps that use Clerk Auth.
When your app uses [Clerk Auth](/features/auth-and-identity/clerk-auth), visitors can sign in with social providers. Replit provides shared credentials out of the box; this page covers bringing your **own** OAuth credentials for each provider, which puts your app's name and branding on the sign-in screen.
The flow is the same for every provider: create an OAuth app in the provider's console, copy the URLs Replit shows you, and paste the resulting credentials into the provider's edit panel.
Custom OAuth credentials are only available in the **Production** environment, so your app must be [published](/features/publishing/overview) first. Open each provider's edit panel from the **Users & Auth** tool: **Configure** tab, **SSO providers** section, select the **Production** environment, then select **Edit** next to the provider. For the overall flow, see [Configuring OAuth credentials for an SSO provider](/features/auth-and-identity/clerk-auth#configuring-oauth-credentials-for-an-sso-provider).
## Google
This guide walks you through creating a Google OAuth app in the Google Cloud Console. You'll collect a **Client ID** and **Client Secret**, plus configure the JavaScript origins and redirect URIs that Clerk requires.
You need: Access to the [Google Cloud Console](https://console.cloud.google.com/).
### Step 1: Create a Google OAuth app
Navigate to the [Google Cloud Console](https://console.cloud.google.com/):
#### Create or select a project
1. Select an existing project or create a new one from the project dropdown
2. You'll be redirected to your project's Dashboard
#### Configure OAuth consent screen
1. In the left sidebar, select the menu icon (≡) and select **APIs & Services**
2. Select **OAuth consent screen**
3. Configure your app's consent screen with required information
4. Save your changes
#### Create OAuth credentials
1. From **APIs & Services**, select **Credentials**
2. Select **Create Credentials** at the top, then select **OAuth client ID**
3. Choose **Web application** as the application type
4. Set **Authorized JavaScript origins** and **Authorized redirect URIs** to the exact values shown under **Provider setup** in the **Auth pane**. Add every value listed — your published domain and any custom domain are both included. See [Configuring OAuth credentials for an SSO provider](/features/auth-and-identity/clerk-auth#configuring-oauth-credentials-for-an-sso-provider) for how to find them.
5. Select **Create**
6. Save your **Client ID** and **Client Secret**
Keep your Client Secret secure and never commit it to version control.
Google sign-in does not work in embedded browsers or in-app webviews. Users must use a standard web browser.
### Troubleshooting
#### Redirect URI mismatch
* Verify the redirect URI in Google Cloud Console exactly matches the value shown under **Provider setup** in the **Auth pane**
* Ensure there are no trailing slashes or typos
* Wait a few minutes for Google's configuration to propagate
#### Invalid client
* Double-check Client ID and Client Secret are copied correctly
* Ensure there are no extra spaces
* Verify OAuth consent screen is configured
#### Not working on custom domain
* Add the custom-domain entries shown under **Provider setup** in the **Auth pane** to both Authorized JavaScript origins and Authorized redirect URIs
## GitHub
This guide walks you through creating a GitHub OAuth app in GitHub Developer Settings. You'll collect a **Client ID** and **Client Secret** to plug into the **Auth pane**.
You need: A [GitHub account](https://github.com).
### Step 1: Create a GitHub OAuth app
1. Navigate to [GitHub Developer Settings](https://github.com/settings/developers)
2. Select **OAuth Apps** in sidebar
3. Select **New OAuth App**
4. Fill in the application details:
**Application name:**
Enter a name for your application.
**Homepage URL** and **Authorization callback URL:**
Set both to the exact values shown under **Provider setup** in the **Auth pane**. See [Configuring OAuth credentials for an SSO provider](/features/auth-and-identity/clerk-auth#configuring-oauth-credentials-for-an-sso-provider) for how to find them.
5. Select **Register application**
### Step 2: Generate client credentials
1. You'll see your **Client ID** on the app's settings page - copy it
2. Select **Generate a new client secret**
3. Copy your **Client Secret** immediately
Save your Client Secret securely. You can't view it again after leaving the page. If lost, you'll need to generate a new one.
### Troubleshooting
#### Redirect URI mismatch
* Verify the Authorization callback URL exactly matches the value shown under **Provider setup** in the **Auth pane**
* Check for typos or incorrect protocols
* No trailing slashes
#### Invalid client
* Double-check Client ID and Client Secret are copied correctly
* Ensure no extra spaces when pasting
#### Not working on custom domain
* Update the Homepage URL and Authorization callback URL to the custom-domain values shown under **Provider setup** in the **Auth pane**
## Apple
This guide walks you through creating the Apple App ID, Services ID, and Private Key required for Sign in with Apple. You'll collect a **Team ID**, **Services ID**, **Key ID**, and **Private Key** to plug into the **Auth pane**.
You need: An [Apple Developer account](https://developer.apple.com/account) (requires enrollment in the Apple Developer Program).
### Step 1: Create an Apple App ID
1. Navigate to the [Apple Developer portal](https://developer.apple.com/account)
2. Go to **Certificates, IDs & Profiles** then **Identifiers**
3. Select **App IDs** from the dropdown
4. Select the **+** icon to register a new identifier
5. Select **App IDs**, then **Continue**
6. Choose **App**, then **Continue**
7. Fill in:
* **Description**: Name for your App ID
* **Bundle ID**: Your unique identifier
8. Enable **Sign In with Apple** under Capabilities
9. Select **Continue**, then **Register**
10. **Save your App ID Prefix** (shown at top) - this is your **Team ID**
### Step 2: Create an Apple Services ID
1. On the Identifiers page, select **Services IDs** from the dropdown
2. Select **+** to register a new identifier
3. Select **Services IDs**, then **Continue**
4. Fill in:
* **Description**: Name for your Services ID
* **Identifier**: Your unique identifier (save this - it's your **Services ID**)
5. Select **Continue**, then **Register**
#### Configure the Services ID
1. Select your newly created Services ID
2. Enable **Sign In with Apple**
3. Select **Configure**
4. Set:
* **Primary App ID**: Select your App ID from Step 1
* **Domains and Subdomains**: Copy the value shown under **Provider setup** in the **Auth pane** (without the `https://` protocol prefix)
* **Return URLs**: Copy the value shown under **Provider setup** in the **Auth pane**
See [Configuring OAuth credentials for an SSO provider](/features/auth-and-identity/clerk-auth#configuring-oauth-credentials-for-an-sso-provider) for how to find these values.
5. Select **Next**, then **Done**, then **Continue**, then **Save**
### Step 3: Create an Apple Private Key
1. In the Apple Developer portal sidebar, select **Keys**
2. Select **+** to register a new key
3. Enter a **Key Name**
4. Enable **Sign In with Apple**
5. Select **Configure**, then select your App ID from Step 1
6. Select **Save**, then **Continue**, then **Register**
7. **Save the Key ID**
8. **Download** the private key file (.p8)
You can only download the private key once. Store it securely — you cannot download it again.
### Step 4: Configure Apple Private Email Relay
Apple's Hide My Email feature lets users sign in without revealing their real email. To send emails to these users, register your email source.
1. In the Apple Developer portal sidebar, select **Services**
2. Under **Sign in with Apple for Email Communication**, select **Configure**
3. Select **+** to add an Email Source
4. Enter the Email Source value shown under **Provider setup** in the **Auth pane**
5. Select **Next**, then **Register**, then **Done**
6. Wait for DNS verification (green check icon)
In some regions (China, India), Apple IDs may be tied to phone numbers instead of email. If your app requires email for all users, Sign in with Apple may fail for users in these regions.
### Troubleshooting
#### Invalid client
* Verify all credentials are entered correctly
* Ensure the Private Key includes the BEGIN and END lines
* Check that your Services ID is properly configured
#### Invalid redirect URI
* Verify the Return URL in the Apple Services ID configuration exactly matches the value shown under **Provider setup** in the **Auth pane**
* Check the domain in Domains and Subdomains matches your published domain (without `https://`)
#### Email relay not working
* Verify the Email Source shows a green check in the Apple Developer portal
* Wait for DNS propagation if recently added
#### Not working on custom domain
* Add the custom-domain entries shown under **Provider setup** in the **Auth pane** to Domains and Subdomains (without `https://`) and to Return URLs
### Additional resources
* [Apple Sign in with Apple Documentation](https://developer.apple.com/sign-in-with-apple/)
* [Private Email Relay Service Guide](https://developer.apple.com/help/account/configure-app-capabilities/configure-private-email-relay-service)
## X (Twitter)
This guide walks you through creating an X OAuth app in the X Developer Portal. You'll collect a **Client ID** and **Client Secret** to plug into the **Auth pane**.
You need: An [X Developer account](https://developer.twitter.com/) (free tier available).
### Step 1: Set up X Developer app
#### Create a developer account (if needed)
1. Navigate to [X Developer Portal](https://developer.twitter.com/en/portal/dashboard)
2. Apply for a developer account if you don't have one
3. Complete the application describing your use case
#### Create or select an app
1. In the X Developer Portal, go to **Projects & Apps**
2. Use an existing app or select **Add App**
3. Enter an app name and select **Next**
4. Select **App settings**
### Step 2: Configure authentication
1. Scroll to **User authentication settings**
2. Select **Set up**
**App permissions:**
Select minimum permission level:
* **Read** - Required for user profile (minimum)
* **Write** - For posting on behalf of users (optional)
* **Direct Messages** - For DM access (optional)
Permissions must match scopes requested. If your app requests `tweet.write` but you only enabled Read, authentication will fail.
**Type of app:**
Select **Web App, Automated App or Bot**
**App info:**
* **Callback URI / Redirect URL**: Copy the value shown under **Provider setup** in the **Auth pane**
* **Website URL**: Copy the value shown under **Provider setup** in the **Auth pane**
See [Configuring OAuth credentials for an SSO provider](/features/auth-and-identity/clerk-auth#configuring-oauth-credentials-for-an-sso-provider) for how to find these values.
3. Select **Save**
4. **Save your Client ID and Client Secret**
Store your Client Secret securely. If lost, regenerating it invalidates the old one.
### Troubleshooting
#### Redirect URI mismatch
* Verify the Callback URI exactly matches the value shown under **Provider setup** in the **Auth pane**
* Check for typos or incorrect protocols
* No trailing slashes
#### Invalid client
* Double-check Client ID and Client Secret
* Ensure no extra spaces
* Verify you are using OAuth 2.0 credentials (not OAuth 1.0a)
#### Scope/permission errors
* Verify scopes match permissions enabled in X Developer Portal
* Ensure Read permission is enabled at minimum
#### App in development mode
* X apps start in development mode with limited users
* You may need to apply for elevated access for production use
#### Not working on custom domain
* Update the Website URL and Callback URI to the custom-domain values shown under **Provider setup** in the **Auth pane**
### Additional resources
* [X OAuth 2.0 Documentation](https://developer.twitter.com/en/docs/authentication/oauth-2-0)
* [X OAuth Scopes](https://developer.twitter.com/en/docs/authentication/oauth-2-0/authorization-code)
# Single sign-on (SSO)
Source: https://docs.replit.com/features/auth-and-identity/single-sign-on
Add enterprise single sign-on with Okta or Microsoft Entra ID to your Replit app through the Clerk dashboard, plus multi-factor authentication and session controls.
Let people sign in to your app with their company identity provider, such as Okta or Microsoft Entra ID. If your app uses [Clerk Auth](/features/auth-and-identity/clerk-auth), you configure SSO and other advanced authentication features through the Clerk dashboard. Ask Agent for what you need, and Agent directs you to the dashboard to complete the setup.
The Clerk Dashboard goes well beyond the default sign-in experience. Any configuration you make in Clerk applies automatically to your Replit app's authentication.
## What you can configure
* **Enterprise SSO connections**: Configure single sign-on with Okta or Microsoft Entra ID, using OIDC or SAML. Let customers sign in with their company identity provider. SSO also secures internal tools that handle sensitive data, replacing manual email allowlists with your company's existing identity provider.
* **Multi-factor authentication (MFA)**: Add MFA to your app's sign-in flow.
* **Session controls**: Adjust session lengths and verification frequency.
* **Other Clerk settings**: Additional Clerk configuration applies to your Replit app automatically. Don't change API keys or environment settings — Replit manages those. See [Development and Production environments](/features/auth-and-identity/clerk-auth#development-and-production-environments).
## Open the Clerk Dashboard
Ask Agent for the authentication change you need. Agent sets up what it can and directs you to your app's Clerk Dashboard for configuration that needs your input.
You can also open the dashboard from the Workspace:
1. In the Tools pane, select **Users & Auth**.
2. Select the **Configure** tab.
3. Select **Advanced**.
4. Under **Clerk dashboard**, select **Open Clerk dashboard**.
## Set up an enterprise SSO connection
1. In the Clerk Dashboard, select **Configure**.
2. Under **User & authentication**, select **SSO connections**.
3. Select **Enterprise**.
4. Select **Add connection**.
For complete connection configuration, read the [Clerk documentation](https://clerk.com/docs).
### Validate the connection
After you complete the configuration, sign in with a test account from your identity provider. Make sure the account can access the expected parts of your app.
If sign-in fails, ask Agent for help. Include the identity provider, protocol, and error message in your request.
This page covers enterprise SSO for your app's own sign-in flow. For social sign-in with Google, GitHub, Apple, or X — labeled **SSO providers** in the Workspace — see [Sign-in providers](/features/auth-and-identity/sign-in-providers). This page does not cover Replit Auth migration or SAML sign-in for Replit accounts.
## Pricing and availability
Clerk Dashboard access is available on the [Replit Pro](/billing/plans/replit-pro) plan. Enterprise plans are coming soon.
Enterprise SSO connections are free through October 1, 2026. After that date, SSO pricing matches Clerk's pricing and is passed through to your Replit bill.
## Related documentation
* [Clerk Auth](/features/auth-and-identity/clerk-auth) explains how Clerk-powered authentication works in Replit apps.
# Personal & Team Workspaces
Source: https://docs.replit.com/features/collaboration/team-workspaces
Understand the difference between personal and team workspaces, create a team workspace, and invite members to build together.
## Personal vs. team workspaces
A **workspace** is the structure that holds your apps, members, settings, and billing. Replit has two types:
* Personal workspace
* Team workspace
Below is the difference between Personal and Team workspaces:
| | Personal workspace | Team workspace |
| --------------------- | ---------------------------------------- | --------------------------------------------------- |
| **Roles** | Admin, Project-level guests | Admin, Members, Project-level guests |
| **Access model** | You invite guests to individual projects | Members get access to all projects in the workspace |
| **Billing** | Your account | Pooled credits from the admin's account |
| **Member management** | Per-project (Join Links) | Centralized from workspace Settings |
**Personal workspace** is best when you're working solo or sharing individual projects with others. You're the sole admin, and other people can only access specific projects you invite them to as project-level guests.
**Team workspace** is best when you're building with a regular group — a startup team, a class, or a client project with multiple contributors. Members get access to all projects in the workspace, so you don't have to invite them one by one to each project. Members are managed centrally from **Settings**.
### When to invite to your workspace vs. to a project
| Scenario | What to do |
| --------------------------------------------------- | -------------------------------------------- |
| Ongoing collaborator who needs access to everything | Invite to workspace |
| Contractor or guest who only needs one project | [Invite to project](/build/invite-teammates) |
| New team member joining your company | Invite to workspace |
| Friend helping you debug a specific app | [Invite to project](/build/invite-teammates) |
## Create a team workspace
In the home page, click your workspace name in the top-left corner.
Select **Create workspace** and choose a name for your team workspace.
Enter one or more email addresses (comma-separated) in the invite field. Invitees receive an invitation and gain access to all projects in the workspace once they accept.
## Managing members
If you didn't invite members during setup, or need to add more later, go to **Settings** in your team workspace and invite members by email or Replit username.
From the **Settings** page you can also:
* **Remove members** to revoke their access to all workspace projects
* **Transfer apps** from personal workspaces into the team workspace — see [Transfer app to teams](/teams/identity-and-access-management/transfer-app-to-teams)
For advanced identity management, role-based access, and group permissions, see [Pro and Enterprise](/category/teams).
## Availability
| Capability | Starter | Core | Pro |
| ------------------- | ------- | ---- | --- |
| Team workspaces | — | ✅ | ✅ |
| Collaboration seats | — | 5 | 15 |
| Pooled credits | — | — | ✅ |
## Next steps
Invite people to a specific project and build together with Agent.
Enterprise features: SSO/SAML, groups, permissions, and audit logs.
# Workspaces
Source: https://docs.replit.com/features/collaboration/workspaces
Learn how Workspaces on Replit organize your projects, teammates, settings, and billing — and when to use a Personal Workspace versus a Team Workspace.
## What is a Workspace?
A Workspace is a collaborative space on Replit that brings together your projects, teammates, settings, and billing. Every Replit account has a Personal Workspace for your own projects, and paid plans let you create Team Workspaces for shared projects.
| Feature | Personal Workspace | Team Workspace |
| ---------------- | ---------------------------------------- | --------------------------------------------------- |
| **Best for** | Solo work or sharing individual projects | Teams, startups, classrooms, and client projects |
| **Access model** | You invite guests to individual projects | Members get access to all projects in the Workspace |
| **Billing** | Your account | Pooled credits from the admin's account on Pro |
## Personal Workspace
Your Personal Workspace is where your own projects live. You're the sole admin. Other people can access specific projects when you invite them as project-level guests, but they don't get broad access to everything in the Workspace.
## Team Workspaces
Team Workspaces let a group collaborate across multiple projects. Members get access to all projects in the Workspace, so you don't have to invite them one by one. The admin manages billing and settings centrally.
See [Team workspaces](/features/collaboration/team-workspaces) for setup instructions, member management, and availability details.
## Next steps
Create a Team Workspace, invite members, and manage access.
Invite people to a specific project and build together with Agent.
# Connection details
Source: https://docs.replit.com/features/data-and-storage/connection-details
Find your database's connection string, understand how credentials stay secure, and connect external tools.
Your app connects to its database through credentials that Replit manages for you. Find them in the **Database** tool: select a database, then open the **Settings** tab. It shows the connection string, storage usage, and advanced connection details.
## Environment variables
The following environment variable is available for connecting to your development database:
* `DATABASE_URL`: how to connect and authenticate to the database
Your app uses it automatically. Because `DATABASE_URL` is scoped to your app, your development database cannot be accessed by other apps, even ones you own, or by external database viewers. Even if leaked, it cannot be used by anyone else to access and modify your database.
If your development database is still on the [legacy Neon infrastructure](/features/data-and-storage/development-and-production#legacy-development-database), the additional variables `PGHOST`, `PGUSER`, `PGPASSWORD`, `PGDATABASE`, and `PGPORT` are also available. These are **not** provided for databases hosted on Replit's current infrastructure; use `DATABASE_URL` instead.
If you are still on the legacy Neon development database, do not share your `DATABASE_URL`. It contains your database credentials, which could be used by anyone to access and modify your database. Never paste it in public places or support tickets.
## Connect an external tool
You can connect to your **production** database from any PostgreSQL-compatible SQL client using the connection string from the production database's **Settings** tab.
## Security
When you add a database integration using Agent, it adds an Object-Relational Mapper (ORM) that handles all database communications with built-in security:
* **Schema validation**: Verifies data conforms to expected formats
* **Data sanitization**: Automatically cleans up builder input to prevent SQL injection attacks
## Regenerate production database credentials
If a production connection string was exposed, regenerate its credentials in the Database tool. This action creates a new password for the Neon production database. Existing production connection strings stop working immediately.
You can regenerate credentials when all of these conditions are true:
* Your app has a Neon production database.
* You are the app owner or an administrator of the owning workspace.
* You use Replit in a web browser.
* No deployment is in progress.
* If your app has a live deployment, its latest build completed successfully and uses [Autoscale or a Reserved VM](/features/publishing/deployment-types).
This action cannot be undone. Existing connection strings stop working
immediately. If your app has a live deployment, it can be unavailable briefly
during the redeploy.
### Regenerate the credentials
1. In the Tools pane, select **Database**.
2. Select **Production Database**, then select the **Settings** tab.
3. Under **Advanced**, expand the **Regenerate credentials** row.
4. Select the **Regenerate credentials** button.
5. In the confirmation dialog, select **Regenerate credentials** to confirm.
6. Select **Refresh** to load the new connection string.
7. If your app has a live deployment, open **Publishing** and monitor the redeploy.
8. Replace any connection strings that you copied to external tools or custom integrations.
### What changes
Regenerating credentials creates a new password for the production database. Only the password part of the connection string changes. The host, database name, and role stay the same.
For a supported live deployment, Replit redeploys the latest successful build with the updated connection string.
## Next steps
* [Work with your data](/features/data-and-storage/work-with-your-data): Browse and query without leaving Replit.
* [Development and production](/features/data-and-storage/development-and-production): How your two databases differ.
# Data recovery
Source: https://docs.replit.com/features/data-and-storage/data-recovery
Restore your development database to a checkpoint or roll your production database back to a point in time.
Mistakes happen: a bad schema change, deleted rows, or an Agent session that went sideways. Replit gives you a recovery path for each database.
| Database | Recovery method | Availability |
| ----------- | --------------------- | ------------------------------------------------ |
| Development | Checkpoint rollback | All plans |
| Production | Point-in-time restore | Core: 7 days of history. Pro and Teams: 28 days. |
## Restore your development database
You can revert your app and development database to a previous state using the [rollback feature](/features/version-control/checkpoints-and-rollbacks/). This restores your database to any checkpoint created by Agent.
Make sure to select "Database" under "Additional rollback options" when restoring to the state of a checkpoint. This restores your database to the state it was at the time of the checkpoint.
## Restore your production database
For production databases, you can restore to a specific moment using point-in-time restore.
How far back you can restore depends on your plan: the Core plan retains up to 7 days of history, while Pro and Teams plans retain up to 28 days. If you downgrade from Pro to Core, your retention window is reduced to 7 days.
Restoring your database doesn't restore your app's code, and rolling back your app doesn't restore your database. To bring both back to the same moment: restore the database, then [roll back to the matching checkpoint](/features/version-control/checkpoints-and-rollbacks/) and publish your app again.
## Troubleshooting publishing failures
If publishing fails due to database issues:
1. **Check the publishing logs** for specific error messages about database connectivity or schema conflicts
2. **Review recent schema changes** for potential conflicts with existing application code
3. **Test your changes in a deployment preview** before attempting to republish
## Next steps
* [Development and production](/features/data-and-storage/development-and-production): How your two databases work together.
* [Checkpoints and rollbacks](/features/version-control/checkpoints-and-rollbacks/): Roll your whole app back.
# Development and production databases
Source: https://docs.replit.com/features/data-and-storage/development-and-production
Understand your app's two databases: the development database you build with and the production database that serves your published app.
Every Replit App works with two databases. The **development database** is where you and Agent experiment while building. The **production database** stores the live data that powers your published app, keeping your real-world data safe while you keep building.
## How they compare
| Aspect | Development database | Production database |
| ----------- | ---------------------------------------- | ------------------------------------------------- |
| **Purpose** | Experimentation and feature development | Serving real users and storing business data |
| **Data** | Test data, dummy records, small datasets | Real user data, business-critical information |
| **Created** | Automatically with every Replit App | When you publish your app |
| **Agent** | Agent can create and modify tables | Agent can't touch it |
| **Changes** | Frequent schema changes, rapid iteration | Careful, planned changes applied when you publish |
| **Billing** | Included free with every Replit App | Usage-based |
Agent is not able to modify the production database. This restriction is in place so that your production database stays safe.
Agent can make edits to your development database. At the time of publishing, any changes you've made with Agent to the structure of your development database (adding and deleting columns or tables) are applied to your production database.
You can manually edit your production data at any time: open the **Database** tool, select the production database, open **My Data**, and toggle **Edit**.
## Create a production database when you publish
Your published app gets its own production database, separate from the development database you use while building.
* **Current infrastructure (Helium)**: Replit creates the production database for you when needed during publishing. There's nothing to set up.
* **Legacy Neon development databases**: You create the production database from the publish settings. Open **Production database settings** while publishing, turn on **Create production database**, and optionally turn on **Set up your production database with your current development data** to copy your development data across.
Only copy development data into production if that data is safe to use in your live app. Development data can include test accounts, sample records, or incomplete content.
After publishing, your published app uses the production database while the Project Editor keeps using the development database, so future development changes don't directly modify live data.
## Connection pooling
By default, production databases do not have connection pooling enabled. Your app connects directly to the database using the `DATABASE_URL` connection string, so most frameworks should manage their own client-side connection pool.
Each Neon project includes a direct and a pooled connection string. A direct connection string looks like `postgresql://neondb_owner:@..neon.tech/?sslmode=require`.
To use the pooled connection, append `-pooler` to the host: `postgresql://neondb_owner:@-pooler..neon.tech/?sslmode=require`.
If a production connection string was exposed, [regenerate your production database credentials](/features/data-and-storage/connection-details#regenerate-production-database-credentials).
## Making safe changes to your production database
When you publish updates that include database changes, some changes need careful planning to avoid downtime or data loss.
You may notice a brief downtime for your published app during publishing. Database changes sometimes require stopping your app temporarily to prevent conflicts and protect your data while the changes are applied.
The following types of changes typically require care:
* **Removing database columns** that your application code still references
* **Changing column data types** in ways that existing code cannot handle
* **Adding required fields** without default values to existing tables
* **Renaming tables or columns** that break existing queries
* **Modifying constraints** that could reject existing application logic
### Test changes with a deployment preview
A deployment preview is a temporary, isolated copy of your production environment where you can test database changes and application updates before they affect real users. Use it to:
* Verify your app still works with the database changes applied, across your major user flows
* Confirm existing data was properly migrated and new fields contain expected values
* Watch for performance regressions in query response times
## Billing and resource usage
Production databases are billed based on usage through Neon, a serverless database provider. The database enters an idle state after five minutes of inactivity, pausing compute time billing, and instantly reactivates when it receives a query.
The Database tool's landing view shows your **Billing Period** and **Hours of Compute Used**. For per-database storage, open the database's **Settings** tab. To see usage across every Replit App, open **Settings** → **Account** → **Account usage** and expand the **PostgreSQL Storage** and **PostgreSQL Compute** rows.
To learn how Replit charges for database usage, see [Deployments and Database Billing](/billing/about-usage-based-billing#databases).
## Removing a production database
The remove action is irreversible after a retention period of 7 days. Make sure to back up any important data before proceeding. Databases have a 7-day soft delete period where databases can be restored; reach out to support if you need assistance. After 7 days, the database is hard deleted and unrecoverable.
From the **Database** tool:
1. Select the database, then open the **Settings** tab
2. Select **Remove database** and confirm by selecting **Yes, Remove database**
## Legacy development database
Prior to December 4th, 2025, the development database was hosted on Neon . All new development databases are hosted on Replit's own infrastructure (Helium). You can check which one your app uses in the **Settings** tab: a `DATABASE_URL` containing `neon.tech` means legacy Neon; `helium` means current infrastructure.
| **Feature** | **Replit (current)** | **Neon (legacy)** |
| ----------------------- | --------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| **Hosting** | Hosted on Replit's own infrastructure | Hosted on Neon (third-party provider) |
| **Billing** | Included for free with every Replit App | Usage-based billing. See [Publishing and Database Billing](/billing/about-usage-based-billing#databases) for more details. |
| **Restore capability** | Restore your database to any checkpoint using the [rollback feature](/features/data-and-storage/data-recovery) | Point-in-time restore (PITR): recover to any point within the backup retention window. |
| **Connection security** | Only accessible from within your app; never exposed publicly. | Used a full connection string. If leaked, anyone could access and modify your database. |
| **Remixing behavior** | [Remixing](/build/remix-an-app) creates a new development database with copied data for isolation and security. | Remixing reuses the same database for all copies, so changes in remixes could affect the original app. |
| **Database creation** | Automatically created for each Replit App. | Required explicit setup. |
| **Publishing workflow** | Publishing creates a separate production database for isolation between environments. | Development and production shared the same database, so unintended development changes could affect production apps. |
## Database infrastructure upgrade
Replit is upgrading development databases from Neon to **Helium**, Replit's own managed PostgreSQL infrastructure. The upgrade is automatic, runs once per app when you open it in the Project Editor, and preserves all your data.
What changes:
* **Lower latency and more storage**: Your database runs on Replit infrastructure alongside your app, and your storage limit increases from 10 GB to 20 GB.
* **Same database engine**: Helium uses PostgreSQL 16, the same version as Neon. Your queries, schemas, and data work the same way.
* **Connection updates automatically**: `DATABASE_URL` is updated to point to Helium. Your previous Neon connection string is saved as `NEON_DATABASE_URL` in your Secrets for reference.
* **Individual PG variables removed**: `PGHOST`, `PGPORT`, `PGUSER`, and `PGPASSWORD` are removed. Use `DATABASE_URL` instead.
During the upgrade you'll see an **"Upgrading your database"** progress screen. It can take from a few minutes to a few hours for large databases; you can close the tab and come back. If the upgrade encounters an issue, it's automatically skipped and retried the next time you open your app. When it completes, a confirmation dialog appears.
For most builders, no action is needed afterward. Review the following if they apply:
* **Hardcoded Neon connection strings**: Update code that references a `neon.tech` connection string to use the `DATABASE_URL` environment variable instead.
* **Custom PostgreSQL roles**: Roles and permissions migrate automatically, but role passwords can't be copied. Reset passwords for custom roles on the new database.
### SSL connection errors after the upgrade
If you see errors like `The server does not support SSL connections`, your connection code is forcing an SSL handshake. Neon required SSL; Helium runs locally alongside your app and doesn't use it. Make the SSL setting conditional on the environment:
```js JavaScript theme={null}
// Before (breaks after upgrade)
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: { rejectUnauthorized: false },
});
// After (works in both development and production)
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl:
process.env.NODE_ENV === "production"
? { rejectUnauthorized: false }
: false,
});
```
If you use an ORM like Drizzle, Prisma, or Sequelize, check its documentation for how to configure SSL settings conditionally. The same principle applies: disable SSL for the development database and enable it for production.
### Forked apps that shared a database
Under the legacy Neon system, forking an app copied the original app's `DATABASE_URL`, so both apps and their published versions connected to the same database. Shared legacy databases were shut down on **June 8, 2026**. If your published app stopped working or lost access to its data, see [Fix a published app using a shared database](/features/data-and-storage/shared-database-migration) or [contact support](https://replit.com/support).
## Next steps
* [Data recovery](/features/data-and-storage/data-recovery): Restore development or production data.
* [Connection details](/features/data-and-storage/connection-details): Find your database's connection string.
* [Work with your data](/features/data-and-storage/work-with-your-data): Browse, edit, and query your data.
# App Storage
Source: https://docs.replit.com/features/data-and-storage/object-storage
Learn how to use App Storage to host and manage file uploads like images, videos, and documents.
App Storage is Replit's built-in object storage that lets your app easily host and save uploads like images, videos, and documents.
Buckets are containers for storing objects such as files. They include access policies to limit what actions users or applications can perform on their contents.
We've renamed Object Storage to App Storage . Functionality has not changes and your existing buckets, permissions, and programmatic access should continue to work.
With App Storage, you can build apps like:
* **Photo sharing platforms**: Let builders upload, store, and display images
* **Video streaming services**: Handle video uploads and serve content to viewers
* **Document management systems**: Store and organize builder files with secure access
* **Portfolio sites**: Showcase work with media files that load reliably
* **File backup services**: Provide builders with cloud storage for their important files
Ask **Agent** to add App Storage to your app with details on what types of files your app should handle. Agent will set up the integration, create the necessary buckets, and update your app to upload, store, and retrieve files with advanced features like authentication and access controls.
The App Storage tool lets you seamlessly share data between your
development and production environments or with other Replit Apps.
## Features
App Storage is powered by Google Cloud Storage (GCS).
This means you receive the benefits of industry-leading uptime,
availability, and security.
App Storage provides the following features for your Replit Apps:
* **Persistent cloud storage**: Store files that remain accessible to your published app and users
* **Scalable file handling**: Handle growing data needs without worrying about storage limits
* **Cross-app data sharing**: Share buckets across multiple Replit Apps for distributed architectures
* **Programmatic access**: Upload, download, and manage files using intuitive APIs
* **Enhanced Agent integration**: Let Agent set up App Storage with advanced configurations, inspect existing setups, and generate complete backend and frontend code with authentication and access controls
Here are a few ways you can use App Storage in your Replit Apps:
* Store builder profile pictures and media uploads
* Serve product images for e-commerce sites
* Handle document uploads for form submissions
* Create file sharing and collaboration features
* Build content management systems with media libraries
**Enhanced Agent Integration**: You can prompt [Replit Agent](/features/agent/overview) to automatically add App Storage to your apps! Agent can now set up object storage, inspect configurations, and generate complete backend and frontend code with advanced features like authentication and access controls. Simply mention "App Storage" or "file storage" in your prompt.
Add App Storage to my app to store files
Create a photo gallery app with App Storage for images
Set up App Storage with authentication for user file uploads
Learn more about [Agent integrations](/features/integrations/overview#data-storage--management) and see all available App Storage prompts.
## Usage
Your Replit App must authenticate with Google Cloud Storage to access a bucket and its objects.
Use the official Replit App Storage client libraries to automatically authenticate.
You can access the App Storage tool directly in your Project Editor.
From the left **Tool dock**:
1. Select **All tools** to see a list of Project Editor tools.
2. Select **App Storage**.
From the **Search bar**:
1. Select the magnifying glass at the top to open the search tool.
2. Type "App Storage" to locate the tool and select it from the results.
To associate a new storage bucket with your Replit App, create a bucket.
From the **App Storage** tool:
1. Click on **Create new bucket**.
2. Enter a name for the bucket in the **Name** field and select **Create bucket**.
The App Storage tab should resemble the following screenshot:
To create additional buckets, open the bucket dropdown menu on the top left of the **App Storage** tab and select **Create new bucket**.
The following sections explain the bucket and object management options in the App Storage tool.
### Select a bucket
To switch between your storage buckets, select the dropdown menu in the top left corner of the **App Storage** tab.
The selected bucket displays a check mark next to its name, as shown in the screenshot below:
### Access the bucket ID
To view the **Bucket ID** by selecting the **Settings** view from the dropdown at the top of the **App Storage** tab.
The Bucket ID uniquely identifies the bucket, which your code must reference to perform an operation.
If you have multiple buckets, select the correct bucket from the dropdown menu in the top left corner.
The following screenshot shows the Bucket ID for the "FileVault Bucket One" bucket:
### Upload or download objects
To upload an object to the selected bucket:
1. Navigate to the **Objects** view in the **App Storage** tab.
2. Select **Upload files**, or **Upload folder** to upload all files from a folder.
Then, select one or more files to upload from the file dialog.
Alternatively, drag a file or folder into the area that lists the contents of the bucket.
To download an object from the selected bucket:
1. Navigate to the **Objects** view in the **App Storage** tab.
2. Select the download icon to the right of the file to download it.
### Organize objects in folders
To create a folder in the selected bucket:
1. Navigate to the **Objects** view in the **App Storage** tab.
2. Select **Create Folder** in the **Objects** view.
3. Enter a name for the folder.
To add objects to a folder in the **Objects** view, drag an object to the destination folder.
To move the object to a parent folder, drag it above the header to the name of the folder above the object list.
The following animation shows moving the "product\_demo.mov" file from the "videos" folder to the parent "Objects" folder:
### Delete objects or buckets
The delete action is irreversible. Make sure to back up any essential data before proceeding.
To delete an object forever:
1. Navigate to the **Objects** view in the **App Storage** tab.
2. Select the trash icon
next to the object you want to delete.
3. Confirm the deletion in the confirmation dialog.
To delete a bucket and all the objects it contains:
1. Navigate to the **Settings** view in the **App Storage** tab.
2. Make sure you select the bucket you want to delete in the top left bucket dropdown menu.
3. Select **Delete Bucket**.
4. Confirm the deletion in the confirmation dialog.
### Bucket access management
Replit connects all buckets you create to your account and makes them available to
all your Replit Apps. The Replit App from which you create the bucket automatically
receives access.
You can control which of your Replit Apps have access to a specific bucket, which lets you
share data efficiently and securely.
To grant your Replit App access to a bucket from another app on your account:
1. Select
**Add an existing bucket** from the bucket menu at the top left of the App Storage tab.
2. In the **Choose a Bucket** dialog, choose the bucket you want to add and select **Add Bucket to Repl**.
To revoke your Replit App's access to a bucket:
1. Navigate to the **Settings** view in the **App Storage** tab.
2. From the bucket dropdown in the top left of the tab, select the bucket name.
3. Select **Remove Bucket from Repl** and confirm removal in the confirmation dialog.
### Programmatic access to App Storage
To access App Storage from your Replit App, use one of the following libraries:
* Replit App Storage SDK, available for JavaScript and Python
* Google Cloud Storage client library
For instructions on how to use the client libraries, see the following resources:
* [JavaScript App Storage SDK](/features/sdks/object-storage-javascript-sdk/): Client reference for the JavaScript SDK
* [Python App Storage SDK](/features/sdks/object-storage-python-sdk/): Client reference for the Python SDK
* [Google Cloud Python SDK example app](https://replit.com/@matt/GCS-Python-Uploads?v=1): Remix this app to manage objects using the Google Cloud Python SDK
## Billing and resource usage
To monitor your App Storage usage, navigate to the Usage page.
To learn more about App Storage pricing, see [App Storage Billing](/billing/object-storage-billing).
# Fix a published app using a shared database
Source: https://docs.replit.com/features/data-and-storage/shared-database-migration
Step-by-step instructions for updating a published app that still uses a database originally created for another app.
Some older published apps may still be connected to a development database that was originally created for a different app.
This can happen with older apps that were forked or remixed on Replit. Under the legacy Neon setup, a fork could keep using the original app's database connection. As part of Replit's move to fully isolate development and production databases, older shared development databases are being removed and published apps need to move to their own production databases.
Use this guide if your published app is showing database connection errors, or if `DATABASE_URL` in Secrets panel still points to `neon.tech`.
The older shared database will be shut down on **June 8, 2026**. Update your
published app before then to avoid downtime or permanent data loss.
## Before you start
Your published app needs its own **production database**. The development database shown in the **Database** panel should not be used directly by published apps.
To fix this, first figure out which situation you are in:
* **Case 1:** The data you want is already present in the database shown in the **Database** panel for your app.
* **Case 2:** The **Database** panel does not show the data you need, because your published app is still using the older shared development database.
## How to tell if your published app is using a shared database?
Your published app is affected if any of the following are true:
* Your published app shows database connection errors after the database upgrade
* Your app was remixed from another app that had a database **before January 9, 2026**
## How to check if your published app is using the shared database from the source app?
### Step 1: Open the Database panel in the source app
Get the value from `NEON_DATABASE_URL` or from `DATABASE_URL` if `NEON_DATABASE_URL` does not exist.
Not every affected app will have `NEON_DATABASE_URL`. If it is missing, that
usually means you should use the current `DATABASE_URL` from the published
app's Secrets if it still points to `neon.tech`.
### Step 2: Open the Publish panel in the published app
To check the database URL for your published app:
1. Open your app in Replit
2. Open **Publishing** panel
3. Open **Adjust Settings**
4. Open **Secrets**
5. Look for `DATABASE_URL`
### Step 3: Compare the database url from the source app in Step 1 and the remix app in Step 2
If they are the same, your published app is using a shared Neon development database from the source app.
## How to copy data from source app to the published app?
After confirming that your published app is using the shared development database from the source app, the next step is to transfer the necessary data to the published app. There are two scenarios to consider:
* Case 1: The Database panel in the published app already contains the required data.
* Case 2: The Database panel in the published app does not contain the required data.
### Case 1: The Database panel already shows the data you need
This is the easiest path if the data you need is already visible in the **Database** panel for your app.
#### Step 1: Confirm the data is present
Open the **Database** panel in the published app and make sure the tables and data you need are there.
If you don't see the data you need in the Database panel, pause here. You'll want to follow the steps in [Case 2](#case-2-the-database-panel-does-not-show-the-data-you-need) to migrate your data properly.
#### Step 2: Publish or republish with a production database
1. Open your app in the Project Editor
2. Select **Publish** or **Republish**
3. Turn on **Create production database**
4. Turn on **Set up your production database with your current development data**
5. Complete the publish flow
Publishing creates a new version of your published app and automatically sets its `DATABASE_URL` to the new production database. You do not need to update that secret manually during this flow.
Copying to production overwrites any existing production data. See [Production
Databases](/features/data-and-storage/development-and-production) for
more details about restoring or managing your production database.
#### Step 3: Verify the published app
Open your published app and confirm that your data is accessible and the app works correctly.
### Case 2: The Database panel in the published app does not show the data you need
Follow these steps to export the data if you do not see the needed data in your published app's **Database** panel.
If your published app is still connected to a database from another app, you’ll see an "external database detected" warning in the Database panel.
If people are still using your app and saving new data, plan a short
maintenance window before exporting data.
#### Step 1: Export the data from the old database
Open the **Shell** in the Project Editor and run:
```bash theme={null}
pg_dump -Fc "database_url" --no-owner --no-privileges -f backup.dump
```
`database_url` is the database URL obtained from [Step 1: Open the Database panel in the source app](#step-1-open-the-database-panel-in-the-source-app).
### Step 2: Remove the old `DATABASE_URL` from your app's Secrets
1. Open the **Secrets** tool in the Project Editor
2. Find the old `DATABASE_URL`
3. Delete it
4. Refresh the page or reopen the **Database** panel
After this, your app should stop pointing at the old shared database and use its current development database again.
### Step 3: Import the data into your app's current development database
Once the old `DATABASE_URL` secret is removed, your app's current development database should be available again as `$DATABASE_URL` in the Project Editor.
Return to the **Shell** in the Project Editor and run:
```bash theme={null}
pg_restore --clean --if-exists --single-transaction --no-owner --no-privileges --exit-on-error -d "$DATABASE_URL" backup.dump
```
This loads the exported data into your app's current development database.
### Step 5: Follow Case 1 to publish or republish with a production database
Once the **Database** panel shows the correct data, follow [Case 1](#case-1-the-database-panel-already-shows-the-data-you-need) to publish or republish with **Create production database** and copy that data into production.
### Step 6: Verify the published app
Open your published app and confirm that your data is accessible and the app works correctly.
## Troubleshooting
### The import fails because tables already exist
The `pg_restore --clean --if-exists` command above drops and recreates matching objects from the dump before restoring them.
### The import fails with role or policy errors
If your database uses custom PostgreSQL roles or role-based policies, the import may fail because those roles do not exist in the new database yet.
Replit's automatic Helium migration attempts to recreate role stubs before restoring, but the manual process above does not. If you run into role-related errors during `pg_restore`, [contact support](https://replit.com/support) for help.
### I already fixed the app
If your published app already has its own production database and is working correctly, you do not need to do anything else.
## Need more help?
If you are unsure which case applies to your app, or if you run into problems during the migration, [contact support](https://replit.com/support).
## Related docs
* [Database upgrade](/features/data-and-storage/development-and-production#database-infrastructure-upgrade)
* [Production databases](/features/data-and-storage/development-and-production)
* [Database](/features/data-and-storage/sql-database)
# Database
Source: https://docs.replit.com/features/data-and-storage/sql-database
Learn how to use Replit's built-in SQL database to store and retrieve data for your app.
Replit Database uses a fully-managed SQL database that lets you add persistent data storage to your Replit App from the Project Editor.
The fastest way to get started is to ask **Agent** to add a database to your app. Agent will set up the integration, create the database schema, and update your app to store and retrieve data.
## Features
The Replit Database tool provides the following features:
* **Database tools**: Run queries, manage database schema, and visualize data with the built-in SQL tools
* **Time travel**: Restore your database to any **Agent** checkpoint. See [Data recovery](/features/data-and-storage/data-recovery)
* **Free storage**: Includes 20GB of free storage for every Replit App.
* **Environment variables**: Use environment variables in your Replit App to securely access the database
Prior to December 4th, 2025, the development database was hosted on Neon and has a few crucial differences.
See [Development and production](/features/data-and-storage/development-and-production#legacy-development-database) for more details.
## Usage
You can access the Replit Database tool directly in the Project Editor.
The following sections guide you through setting up and managing your Database.
1. Open the **Tools** pane and select **Database** under **Replit Cloud**.
2. The landing view lists your databases. Select one, such as **Development Database**, to open it.
The Database tool is organized around your list of databases. The landing view shows each database with its storage use, plus your current **Billing Period** and **Hours of Compute Used**. Opening a database gives you three tabs:
* **Overview**: The tables in your database.
* **My Data**: Browse and edit rows, or run SQL queries.
* **Settings**: The connection string, storage usage, and connection details.
### Add a database
All Replit Apps come with a database by default. You can access it by selecting the **Database** tool in the Project Editor.
You can integrate the database with your Replit App by asking the **Agent** to add a PostgreSQL database to your Replit App,
including details on what data your Replit App should store. The Agent will create the database schema
and update your app to communicate with the database.
### Security features
When you add a database integration using **Agent**, it adds an Object-Relational Mapper (ORM)
that handles all database communications with built-in security.
This ORM layer, combined with Agent's security best practice implementation, protects your app from
exploits through the following features:
* **Schema validation**: Verifies data conforms to expected formats
* **Data sanitization**: Automatically cleans up builder input to prevent SQL injection attacks
## Next steps
* [Development and production](/features/data-and-storage/development-and-production): Your two databases, the infrastructure upgrade, and the legacy Neon comparison.
* [Work with your data](/features/data-and-storage/work-with-your-data): Browse, edit, and query your data.
* [Connection details](/features/data-and-storage/connection-details): Credentials and external tools.
* [Data recovery](/features/data-and-storage/data-recovery): Restore development or production data.
# Work with your data
Source: https://docs.replit.com/features/data-and-storage/work-with-your-data
Browse, edit, export, and query your database from the My Data tab, with visual tools or SQL.
The **My Data** tab is where you look at and change what's in your database. Open the **Database** tool, select a database, then select **My Data**. You can work visually or run SQL directly.
To edit production data, select the production database, open **My Data**, and toggle **Edit**. Be careful: this is your live app's real data.
## Browse and modify data visually
The Database tool includes Drizzle Studio , a tool that lets you browse and modify data visually. These visual tools help you avoid syntax errors and offer the following functionality:
* Filter and sort data to focus on specific information
* Export data to a file for external use
* Insert or modify row data
* Create and manage schema, tables, views, and enums
## Run SQL commands
The SQL runner lets you run SQL commands on your database and view the results.
From the **Database** tool:
1. Select the **My Data** tab
2. Select **SQL runner**
To run a query, enter the SQL statement in the text area and select the adjacent run button:
You don't need to write SQL yourself. Ask Agent to query or change your data, and it writes and runs the SQL for you.
## Next steps
* [Connection details](/features/data-and-storage/connection-details): Connect an external SQL client.
* [Data recovery](/features/data-and-storage/data-recovery): Undo unwanted data changes.
# External Access Tokens
Source: https://docs.replit.com/features/deployment-customization/external-access-tokens
Let CI pipelines, webhooks, and other automated services reach your private Replit app without signing in.
External access tokens are bearer tokens you mint for a specific Replit App.
They let automated services — CI pipelines, webhooks, status-check pingers, Slack
bots, internal scripts — reach the app even when its URL is locked down by
[a Private Dev URL ](/features/publishing/private-deployments)
or by a [Private Deployment](/features/publishing/private-deployments).
Treat each token like a password: anyone who has it can reach your app until
the token expires or you revoke it.
External access tokens are available on the Replit Core and Pro plans.
Enterprise customers must request opt-in from Replit before the feature is
enabled for their workspace. Tokens only appear in the publishing settings
once the deployment is made private.
## When to use a token
Reach for an external access token when something *outside* your browser needs
to call your private Replit App. Common cases:
* A GitHub Actions workflow that runs a smoke test against your dev URL on
every commit.
* An uptime monitor (Better Stack, Pingdom, UptimeRobot) hitting a health
endpoint on your published app.
* A webhook receiver — Stripe, Slack, GitHub — POSTing to a Private Deployment.
* A `curl` or `fetch` call from a teammate's machine while debugging.
External access tokens are designed for **API traffic**, not for opening UI
pages in a browser. Single-page apps (Vite, Next.js, etc.) load JavaScript
bundles in follow-up requests that won't carry your token, so those requests
fail. For interactive browsing, sign in normally instead.
## Token environments
Each token is bound to one environment:
| Environment | Where it works | Use for |
| :------------ | :----------------------------------------------------------------- | :-------------------------------------------------- |
| `Development` | The app's workspace dev URL (`*.replit.dev`) | Hitting a running Repl during development |
| `Production` | The app's published deployment (`*.replit.app` and custom domains) | Hitting a Private Deployment from external services |
A `Production` token is tied to the *currently published* deployment. If you
re-publish onto a fresh deployment, existing production tokens stop working
and you need to mint new ones.
## Create an external access token
Open the app you want to expose, then open the **Publishing** tool.
Select **Adjust settings** to expand the redeploy options.
In the **Security** section, find **External access tokens**.
Select **Create access token** and fill in:
* **Label** (optional): a short name so you can recognize the token later,
such as `CI` or `Stripe webhook`. Maximum 120 characters.
* **Environment**: choose `Development` or `Production` based on where the
calling service needs to reach the app.
* **Expires after**: pick a lifetime — `1 hour`, `24 hours`, `7 days`,
`30 days`, `3 months`, `1 year`, or `5 years`. Pick the shortest window
that fits the job. There is no "never expires" option.
Select **Create**.
Replit shows the token **once**. Copy it now — once you close the dialog there
is no way to see the token again. If you lose it, revoke that token and mint a
new one.
The reveal screen offers two copy actions:
* **Copy query parameter** — copies `?project-protection-bypass=` for
appending to a URL. Handy for quick `curl` checks.
* **Copy token only** — copies the raw token, suitable for sending in an
`Authorization: Bearer` header.
Creating your first token automatically turns on external access for the app, if
it wasn't on already. Without shielding the token has nothing to bypass.
## Use a token
Present the token in one of two ways:
### Authorization header (recommended)
```bash theme={null}
curl -H "Authorization: Bearer " https://your-app.replit.app/health
```
This is the right choice for almost everything — webhooks, CI scripts,
backend-to-backend calls. The token never appears in logs that capture URLs
and never lands in your browser history.
### Query parameter
```bash theme={null}
curl "https://your-app.replit.app/health?project-protection-bypass="
```
Use the query-parameter form only when you can't set headers — for example, a
service that only takes a URL. URLs with tokens often end up in proxy logs,
shell history, and screenshots, so prefer the header form whenever you can.
## Manage existing tokens
The **External access tokens** section lists every token you've created for
the app — newest first — along with its label, environment, creation date,
expiry, and revocation status. The last few characters of the token are shown
on each row to help you tell tokens apart, since the full value is only ever
displayed at creation time.
You only see tokens *you* created. Other collaborators' tokens are private to
them, even if you own the app.
## Revoke a token
Revoke a token whenever it's no longer needed, or as soon as you suspect it
may have leaked. To revoke:
Open the **External access tokens** section in the app's publishing settings.
Find the token in the list and select the trash icon.
Confirm the revocation.
Revocation is **immediate and irreversible**. Any traffic still using the
token starts getting rejected within seconds. If you need access again, mint a
new token.
You can only revoke tokens you created yourself. Removing a collaborator from
the workspace automatically revokes the tokens they minted for that app.
## Keep your tokens safe
External access tokens are credentials. Handle them with the same care you'd
give an API key or password.
### Do
* **Store tokens in a secret manager** — GitHub Actions secrets, your CI
vendor's vault, your cloud provider's secret store, or a password manager.
Never commit them to a repository.
* **Use short lifetimes** when you can. A 7-day token for a one-off
integration is safer than a 5-year token left lying around.
* **Label every token** so future-you knows what it's for and whether it's
still in use. Unlabeled tokens are the first ones to leak and the last ones
to get revoked.
* **Mint a separate token per consumer.** One token per CI job, one per
webhook source, one per uptime check. When something gets compromised — or
a vendor is no longer needed — you revoke just that one.
* **Prefer the `Authorization` header** over query parameters so the token
doesn't leak through URL logs, browser history, or referer headers.
* **Revoke immediately** if a token might have been exposed — a leaked log,
a public repository commit, a screen-share, a former employee's laptop.
Revocation takes effect right away; mint a replacement afterwards.
### Don't
* **Don't share a token across teammates or services.** If two systems share
one token, you can't revoke one without breaking the other.
* **Don't paste tokens into chat, email, screenshots, or issue trackers.**
These channels get archived, indexed, and shared in ways you can't predict.
* **Don't embed tokens in client-side code** — browser apps, mobile apps,
desktop binaries. Anything shipped to a user's device should be considered
public.
* **Don't rely on tokens for browser sessions.** Tokens work for API calls,
not for loading SPAs in a browser tab. Use a normal Replit sign-in for that.
* **Don't pick a 5-year expiry by default.** Match the lifetime to how long
the consumer actually needs access.
## Troubleshooting
Production tokens are bound to a specific published deployment. If you
re-published the app — for example, by changing deployment type or
destroying and recreating the deployment — existing production tokens are
invalidated. Mint a new token from the new deployment's settings.
External access tokens are intended for API traffic, not for browser
sessions. When a single-page app loads in a browser, the initial HTML
request can carry the token via query parameter, but follow-up requests for
JavaScript bundles, CSS, and API calls won't include it and will be
rejected. To browse the app interactively, sign in to Replit normally.
No. Replit only shows the token once, at creation time. The list view shows
metadata (label, environment, expiry, last few characters) but never the
full token value. If you lost it, revoke that token and create a new one.
## Next steps
* [Private Deployments](/features/publishing/private-deployments):
the underlying access-control feature these tokens bypass.
* [Replit App Access Management](/teams/identity-and-access-management/repl-access-management):
manage which Replit users can sign in to your private apps.
# Static Deployment Configuration
Source: https://docs.replit.com/features/deployment-customization/static-deployments-advanced
Learn how to configure HTTP headers, routing rules, and URL rewrites for static deployments.
This guide covers the following web server-level configurations:
* [Add response headers](#add-response-headers)
* [Create a custom 404 page](#create-a-custom-404-page)
* [Define URL path rewrites](#define-url-path-rewrites)
## Add response headers
Custom **response headers** let you add HTTP header instructions to requests that match specific paths.
A response header is a name-value pair that provides instructions to browsers on how
to interact with the requested content.
For example, you can specify the `Access-Control-Allow-Origin` header to specify which domains the browser can access for that page.
To create this entry, add the following to the `.replit` file in your Replit App's root directory:
```
[[deployment.responseHeaders]]
path = "/*"
name = "Access-Control-Allow-Origin"
value = "origin"
```
This response header includes the following parameters:
* **path**: URL path pattern that matches requested resources
* **name**: HTTP header name
* **value**: Value of the HTTP header
You can add multiple `deployment.responseHeaders` entries to the `.replit` file.
To apply configuration updates, republish your Replit App.
#### Reserved headers
Replit reserves the following HTTP headers and does not allow you to configure them.
```text [expandable] theme={null}
Accept-Ranges
Age
Allow
Alt-Svc
Connection
Content-Encoding
Content-Length
Content-Range
Date
Location
Server
Set-Cookie
Trailer
Transfer-Encoding
Upgrade
```
To learn more about HTTP headers, see
HTTP headers
in the MDN web documentation.
## Create a custom 404 page
A custom 404 page displays when users request URL paths that don't match any files or rules in your published app.
To add a custom 404 page, create the page content in a file named `404.html` in the root directory of your Replit App.
When users attempt to access a URL path that doesn't exist, they see the rendered HTML of the custom 404 page.
## Define URL path rewrites
You can define URL rewrites to change the URL path of a request before your Replit App processes it.
The original URL remains visible in the browser, but the server loads the resource defined in the rewrite rule.
For example, you can specify all requests that start with `/app` load the contents of the `/app/index.html` file.
To create this entry, add the following to the `.replit` file in your Replit App's root directory:
```
[[deployment.rewrites]]
from = "/app/*"
to = "/app/index.html"
```
* **from**: URL path pattern that matches requested resources
* **to**: Rewritten path, which corresponds to a file in your Static Deployment.
You can add multiple `deployment.rewrites` entries to the `.replit` file.
The server interprets the entries in the listed order and ignores duplicates.
To apply configuration updates, you must republish your Replit App.
The following sections describe URL rewrite rule constraints.
### Path matching
The following constraints apply to the `from` and `to` parameters in rewrite rules:
* Matches must be exact unless a `*` is present
* A `*` matches the remainder of a path
* A `*` is only valid at the end of the path
* When including `*` in the `from` parameter, you can include it in the `to` parameter to represent the matching section of the path
For example, if your `.replit` file contains the following rewrite:
```
[[deployment.rewrites]]
from = "/v1/*"
to = "/v2/*"
```
When a user visits the path `/v1/about-us.html`, the rewrite serves the file located at `/v2/about-us.html`.
### Shadowing
Shadowing occurs when a rewrite matches a URL path that also matches a file in your Static Deployment.
When this occurs, the cloud server ignores the rewrite and serves the file directly.
For example, suppose your published app contains the following files:
* `index.html`
* `about.html`
The `.replit` file contains the following rewrite:
```
[[deployment.rewrites]]
from = "/*"
to = "/index.html"
```
When a user visits `/register.html`, the server rewrites the request to `/index.html` and serves that file.
However, if a user visits `/about.html`, the server ignores the rewrite and serves the `about.html` file since it exists in your Static Deployment.
### Domain restrictions
Rewrites only work for requests to your Static Deployment's primary domain and can
only redirect to files within your Static Deployment.
# Replit Themes
Source: https://docs.replit.com/features/editor/themes
Learn how to personalize the Project Editor with custom themes, color schemes, and syntax highlighting.
Themes in Replit allow you to customize the appearance of the Project Editor, from background colors and UI elements to syntax highlighting for your code. Personalize your development environment for better readability, reduced eye strain, and a more enjoyable coding experience.
## Creating a custom theme
Follow these steps to create and customize your own theme:
1. Open [Settings](https://replit.com/settings) and go to **User** → **Personalization** (or the **Themes** section)
2. Select **Create new theme**
3. Enter a title, select a color scheme (light or dark), and add an optional description
4. Select **Create Theme** to open the Themes Editor
Global theme settings control the overall UI appearance:
* **Background**: Sets the base color for most UI surfaces
* **Outline**: Controls the color of borders and dividers
* **Foreground**: Determines text and icon colors
* **Primary**: Defines the color for buttons and interactive elements
* **Positive**: Applies to success indicators like the **Run** button
* **Negative**: Displays for errors and destructive action warnings
Select **Apply Theme** to start using your custom theme immediately.
## Syntax highlighting
Customize how different code elements appear to improve readability and comprehension.
Proper syntax highlighting makes code easier to scan and understand at a glance. Choose colors that work well together and provide sufficient contrast against your background.
| Element | Description |
| ------------------------ | ---------------------------------------------------------------------- |
| **Variable Names** | Applies to variables where no declaration keyword is used |
| **Variable Definitions** | Colors variable names when defined with keywords like `const` or `var` |
| **Function References** | Applies when calling functions |
| **Function Definitions** | Colors function names during declaration |
| **Keywords** | Highlights language keywords like `import`, `function`, and `return` |
| **Property Names** | Colors property access from variables |
| **Property Definitions** | Used when defining object properties |
| **Function Properties** | Applies when calling methods on objects |
| **Tag Names** | Used for HTML and JSX tags |
| **Type Names** | Colors type annotations in typed languages |
| **Class Names** | Applies to class declarations and references |
| **Attribute Names** | Highlights HTML and JSX attributes |
| **Comments** | Applies to all code comments |
| **Strings** | Colors string literals |
| **Numbers** | Highlights numeric values |
| **Booleans** | Formats boolean values (`true`/`false`) |
| **Regular Expressions** | Colors regex patterns |
| **Operators** | Highlights operators like `+`, `-`, `*`, and `/` |
| **Brackets** | Colors square and angle brackets when appropriate |
## Theme design best practices
Create visually appealing and functional themes by following these guidelines:
### Color and contrast
* **Balance contrast**: Ensure sufficient difference between background and foreground elements
* **Create cohesive palettes**: Choose colors that complement each other rather than clash
* **Maintain consistent brightness**: Keep a similar brightness level across syntax elements
* **Design for accessibility**: Consider users with visual impairments by avoiding low-contrast combinations
Common theme design issues to avoid:
* Excessive brightness differences between syntax elements
* Poorly matched colors that create visual discord
* Insufficient contrast between code and background
## Managing your themes
Access and manage all your installed themes in [Settings](https://replit.com/settings) under **User** → **Personalization** (or the **Themes** section).
### Switching themes
Select the button next to a theme's title to activate it as your current theme.
### Editing themes
Modify your custom themes by selecting the three-dot menu and clicking **Edit**.
Only custom themes that you've created can be edited or deleted. Default themes and themes created by others cannot be modified.
### Deleting themes
Remove custom themes using the three-dot menu and selecting **Delete**.
## Exploring community themes
Discover themes created by the Replit community on the [Themes Explore Page](https://replit.com/themes).
### Finding themes
* Search by name to find specific themes like "Atom One Dark"
* Filter by author to explore themes from specific creators
* Browse by color scheme to find light or dark themes
* Search by specific colors to match your preferences
Preview any theme before installing it to see how it will look in the Project Editor.
## Porting from VS Code
Import your favorite VS Code themes to Replit by mapping equivalent colors during the theme creation process.
## Publishing your theme
Share your custom themes with the Replit community by following these steps:
1. Open the Themes Editor for your custom theme
2. Select the **Publish** button
3. Complete the title and description fields
4. Submit your theme
Once published, your theme will appear on the Themes Explore Page, where other users can preview and install it.
## Related resources
* [Project Editor features](/features/workspace-tools/console) - Explore other Project Editor features like Console, Shell, and Multiplayer
* [User settings](/features/editor/user-settings) - Configure your Project Editor preferences
* [Keyboard shortcuts](/features/editor/keyboard-shortcuts) - Speed up your workflow with keyboard shortcuts
* [Invite teammates](/build/invite-teammates) - Collaborate in real-time with team members
# User Settings
Source: https://docs.replit.com/features/editor/user-settings
Learn how to personalize the Project Editor with user settings that apply across all your apps.
The User Settings Project Editor tool offers options to customize appearance, behavior, and
keyboard shortcuts for your account.
## Features
You can customize your Replit App creation experience with these settings categories:
* **Theme customization**: Select between light and dark themes for the Project Editor
* **Code intelligence**: Configure AI-powered features that enhance your app creation experience
* **Editor preferences**: Adjust how the file editor behaves and appears
* **Notification controls**: Manage alert preferences
* **Accessibility options**: Make Replit work better for users with specific needs
* **Keyboard shortcuts**: Set key combinations to run common actions and navigate the GUI
## Usage
From the left **Tool dock**:
1. Select **All tools** to see a list of Project Editor tools.
2. Select **User Settings**.
From the **Search bar**:
1. Select the magnifying glass at the top to open the search tool
2. Type "User Settings" to locate the tool and select it from the results.
### Appearance
Customize the following settings related to the appearance of the Project Editor:
* **Theme selection**: Choose from light and dark theme presets, community themes , or your custom theme
* **Custom themes**: Create personalized color schemes using the [Themes](/features/editor/themes) editor
### File editor preferences
Control the file editor's appearance and behavior using the following settings:
* **Font size**: Adjust text size for readability
* **Auto close brackets**: Automatically insert closing brackets when you type an opening bracket
* **Indentation detection**: Automatically detect indentation settings when you open a file
* **Format pasted text indentation**: Reformat pasted code to follow proper indentation
* **Indentation character**: Choose between spaces and tabs for indenting code
* **Indentation size**: Set the number of columns for each indentation level
* **Wrapping**: Configure line wrapping behavior
* **Minimap**: Include a navigable code overview in a sidebar
* **Multiselect modifier key**: Set the keyboard modifier for multi-file selection
* **Filetree Git status**: Display Git status indicators in the file tree
### Code intelligence
Configure AI-powered tools using the following settings:
* **Semantic tokens**: Use enhanced syntax highlighting powered by language servers
* **AI code completion**: Add inline code suggestions as you type
* **Accept suggestion on commit character**: Automatically accept code suggestions by typing certain characters
### Shell and Preview preferences
Customize the Shell and Preview tool behavior:
* **Shell bell audible indicator**: Play sounds when the Shell tool encounters issues
* **Automatic preview**: Open the Preview tab automatically when a server becomes available
* **Forward opened ports automatically**: Configure handling newly detected ports
### Notifications
Manage the following notification settings:
* **Agent audio notification**: Play sounds when Agent requests feedback
* **Agent push notification**: Receive mobile push notifications when Agent requests feedback
#### Production alerts
**Production Alerts** is a separate email notification setting that keeps you informed about the health of your published apps. It is independent of product and marketing emails, so you stay updated on what matters without extra noise.
Turn on **Production Alerts** to receive emails about the following:
* **Uptime incidents**: Get notified when a published app goes down or has trouble staying online.
* **Security vulnerabilities**: Get notified about weaknesses found in the software your app depends on, so you can fix them before they cause problems.
* **Model updates**: Get notified when a language model your app uses changes or needs your attention.
To find this setting:
1. Open **Settings** from your account menu.
2. Select the **Personalization** tab.
3. Scroll to the **Email Notifications** section to find **Production Alerts**.
When a published app uses an out-of-date language model, Replit prepares a draft task to upgrade you to a supported model. You get an email with a link to the task, so you can finish the upgrade with one review.
### Accessibility
You can customize the following accessibility setting:
* **Accessible terminal output**: Enable screen reader compatibility for the Shell and Console tools
### Keyboard shortcuts
To access the keyboard shortcut preferences, select the **Keyboard shortcuts** tab in the User Settings tool.
You can search for key combinations using the following methods:
* **Name**: Type the name or description of the keyboard shortcut in the search field
* **Key combination**: Select the and enter the key combination
Use the following actions to manage shortcuts:
* **Add**: Select **Add shortcut**
* **Update**: Select the pencil icon
* **Remove**: Select the trash icon
# Open in Replit
Source: https://docs.replit.com/features/integrations/open-in-replit
Learn how to create an Open in Replit button that lets visitors start building from your app or website.
## Building a link
To build a link, use the format below.
```
https://replit.com/?stack=Build&prompt=A4Jw9gtsAuQ&referrer=replit-docs
```
### URL parameters
Make sure to include the following parameters in your URL.
| Parameter | Type | Description | Required/Optional |
| ---------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| `stack` | string | The build mode to use. Must be either `Design` or `Build`. `Design` opens [Canvas](/design/canvas) for visual prototyping. `Build` opens [Agent](/features/agent/overview) for full app development. | Required |
| `prompt` | string | Text describing the application to build, **compressed using [LZ-string](https://pieroxy.net/blog/pages/lz-string/index.html)**. The uncompressed prompt can be up to 50,000 characters. | Required |
| `referrer` | string | The name or URL of the page containing this link. Used for attribution. | Optional |
The `prompt` parameter must be compressed using LZ-string compression before
being added to the URL. This helps URLs remain within browser length limits
and parse correctly.
### Interactive link builder
Use the tool below to generate your **Open in Replit** link. Enter your prompt, select the stack mode, and the link will be generated automatically with LZ-string compression applied.
### Compressing prompts
To create a valid **Open in Replit** link, you must compress your prompt using LZ-string compression. Here's how:
#### JavaScript/TypeScript
```javascript theme={null}
import LZString from 'lz-string';
const prompt = 'Create a todo app with a clean, modern design';
const compressed = LZString.compressToEncodedURIComponent(prompt);
const url = `https://replit.com/?stack=Design&prompt=${compressed}`;
```
#### Python
```python theme={null}
import lzstring
prompt = "Create a todo app with a clean, modern design"
compressed = lzstring.LZString().compressToEncodedURIComponent(prompt)
url = f"https://replit.com/?stack=Design&prompt={compressed}"
```
Use `compressToEncodedURIComponent` to ensure the compressed string is
URL-safe.
### Examples
**Canvas with basic prompt**
```
https://replit.com/?stack=Design&prompt=AoUwTgzg9gdghgGwAQAcpgC4DMoIJZRIR4YgB0QA
```
**Build Mode with detailed prompt**
```
https://replit.com/?stack=Build&prompt=LIQw1gpgBCUE4HsQBMC2IAOUMBsQDt8BLfAcygBcEEcoB3ACwjmg0WQFcBjCqdfEKWYBnKFwJiWICtALIoANyLCOIHEQBe0AI6q4MuDgCe2dt16IU6DMIB0UAJL4uODsmjI4g0iABGOaHE4ZFEAMwQ4KBIiCiJpIgUIYQAaUyIImJMKQRSYfHkuGgixBGQScl8siBBUewARJKJSfCjeOhiGGFMEUKThdIFaWNQIdXxoJQg6PIKAglTUUuYWgFUHWyA&referrer=replit%20docs
```
## Stack modes
### Canvas
Use `stack=Design` to open your prompt in [Canvas](/design/canvas), which is optimized for:
* Visual design and UI prototyping
* Rapid iteration on layouts and styling
* Creating design mockups
* Frontend-focused development
### Build Mode
Use `stack=Build` to open your prompt in [Agent](/features/agent/overview), which is optimized for:
* Full-stack application development
* Backend logic and APIs
* Database integration
* Complex functionality and features
## Best practices
* Keep prompts concise and focused on core features for best generation results.
* Use clear, descriptive language that explains what you want to build.
* Choose the appropriate `stack` mode for your use case (Design for UI/UX, Build for full apps).
* Test your compressed URLs to ensure they parse correctly before sharing.
* Consider your audience's technical level when crafting prompts.
### User authentication
Regardless of your Replit authentication state, you'll need to provide input before creating the app. Usually this means submitting the prompt.
### Error handling
If the URL is malformed or parameters are invalid, Replit won't fill the prompt. Possible causes include:
* Missing required parameters (`stack` or `prompt`)
* Invalid `stack` value (must be `Design` or `Build`)
* Failed decompression of the `prompt` parameter
* Browser "URL too long" errors (though compression helps mitigate this)
### Security considerations
**Open in Replit** links could be used to create apps with unintended behavior
or security vulnerabilities. Only click links from trusted sources.
When sharing **Open in Replit** links:
* Review prompts carefully before sharing publicly
* Consider the security implications of the apps being generated
* Avoid including sensitive information in prompts
* Be transparent about what the link will create
## Related resources
* [Canvas documentation](/design/canvas)
* [Agent documentation](/features/agent/overview)
* [Replit AI integrations](/features/integrations/overview)
# Agent Integrations
Source: https://docs.replit.com/features/integrations/overview
Learn what integrations Agent supports and how they activate automatically based on your prompts.
Agent supports four types of integrations so you can go from idea to app, fast:
* **Replit managed**: Built-in integrations that work automatically. Create an app and your Agent can start using these right away.
* **Connectors**: First-party integrations Replit supports. Sign in once. Agent can read and write to these services directly from chat — pull data, create records, send messages — and build with them across your apps.
* **External integrations**: Trusted third-party services you can build with. Ask Agent to set them up; you'll provide API keys.
* **Agent services**: Paid third-party APIs that Agent uses behind the scenes — no API keys required. Usage is billed to your Replit credits.
**Plan availability**: Most connectors require a Core, Pro, or Enterprise subscription, and some are available on the Free plan. The connector catalog in your workspace shows which connectors you can use on your current plan. Free plan builders can always use Replit-managed integrations like databases, authentication, and more.
## Getting started
To use an integration, mention the service or functionality you need. For example:
Create a web app that uses Stripe to accept payments and SendGrid to send confirmation emails
Agent automatically detects these keywords and implements the necessary code and configuration.
### Let Agent suggest a connector
Sometimes several services can do the same job, like storing files or sending email. When you ask for a capability without naming a provider, Agent shows a short list of connectors that fit. Choose the one you want.
Select a provider, then sign in once to connect your account. Agent uses your choice as it builds. You can also ask for a specific service by name to skip the list.
## Replit managed integrations
These built-ins require no setup. Just ask Agent to use them.
Managed PostgreSQL for relational data and SQL queries, built into every Replit App.
Add Replit Database to my app
Built-in storage for app files and assets.
Use Replit App Storage to save files
Cloud-based storage for images, videos, and other files.
Add App Storage to my app to store files
Native authentication so people can sign in with Replit.
Add Replit Auth to my app
Configure and manage custom domains for your app.
Set up a custom domain for my app
## Connectors
Connectors let Agent read and write to your services directly. They are first-party integrations supported by Replit. Sign in once on the Connectors page in the Project Editor, then reuse those connections across apps.
Connections are tied to your Replit account and persist across all your apps. Connect a service once and use it in any app you create.
### Available connectors
* **Google Drive**: Access and manage files and folders
* **Google Docs**: Create, read, and edit documents
* **Google Sheets**: Read and write spreadsheet data
* **Google Slides**: Create, read, and edit presentations
* **Google Calendar**: Read and write events and settings
* **Gmail**: Send, receive, and manage emails
* **OneDrive**: Access and manage files and folders
* **Outlook**: Send, receive emails and manage calendar events
* **SharePoint**: Read, write, and manage sites and documents
* **Bitbucket**: Access repositories, projects, and workspaces
* **Bitbucket (Source Control)**: Connect Replit's source control to Bitbucket
* **GitHub**: Access repositories, users, and organizations
* **GitHub (Source Control)**: Connect Replit's source control to GitHub
* **GitLab**: Access projects, issues, merge requests, and pipelines
* **GitLab (Source Control)**: Connect Replit's source control to GitLab
* **Linear**: Create and manage issues, comments, and schedules
* **Jira**: Read users and manage work items and issues
* **Asana**: Read tasks and project data
* **Basecamp**: Read and manage projects, to-dos, messages, and schedules
* **Teamwork**: Read and manage projects, tasks, and time entries
* **Confluence**: Read users and groups, write content to spaces
* **Productboard**: Read and update features, releases, and customer feedback
* **Dropbox**: Read files, content, and metadata
* **Box**: Read and access files and folders
* **AgentMail**: Send and receive emails programmatically
* **Discord**: Access guild information and user profiles
* **Intercom**: Read and write conversations, contacts, and support workflows
* **Resend**: Send transactional emails
* **SendGrid**: Send transactional emails
* **Slack**: Search your Slack, read conversations and threads, send messages, and manage canvases
* **Slack Agent**: Build Slack-native agents with deeper workspace integration
* **Slack Agent Builder**: Tooling for designing and configuring Slack Agents
* **Twilio**: Send SMS messages and make voice calls
* **Zoom**: Create and manage meetings, recordings, and contacts
* **Salesforce**: Access CRM data and perform operations via REST API
* **HubSpot**: Read CRM objects, contacts, and deals
* **Zendesk**: Read and write access to Ticket API for support workflows
* **Ashby**: Read candidate, job, and interview data
* **RevenueCat**: Manage in-app purchases and subscriptions
* **Stripe**: Process payments and manage subscriptions. See the [Stripe payments guide](/features/monetization/stripe-payments).
* **Square**: Accept payments and manage orders, customers, and inventory
* **Plaid**: Access financial account balances, transactions, and investment data where supported. See the [Plaid connector guide](/features/integrations/plaid-connector).
* **Shopify**: Provision a Shopify store, build a custom storefront, and manage products and inventory from Agent. See the [Shopify connector guide](/features/integrations/shopify).
* **Browserbase**: Run managed headless browsers for fetch, search, and full session automation
* **ElevenLabs**: Generate AI voice and audio content
* **OpenAI**: Use GPT models for text generation and assistants
* **Quiver AI**: Generate SVG illustrations and vectorize raster images
* **Tripo3D**: Generate 3D models from text or images for games, product mockups, and AR
* **BigQuery**: Query and analyze large datasets
* **Databricks (U2M)**: Connect Databricks Apps with user-to-machine auth
* **Databricks (M2M)**: Connect Databricks with machine-to-machine auth
* **Snowflake**: Query and manage Snowflake data warehouses
* **Microsoft Fabric**: Access analytics, data engineering, and BI services
* **PostgreSQL**: Connect to a PostgreSQL database
* **Hex**: Build and share data notebooks and apps
* **Amplitude**: Access product analytics and user behavior data
* **Segment**: Send customer events and traits to your data pipeline
* **Facebook**: Access pages, posts, and ads data
* **Instagram**: Read media, comments, and account data
* **Mailchimp**: Read and manage audiences, campaigns, and email marketing data
* **Twitch**: Read streams, channels, and viewer activity
* **YouTube**: Read video, channel, and playlist data
* **X**: Read and post to X (formerly Twitter)
* **Sprout Social**: Manage social messages, profiles, and reporting
* **Mobile Maps**: Embed map experiences in mobile apps
* **Airtable**: Read and write to bases, tables, and records
* **Calendly**: Read and manage scheduled events
* **ClickUp**: Read and manage tasks, lists, and spaces
* **Excalidraw**: Create and edit diagrams and whiteboards
* **Monday.com**: Access boards, items, and updates
* **Notion**: Read and write to workspaces and pages
* **Spotify**: Access and manage playlists and library
* **Todoist**: Create and manage tasks and projects
### Use Slack with Agent
Connect Slack to give Agent context from the conversations you can access. Ask Agent to search messages, files, channels, or people, then use the results to answer questions or keep working.
With your permission, Agent can:
* Read private channels, direct messages, and group direct messages that you belong to.
* Read full thread replies when you need the surrounding context.
* Send messages as you.
* Create, read, and update Slack canvases.
Summarize the discussion in my direct message with Alex about the launch plan, then draft a follow-up for me.
Agent can only access Slack conversations and content that your connected Slack account can access.
### Accessing Connectors
You can access Connectors from the sidebar in the Project Editor:
Open your app in the Project Editor.
Select **Connectors** from the sidebar.
Choose **Add new integration** to browse available connectors.
Select **Connect** next to the service you want to integrate.
To disconnect a service, return to the Connectors panel and select **Manage** next to the connected service.
When you select Connect for a service, Replit redirects you to authenticate with that service and grant permissions for Replit to access your data:
### Configuring OAuth App with Replit
**Enterprise only**: Configuring a custom OAuth app requires an Enterprise subscription.
On the Enterprise plan, you can bring your own OAuth app for a connector instead of using Replit's default. This lets your organization own the OAuth client, display your own branding on the consent screen, and control the exact scopes your builders can request.
To configure a connector with your own OAuth app, you need three things from the provider: a **Client ID**, a **Client Secret**, and the **scopes** you want to authorize. You also need to register Replit's callback URL with the provider so authentication can complete.
Sign in to the provider's developer console or admin settings and create a new OAuth 2.0 application. Providers name this step differently — look for options like **Create OAuth app**, **Register application**, or **Create client credentials**.
When the provider asks for an **Authorized redirect URI** (sometimes called **Callback URL** or **Redirect URL**), enter:
```
https://replit.com/connectors/oauth/callback
```
This URL is where the provider sends builders back to Replit after they authorize the app. It must match exactly — trailing slashes, protocol, and subdomain all matter. If you add more than one redirect URI, this one must be included.
After you create the app, the provider shows a **Client ID** and a **Client Secret**.
* **Client ID**: A public identifier for your OAuth app. It's safe to expose in URLs and client-side code.
* **Client Secret**: A confidential value that proves the request is coming from your app. Treat it like a password — never commit it to a repository or share it publicly. Replit stores it securely on your behalf.
Some providers only display the client secret once at creation time. Copy it immediately and store it somewhere safe until you paste it into Replit.
**Scopes** are permissions that define what your OAuth app is allowed to read or write on the builder's behalf. Each provider publishes its own list of scopes in its API documentation.
When you configure the connector in Replit, the scopes you enter must **match exactly** (character-for-character, including any URL prefixes) the scopes you registered with the provider. Common causes of mismatch errors:
* Missing the full URL prefix (for example, `https://www.googleapis.com/auth/drive.file` vs. `drive.file`).
* Extra whitespace or trailing commas.
* Requesting a scope in Replit that isn't enabled on the provider's app.
Start with the minimum scopes your builders need, and add more later if required — most providers let you update scopes without recreating the app.
From your organization's **Connectors** page, select **Add new integration**, choose the service, and paste the **Client ID**, **Client Secret**, and **Scopes** from the provider. Select **Configure** to save.
If authentication fails after configuration, double-check that the redirect URL in the provider matches `https://replit.com/connectors/oauth/callback` exactly and that every scope you entered in Replit is also authorized on the provider's app.
### Example prompts
* "Integrate with Outlook to create an email dashboard"
* "Build a GitHub repository manager using my connected GitHub account"
* "Create a Linear task tracker for my team"
* "Build a Notion-powered website using my connected Notion workspace"
* "Create a Monday.com project dashboard"
Connectors provide authenticated access to your external services, eliminating the need to manage API keys or authentication tokens manually.
Looking for Workspace or organization connector management? See [Managing your connectors](/replitai/managing-connectors).
## External integrations
Trusted third-party services. Ask Agent to set them up; you'll provide API keys.
API keys are stored securely in your app's [Secrets](/core-concepts/project-editor/app-setup/secrets). Agent will prompt you to add the key when needed.
### AI providers
Access GPT models for text generation, analysis, and assistants.
Create a web app that uses OpenAI to summarize text
Use Gemini models for multimodal understanding and generation.
Use Google Gemini to analyze and summarize documents
Access Claude models for reasoning, writing, and coding.
Create a web app that uses Anthropic to generate content
AI-powered search and answer generation with citations.
Create a web app that uses Perplexity to answer questions
Fast, efficient language models for NLP tasks.
Use Mistral to extract key facts from text
Access hundreds of AI models from multiple providers through a single API.
Use OpenRouter to access Llama models for my chatbot
### Business and automation
Trigger automation recipes and call APIs from your apps.
Connect my app to a Workato recipe that syncs leads
Access CRM data and manage contacts.
Connect my app to HubSpot to manage contacts
### Communication and community
Send messages and manage servers from your apps.
Send a message to my Discord channel when a new signup happens
## Agent services
Some capabilities use paid third-party APIs behind the scenes. Agent handles the integration automatically — no API keys or setup required. You're billed at the provider's rate, deducted from your Replit credits.
Search for images across the web using Brave's image search API.
Find product images for my e-commerce store
Generate realistic text-to-speech audio and voice content.
Add voice narration to my app's onboarding flow
Generate images using Google's Gemini image models.
Generate a hero image for my landing page
Agent services are billed at the provider's public API rate. Costs are deducted from your Replit credits and appear on your [usage page](/billing/managing-spend).
## Reconnecting integrations
If a connected service stops working — for example, if your login session expires or permissions change — Replit surfaces a reconnection alert in the Project Editor. Select the alert to reconnect the integration directly, without leaving the editor.
## Debugging connectors
Running into issues connecting a service? These guides walk you through common errors and how to fix them.
If you see **"This app is blocked"** when connecting Google Drive, Docs, Sheets, Calendar, or Gmail, your organization's Google Workspace likely restricts third-party OAuth apps. See the full troubleshooting guide to resolve it.
[Resolve "This app is blocked" for Google connectors](/features/troubleshooting/debugging-google-connectors)
If your Salesforce connector stops working with a **"Connection Expired"** error, your Salesforce organization's refresh token policy is likely configured to expire tokens after a set period. See the full troubleshooting guide to update your Connected App settings.
[Fix Salesforce connection expired errors](/features/troubleshooting/debugging-salesforce-connectors)
# Connect Plaid
Source: https://docs.replit.com/features/integrations/plaid-connector
Set up the Plaid connector so builders can use Agent to build apps that connect financial accounts with Plaid Link for balances, transactions, and investment data.
The Plaid connector is available on paid Replit plans and requires a [team workspace](/features/collaboration/team-workspaces#create-a-team-workspace).
Plaid connects apps to financial institutions. With the Plaid connector, builders can create apps that use account balances, transactions, and investment data where supported by the connected institution.
Setup has two parts. A workspace admin configures the Plaid credentials once in Replit, then each person who uses your app connects their own financial accounts through Plaid Link. Plaid access tokens are scoped per person and stored securely, so your app can use financial data without handling Plaid secrets directly.
## What you can build
Use the Plaid connector to build apps like:
* Personal finance dashboards
* Budgeting and expense categorization tools
* Transaction search and analytics apps
* Portfolio trackers for supported investment accounts
* Financial coaches that summarize spending patterns
## Prerequisites
Before you configure Plaid in Replit, you need:
* A [team workspace](/features/collaboration/team-workspaces#create-a-team-workspace) — Plaid is configured at the team level
* A [Plaid account](https://dashboard.plaid.com/signup)
* A Plaid **Client ID** from the [Plaid dashboard](https://dashboard.plaid.com/developers/keys)
* A Plaid **Secret** for the environment you want to use
* A decision on whether to use Plaid `sandbox` or `production`
Use `sandbox` while testing with Plaid's sample institutions and credentials. Use `production` when your app is ready to connect real financial accounts.
## Configure the Plaid connector in Replit
A workspace admin adds the Plaid credentials to Replit. After the connector is configured, builders can use Plaid data with Agent.
Open your workspace or app settings in Replit and select **Integrations**.
Select **Add new connector**, then choose **Plaid**.
Select `sandbox` or `production`. This must match the Plaid Secret you plan to use.
Paste your Plaid **Client ID** and **Secret** from the Plaid dashboard.
Enter the app name that should appear in Plaid Link. The field is pre-filled with `My Plaid App`; replace it with the name your users should see. Keep it 30 characters or fewer so Plaid can display it correctly.
Select **Configure** to save the connector. Replit stores the credentials securely and uses them when builders connect Plaid accounts.
To change the configuration later, open **Manage connectors** from the Integrations panel and select **Manage** next to Plaid.
For organization-wide connector management, see [Managing your connectors](/replitai/managing-connectors).
## Sign in with Plaid Link
Plaid uses [Plaid Link](https://plaid.com/docs/link/) instead of a standard OAuth redirect. To start the flow, find Plaid in the Connectors table and select **Sign in**. Replit shows a brief consent screen that confirms the connection, then opens Plaid Link.
Plaid Link then opens an embedded flow where each person selects their financial institution and authenticates with that institution.
Each person links their own accounts. Replit stores the resulting Plaid access token for that person's connection and uses it when Agent or your app requests Plaid data.
## Start building with Plaid data
After Plaid is connected, ask Agent to build with the connected financial data. For example:
Build a personal finance dashboard where people connect bank accounts with Plaid Link. Show account balances, monthly spending by category, and the five largest recent transactions.
Create a budgeting app where each person connects accounts through Plaid Link. Import transactions, group them by merchant and category, and show whether they are over budget this month.
Build a portfolio tracker where people connect supported investment accounts through Plaid Link. Show holdings, account balances, and changes over time where data is available.
Plaid data availability depends on the connected institution and the Plaid products enabled for your Plaid account.
## Troubleshooting
Plaid requires a paid Replit plan. If you are on a paid plan and still do not see Plaid, refresh the page and verify that you are in the correct workspace.
If setup shows **This feature requires an enterprise plan**, refresh the page and verify that you are using the correct workspace.
If Plaid still does not appear, contact Replit support so the team can check your workspace configuration.
Plaid may show **This Application** when the configured client name is missing or too long. Edit the Plaid connector configuration and use an app name with 30 characters or fewer.
A Plaid connection can become disconnected if the financial institution requires the account holder to sign in again, if credentials changed, or if permissions were revoked.
Reconnect Plaid from the Integrations or Connectors panel to open Plaid Link and restore access.
Plaid sandbox and production use different credentials and tokens. Make sure the connector environment matches the Plaid Secret you entered and the type of financial accounts you are testing.
## Related documentation
* [Agent integrations](/features/integrations/overview) — Overview of Replit-managed integrations, Connectors, external integrations, and Agent services
* [Managing your connectors](/replitai/managing-connectors) — Configure and manage connectors for your workspace
* [Plaid documentation](https://plaid.com/docs/) — Plaid API, Link, and product documentation
* [Plaid dashboard](https://dashboard.plaid.com/developers/keys) — Find your Plaid Client ID and Secrets
* [Replit x Plaid](https://replit.com/partners/plaid) — Partner page with demos and setup resources
# Replit AI Integrations
Source: https://docs.replit.com/features/integrations/replit-ai-integrations
Learn how to use AI models from OpenAI, Anthropic, Google, and more without needing your own API key.
Replit AI Integrations makes it easy to build AI-powered applications. Get started with models from OpenAI, Anthropic, Google, and OpenRouter immediately—no developer account setup, no API key management. Replit handles everything for you.
## What is Replit AI Integrations?
Replit AI Integrations provides managed access to AI models from leading providers. Build chat apps, content generators, and AI-powered tools without leaving Replit. No need to create external developer accounts, find your API credentials, or manage separate billing.
When you use Replit AI Integrations, Replit manages the provider credentials and bills you at the public API price. Your usage is billed to your Replit credits and appears on your [usage page](/billing/managing-spend), broken down by Existing Replit App.
Replit AI Integrations requires a paid plan (Core, Pro, or Enterprise). You can still build AI apps with your own API key on the [Starter plan](/billing/plans/starter-plan). See [Plan availability](#plan-availability).
## Features
Replit AI Integrations streamlines AI development with built-in access and transparent billing:
* **Zero setup required**: No developer accounts or API keys needed to get started
* **Managed credentials**: Replit handles provider authentication and credential management
* **Transparent billing**: Pay public API prices, billed to your Replit credits
* **Usage tracking**: View your usage per Existing Replit App on your usage page
* **Cross-stack support**: Works across all programming languages and frameworks
* **Optional BYOK**: Bring your own API key if you prefer to use your own credentials
## Getting started
### Using Replit-managed credentials
On a paid plan, when you mention AI functionality or specific providers (OpenAI, Anthropic, Google, or OpenRouter) in your prompt, Agent defaults to using Replit AI Integrations:
Create a web app that uses OpenAI to summarize articles
You can tell which integration is being used by looking for **"OpenAI (Replit managed)"**, **"Anthropic (Replit managed)"**, **"Google (Replit managed)"**, or **"OpenRouter (Replit managed)"** in your initial prompt response. This indicates Agent will use Replit's credentials instead of requiring your own API key.
**For initial builds**: When you submit an initial prompt to create a new app with AI functionality, Replit AI Integrations is matched automatically. Agent will start building with Replit's managed credentials right away.
**For existing Replit Apps**: When Agent detects you want to add AI functionality to an existing Replit App, Agent will explicitly tell you in the Project Editor that it's asking to use Replit AI Integrations instead of your own API key. You'll see a confirmation prompt:
Click "Approve" to continue with Replit-managed credentials, or "Dismiss" if you prefer to use your own API key.
Your usage is automatically tracked and billed to your Replit account at the public API price.
### Bringing your own API key
If you prefer to use your own credentials from OpenAI, Anthropic, Google, or other providers instead of Replit AI Integrations, you have a few options:
**For initial builds**: Include in your prompt that you want to use your own API key:
Create a web app that uses OpenAI to summarize articles. Use my own OpenAI API key.
You'll see the provider name (without "Replit managed") in the response, indicating Agent will request your API key.
**For existing Replit Apps**: When Agent tells you it wants to use Replit AI Integrations and shows the confirmation prompt, click "Dismiss" instead of "Approve."
In both cases, Agent will build through the first checkpoint before requesting your API key. This allows Agent to set up your project structure first, then pause to collect your credentials.
When you use your own API key, you're billed directly by the provider rather than through Replit credits.
## Viewing your usage
All Replit AI Integrations usage appears on your [usage page](/billing/managing-spend) alongside your other Replit usage. Usage is broken down by Existing Replit App so you can see exactly where your AI spend is going.
## Supported providers
Replit AI Integrations currently supports:
* **OpenAI**: Multimodal models for text generation, reasoning, and audio. Supports chat completions, responses, image generation, audio transcription (`gpt-4o-transcribe`, `gpt-4o-mini-transcribe`), and audio output (`gpt-audio`, `gpt-audio-mini`).
* **Anthropic**: Multimodal models for reasoning, writing, and coding. Supports the Messages API and interactions with web search.
* **Google (Gemini)**: Multimodal models for text generation and reasoning. Supports text and image generation.
* **OpenRouter**: Access to models from providers such as Microsoft (Phi series), Meta (Llama series), Mistral, Qwen, DeepSeek, Nvidia, Amazon, and more.
Replit AI Integrations supports **text, image, and audio output**. Video output is not supported. If you need video generation capabilities, you'll need to use your own API key from a provider that offers them.
## Available models
The following models are available through Replit AI Integrations, grouped by provider. Use the exact model name when you configure a model in your app or ask Agent to build with a specific model.
### OpenAI
**Text and reasoning**
* `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`
* `gpt-5.5`
* `gpt-5.4`, `gpt-5.4-mini`
* `gpt-5.3-codex`
* `gpt-5.2`, `gpt-5.2-codex`
* `gpt-5.1`
* `gpt-5`, `gpt-5-mini`, `gpt-5-nano`
* `gpt-4.1`, `gpt-4.1-mini`, `gpt-4.1-nano`
* `gpt-4o`, `gpt-4o-mini`
* `o4-mini`
* `o3`, `o3-mini`
**Image generation**
* `gpt-image-2`
* `gpt-image-1`
**Audio output**
* `gpt-audio`
* `gpt-audio-mini`
**Speech-to-text (transcription)**
* `gpt-4o-transcribe`
* `gpt-4o-mini-transcribe`
### Anthropic (Claude)
* `claude-opus-5`
* `claude-opus-4-8`
* `claude-opus-4-7`
* `claude-opus-4-6`
* `claude-opus-4-5`
* `claude-opus-4-1`
* `claude-sonnet-4-6`
* `claude-sonnet-4-5`
* `claude-haiku-4-5`
### Google (Gemini)
* `gemini-3.1-pro-preview`
* `gemini-3-pro-preview`
* `gemini-3-flash-preview`
* `gemini-3-pro-image`
* `gemini-3-pro-image-preview`
* `gemini-2.5-pro`
* `gemini-2.5-flash`
* `gemini-2.5-flash-image`
### OpenRouter
OpenRouter is a pass-through gateway to 200+ models from providers such as Meta, Mistral, DeepSeek, Qwen, Microsoft, Nvidia, and Amazon. Because the catalog is dynamic, browse the live list at [openrouter.ai/models](https://openrouter.ai/models). The models available to you can vary based on the [privacy settings](#openrouter-privacy-and-availability) Replit applies to your plan.
This list reflects the models available at the time of publish and is refreshed automatically on a bi-weekly cadence that checks the source configuration. Model availability can change between refreshes.
**Last updated:** August 1, 2026
## OpenRouter privacy and availability
When you use OpenRouter through Replit AI Integrations, your requests are sent with specific privacy settings to protect your data. Understanding these settings is important because they may affect which models are available to you.
### Privacy settings for self-serve users
For individual and team users, Replit configures OpenRouter requests with the following privacy defaults:
* **Paid endpoints training disabled**: Your data will not be used for training by paid model providers
* **Free endpoints training enabled**: Free model providers may train on your prompts and completions
* **Free endpoints publishing enabled**: Free providers may publish your prompts and completions to public datasets
* **Input/output logging disabled**: Your requests and responses are not logged by OpenRouter for the 1% billing discount
* **Analytics cookies disabled**: Analytics cookies are not used
These settings prioritize your privacy while enabling access to the widest range of models. However, **some models may not be available** if they require different privacy settings than those configured above.
### Privacy settings for Enterprise
For Enterprise organizations, Replit enforces stricter privacy controls:
* **Zero Data Retention (ZDR) endpoints only**: Only models with a Zero Data Retention policy are available
* All privacy settings listed above for self-serve users also apply
* This ensures that Enterprise requests are only routed to endpoints that do not retain any data
Because Enterprise enforces ZDR endpoints only, **the selection of available models will be more limited** compared to self-serve users. This trade-off ensures the highest level of data privacy for enterprise workloads.
## Plan availability
Replit AI Integrations requires a paid plan. How access works depends on your plan.
### Starter (Free)
On the Starter plan, Replit AI Integrations is disabled. You can still build AI apps with your own API key. See [Bringing your own API key](#bringing-your-own-api-key).
### Core
On the Core plan, you can build AI apps with Replit AI Integrations using Replit-managed credentials — no API keys to manage.
### Pro and Enterprise
For Pro and Enterprise organizations, Replit AI Integrations access is disabled by default. Organization admins can control access from the organization settings page:
1. Navigate to your organization settings
2. Find the Replit AI Integrations section
3. Toggle access on or off for your organization
When enabled, organization members can use Replit AI Integrations in their apps. All usage is tracked and billed to the organization account. When disabled, members will need to provide their own API keys to use AI model providers.
## Use cases
Build powerful AI applications across any stack:
* **Content generation**: Summarize articles, generate descriptions, create content
* **Analysis and insights**: Extract key information, analyze sentiment, classify text
* **Conversational interfaces**: Build chatbots and AI assistants
* **Text transformation**: Translate, rewrite, or format content
* **Code assistance**: Generate code snippets, explain algorithms, review code
## FAQ
Other Agent integrations let you connect to external services and APIs. Replit AI Integrations specifically provides managed access to AI model providers like OpenAI, Anthropic, Google, and OpenRouter, with Replit handling credentials and billing so you can start building immediately.
Yes. Replit AI Integrations is only available for paying users.
Replit AI Integrations supports models from leading AI providers:
| | |
| -------------- | ------------------------------------------------------------- |
| **OpenAI** | GPT models for text generation, reasoning, and image creation |
| **Anthropic** | Claude models for reasoning, writing, and coding |
| **Google** | Gemini models for multimodal understanding |
| **OpenRouter** | 200+ models from Meta, Mistral, DeepSeek, Qwen, and more |
For the full list of model names grouped by provider, see [Available models](#available-models). For the complete OpenRouter catalog, see [OpenRouter's model list](https://openrouter.ai/models).
You're billed at the public API price set by the provider. Costs are deducted from your Replit credits and appear on your usage page.
Yes. You can provide your own API key using Replit secrets. When you use your own key, you're billed directly by the provider instead of through Replit.
Yes. Replit AI Integrations works across all stacks and programming languages supported on Replit.
On the Starter plan, Replit AI Integrations is disabled — upgrade to Core to use it, or build with your own API key. For Pro and Enterprise, access is disabled by default for security and control, and your organization admin can enable it from the organization settings page.
Look for "OpenAI (Replit managed)", "Anthropic (Replit managed)", "Google (Replit managed)", or "OpenRouter (Replit managed)" in Agent's response. This indicates you're using Replit AI Integrations. If you see just the provider name without "Replit managed," Agent will request your own API key.
When you mention AI functionality or a specific provider (OpenAI, Anthropic, Google, or OpenRouter), Agent defaults to Replit AI Integrations. For new apps, Agent starts building immediately using Replit's credentials. For existing Replit Apps, Agent will tell you in the Project Editor that it's asking to use Replit AI Integrations and show a confirmation prompt. Either way, your app can make API calls to the provider, and usage is tracked and billed to your Replit account.
You'll see a confirmation prompt when adding Replit AI Integrations to an existing Replit App. Agent will explicitly tell you it's asking to use Replit AI Integrations instead of your own API key. For initial builds when creating a new app, Replit AI Integrations is matched automatically without a pop up.
Agent will build through the first checkpoint before requesting your API key. This lets Agent set up your project structure first, then pause to collect your credentials before continuing.
Replit AI Integrations supports text, image, and audio output. Audio capabilities include transcription (speech-to-text) via `gpt-4o-transcribe` and `gpt-4o-mini-transcribe`, and audio generation via `gpt-audio` and `gpt-audio-mini`. Video output is not supported. If your application requires video generation capabilities, Agent will direct you to use your own API key from a provider that offers these features.
# Connect Shopify
Source: https://docs.replit.com/features/integrations/shopify
Connect Shopify so Agent can provision a Shopify store, build a custom storefront, and manage your products and inventory from inside Replit.
With the Shopify connector, Agent provisions a Shopify store, builds a custom storefront against it, and manages your products and inventory, all in one conversation, with no API keys. Agent recommends Shopify whenever you describe selling a physical good, and you only visit Shopify to go live. From first prompt to real orders is about ten minutes.
For a step-by-step walkthrough, follow [Build a Shopify storefront](/build/ecommerce-store).
## What you can build
* Custom-designed storefronts for physical products
* Branded merch and apparel stores
* Direct-to-consumer shops with carts and checkout
* Catalog and inventory tools backed by your Shopify store
* Product landing pages that sell a single hero item
## Examples
## How it works
Tell Agent what you want to sell. It recommends Shopify for physical goods, even if you don't name it.
A development store is created (about ten seconds) under Replit's Shopify Partner account, the Replit Sales Channel app is installed, and the store is connected. No API keys; one store per app; password-protected until you claim it.
Agent designs the headless storefront and maintains products, variants, inventory, collections, and discounts.
Claim the store, choose a plan, set up payments, and launch when you're ready to sell.
## What Agent manages
Everything in the storefront and catalog is editable by chat.
| Area | What Agent does |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Design | Generates a headless front end from your guidance (no Liquid theme, no template library). Copy, layout, navigation, motion, and product pages are editable by chat, and you can explore directions with [Canvas](/design/canvas) variants. It's a real Replit project, so you can extend it with a blog, wishlist, or landing pages. |
| Products | Create, update, and delete products and variants. Fields: title, description, type, vendor, tags, SKU, price, weight, options (size, color), images, and availability. |
| Inventory | Set and adjust stock per variant. |
| Collections | Group products into collections. |
| Discounts | Create a price rule plus a redeemable code. |
| Publishing & sync | New products auto-publish to your storefront. Sync runs both ways: edits in your Shopify admin appear in the Replit preview, and Agent's changes appear in your Shopify admin. |
## Replit and Shopify: who does what
| Replit owns | Shopify owns |
| ----------------------------------------------------------- | ----------------------------------------------------------- |
| Storefront design and build | Hosted checkout |
| Catalog management by chat (products, inventory, discounts) | System of record for products, inventory, carts, and orders |
| Storefront hosting and deployment | Payments, identity verification (KYC), and payouts |
| Canvas design variants | Taxes, shipping, and fulfillment |
| Extending the app (blog, landing pages, and more) | Multi-channel selling |
Orders, refunds, payouts, and fulfillment are handled in your Shopify admin, not through Agent.
## Connection scope
* Available to all builders on all apps, connected in the conversation, with no Connectors-panel setup and no credentials.
* Scoped to one app: each app gets its own Shopify store.
* The store is a Replit-owned development store until you claim it; your email is shared with Shopify so you can claim it later.
* You can uninstall the Replit app from your Shopify admin at any time.
## Go live on Shopify
Going live happens on Shopify, not Replit. Ask Agent to start the Go Live flow, then complete these merchant-owned steps in your Shopify admin:
* **Claim the store** from the link in chat or the email Shopify sends. The link expires after 7 days. Claiming starts a free trial.
* **Choose a plan**: a [paid plan](https://www.shopify.com/pricing) is required to process live orders.
* **Set up payments**: activate [Shopify Payments](https://help.shopify.com/en/manual/payments/shopify-payments) or another provider and complete identity verification (KYC). Live capture works once the claiming account finishes KYC.
* **Configure [shipping](https://help.shopify.com/en/manual/shipping) and [taxes](https://help.shopify.com/en/manual/taxes).**
* **Connect a [custom domain](/build/add-custom-domain)** (optional) and remove the storefront password to open the store to buyers.
Checkout always redirects to Shopify-hosted checkout, so buyers pay on Shopify.
Payments, identity verification, taxes, shipping, and fraud checks stay on Shopify. Replit never collects merchant banking details, tax IDs, or other sensitive information.
## Troubleshooting
Provisioning calls several Shopify APIs and can take a little time. Let Agent finish setup before asking it to build the storefront.
Development stores are password-protected until you go live, so checkout previews can land on a password page. This is expected, but the cart still works. Remove the password in Shopify only when you launch.
Live capture requires the claiming Shopify account to finish payments setup and KYC. Until then, checkout redirects to Shopify but can't capture a payment. Complete KYC, or use an account that already has payments set up.
Each store is scoped to one app. If you connected Shopify on a different app, ask Agent to set up a Shopify store for the current one.
A product is only visible once it's active and published. Agent auto-publishes products it creates; if one is missing, ask Agent to publish it, then refresh the preview.
After you claim or transfer the store, Shopify may ask you to reauthorize the connection. Ask Agent to reconnect Shopify, and it restores access without losing your store.
## Related documentation
* [Build a Shopify storefront](/build/ecommerce-store): Step-by-step guide from a prompt to a published storefront
* [Add a custom domain](/build/add-custom-domain): Give your storefront a branded URL
* [Agent integrations](/features/integrations/overview): Replit-managed integrations and Agent services
* [Managing your connectors](/replitai/managing-connectors): Configure and manage connectors
* [Shopify Help Center](https://help.shopify.com/): Store setup, payments, and account management
# Figma MCP Integration
Source: https://docs.replit.com/features/mcp/figma
Learn how to connect Agent to Figma via MCP to explore layers, extract design data, and generate code from your designs.
Use Agent with Model Context Protocol (MCP) to work with your Figma designs directly in chat. Paste a Figma link to explore layers, extract variables and components, capture screenshots, and generate code from selected frames.
Seat requirements: A Figma Dev or Full seat is recommended for Agent chat features. Free, Starter, and Viewer seats are limited to 6 MCP tool calls per month. The import flow at replit.com/import has separate limits — see rate limits below.
Want to turn a Figma design into a new app? See the Turn a Figma design into an interactive app guide .
The Figma MCP integration uses a remote server —you do not need the Figma desktop app running or installed to use this feature in Agent.
## Features
* **Generate starter code**: Turn selected frames into production-ready code to bootstrap features or iterate faster.
* **Extract design data**: Access variables, components, and layout specifications defined in your file.
* **Capture frame screenshots**: Create visual references from any frame to guide implementation.
* **Inspect MCP activity**: Expand chat events to view raw requests and responses.
## Demo
Watch a quick walkthrough of the workflow from link detection to code generation:
## Usage
### Connect in Agent chat
1. Open Agent chat in the Project Editor.
2. Paste a valid Figma file or prototype link into the message box.
3. When a valid link is detected, a Figma design card appears. Click Log in with Figma to authorize.
After pasting a supported link, Agent shows a Figma design card for quick authorization:
### Work with Figma links
Use link-based workflows to act on precise parts of your design:
1. In Figma, copy the link to any frame or layer.
2. Share the URL with Agent in the chat box and describe what you want.
In Figma, copy a link to the exact frame or layer you want Agent to work with:
Then paste the link into Agent along with a short instruction (for example, “generate React for this frame”):
### View MCP calls
Open the timeline event labeled Used Figma MCP (Beta) to see the underlying requests and responses.
Here is where to expand the timeline event to inspect MCP calls:
MCP access to Figma is read‑oriented and respects your Figma permissions. If a file is private or you lack access, the integration cannot fetch content.
## Rate limits and Figma seat requirements
Figma enforces rate limits on MCP tool calls based on your Figma plan and seat type. These limits are set by Figma, not Replit.
| Seat type | Starter / Free | Pro / Organization | Enterprise |
| ---------------- | --------------- | ------------------ | --------------- |
| **View, Collab** | 6 calls / month | 6 calls / month | 6 calls / month |
| **Dev, Full** | — | 200 calls / day | 600 calls / day |
Dev and Full seats also have per-minute limits: 10/min on Pro, 15/min on Organization, and 20/min on Enterprise plans.
### What counts against the limit
Rate limits apply to tools that read data from Figma, such as `get_design_context` and `get_image`. Some tools like `whoami` and `generate_figma_design` are exempt.
### If you hit a rate limit
Agent tells you when a Figma rate limit is reached. To increase your limit:
* **On a Starter plan or free account**: Upgrade to a Pro, Organization, or Enterprise plan with a Dev or Full seat.
* **On a View or Collab seat**: Upgrade to a Dev or Full seat on your current plan.
* **On a Dev/Full seat (Organization)**: Upgrade to an Enterprise plan for the highest limits.
For full details, see Figma's plans, access, and permissions documentation .
### Manage connections
Manage or disconnect the Figma integration at replit.com/integrations .
Find and manage connections from your Replit integrations page:
# MCP Install Links
Source: https://docs.replit.com/features/mcp/install-links
Reference for MCP install links — URL format, payload schema, and badge customization.
Install links let users add your MCP server to Replit with a single click. To generate one, use the form on [Connect via MCP](/build/connect-via-mcp#share-an-install-link).
## Link format
Install links use a base64-encoded JSON payload containing your server configuration:
```
https://replit.com/integrations?mcp={payload}
```
The payload includes:
* **displayName**: The name shown to users during installation
* **baseUrl**: Your MCP server's HTTPS endpoint
* **headers**: Optional authentication headers
```json theme={null}
{
"displayName": "My MCP Server",
"baseUrl": "https://example.com/mcp",
"headers": [
{
"key": "Authorization",
"value": "Bearer your-token"
}
]
}
```
## Using badges
Add a clickable badge to your README or documentation that installs your MCP server when clicked.
```markdown theme={null}
[](https://replit.com/integrations?mcp={payload})
```

You can customize the badge caption (maximum 30 characters) by URL-encoding the text in the `caption` parameter.
# MCP list
Source: https://docs.replit.com/features/mcp/overview
Browse the curated list of Model Context Protocol (MCP) servers available in Replit — install with one click.
Replit Agent connects to external tools and data sources through the [Model Context Protocol (MCP)](https://modelcontextprotocol.io), an open standard for AI integrations. Each server below installs with a single click — Agent then automatically loads its tools and uses them when appropriate.
For the concept, see [Model Context Protocol](/learn/model-context-protocol). For the hands-on guide, see [Connect via MCP](/build/connect-via-mcp). To connect a server that isn't listed here, see [Add a custom MCP server](/build/connect-via-mcp#add-a-custom-mcp-server).
Click the **Add to Replit** badge to install any server. You'll be prompted to authorize the connection in the Project Editor.
## Servers
Server
Description
Install
Figma
Generate code from Figma designs.
View guide
Atlassian
Project management and team collaboration tools.
Amplitude
Product analytics and user behavior insights.
Apollo
Research accounts, enrich contacts, and build outbound lists.
Black Forest Labs
Generate, edit, and vary FLUX images directly from chat.
Braintrust
Query evals, experiments, logs, and datasets from your Braintrust projects.
Calendly
Read and manage scheduled events, event types, and invitees.
ClickHouse
Query and explore ClickHouse Cloud databases for real-time analytics.
Doola
Register a US LLC and manage formation, bookkeeping, and taxes.
Google Maps Platform
Build location-powered apps with maps, places, routing, weather, and more.
Granola
AI-powered meeting notes and transcription.
Lazyweb
Search 257k+ real app screens for UI references and design research.
Linear
Create and update issues directly from Agent.
Mercury
Check balances, statements, transactions, and cards from your Mercury account.
Miro
Collaborative AI-powered visual platform for planning and design.
Mixpanel
Query Mixpanel events, funnels, retention, and dashboards.
Mobbin
Browse a reference library of mobile, web, and desktop app designs.
Notion
Sync docs, notes, and project trackers into Agent context.
PostHog
Product analytics, session replay, and feature flags.
Razorpay
Access Razorpay payment and subscription data.
Sanity
Access Sanity content, datasets, and schemas.
Sentry
Error tracking and performance monitoring.
Squidler
Run AI-powered web tests, track issues, and verify user flows.
Statsig
Manage feature gates, experiments, and dynamic configs.
Stripe
Payment processing and financial infrastructure.
Supabase
Query your Supabase database, manage tables, and apply migrations.
Twilio
Search Twilio docs and 1,800+ API endpoints for voice, SMS, email, and identity.
Wistia
Access Wistia video hosting, analytics, and management.
You.com
Ground your app in real-time, cited web search and research.
Zapier
Connect 9,000+ apps to trigger workflows and move data with natural language.
The list grows over time. See the [Integrations pane](https://replit.com/integrations) for the current list. To connect any other MCP server, see [Add a custom MCP server](/build/connect-via-mcp#add-a-custom-mcp-server).
## Security protections
All MCP traffic passes through Replit's security scanner. The scanner evaluates tool definitions and planned executions, blocking suspicious or unsafe tools before they run. If a tool is rejected, Agent will inform you about it.
## Authentication options
* **OAuth dynamic client registration** — if the server supports OAuth DCR, Replit automatically detects and registers the client for you. Most pre-listed servers use this flow.
* **Custom headers** — define one or more header name/value pairs (for example, `X-API-Key`). Replit includes these headers in every MCP request so your server can verify the caller. Use this when adding a custom server that authenticates via static tokens.
## Explore further
* [Install links](/features/mcp/install-links) — link format and badges for sharing your own MCP server.
* [Figma MCP](/features/mcp/figma) — Figma-specific MCP details, rate limits, and seat requirements.
# Monetization
Source: https://docs.replit.com/features/monetization/overview
Add payments and subscriptions to your Replit apps with Agent-powered integrations.
Turn your app into a business. Replit integrates with payment providers so you can accept payments, sell subscriptions, and monetize your web and mobile apps.
## How it works
Tell Agent what you want to charge for, and it handles the rest: connecting to a payment provider, building the checkout or paywall UI, and wiring up the payment logic. You can test everything safely before going live.
Replit supports several monetization integrations across web and native mobile apps:
* **[Whop Payments](/features/monetization/whop-payments)** (web apps): Sell digital products, memberships, and subscriptions with the fewest steps. Agent creates a Whop account for you—no external setup and no API keys—so you can get to your first sale fast.
* **[Stripe Payments](/features/monetization/stripe-payments)** (web apps): Accept one-time payments, sell subscriptions, or build a full storefront. Agent connects a Stripe sandbox so you can test checkout flows before going live.
* **[RevenueCat Subscriptions](/features/monetization/revenuecat-subscriptions)** (mobile apps): Add in-app subscriptions to your native mobile app. Agent sets up RevenueCat, builds a paywall screen, and configures test mode so purchases are simulated during development.
If you want to sell physical goods with inventory and fulfillment, see the [Shopify integration](/features/integrations/shopify).
## Choose the right integration
| | Whop | Stripe | Shopify | RevenueCat |
| -------------------- | :------------------------------------------- | :-------------------------------------------- | :----------------------------------------------- | :------------------------------------------------ |
| **Best for** | Fewest steps, fastest to first sale | Flexibility and scale on web | Physical goods | Native mobile apps |
| **Payment types** | Digital products, memberships, subscriptions | One-time payments, subscriptions, storefronts | Physical products with inventory and fulfillment | In-app subscriptions |
| **External setup** | None to start | None to start (Stripe sandbox) | None to start | None to start (test mode) |
| **Go live** | Verify identity (KYC) to withdraw funds | Connect a live Stripe account | Claim your Shopify store | Submit to the App Store or Google Play for review |
| **Account required** | Whop account (created for you) | Stripe account | Shopify store (provisioned for you) | RevenueCat account |
Sell digital products, memberships, and subscriptions with no external setup. Agent creates a Whop account and wires up checkout.
Accept payments and sell subscriptions in your web app. Agent sets up Stripe with a sandbox for safe testing.
Add in-app subscriptions to your native mobile app. Agent configures RevenueCat, builds a paywall, and sets up test mode.
## Getting started
The fastest way to get started is to ask Agent:
* **Sell digital products fast**: "Add Whop payments so I can sell a membership" — see [Whop Payments](/features/monetization/whop-payments)
* **Web app**: "Add Stripe payments to my app" — see [Stripe Payments](/features/monetization/stripe-payments)
* **Mobile app**: "Add a \$5.99/mo subscription to my app" — see [RevenueCat Subscriptions](/features/monetization/revenuecat-subscriptions)
Agent connects the integration, builds the UI, and sets up a test environment so you can try it immediately.
## Next steps
* [Whop Payments](/features/monetization/whop-payments): Sell digital products and memberships with no external setup
* [Stripe Payments](/features/monetization/stripe-payments): Add payments and subscriptions to web apps
* [RevenueCat Subscriptions](/features/monetization/revenuecat-subscriptions): Add in-app subscriptions to mobile apps
* [Native Mobile Apps](/features/artifact-types/building-mobile-apps): Learn about building mobile apps on Replit
* [Web Apps](/features/artifact-types/web-apps): Learn about building web apps on Replit
# RevenueCat Subscriptions
Source: https://docs.replit.com/features/monetization/revenuecat-subscriptions
Learn how to add in-app subscriptions to your mobile app with RevenueCat using Agent.
## What is RevenueCat
RevenueCat allows you to add in-app subscriptions to your [native mobile app](/features/artifact-types/building-mobile-apps). To get started, ask Agent to set up a subscription, connect your RevenueCat account, and Agent handles the logic and provides a test environment.
## Prerequisites
Before you start, you need:
* A Replit project created with a **Mobile app**
* A [RevenueCat](https://www.revenuecat.com) account (only an email and password are required—no bank account or additional setup needed)
To work on a native mobile app, use the Project Editor at [replit.com](https://replit.com). Native mobile app work is also available in the Replit Android app where supported. If you're using the Replit iOS app, open the project on replit.com.
## Get started
Describe the subscription you want. Agent plans the integration, installs packages, and sets up RevenueCat.
Add a \$5.99/mo subscription to my app
Agent prompts you to connect RevenueCat. Select **Connect RevenueCat** to begin the authorization flow.
A modal confirms you are connecting to RevenueCat. Select **Continue to RevenueCat** to proceed.
On the RevenueCat authorization page, select **Read & Write** access and then **Authorize** to grant Replit access to your RevenueCat account.
After authorization, Agent creates the RevenueCat project, configures products and entitlements, builds a paywall screen, and wires up subscription logic throughout your app.
## Test subscriptions
Replit previews use RevenueCat's **test mode**. When you test a purchase in Expo Go, you see a test purchase dialog instead of a real payment flow. No money is charged.
Test purchases are safe to use during development. You can test both
successful and failed purchase flows without any real charges.
Once Apple approves your app for App Store distribution, purchases use real money.
Make sure your RevenueCat products and pricing are correct before submitting to
App Review.
## Manage subscriptions
To modify your subscription, ask Agent. For example:
Modify the subscription to be \$9.99/yr instead
Agent updates your RevenueCat product configuration, paywall UI, and subscription logic to reflect the change.
## Syncing to App Store Connect
For in-app purchases to work in TestFlight and the Apple App Store, [you'll need to agree
to Apple's Paid Apps Agreement and connect your bank account](https://developer.apple.com/help/app-store-connect/manage-agreements/sign-and-update-agreements/).
This is done through App Store Connect. You'll need a paid Apple Developer Account before you can submit your app to the App Store.
Afterwards, you can sync your in-app purchases configurations from RevenueCat to App Store Connect directly through Replit.
You'll see a button to sync RevenueCat to App Store Connect.
This section only appears after you submit your app to TestFlight.
You'll need to go to App Store Connect to provide this key.
In [App Store Connect](https://appstoreconnect.apple.com/access/integrations/api), go to **Users and Access**, then select the **Integrations** tab. In the sidebar, select **App Store Connect API**.
When creating a key, be sure to give the key "App Manager" permissions.
Download the .p8 file now—you can only download it once. The filename starts with `AuthKey_` and ends in `.p8`.
Copy the **Key ID** and **Issuer ID** shown on this page.
Repeat the previous step for an In-App Purchase API key.
In the sidebar, select **In-App Purchase**. Then create an API key with **App Manager** permissions.
Download the .p8 key (filename starts with `SubscriptionKey_` and ends in `.p8`). Copy the **Key ID** and **Issuer ID**.
Confirm the list of products and sync to App Store Connect.
## Frequently asked questions
No. You only need an email and password to create a RevenueCat account. Bank
account setup is handled separately through Apple or Google when you are
ready to receive payouts from the App Store or Google Play.
No. During development, Replit previews use RevenueCat's test mode.
Purchases are simulated and no real charges are made. Real charges only
apply after Apple App Review approves your app.
RevenueCat is designed for native mobile apps. To add subscriptions to a web
app, use the [Stripe integration](/features/monetization/stripe-payments)
instead.
You can set up monthly or yearly subscriptions, configure pricing, manage
entitlements, and build paywalls. Ask Agent to make changes—it handles both
the RevenueCat configuration and your app code.
# Stripe Payments Integration
Source: https://docs.replit.com/features/monetization/stripe-payments
Learn how to add payments and subscriptions to your app with Stripe using Agent.
The Stripe integration is available only on paid plans ([Core](/billing/plans/replit-core) and [Pro](/billing/plans/replit-pro)). It is not available on the free [Starter](/billing/plans/starter-plan) plan—Agent prompts you to upgrade when it proposes the connector.
## What you can build
Use Agent to add Stripe to your app in one click—no setup required. Build a storefront, accept one‑time payments, or create subscriptions. Agent wires up the integration, data models, and test environment.
## How it works
Agent starts with a Stripe sandbox so you can safely test payments without moving real money. You can build and try flows immediately. When you are ready, switch to your live Stripe account to publish and accept real payments.
A Stripe sandbox is an isolated test environment where you can simulate
payments, subscriptions, and events. Learn more in
[Stripe's docs on sandboxes](https://docs.stripe.com/sandboxes).
## Use Stripe with your team
Stripe works in collaborative workspaces, so your whole team can build, test, and monetize the same app together. Everyone in the workspace can work with the connected Stripe account, instead of one person building payments alone.
## Get started
* **Ask Agent to use Stripe**
* Use a slash command on the home screen and select Stripe, or ask directly:
Build a storefront and integrate Stripe for payments
Stripe integration requires an App with backend functionality. Select **App** from the homepage to get started.
## Test payments in the sandbox
1. Open your app’s **Preview** in a new tab.
2. Make a test purchase from your storefront or payment page.
3. Use Stripe’s standard test card:
```text theme={null}
Card number: 4242 4242 4242 4242
Expiry: any future date
CVC: any 3 digits
Name, address: any mock values
```
Sandbox purchases don’t process through real networks or move money. They’re
safe for testing end to end.
## Manage products and pricing
You have two options:
1. From your app, select **Publish**, then choose to claim your Stripe sandbox.
* If you don’t have a Stripe account yet, create one to claim the sandbox.
2. In the Stripe Dashboard, open **Products** to add or edit products and prices.
Changes you make in the Stripe sandbox reflect in your Replit app automatically
and sync to your app’s database.
### View synced Stripe data
* In the Project Editor, open **Database**.
* Select **MyData**.
* Change the schema selector to **Stripe** to see payment objects and related
records.
## Go live
To accept real payments, connect your live Stripe account by installing the
[Replit Integrated Payments](https://marketplace.stripe.com/apps/replit-integrated-payments)
app from the Stripe Marketplace. The install flow connects your live account
automatically — you don't need to copy or paste API keys.
Your sandbox integration is not production‑ready. It cannot accept real
payments until you complete the steps below.
In your app, select **Publish** to start the live connection flow.
Select **Install Stripe app**. A Stripe window opens with the
[Replit Integrated Payments](https://marketplace.stripe.com/apps/replit-integrated-payments)
listing.
When Stripe prompts you to choose an account, select your **live**
Stripe account — not a sandbox or test account.
Follow Stripe's prompts to install the app. If your live account
isn't activated yet, Stripe walks you through KYB (Know Your
Business) verification first.
Keep the Stripe window open until the installation completes.
Replit finalizes the production connection in the background once
Stripe confirms the installation.
Return to Replit. The **Publish** pane shows your live Stripe
account as connected. Publish your app to start accepting real
payments.
Installing the Replit Integrated Payments app replaces the older manual
flow of copying Publishable and Secret keys into Replit. The app sets
up your production keys for you and keeps the sandbox-to-live sync in
place.
## Manage the integration
* Go to **Integrations > Stripe** to open the Stripe connector.
* From there, you can test the connection, view status, and manage settings.
## Frequently asked questions
### How do I update the prices of my products?
* Ask Agent: Describe the change and Agent updates your app and Stripe objects.
* Use the Stripe Dashboard: Open **Products** to edit prices and product details.
* In sandbox, changes sync back to your app and database automatically.
* For production, switch to your live account first, then update prices. Publish again if your app needs to pick up new configuration.
### How do I test transactions on Replit?
Open your app’s **Preview** in a new tab. Run the Stripe Checkout flow with the
standard test card (4242 4242 4242 4242), any future expiry, and any CVC. See
[Test payments in the sandbox](#test-payments-in-the-sandbox) above for details.
### What is a live Stripe account?
A live Stripe account is an activated and verified account that can process real
payments using your business details. See Stripe’s guidance on account creation
and activation: [Create and manage your Stripe account](https://docs.stripe.com/get-started/account).
### Do I still need to paste in my Stripe API keys?
No. The Replit Integrated Payments app installs your production keys for you
when you connect your live Stripe account. You don't need to copy live keys
from the Stripe Dashboard.
If you previously connected Stripe by pasting live keys, that connection
continues to work. You can switch to the Stripe app install flow by removing
the Stripe connection and reconnecting from the **Publish** pane. See
[Update or remove the Stripe connection](#update-or-remove-the-stripe-connection)
below.
## Update or remove the Stripe connection
If you're not ready to publish with a live Stripe connection, you have two
options:
### Option A: Remove the Stripe integration manually
You can completely remove the Stripe integration from your project.
Navigate to your Replit app and select the **Integrations** tab at the top. Under **Connectors**, find **Stripe** and select **Manage**.
Select the chevron to expand your **Sandbox API keys** and **Live account API keys**, then select **Edit**.
Select **Disconnect account** to remove the Sandbox connection and **Disconnect live account** to remove the Live connection.
Go to Agent chat and ask Agent to remove the Stripe connector code from your application. This will remove your entire Stripe integration.
### Option B: Roll back to a checkpoint before the Stripe integration
If you want to completely undo the Stripe integration and return to a previous state, you can roll back to an earlier checkpoint.
Navigate to your Replit app and select the **Integrations** tab at the top. Under **Connectors**, find **Stripe** and select **Manage**.
Select the chevron to expand your **Sandbox API keys** and **Live account API keys**, then select **Edit**.
Select **Disconnect account** to remove the Sandbox connection and **Disconnect live account** to remove the Live connection.
Go to Agent chat and look for a checkpoint that was created before the Stripe integration. Select the **clock icon** on the top left of the chat pane to view older chat history.
Once you find a checkpoint that looks good, select **Rollback here** to restore your project to that state.
## Notes and limitations
* Sandbox activity does not affect real balances or customers.
* Some Stripe features can't be tested in sandboxes (for example, IC+ pricing
and certain Connect flows). See
[Stripe's sandbox limitations](https://docs.stripe.com/sandboxes).
# Whop Payments Integration
Source: https://docs.replit.com/features/monetization/whop-payments
Learn how to sell digital products, memberships, and subscriptions in your app with Whop using Agent.
With the Whop integration, Agent adds payments to your app in one conversation, with no external setup and no API keys. Agent creates a Whop account for you, wires up checkout, and builds the payment logic. Whop is the fastest way to start selling, so it's a good fit when you want to get to your first sale quickly.
## What you can build
* Paywalls and "unlock" flows for digital content
* Membership and community access
* Subscriptions and recurring plans
* One-time digital product sales
## How it works
When you ask for payments, Agent sets up Whop in the background: it creates a Whop account for your app, connects it, and builds the checkout into your project. You don't paste in any credentials, and you don't leave Replit to get started.
Whop is one of several payment providers Replit supports. Agent helps you pick the right one for what you're building:
| | Whop | Stripe | Shopify | RevenueCat |
| ------------------ | :------------------------------------------- | :-------------------------------------------- | :----------------------------------------------- | :------------------------------ |
| **Best for** | Fewest steps, fastest to first sale | Flexibility and scale | Physical goods | Native mobile apps |
| **Sells** | Digital products, memberships, subscriptions | One-time payments, subscriptions, storefronts | Physical products with inventory and fulfillment | In-app subscriptions |
| **External setup** | None to start | None to start | None to start | None to start |
| **Go live** | Verify identity (KYC) | Connect a live Stripe account | Claim store | App Store or Google Play review |
If you don't name a provider, Agent recommends one based on what you describe and explains the tradeoffs.
## Get started
* **Ask Agent to add payments**
* Use a slash command on the home screen, or ask directly:
Add Whop payments so I can sell a membership in my app
Whop integration requires an App with backend functionality. Select **App** from the homepage to get started.
## Test your payments
1. Open your app's **Preview** in a new tab.
2. Go through the checkout or unlock flow you built.
3. Confirm the buyer experience end to end before you share your app.
## Manage products and pricing
Manage your offering in two ways:
* **Ask Agent**: Describe the change—new plan, different price, additional product—and Agent updates your app and your Whop configuration.
* **Use the Whop dashboard**: Log in to [Whop](https://whop.com) with the email on your Replit account to manage products, pricing, and plans directly.
## Track your balance and get paid
Sales accumulate in your Whop account. To withdraw your earnings, complete Whop's identity verification (KYC) from the Whop dashboard. You can start selling before you finish verification, but you must verify your identity before you can cash out.
Whop owns checkout, payment processing, identity verification (KYC), and payouts. Replit never collects your banking details or tax information.
## Manage the integration
* Go to **Integrations > Whop** to open the Whop connector.
* From there, you can view the connection status and manage settings.
## Frequently asked questions
### Do I need a Whop account before I start?
No. Agent creates a Whop account for your app as part of the setup. You log in to the Whop dashboard later—with the email on your Replit account—to manage products and withdraw earnings.
### When do I need to verify my identity?
You can build and start selling right away. Whop requires identity verification (KYC) before you can withdraw funds, which you complete in the Whop dashboard.
### How do I change my products or prices?
Ask Agent to make the change, or edit your products and plans directly in the [Whop dashboard](https://whop.com).
### Which payment provider should I use?
Whop is the fastest way to start selling digital products and memberships with no external setup. Choose [Stripe](/features/monetization/stripe-payments) for maximum flexibility on web apps, [Shopify](/features/integrations/shopify) for physical goods, or [RevenueCat](/features/monetization/revenuecat-subscriptions) for native mobile subscriptions. See the [Monetization overview](/features/monetization/overview) to compare.
## Related documentation
* [Monetization overview](/features/monetization/overview): Compare Replit's payment integrations
* [Stripe Payments](/features/monetization/stripe-payments): Add flexible payments and subscriptions to web apps
* [RevenueCat Subscriptions](/features/monetization/revenuecat-subscriptions): Add in-app subscriptions to mobile apps
* [Managing your connectors](/replitai/managing-connectors): Configure and manage connectors
# Replit in ChatGPT
Source: https://docs.replit.com/features/platforms/chatgpt
Build real apps by talking to ChatGPT. Create, update, and inspect Replit Apps from a single conversation.
The Replit integration in ChatGPT lets you create, update, and inspect Replit Apps directly from your conversations—no setup required. Build real apps by talking to ChatGPT and let Agent handle the rest.
## What is Replit in ChatGPT
Replit in ChatGPT connects your ChatGPT conversations to Replit's powerful development platform. You can describe what you want to build, and Agent will create a fully functional Replit App for you. Once created, you can ask ChatGPT to modify, update, or analyze your app—all through natural conversation.
## Getting started
Follow these steps to connect Replit to ChatGPT and create your first app.
### Connect Replit to ChatGPT
You can connect Replit to ChatGPT in two ways:
1. Click your profile icon in ChatGPT
2. Go to **Settings** → **Apps & Connectors**
3. Find **Replit** and click **Connect**
4. Complete the OAuth authorization with your Replit account
1. Start a new conversation in ChatGPT
2. Invoke Replit using one of the methods below
3. ChatGPT will guide you through the OAuth flow if you're not connected
### Invoke Replit in ChatGPT
Once connected, you can invoke Replit in three ways:
| Method | How to use |
| -------------- | ----------------------------------------------------- |
| Direct mention | Type `Replit, ` at the start of your message |
| Slash command | Type `/Replit` in the composer |
| Composer menu | Click the **+** button → **More** → **Replit** |
### Create your first app
After connecting, create your first Replit App:
1. Start a new conversation in ChatGPT
2. Invoke Replit and describe what you want to build (e.g., "Replit, create a todo app with dark mode")
3. Agent will generate your app and publish it automatically
4. Once complete, you'll receive a link to view your app
Each conversation can work with one Replit App. If you create a new app in the same conversation, it will modify the existing app. To create multiple apps, start separate conversations.
## Features
* **[Replit AI](/build/welcome)**: Agent generates and publishes apps based on your natural language requests
* **[Project Editor](/learn/projects-and-artifacts/project-editor)**: Full-featured development environment accessible from ChatGPT
* **[Publishing](/learn/projects-and-artifacts/replit-deployments)**: Apps are automatically deployed and ready to share
**Create:** Build new Replit Apps by describing what you want. Agent generates the application and publishes it automatically.
**Update:** Modify the app in your current conversation. Ask ChatGPT to add features, fix bugs, or make changes, and Agent will apply them.
**Inspect:** Analyze your app without making changes. Get information about code structure, file paths, or behavior.
You can include various file types in your prompts:
| Format | Supported |
| ----------------------- | ---------------------------- |
| PDF | Yes |
| CSV | Yes |
| Common document formats | Yes |
| Images (raw files) | No (use public URLs instead) |
| Videos (raw files) | No (use public URLs instead) |
To include images or videos in your app, provide public URLs in your prompt. You can also add media files directly in Replit after the app is created.
Agent typically builds apps in:
| App complexity | Typical build time |
| -------------------------------------------------- | ------------------ |
| Simple (calculators, small landing pages) | 2–3 minutes |
| Complex (games, rich animations, dense dashboards) | 3–4 minutes |
## Availability and plans
The Replit integration works with all ChatGPT plan types:
| Plan | Supported | Notes |
| -------------- | --------- | ---------------------------------------------------------------- |
| Free | Yes | |
| Plus | Yes | |
| Pro | Yes | |
| Business | Yes | Requires admin enablement in **Workspace settings → Connectors** |
| Enterprise/Edu | Yes | Requires admin enablement in **Workspace settings → Connectors** |
**Regional availability:** All regions outside the EU.
All Replit plan types support the ChatGPT integration:
| Plan | Supported | Notes |
| -------------- | --------- | --------------------------------------------------- |
| Starter (Free) | Yes | Public apps only |
| Core | Yes | Private apps, extended builds, Publishing, Database |
| Pro | Yes | Higher monthly credit allowance, all Core features |
| Enterprise | Yes | Full feature access |
## Billing and credits
Work done by Replit in ChatGPT is billed as Replit Agent usage in your Replit account.
* **Core** and **Pro** plans include monthly credits that cover Agent, publishing, and databases up to your allowance
* You can buy **credit packs** that expire after six months and do not auto‑renew — ideal for launch spikes or experiments
* Use **usage limits** and **budgets** in Replit's billing settings to cap spend
Learn more in the [AI billing documentation](/billing/ai-billing).
## Current limitations
Currently, the Replit app in ChatGPT:
* Can only work on the app created in that specific conversation
* Cannot open or modify:
* Apps created in other ChatGPT threads
* Apps you built directly in Replit
Feature parity with the full Replit experience (databases, secrets management, more advanced Project Editor controls) is coming later.
## Troubleshooting
If you don't see Replit in **Browse apps**, check:
* Whether apps are available in your region
* Whether your workspace admin has enabled the Replit app (Business/Enterprise/Edu)
If builds fail, open the app in Replit:
* Check usage and billing
* Use checkpoints and rollbacks to revert
* Ask Agent for help directly in the Project Editor
## Next steps
* **[Replit AI](/build/welcome)**: Learn more about Agent and AI-powered tools
* **[Project Editor](/learn/projects-and-artifacts/project-editor)**: Explore the full development environment
* **[Publishing](/learn/projects-and-artifacts/replit-deployments)**: Share and publish your apps
* **[Support](https://replit.com/~?supportform=true)**: Contact us for help with Replit in ChatGPT
# Replit in Claude
Source: https://docs.replit.com/features/platforms/claude
Use Replit as a connector inside Claude to create and update Replit Apps without leaving your conversation.
Replit is available as a connector inside Claude. Connect it once, and you can build on Replit without leaving your conversation with Claude.
## Connect the Replit connector
In Claude, open the connectors directory, find **Replit**, and connect it. Claude walks you through signing in to your Replit account. After you connect, you can ask Claude to create a new app, change an existing one, or answer questions about an app you're building. Claude relays your request to Replit Agent, which does the work and gives you a link to the live app.
Ask Claude things like "Create a Replit app that tracks my weekly habits" or "Add a login page to my Replit app." Claude hands the request to Replit Agent and returns a link where you can watch it build.
## Send a design from Claude to Replit
When you create something in Claude's design canvas, you can send it straight to Replit. Choose **Replit** as the destination, and your design opens in Replit as a runnable app. Agent then plans how to turn the static design into a working product, so you can keep building, add a database, and publish.
For the full design-handoff walkthrough, see [Import Claude designs into Replit Design](/design/import-claude-designs-into-replit-design).
## How it works
The Replit connector drives Replit through the [Replit MCP Server](/platforms/mcp-server). Claude handles the connection for you.
## Related
* [Replit in ChatGPT](/features/platforms/chatgpt) — build Replit Apps from a ChatGPT conversation.
* [Import Claude designs into Replit Design](/design/import-claude-designs-into-replit-design) — the full Claude design handoff.
* [Replit MCP Server](/platforms/mcp-server) — the developer reference for the MCP server that powers these surfaces.
# Replit Desktop App
Source: https://docs.replit.com/features/platforms/desktop-app
The redesigned Replit Desktop App brings the full Replit experience to your computer, with native multitasking, status signals, and tab previews.
The Replit Desktop App brings the full Replit experience to your computer. Build with Agent in a dedicated app, with native touches you don't get in a browser tab.
## What is the Replit Desktop App
The Replit Desktop App is a redesigned, native app for Windows and Mac. It has the same experience you get on the web, so you can create apps, chat with Agent, and publish, all from one window. On top of that, it adds a few things only a desktop app can do:
* **Multitasking**: Work across several Replit Apps at once.
* **Status signals**: See at a glance when Agent needs you or finishes working.
* **Tab previews**: Glance at your open apps without switching between them.
## Getting started
Go to the desktop app download page and download the version for your computer.
Open the downloaded file and follow the prompts to install. Launch the app when it finishes.
Sign in with your Replit account, or create one if you're new. Everything you build stays in sync with [replit.com](https://replit.com).
Your apps, history, and settings are the same across the desktop app and the web. Start something on one and pick it up on the other.
## Features
* **[Agent](/build/welcome)**: Build and edit apps through conversation.
* **[Project Editor](/learn/projects-and-artifacts/project-editor)**: The full development environment.
* **[Publishing](/features/publishing/overview)**: Share your apps with zero setup.
## For Enterprise teams
The desktop app makes it easy to roll out Replit across your organization. Because it installs like any other desktop app, your IT team can distribute and install it automatically on company computers through your device management (MDM) provider. Reach out to your account manager to learn more.
## Next steps
* **[Replit AI](/build/welcome)**: Learn more about Agent and AI-powered tools.
* **[Mobile App](/features/platforms/mobile-app)**: Build from your phone or tablet.
* **[Publishing](/features/publishing/overview)**: Share Replit Apps with zero setup.
# Replit Mobile App
Source: https://docs.replit.com/features/platforms/mobile-app
The Replit Mobile App for iOS and Android lets you create and edit projects on the go.
The [Replit Mobile App](https://replit.com/mobile) puts your projects in your pocket: pick up right where you left off, or build something new from scratch, wherever you are. Chat with Agent, edit your project, and publish to the web, with an interface optimized for touch.
## Getting started
Follow these steps to install the app and create a project.
### Install the app
1. Navigate to the [mobile app download page](https://replit.com/mobile) and install the app for your mobile device OS.
2. Open the app and sign up for a new account or log in with an existing one.
If you register for a new account, you must verify your email address to complete the process.
### Start building
The home screen offers both paths:
* **Pick up where you left off**: open a project under **Recent Projects** and keep going.
* **Build from scratch**: describe what you want in the prompt box and send it. Agent starts building your project right away.
To start from a pre-built template or existing code instead, tap ⋮ in the top right, then choose **Remix a Template** or **Import from GitHub**.
Building a native iOS app? Use the Project Editor at [replit.com](https://replit.com) to create, preview, build, or submit it. Native mobile app work is available in the Replit Android app where supported.
## Navigate your project
After you open a project, swipe left or right to move between the **Agent**, **Tools**, and **Tasks** panes.
Select the artifact bar at the bottom to preview and switch between your project's artifacts, such as the website and the canvas.
On iPhone and iPad, swipe right from the left edge to return to the home screen.
## Mobile features
### Voice input
Use the voice option in Agent's prompt box to describe what you want to build or change, hands-free.
### Live Activities
Follow along with Agent's progress on the go. When Agent starts, you'll see a notification: tap **Allow** on your lock screen, and you can check progress without opening Replit.
* iPhone running iOS 18 or later
* iPad running iOS 18 or later
* Mac running macOS Tahoe or later
* Paired Apple Watch
### Notifications
Get updates that matter, wherever you are. Go to **Settings** and open **Notifications** (e.g. under **User**). Ensure Notifications is toggled on and tap allow if prompted.
Replit notifies you when:
* Agent needs your help
* Agent is done working
* There are important billing updates
### Tablet Keyboard Mode
Connect a keyboard to your tablet for a creation experience optimized for larger screens. When you first open the Project Editor with a keyboard connected, you'll be asked if you want to enable it.
Go to **Account** > **Keyboard Settings** anytime to toggle it on or off.
## Upgrade and billing
To upgrade to Core in the app, go to **Account**, tap **Upgrade**, choose your plan, and tap **Continue with Core**. Pro isn't available for purchase in the mobile app; it must be purchased on [replit.com](https://replit.com).
To use Agent beyond the credits included with your subscription, add a payment method for [usage-based billing](/billing/about-usage-based-billing):
* **On the web**: go to replit.com and open **Settings** → **Account** → **Billing**.
* **In the app (iOS in US only)**: open **Settings** → **Billing** (or **Account** → **Billing**).
## Next steps
* **[Agent](/features/agent/overview)**: Learn more about Agent and AI-powered tools
* **[Project Editor](/learn/projects-and-artifacts/project-editor)**: Explore the full development environment
* **[Publishing](/features/publishing/overview)**: Share Replit Apps with zero setup
* **[Mobile app troubleshooting](/features/troubleshooting/mobile-app)**: Fix common issues on iOS and Android
# Replit in Slack
Source: https://docs.replit.com/features/platforms/slack
Mention @Replit in Slack to turn a prompt into a working prototype — without leaving your team's workspace.
Add the **Replit** app to your Slack workspace, then mention **@Replit** with a prompt to go from idea to a working prototype — AI-powered development right in your team's conversations.
## What you can do
Mention **@Replit** with your idea in any channel, and Replit's Agent builds a working prototype you can use or iterate on right away:
* Generate prototypes and designs from a natural-language prompt.
* Get a working result back in seconds, then refine it in the thread.
* Collaborate with your team on the prototype without leaving Slack.
Try mentioning Replit with an idea, like "@Replit build a form that collects team lunch orders" or "@Replit make a landing page for our launch." Replit's Agent builds a prototype and posts it back in the conversation.
## Add Replit to Slack
Install the app from [Replit for Slack](https://replit.com/partners/slack-app) and select **Add to Slack**. Choose the Slack workspace to connect, review the permissions, and select **Allow**. Once it's installed, mention **@Replit** in any channel to start building.
Replit's Agent uses AI to generate responses, so outputs may occasionally be inaccurate or incomplete — verify important details independently.
## How it works
Mentioning **@Replit** drives Replit through the [Replit MCP Server](/platforms/mcp-server). Slack handles the connection for you.
## Related
* [Replit in ChatGPT](/features/platforms/chatgpt) — build Replit Apps from a ChatGPT conversation.
* [Replit in Claude](/features/platforms/claude) — use Replit as a connector inside Claude.
* [Replit MCP Server](/platforms/mcp-server) — the developer reference for the MCP server that powers these surfaces.
# Replit App Configuration
Source: https://docs.replit.com/features/project-setup/configuration
Learn how to configure your Replit app using .replit and replit.nix files.
Replit Apps are configured with two files: the `.replit` and `replit.nix`. They affect how your Replit App behaves, from code execution to development tools and languages.
These configuration files are hidden by default. Show them in your Replit App by selecting "Show hidden files" from the filetree menu.
## `replit.nix` file
Replit uses `Nix` to manage packages and environments. The `replit.nix` file is used for:
**Specifying system dependencies:** Define exactly what software packages your Replit App requires, managed through Nix, a package manager.
**Creating reproducible environments:** Ensure your development environment is consistent and reproducible, ideal for collaborative projects and testing across multiple systems.
You can manage Nix packages visually through the `Dependencies` tool. Learn more in the [System Dependencies](/features/project-setup/dependency-management#system-dependencies) guide.
To configure packages with the `replit.nix` file, you can list [Nix packages](https://search.nixos.org/packages) in the `deps` array, prefixed with `pkgs.`. Any changes will be synced after your shell is reloaded.
```nix theme={null}
{ pkgs }: {
deps = [
pkgs.nodejs-19_x
pkgs.nodePackages.typescript-language-server
pkgs.yarn
pkgs.replitPackages.jest
];
}
```
## `.replit` file
The `.replit` file controls your Replit App's behavior. It uses the `toml` [configuration format](https://toml.io/en/). Here are some of the key aspects that can be configured:
**Run command:** Specify the command that executes when the Run button is selected. Each template has a default run command to allow code execution immediately. For more customized and complex apps, use [Workflows](/features/workspace-tools/workflows).
**Language Server Protocol (LSP)**: Provides features like auto-complete, code navigation, code highlighting, and real-time linting and errors.
**Environment variables:** Set and manage environment variables essential for your applications to run correctly.
**Dependencies and packages:** Manage package installations and configurations directly through the `.replit` file, ensuring your Replit App has all the necessary tools ready upon startup. You can manage dependencies visually through the `Dependencies` tool. Learn more in the [System Modules](/features/project-setup/dependency-management#advanced-configuration) guide.
For Python applications, the default `.replit` file looks like:
```toml theme={null}
entrypoint = "main.py"
modules = ["python-3.10:v18-20230807-322e88b"]
[nix]
channel = "stable-23_05"
[unitTest]
language = "python3"
[gitHubImport]
requiredFiles = [".replit", "replit.nix"]
[deployment]
run = ["python3", "main.py"]
deploymentTarget = "cloudrun"
```
The following table provides a view of each setting within the `.replit` file, explaining what each configuration does and its impact on the Replit App environment.
| **Configuration key** | **Value/Example** | **Description** |
| ----------------------------------------------- | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `entrypoint` | `main.py` | Specifies the main file to be executed and displayed by default when the editor is opened. You can rename the file name based on your application. |
| `modules` | `["python-3.10:v18-20230807-322e88b"]` | Defines specific versions of programming languages or other major dependencies supported by Replit. |
| `[nix]` | | Specifies settings for using Nix, a package manager, to manage system dependencies. Refer to [Dependency Management](/features/project-setup/dependency-management) document for more information. |
| `channel` | `stable-23_05` | Indicates the Nix channel to use, which affects the versions of system dependencies available. |
| `packages` | `["cowsay", "htop"]` | Specifies some Nix packages to install. For more fine-grained control you can also use `replit.nix`. |
| `[unitTest]` | | Configures settings related to unit testing within the Replit App. |
| `language` | `python3` | Specifies the language used for unit testing, indicating that Python 3 is used for writing tests. |
| `[gitHubImport]` | | Settings that affect how projects are imported from GitHub, specifically which files must be included. |
| `requiredFiles` | `[".replit", "replit.nix"]` | Lists the files that must be present when importing the project to ensure it functions correctly. |
| `[deployment]` | | Contains settings for deploying the application from the Replit App to a live environment. |
| `run` | `["python3", "main.py"]` | Command executed to start the application during deployment. |
| `deploymentTarget` | `cloudrun` | Specifies the deployment target platform for hosting the application. |
Now that you have an idea of the default configurations of the `.replit` file use the next sections to understand how to configure basic and advanced settings for your Replit App.
## Configuring basic settings
### Entrypoint
This is the main file of your project. If you do not define a `run` property, `entrypoint` is the file that gets executed by the runtime.
```toml theme={null}
entrypoint = ".py"
```
### `Run` command
The `run` property in the `.replit` file is a key feature that determines the initial command or series of commands executed when the `Run` button is selected in a Replit environment. The `Run` command can be specified either as a string representing the command to execute, or an array of strings representing the command and individual arguments to that command.
Some common ways to configure the `Run` command:
* **Single command:**
This example shows how to pass single command to execute directly in the Replit App. With this in your `.replit` file, pressing the `Run` button will display a greeting in the `Console` pane:
**Example:** `run = "echo 'Hello, Replit!'"`
* **Explicit arguments:**
In some situations it may be beneficial to be more explicit, avoiding the need for parsing quotes or shell interpolation rules. You can rewrite the above example to separate the arguments.
Note, you no longer need both `'` and `"`, since you are explicitly passing the greeting as the first and only argument to `echo`:
**Example:** `run = ["echo", "Hello, Replit!"]`
* **Multiple commands:**
This example shows how to run multiple processes, such as a frontend and a backend, simultaneously. This could be useful if developing a python backend and a typescript frontend, where each server binds to a different port:
**Example:** `run = "python -m app & npm run start & wait"`
#### Process management
While multiple commands can be simultaneously run with `&`, you may want a better experience distinguishing logs between services. You can [add system dependencies](/features/project-setup/dependency-management#system-dependencies) like [`process-compose`](https://github.com/F1bonacc1/process-compose) to better orchestrate multiple processes.
#### `Build` phase
For some languages or runtimes, there is a separate compilation phase before code can be `run`. This covers both compiled languages like TypeScript, Golang, or Java, or offering a parameter you can use to reset your environment, data, or configuration before the next `run` is invoked.
* **Compiling:**
In a TypeScript repository, you may find yourself needing to run `tsc` prior to executing your code.
**Example:**
```toml theme={null}
build = "tsc app.ts"
run = "node app.js"
```
#### Including environment variables
To supply environment variables to your service before execution, you can expand the `run` property into a [table](https://toml.io/en/v1.0.0#table).
This is a more involved change, and likely requires moving where your `run = "..."` property is located inside your `.replit` file.
The following diff shows supplying the command by way of `[run]`'s `args`, as well as the variable `NAME` supplied in `[run.env]`:
```diff theme={null}
-run = ["bash", "-c", "echo \"Hello, $NAME!\""]
modules = ["nodejs-20"]
hidden = [".pythonlibs"]
+# We need to move our new [run] down past all the
+# top-level properties that do not start with a `[`!
+[run]
+args = ["bash", "-c", "echo \"Hello, $NAME!\""]
+
+[run.env]
+NAME="Replit"
[nix]
channel = "stable-23_11"
```
#### Interactivity
Interactive programs can also be launched by way of the `Run` button, offering a way to distinguish your development environment from the terminal where your program is running.
Consider the following tally script:
**Example**
```toml theme={null}
[run]
args = ["bash", "-c", """
count=0
while read -p "$PROMPT" -r next && [ -n "$next" ]; do
count=$((count+next))
done
echo "The numbers you entered sum to $count!"
"""]
[run.env]
PROMPT = "Next number ([Enter] to end): "
```
## Advanced configuration options
Explore the detailed configuration options available for your Replit App. You can customize your development environment, manage run commands, integrate language services, and handle dependencies.
| **Configuration** | **Key** | **Value/Example** | **Description** |
| ----------------- | ----------------------------------- | ------------------------------------------- | -------------------------------------------------------------------------------- |
| onBoot | `onBoot` | `onBoot = "npm install"` | Command that executes when the Replit App boots up. |
| compile | `compile` | (No default example) | Command that runs before the `run` command, used in compiled languages like C++. |
| language | `language` | `language = "javascript"` | Specifies the language during a GitHub import or when creating a Replit App. |
| entrypoint | `entrypoint` | `entrypoint = "index.js"` | Main file to run and display when opening the editor. |
| hidden | `hidden` | `hidden = [".config", "package-lock.json"]` | Files or folders to hide by default in the side file tree. |
| audio | `audio` | `audio = true` | Enables System-Wide Audio when set to `true`. |
### Notes about System-Wide Audio
When setting `audio = true` in your `.replit` file, you may need to restart the development environment. Open the command palette with `Cmd+K` (Mac) or `Ctrl+K` (Windows), search for **Restart compute**, and select it.
When running a graphical application, you will see a pair of headphones with a checkbox in the lower right of the `Output` pane.
Due to browser restrictions, this will need to be enabled every time you refresh.
```toml theme={null}
# Ensure this is at the top of your `.replit` file, outside of any `[`-bracketed section
audio = true
```
## Packager configuration
| **Configuration** | **Key** | **Value/Example** | **Description** |
| ----------------- | ------------------------------------------------- | --------------------------------------------- | ---------------------------------------------------------------------------- |
| packager | `language` | `packager.language = "python3"` | Language used for package operations. |
| packager features | `guessImports` | `packager.features.guessImports = true` | Automatically guess packages to install prior to running the Replit App. |
| packager features | `packageSearch` | `packager.features.packageSearch = true` | Enables support for the packager when set to `true`. |
| packager features | `enabledForHosting` | `packager.features.enabledForHosting = false` | Sets whether hosting the Replit App requires running a package installation. |
| packager | `afterInstall` | `afterInstall = "echo 'package installed'"` | Command executed after a new package is installed via the packager. |
| packager | `ignoredPaths` | `ignoredPaths = [".git"]` | Paths to ignore while attempting to guess packages. |
| packager | `ignoredPackages` | `ignoredPackages = ["twitter", "discord"]` | Modules should never attempt to guess a package during installation. |
### Example `.replit` configuration for packager configuration
```toml theme={null}
# Define the language for the Replit App
packager.language = "python3"
# Enable features for automatic package management
[packager.features]
guessImports = true
packageSearch = true
enabledForHosting = false
# Command to run after each package installation
packager.afterInstall = "echo 'Package installed successfully'"
# Define paths and packages that should be ignored by the package manager
packager.ignoredPaths = [".git", "node_modules"]
packager.ignoredPackages = ["twitter", "discord"]
# Additional deployment settings
[deployment]
run = ["python3", "app.py"]
```
## Deployment configuration
| **Configuration** | **Key** | **Value/Example** | **Description** |
| ----------------- | ------------------------------------- | ------------------------------------ | ----------------------------------------------------------------- |
| deployment | `run` | `deployment.run = "npm start"` | Command that executes when a Deployment container starts. |
| deployment | `build` | `deployment.build = "npm run build"` | Command that executes before running a Deployment. |
| deployment | `ignorePorts` | `deployment.ignorePorts = true` | If `true`, deployment success doesn't require an open port check. |
### Example `.replit` configuration for deployment configuration
```toml theme={null}
# Specifies the main entry point for the project
entrypoint = "app.js"
# Configuration settings for deploying the application
[deployment]
run = "npm start"
build = "npm run build"
ignorePorts = true
```
**Interpreter configuration** has been deprecated and is no longer available in Replit. Instead, you are encouraged to use the `Run` commands to configure how scripts and applications are executed within your Replit App environment.
## Port configuration
| **Configuration** | **Key** | **Value/Example** | **Description** |
| ----------------- | --------------------------------------- | ------------------- | --------------------------------------------------- |
| ports | `localPort` | `localPort = 3000` | Port that Replit binds to an external port. |
| ports | `externalPort` | `externalPort = 80` | Publicly accessible port linked to the `localPort`. |
### Example `.replit` configuration file for managing ports
```toml theme={null}
# Networking configuration to expose your application on specific ports
[[ports]]
localPort = 3000
externalPort = 80
```
## Accessing Replit App environment metadata
### Node.js
To access all environment variables:
`console.log(process.env);`
To access a single variable (REPL\_SLUG):
`console.log(process.env.REPL_SLUG);`
### Python
To access all environment variables:
```python theme={null}
import os
print(os.environ)
```
To access a single variable (REPL\_SLUG):
```python theme={null}
import os
variable = os.environ.get('REPL_SLUG')
print(variable)
```
### Rust
To access all environment variables:
```rust theme={null}
use std::env;
fn main() {
for (key, value) in env::vars() {
println!("{}: {}", key, value);
}
}
```
To access a single variable (REPL\_SLUG):
```rust theme={null}
use std::env;
fn main() {
let variable = env::var("REPL_SLUG").unwrap();
println!("{}", variable);
}
```
## Environment variables
Following are the environment variables accessible from within your Replit App:
| key | description |
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `REPL_OWNER` | The username of the owner of the Replit App. If your Replit App is text-based and has no webserver, `REPL_OWNER` will reflect the value of the current user accessing the Replit App |
| `REPL_ID` | The unique UUID string of your Replit App |
| `HOME` | The home path of your Replit App |
| `system` | The operating system running on your Replit App |
| `LANG` | Sets the language and character encoding for your Replit App, affecting how text is processed and displayed |
| `REPL_IMAGE` | The docker image that corresponds to your Replit App |
| `REPL_LANGUAGE` | The programming language configured for your Replit App, used to determine the runtime environment and tooling |
| `REPL_PUBKEYS` | A stringified JSON object containing different public API keys |
| `REPL_SLUG` | A simplified, machine-readable version of the name of the Replit App, suitable for use in URLs and file names |
| `PRYBAR_FILE` | The main/entrypoint file of your Replit App |
| `REPLIT_DEV_DOMAIN` | Provides the `replit.dev` URL for your Replit App in the Project Editor. Note that this environment variable is not available in Deployments |
# Dependency Management
Source: https://docs.replit.com/features/project-setup/dependency-management
Learn how to install and manage packages and dependencies for your Replit App across different languages.
Replit provides several ways to install and manage packages for your Replit App. You can install packages using the [Shell](/features/workspace-tools/shell), ask [Agent](/features/agent/overview/) to handle it for you, or let Replit automatically detect and install missing dependencies when you run your Replit App.
## Install packages using the Shell
Open the **Shell** tool in the Project Editor and run the appropriate command for your language's package manager:
```bash Node.js (npm) theme={null}
npm install
```
```bash Node.js (pnpm) theme={null}
pnpm add
```
```bash Python (poetry) theme={null}
poetry add
```
```bash Python (pip) theme={null}
pip install
```
```bash Ruby theme={null}
bundle add
```
You can also use Replit's [Universal Package Manager (UPM)](https://github.com/replit/upm/) to install packages across supported languages:
```bash theme={null}
upm add
```
To install a specific version:
```bash theme={null}
upm add 'flask==2.3.3'
```
For all supported languages and package managers, see [UPM: Supported Languages](https://github.com/replit/upm/#supported-languages).
## Install packages using Agent
You can ask [Agent](/features/agent/overview/) to install packages for you directly in chat. For example:
* "Install the axios package"
* "Add Flask and SQLAlchemy to my project"
* "Set up TailwindCSS"
Agent installs the package using the appropriate package manager for your project and updates the relevant configuration files.
## Automatic import detection
Replit automatically analyzes your code for missing dependencies each time you select **Run**. If your code imports a package that is not yet installed, Replit detects it and installs the latest version automatically.
For example, if you add `import flask` to `main.py`, the next time you select **Run**, the **Console** displays a message indicating that **Flask** is being installed.
You can configure automatic import detection in the [.replit](/features/project-setup/configuration#replit-file) file using the `packager.features.guessImports` setting.
### Override automatic detection
If the wrong package was detected, or you need a specific version, run the correct install command in the Shell. For example:
```bash theme={null}
upm add 'flask==2.3.3'
```
You can also exclude specific packages or paths from automatic detection in your [.replit](/features/project-setup/configuration#replit-file) file:
## Python package managers
When you create a Python Replit App, your package manager is **poetry** by default. This means `pip install` does not manage your dependencies. Instead, use `poetry add ` or `upm add ` in the Shell.
### Switch from poetry to pip
If you prefer using `pip`, follow these steps:
Open the Shell and run:
Remove the lock file so that the packaging infrastructure switches to pip:
```bash theme={null}
rm poetry.lock
```
Transfer your dependencies from the `[tool.poetry.dependencies]` section in `pyproject.toml` to `requirements.txt`. For example, `flask = "^3.0.2"` becomes `flask>=3.0.2,<4`.
Delete the `[tool.poetry...]` sections from `pyproject.toml`.
After these changes, the packaging infrastructure uses `pip` for all future operations, and automatic import detection continues to work as expected.
## System dependencies with Nix
Replit supports all programming languages through integration with [Nix](https://nixos.org/). If you need system-level dependencies beyond standard language packages, you can add them to your [replit.nix](/features/project-setup/configuration#replit-nix-file) file.
### Nix packages
Add system-level dependencies by editing `replit.nix` directly. You can search for available packages at [search.nixos.org](https://search.nixos.org/packages).
### Modules
Modules combine support for programming languages, formatters, and packagers. They provide the foundation for your Replit App. If you create a Replit App from a template or GitHub repository, Replit automatically installs the required modules.
You can customize modules and other Nix settings using the [.replit](/features/project-setup/configuration#replit-file) file.
## Packager configuration
You can fine-tune package management behavior in your [.replit](/features/project-setup/configuration#replit-file) file:
| Setting | Description | Default |
| ------------------------------------- | -------------------------------------------------------- | ---------------------- |
| `packager.language` | Language used for package operations | Detected automatically |
| `packager.features.guessImports` | Automatically detect and install missing packages on Run | `true` |
| `packager.features.packageSearch` | Enable package search support | `true` |
| `packager.features.enabledForHosting` | Require package installation when hosting | `false` |
| `packager.afterInstall` | Command to run after a package is installed | — |
| `packager.ignoredPaths` | Paths to ignore during import detection | `[]` |
| `packager.ignoredPackages` | Packages to exclude from automatic detection | `[]` |
# Developer Frameworks
Source: https://docs.replit.com/features/project-setup/developer-frameworks
Language and framework starter templates have been removed. Learn how to start a new Replit project today.
## Developer framework templates have been removed
Language and framework starter templates (previously called developer frameworks) are no longer available on Replit. The `replit.com/templates` and `replit.com/developer-frameworks` pages now redirect to the [Replit Gallery](https://replit.com/gallery).
To start a new project, use one of the following instead:
* **Start with Replit Agent** — Describe what you want to build from the [home page](https://replit.com/) and let Agent scaffold the project for you.
* **[Import from GitHub, GitLab, or Bitbucket](/build/import-from-providers)** — Bring an existing codebase or a starter stack in as a new Replit App.
* **[Remix a published app](https://replit.com/gallery)** — Browse the Replit Gallery for community apps you can view and remix as a starting point.
## Enterprise custom templates
Enterprise organizations can create [custom templates](/teams/custom-templates) that appear as selectable options in the Agent input box for all org members. Custom templates go beyond developer frameworks by including company-specific Agent instructions, skills, and pre-configured project context. See the [custom templates guide](/teams/custom-templates) for details.
# Ports
Source: https://docs.replit.com/features/project-setup/ports
Learn how to configure and manage network ports in your Replit app.
Because Replit runs your projects on a cloud environment, ports work differently on Replit than on your local computer. (If you need a more basic explanation of what TCP ports are, [start here](https://www.reddit.com/r/explainlikeimfive/comments/1t9s5a/eli5_what_are_ports_ex_tcp_port/).)
On a computer, you only have one layer of port management: your programs define a port that they listen to, and when traffic hits that port on your computer from the internet, they get routed to the appropriate process.
The `0.0.0.0` part is the address, or host. If a process is listening on `0.0.0.0`, that means it should listen on every network interface — which means that if another computer (on the internet) sends a request to your computer’s IP address, it will see it. So, listening on 0.0.0.0 means those processes are accessible to the public internet (if your computer is connected.)
Most programming frameworks will *not* listen on `0.0.0.0` when you’re developing, because you don’t necessarily want your work exposed to the public while you’re working on it, for privacy & security. Instead, they’ll listen on a different address — `127.0.0.1`, otherwise known as `localhost`. This means only that computer can make requests to that port.
On Replit, for a process you're running to be accessible in the webview or via an external request, it has to have an **external port** defined. This is because the "internal port" that processes typically use is only visible from inside the sandboxed cloud environment that Replit provides. That internal port must be connected to an externally accessible port to send the right traffic to your programs. Even if your process listens on a port typically available to the public like 0.0.0.0, it still needs to be bound to an external port.
Replit does this by binding external ports to specific internal ports—for example, in the diagram above, the external port `:80` is bound to the internal port `:3000`. That means any traffic that Replit App gets on port 80 will go to the internal port 3000.
This configuration is captured in the \[\[ports]] section of the .replit config file.
By default, Replit binds the first port you open to the default external port 80, which allows that process to be available at the domain without a port address (e.g. customdomain.com/ instead of customdomain.com:3000/). Additional internal ports that are opened are bound to other available external ports (see a full list below.)
## Preview
In the Preview tool, you can change which external port the webview is rendering by clicking the domain and selecting a different port. You can also open the networking tool from the “gear” icon for more details.
## Default port
Port :80 is the "default port" for http traffic, so http traffic sent to the root domain will automatically be routed to port 80. The port path is not shown in the url for port 80 for that reason. Ports other than :`80` will show up in the domain path (e.g. customdomain.com:4200/). (Replit provides TLS by default, so it will technically be over port 443, which is the default port for https. For all intents and purposes, you can treat them as interchangeable.)
## Networking tool
For more details about port config and networking, you can open the networking tool. It shows the status of ports open in your Replit App, what external port they’re bound to, and lets you add or remove configuration.
## Publishing
Autoscale and Reserved VM deployments only support a single external port being exposed, and for the corresponding internal port not to be using `localhost`. If you expose more ports, or expose a single port on localhost, your published app will fail. An easy way to make sure your Autoscale deployments work as expected is to remove all the `externalPort` entries for the ports in your config *except* the port for the service you want to interact with from the internet.
## Debugging
A common reason something might not be working as you’d expect is that while your port config looks right, your program is actually looking at a different port. For example, if your config is:
```
[[ports]]
internalPort = 3000
externalPort = 80
```
Then internet traffic to port 80 will go to internal port 3000. However, if your program is actually not listening on port 3000, but rather something else (like 8080), it will appear as if no traffic is getting through. This can happen if you switch the port in your code without switching the corresponding port in your config, or copy-paste config from one project to another.
Each framework has different default ports it listens to — for example, Flask is 5000, react is 3000, and laravel is 8000. Make sure the right port is configured!
## Preferences
Replit automatically binds ports that are opened in your Replit App to available external ports when they are opened, and records that binding in the .replit config file.
However, this does not happen by default for internal ports that open on localhost, because services that usually run on localhost typically assume that they will only be accessible on the same computer as the process that's running (localhost ports are only visible to the same computer running the process.) This means those services are often not as secure as services built under the assumption that they'll be available to the public internet.
You can always override this by setting the `exposeLocalhost` config option to `true` for the port you want to expose.
If you want to *always* expose localhost ports by default, you can set your “automatic port forwarding” setting in the User Settings tool to “All ports”.
If you want to *never* create config for ports that are opened, and manually control the port config for all your Replit App, you can set that to “never”.
## Supported ports
Replit App will define port 80 as the external port by default when the first port opens. A Replit App can expose 3000, 3001, 3002, 3003, 4200, 5000, 5173, 6000, 6800, 8000, 8008, 8080, 8081, as extra external ports.
Ports 22 and 8283 are not forwardable, as they are used internally.
## `[[ports]]` .replit config
Type: `{localPort, externalPort, exposeLocalhost}`
The `[[ports]]` config Allows you to configure which HTTP port to expose for your web output. By default, any exposed HTTP port with host 0.0.0.0 will be exposed as your Replit App's web output.
Extra ports can be served without overriding the default port by adding a new \[\[ports]] entry to your .replit file. You are required to specify both a localPort and externalPort entry. You can add multiple extra ports by adding multiple \[\[ports]] entries to your .replit file as defined below.
### localPort
Determines which port Replit will bind to an external port.
### externalPort
Determines which port should be exposed for that local port’s publicly accessible port.
```toml theme={null}
[[ports]]
localPort = 3000
externalPort = 80
```
If you want to *never* expose a particular port, you can leave the `localPort` config but just not add an `externalPort`:
```toml theme={null}
[[ports]]
localPort = 3000
```
### exposeLocalhost
Determines whether an internal port using `localhost` can be bound to an external port. Can be `true`, `false`, or null.
```toml theme={null}
[[ports]]
localPort = 3000
externalPort = 80
exposeLocalhost = true
```
# replit.md
Source: https://docs.replit.com/features/project-setup/replit-dot-md
Learn how to use replit.md to customize Agent's behavior, coding style, and project context.
Agent automatically creates this file in your project's root directory using proven best practices. Agent includes its contents in the context to help it understand your preferences, project structure, and coding style.
## How `replit.md` works
Agent first creates a `replit.md` file in your project's root directory using proven best practices. This file includes:
* Basic project information
* Recommended coding patterns
* Common preferences for your project type
When Agent processes your requests, it automatically reads your `replit.md` file and uses its contents to:
* Understand your project's architecture and conventions
* Follow your preferred coding patterns and style
* Use your specified package managers and dependencies
Agent can also update your `replit.md` file as it learns more about your project and makes changes to your application.
You can edit the `replit.md` file to customize Agent's behavior.
## Setting up `replit.md`
### Automatic generation
When you create a new project with Agent, it automatically generates a `replit.md` file using proven best practices. This file appears in your project's root directory and includes:
* Basic project information
* Recommended coding patterns
* Common preferences for your project type
### Manual creation
You can create your own `replit.md` file by adding a new file named `replit.md` in your project's root directory. Agent will automatically detect and use this file in future conversations.
`replit.md` must be located in your project's root directory to work properly.
### Regenerating `replit.md`
If your `replit.md` file becomes corrupted or you want to start fresh:
1. Delete the existing `replit.md` file from your project root
2. Start a new conversation with Agent
3. Agent will automatically generate a new `replit.md` file based on your current project
## Best practices
### Be specific and clear
Write clear, specific instructions that help Agent understand exactly what you want:
```markdown theme={null}
## Coding Style
- Use TypeScript for all new JavaScript files
- Prefer functional components with hooks over class components
- Use Tailwind CSS for styling, avoid inline styles
- Always include TypeScript types for function parameters and return values
```
For a more detailed guide on prompt formatting, check out the [Anthropic prompt engineering guide](https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/use-xml-tags).
### Use examples
Examples help Agent understand your preferences better than abstract descriptions:
````markdown theme={null}
## API Error Handling
When creating API endpoints, always use this error handling pattern:
```javascript
app.get('/api/users', async (req, res) => {
try {
const users = await getUsersFromDatabase();
res.json({ success: true, data: users });
} catch (error) {
console.error('Error fetching users:', error);
res.status(500).json({
success: false,
error: 'Failed to fetch users'
});
}
});
````
### Define communication preferences
Tell Agent how you prefer to receive information and updates:
```markdown theme={null}
## Communication Style
- Before implementing changes, explain what you're going to do and why
- Break down complex tasks into clear steps
- Ask for clarification if requirements are unclear
- Provide brief explanations for technical decisions
```
### Specify project context
Help Agent understand your project's purpose and constraints:
```markdown theme={null}
## Project Context
This is a social media app for book lovers where users can:
- Create reading lists and share book recommendations
- Follow other readers and see their updates
- Rate and review books they've read
Target audience: Casual readers aged 25-45
Tech stack: React frontend, Node.js backend, PostgreSQL database
```
## Example `replit.md` configurations
### Web application project
```markdown theme={null}
# MyApp Project Guidelines
## Project Overview
A task management web application built with React and Express.js.
## Technology Preferences
- Frontend: React with TypeScript, Tailwind CSS
- Backend: Express.js with TypeScript
- Database: Neon PostgreSQL with Drizzle ORM
- Package Manager: npm (not yarn or pnpm)
## Coding Standards
- Use functional components with hooks
- Implement proper error boundaries
- Follow REST API conventions for endpoints
- Use descriptive variable and function names
## Communication Style
- Explain your approach before making changes
- Provide code comments for complex logic
- Ask questions if requirements are ambiguous
```
### Data analysis project
```markdown theme={null}
# Data Analysis Project Guidelines
## Project Context
Analyzing customer behavior data to identify trends and insights.
## Technology Preferences
- Python with Streamlit for interactive web applications
- pandas, numpy, and matplotlib for data analysis
## Analysis Standards
- Include clear documentation for all analysis steps
- Create interactive visualizations with Streamlit components
- Validate data quality before analysis
- Export results to CSV format and display in Streamlit tables
## Communication Style
- Explain statistical methods and assumptions
- Provide context for findings and recommendations
- Use clear, non-technical language for business insights
- Create interactive dashboards for stakeholder presentations
```
### API development project
```markdown theme={null}
# API Development Guidelines
## Project Overview
Building a RESTful API for a mobile app backend.
## Technology Stack
- Node.js with Express.js
- MongoDB with Mongoose
- JWT for authentication
- Package manager: npm
## API Standards
- Use semantic HTTP status codes
- Implement proper input validation
- Include rate limiting on public endpoints
- Follow OpenAPI specification for documentation
## Security Requirements
- Validate all user inputs
- Use environment variables for sensitive data
- Implement proper CORS policies
- Include request logging for debugging
## Testing Approach
- Write unit tests for all endpoints
- Include integration tests for critical flows
- Use Jest as the testing framework
```
## Advanced usage
### Dynamic project guidance
Update your `replit.md` file as your project evolves to provide current context:
```markdown theme={null}
## Current Development Phase
The team is currently focused on implementing user authentication.
Priority features:
1. User registration and login
2. Password reset functionality
3. Email verification
## Recent Decisions
- Switched from local authentication to OAuth with Google
- Added Redux for state management
- Decided to use Material-UI for consistent styling
```
### Integration with external tools
Reference external documentation and tools in your `replit.md`:
```markdown theme={null}
## External Resources
- Design system: Follow the Figma design system at [link]
- API documentation: Reference our internal API docs
- Coding standards: Follow the team style guide in our wiki
## Deployment Process
- Test changes in development environment first
- Use the CI/CD pipeline for staging published apps
- Require code review before production releases
```
## Combining web search with `replit.md`
Agent can perform web searches to find current information, libraries, and solutions. When combined with your `replit.md` file, you get both up-to-date knowledge and project-specific guidance.
### Best practices for web search integration
**Be specific about what you want Agent to research:**
```markdown theme={null}
## Research Preferences
- Always check for the latest versions of dependencies before suggesting updates
- Research current best practices for security implementations
- Look up recent performance optimization techniques for our tech stack
```
**Guide Agent on how to apply external knowledge:**
```markdown theme={null}
## External Research Guidelines
- When suggesting new libraries, ensure compatibility with our existing stack
- Adapt external examples to match our coding standards and project structure
- Verify that suggested solutions work with our publishing environment
```
**Example request that leverages both:**
"Research the latest React 18 performance optimization techniques and implement them following the component patterns defined in `replit.md`"
This approach gives you solutions that are both current and tailored to your specific project needs.
## Limitations
### File size and content limits
While there's no strict character limit for `replit.md`, extremely large files may not be fully processed. Keep your `replit.md` focused and concise for best results.
### Root directory requirement
`replit.md` must exist in your project's root directory. Agent won't automatically detect files in subdirectories.
### Context scope
`replit.md` provides context for Agent conversations but doesn't automatically apply to other AI tools.
## Next steps
Ready to customize Agent for your project?
1. **Start simple**: Create a basic `replit.md` with your key preferences
2. **Iterate and improve**: Update your `replit.md` as you work with Agent
3. **Share patterns**: Use successful `replit.md` configurations across similar projects
4. **Monitor effectiveness**: Pay attention to how well Agent follows your guidelines and adjust accordingly
Learn more about [working with Agent](/features/agent/overview) or explore other [AI tools](/build/welcome).
**Enterprise**: Pre-configure `replit.md` in [custom templates](/teams/custom-templates) to give every builder in your organization a consistent starting context. For design-specific guidance, see [setting up a design system](/teams/custom-design-system).
# After you publish
Source: https://docs.replit.com/features/publishing/after-you-publish
What happens when you select Publish: the publishing stages, updating your live app, and where to manage it.
Selecting **Publish** starts a short pipeline that takes your app live. This page covers what happens during publishing, how to update your app, and where to manage it once it's live.
## The publishing stages
Publishing runs through five stages and usually takes a minute or two. You can follow the progress bar in the Publishing tool, select **View logs** for detail, or select **Cancel** to stop a publish in progress.
1. **Provision**: Replit sets up the cloud resources your app will run on, such as servers and your production database.
2. **Security checks**: Replit scans your app for security problems, such as unsafe dependencies or exposed secrets, before it goes live.
3. **Build**: Replit turns your project into the production version of your app, the optimized form that runs on the web.
4. **Bundle**: The built app is packaged into a single, ready-to-run unit.
5. **Promote**: Replit prepares the new version alongside the current one, then switches your URL over to it.
Publishing covers your whole project: every artifact in it, such as your app, slide decks, and documents, is published together.
For builders who want the technical picture: Provision allocates the deployment infrastructure for your chosen deployment type and region. Security checks run dependency and code scans, and can block the publish when critical vulnerabilities are found, depending on your security settings. Build executes your build command and compiles assets for production. Bundle packages the build output into a deployable image. Promote performs the cutover: the new version starts serving at your URL, replacing the previous deployment.
When the stages complete, your app is live. Select the URL in the Publishing tool to open it.
## Update your app
Select **Publish** again after making changes. Your app updates at the same URL, and visitors get the latest version the next time they load it. You never need to share a new link.
## Manage your live app
The Publishing tool is also where you manage the app after it's live:
* **Monitor its health**: Track whether your app is online, view logs, and check resource usage. Learn more about [monitoring](/features/publishing/monitoring-a-deployment).
* **See who's visiting**: Request and traffic charts live in [Monitoring](/features/publishing/monitoring-a-deployment); visitor and user insights live in the **Growth** pane.
* **Change who has access**: Unpublish, choose a different access option, and publish again. Learn more about [app access](/features/publishing/private-deployments).
* **Connect a domain**: Give your app a custom web address. Learn more about [custom domains](/features/publishing/custom-domains).
## Next steps
* [Publish your app](/features/publishing/overview): The full publish pane reference.
* [Monitoring](/features/publishing/monitoring-a-deployment): Logs, analytics, and uptime checks.
# Custom Domains
Source: https://docs.replit.com/features/publishing/custom-domains
Buy, connect, and manage a custom domain for your published Replit app.
Custom domains let you assign your own domain name, such as `www.my-incredible-app.com`, to your Replit published app.
While Replit provides a free subdomain in the format `.replit.app`, a custom
domain gives your app a more memorable address that builds brand recognition and trust with your visitors.
The **Domains** tab in the Publishing tool gives you everything you need in one place. You can:
* **Buy a new domain** through Replit and connect it to your project in one step.
* **Connect a domain you already own** from another registrar.
* **Manage** your connected domains — view which project each one points to, track renewals, and disconnect a domain.
Watch the following video for a quick overview of setting up custom domains:
The following table compares Replit's subdomains with custom domains:
| Feature | Replit Subdomain | Custom Domain |
| :------------------------------ | :----------------- | :----------------------- |
| Hostname customization | Subdomain only | Any domain that you own |
| DNS update time | Instant | Up to 48 hours |
| Security Certificates (TLS/SSL) | Provided by Replit | Provided by Replit |
| Price | Free | Pay your domain provider |
Publish your app before connecting a domain. The **Domains** tab becomes available once your app has a
successful Deployment.
## Buy a new domain on Replit
If you don't already own a domain, you can search for one and buy it without leaving Replit. Your new
domain points to your project automatically.
Open the **Publishing** tool and select the **Domains** tab.
Select **Buy a new domain** and enter the name you want. Replit shows available options across
extensions such as `.com`, `.ai`, and more. If you're not sure what to call it, Replit also
suggests available names based on what your app does, so you can pick one without starting from
scratch.
Select your preferred domain and complete the purchase using your Replit account's payment method.
Your app becomes accessible at the new domain right away, with no additional DNS configuration.
Domains bought through Replit include [WHOIS privacy protection](/build/domain-purchasing) at no extra cost, renew automatically, and let you add custom DNS records (for example, MX records for email). For the full reference on buying domains — pricing, renewals, transfers, and custom DNS records — see [Purchase a domain](/build/domain-purchasing).
## Connect a domain you already own
If you already own a domain at another registrar, connect it to your project from the **Domains** tab. Replit
offers a guided setup that configures your DNS for you, with a manual option as a fallback.
### Guided setup (recommended)
The simplest way to connect an existing domain is to let Replit set it up for you. Replit uses
[Entri](https://entri.com), a third-party domain-connection service: after you authorize it, Entri signs
in to your DNS provider and writes the required DNS records on your behalf, so you don't have to copy them
by hand.
DNS records are the settings that tell the internet where your domain should point. Setting them up by
hand used to be the trickiest part of connecting a domain. Replit now handles this step for you for most
domains and providers.
Open the **Publishing** tool and select the **Domains** tab.
Select **Connect your own domain** and enter a domain you already own, such as `www.my-incredible-app.com`.
Confirm the connection. Replit opens the guided flow, where you sign in to your DNS provider so the
DNS records can be applied to your account automatically. If the guided flow can't write the records
for your provider, it shows you the records to add yourself instead.
Your domain shows a **Verified** status once setup completes. This usually takes a few minutes, but DNS
changes can take up to 48 hours to propagate. Load the domain in your browser to confirm it works.
If your provider isn't supported for guided setup, or you prefer to add the records yourself, you can
connect your domain manually. See [Connect a domain manually](#connect-a-domain-manually) below.
### Connect a domain manually
If your provider isn't supported for guided setup, or you prefer to add the records yourself, follow the
steps below to set up your custom domain manually.
You might experience setup issues if you have one of the following:
* Multiple `A` records for the same domain name that point to different servers.
* `A` and `AAAA` records co-exist for the same domain, since Replit only supports `A` records.
* Cloudflare proxied domain records, since Replit cannot automatically renew security certificates for that type. Set your record to **DNS only** (the gray cloud).
* A missing or removed `replit-verify` `TXT` record. Replit needs this record to remain in place to renew your SSL/TLS certificate. See [Keep the TXT record in place](#keep-the-txt-record-in-place) below.
Enter your custom domain name in the text field. You can use a registered domain or include a subdomain.
For example, `hat-tip.cc` is the registered domain and `my.hat-tip.cc` includes subdomain `my`.
Replit generates DNS records that you must provide to your **domain registrar**.
A domain registrar is the service that manages your domain name, such as GoDaddy or Namecheap.
Copy the `A` and `TXT` record values from Replit and paste them into your domain registrar's
DNS management section. If your domain registrar does not support `@` as a hostname, use your registered domain name.
**Keep the TXT record in place.** Replit issues and renews the SSL/TLS certificate for your
custom domain through DNS validation. The `replit-verify=...` `TXT` record must stay in
your DNS for the full lifetime of the domain — not only during initial setup. If you
remove or change the record after verification, your next certificate renewal will fail
and your domain will eventually serve an expired certificate, making your app unreachable
in browsers. Treat the `TXT` record as permanent alongside your `A` record.
Subdomains — including `www` — are not automatically resolvable when you link your apex
domain. Each subdomain you want to serve must be added as its own entry in the **Domains**
tab and given its own DNS records at your registrar.
To add a subdomain, link it from the **Domains** tab the same way you linked the apex
domain, then add the DNS records Replit generates for it to your domain registrar.
For example, to add `my-subdomain.hat-tip.cc`:
* In the **Publishing** tool, select the **Domains** tab and link `my-subdomain.hat-tip.cc`.
* At your registrar, add a new `A` record with hostname `my-subdomain` pointing to the IP
address Replit shows for the new entry.
* At your registrar, add the matching `replit-verify=...` `TXT` record on hostname
`my-subdomain` — each subdomain has its own `TXT` record, separate from the apex's.
**`www` is a subdomain.** Linking `hat-tip.cc` does not automatically serve
`www.hat-tip.cc`. If you want visitors to reach your app at both `hat-tip.cc` and
`www.hat-tip.cc`, add `www.hat-tip.cc` as a separate entry in the **Domains** tab and
publish the `A` and `TXT` records it generates on hostname `www`. Most builders who want
a `www` address also configure a redirect from the apex to `www` (or vice versa) at
their registrar.
As with the apex domain, the `replit-verify=...` `TXT` record you add for each subdomain
must stay in DNS permanently. See
[Keep the TXT record in place](#keep-the-txt-record-in-place) below.
After adding the records, you must wait for them to propagate online.
This can take between a few minutes and 48 hours.
When the propagation completes, your Domains tab should show the "Verified" status next to the domain name as shown below:
Load the domain in your browser to verify that it works.
## Manage your domains
The **Domains** tab lists every domain connected to your project and lets you manage each one. Select a domain
and choose **Manage** to:
* **See which project the domain points to.** If you try to connect a domain that's already linked to
another of your projects, Replit warns you and lets you move it to the current project instead.
* **Review renewals (for domains bought on Replit).** The management view shows the renewal date and
renewal price, and lets you turn **Auto renewal** off if you don't want the domain to renew automatically.
* **Edit DNS records (for domains bought on Replit).** Add custom `A`, `TXT`, or `MX` records — for
example, MX records to use your domain for email. See [Custom DNS records](/build/domain-purchasing#custom-dns-records).
* **Disconnect the domain.** Disconnecting stops serving your app at that domain. The domain itself isn't
deleted — it stays available to link to another of your projects.
## Troubleshooting
### Domain link failed or stuck on pending verification
If a connection fails or the domain stays on **Verifying**, work through these checks:
1. **Give DNS time to propagate.** Verification can take from a few minutes up to 48 hours. Use a DNS
lookup tool to confirm your records are visible globally before changing anything else.
2. **Remove conflicting records.** Keep only one `A` record at your root domain pointing to Replit, and
remove any `AAAA` (IPv6) records on the same hostname — they can block SSL.
3. **Turn off Cloudflare proxying.** Set your `A` record to **DNS only** (the grey cloud). Proxy mode
(the orange cloud) interferes with SSL provisioning.
4. **Confirm the `TXT` record is present.** A missing or modified `replit-verify=...` `TXT` record blocks
verification and certificate renewal. See [Keep the TXT record in place](#keep-the-txt-record-in-place).
5. **Disconnect and reconnect the domain** from the **Domains** tab to force a fresh certificate, then
wait a few minutes and reload.
If you bought your domain through Replit and it still won't verify, [contact Replit Support](https://replit.com/support).
### DNS changes haven't taken effect yet
DNS changes are not instant. After you add or change records, expect to wait anywhere from a few minutes
to 48 hours for them to propagate worldwide. Your app keeps working on its `replit.app` subdomain during
this time. If the **Verified** status hasn't appeared after 48 hours, recheck your records against what
Replit shows — common mistakes are a trailing dot, an extra subdomain, or a stale record.
### `CNAME` records and authentication
You don't need a `CNAME` record for sign-in or authentication to work on your custom domain. Sign-in works
across your published domain automatically once the domain is verified.
`CNAME` records on a custom domain are only required for **email sending** — for example, so that
verification or transactional emails can be sent from your domain. If the Publishing tool shows a warning
asking you to add `CNAME` records, that's about email delivery, not login. Adding the records is only
necessary if you send email from your domain; it does not block your domain's verification, SSL, or
sign-in. For the email-related setup steps, see
[Clerk authentication](/features/auth-and-identity/clerk-auth).
### Keep the TXT record in place
Replit issues and renews the SSL/TLS certificate for each custom domain through DNS validation, which depends on the `replit-verify=...` `TXT` record you added during setup. The `TXT` record is not a one-time setup artifact — it must stay in your DNS for the full lifetime of the domain. If the record is removed, edited, or replaced after your domain is verified, the next renewal will fail silently and the existing certificate will eventually expire. Visitors will then see a browser security warning and the app will be unreachable.
If older domains on your account suddenly show certificate errors while newer ones work, a missing or modified `TXT` record is the most likely cause.
To restore an affected domain:
1. Open the **Publishing** tool and select the **Domains** tab.
2. Confirm the `replit-verify=...` `TXT` record Replit shows for the domain.
3. Add the `TXT` record back at your domain registrar exactly as shown, including the hostname and value.
4. Remove the domain in Replit and add it again to trigger a fresh issuance.
5. Wait for DNS propagation and re-check the **Verified** status on the **Domains** tab.
# Deployment types
Source: https://docs.replit.com/features/publishing/deployment-types
Compare Autoscale, Static, Reserved VM, and Scheduled deployments and learn when to choose each one for your published app.
The deployment type is the technology Replit uses to publish your app. You choose it in the Publishing tool under **Adjust settings**, in the **Deployment type** dropdown. **Autoscale** is the default and recommended choice, and most builders never need to change it.
## Compare deployment types
| Type | Best for | How it runs | How it bills |
| :-------------- | :--------------------------------------------- | :-------------------------------------------------- | :----------------------------------------- |
| **Autoscale** | Web apps and APIs with variable traffic | Adds servers when busy, scales to zero when idle | You pay while requests are being served |
| **Static** | Landing pages, portfolios, documentation sites | Serves files from a cached cloud server, no backend | You pay only for the data your site serves |
| **Reserved VM** | Bots, background work, always-on APIs | One dedicated server that never sleeps | Fixed monthly cost |
| **Scheduled** | Periodic tasks like backups and notifications | Runs a command on a schedule, then stops | You pay for the duration of each run |
## Autoscale
Autoscale Deployments run on servers that scale up and down with your app's traffic. When your app is busy, Replit adds servers to handle the load. When it's idle, the count drops to as low as zero, so you don't pay for quiet time.
Ideal for:
* Web applications with variable traffic, such as ecommerce sites
* APIs and services
Configuration lives in **Adjust settings**: [machine power and the maximum number of servers](/features/publishing/machine-configuration).
## Static
Static Deployments host your app's files, such as HTML, CSS, and JavaScript, on a cloud server that uses caching to deliver content quickly and economically. There is no backend server.
Ideal for:
* Marketing landing pages
* Portfolio websites
* Product and API documentation sites
Static Deployments are not compatible with Replit Apps created using Agent. Agent builds full-stack apps that need a backend server, so use Autoscale or Reserved VM for those.
Configuration includes the public directory to serve and an optional build command. For response headers, URL rewrites, and redirects, see [advanced Static configuration](/features/deployment-customization/static-deployments-advanced).
## Reserved VM
Reserved VM Deployments run your app on a dedicated virtual machine that never sleeps. You get consistent performance and a predictable, fixed monthly cost.
Ideal for:
* Memory-intensive background tasks
* Chat bots that must stay connected
* Always-on API servers
Configuration includes [machine power](/features/publishing/machine-configuration), build and run commands, port mappings, and whether the app runs as a web server or a background worker.
## Scheduled
Scheduled Deployments run a command on a schedule in your app's environment, then stop until the next run. Describe the schedule in plain language, such as "every weekday at 9am", and Replit converts it into a schedule automatically. You get an alert if a run fails.
Ideal for:
* Status checks and health reports
* Sending notifications
* Starting backups
Configuration includes the schedule, a job timeout, and build and run commands. Scheduled Deployments don't serve a web page, so they have no public URL.
## Next steps
* [Publish your app](/features/publishing/overview): Review the full publish flow.
* [Machine configuration](/features/publishing/machine-configuration): Set the power and cost of your app's servers.
* [Publishing costs](/billing/deployment-pricing): View the costs associated with each deployment type.
# Feedback widget
Source: https://docs.replit.com/features/publishing/feedback-widget
Add a feedback widget to your published app so visitors can report issues and ideas you can send straight to Agent for fixes.
The feedback widget adds a feedback button to the corner of your published app. Visitors use it to report problems or suggest improvements without leaving your app, and you can send their submissions straight to Agent to fix.
## Turn on the feedback widget
1. Open the Publishing tool by selecting **Publishing** under **Replit Cloud** in the **Tools** pane, or select **Publish** in the top-right of the Project Editor.
2. Under **Engagement tools**, turn on **Enable feedback widget**.
3. Select **Publish**. The widget appears on your published app.
## Position and appearance
When the widget is enabled, two settings appear:
* **Widget position**: Choose which corner of your app the widget sits in: top left, top right, bottom left, or bottom right. The default is bottom right.
* **Appearance**: Upload your own icon for the widget button and pick its background color, so it matches your app's look.
## Review and act on feedback
Submissions from your visitors arrive in your inbox. From there you can:
* Read each submission to understand what visitors ran into.
* Send a submission to Agent for fixes. Agent picks up the feedback as a task and proposes changes to your app.
## Turn it off
Turn off **Enable feedback widget** in the Publishing tool and publish again. The widget disappears from your published app.
## Next steps
* [Publish your app](/features/publishing/overview): The full publish pane reference.
* [Monitoring](/features/publishing/monitoring-a-deployment): Watch your app's health and traffic.
# Machine configuration
Source: https://docs.replit.com/features/publishing/machine-configuration
Set the power and cost of the servers that run your published app: CPU, memory, and the maximum number of machines.
Machine configuration controls the power of the servers running your published app. Replit picks a sensible default, so most builders never need to change it. Consider a more powerful configuration when your app feels slow under load or works with large amounts of data in memory.
To change it, open the Publishing tool, select **Adjust settings**, and select **Edit** next to **Machine configuration**.
## The settings
* **CPU**: How much simultaneous work each server can handle. More vCPUs help when many people use your app at the same time.
* **Memory (RAM)**: How much data your app can hold in memory. More RAM helps with large files, media, or data-heavy work.
* **Max machines**: Autoscale only. The upper limit of servers Replit can add when your app is busy. Your app never scales beyond this number, which caps your maximum cost.
## What it costs
The pane shows two numbers as you configure:
* **Per machine**: The hourly cost of one server with your chosen configuration.
* **At max traffic**: The hourly cost if your app is busy enough to use every machine up to your maximum.
Costs are measured in compute units, a unit of cloud computing based on the CPU and memory you choose. To see current rates and how usage is billed, see [usage-based billing](/billing/about-usage-based-billing#2-compute-units).
## How billing differs by deployment type
The same configuration bills differently depending on your [deployment type](/features/publishing/deployment-types):
* **Autoscale**: You pay while requests are being served. When your app is idle, it scales to zero and costs nothing to run.
* **Reserved VM**: Your server is always on, so you pay a fixed monthly cost for the chosen configuration.
* **Static**: No machines run your site, so machine configuration doesn't apply.
* **Scheduled**: You pay for the machine during each scheduled run.
## Apply your changes
Publish your app again after changing the configuration. The new machine settings take effect with the new deployment.
## Next steps
* [Deployment types](/features/publishing/deployment-types): Choose how your app is hosted.
* [Publishing costs](/billing/deployment-pricing): View publishing costs by deployment type.
# Monitoring your app
Source: https://docs.replit.com/features/publishing/monitoring-a-deployment
Check whether your published app is up, how it's responding, and what resources it's using, with uptime, request, and usage charts.
The Monitoring tool answers three questions about your published app: is it up, how is it behaving, and what is it using? Open **Monitoring** under **Replit Cloud** in the **Tools** pane.
Monitoring starts once your app is published. Before that, the tool shows a **No deployment yet** message.
Looking for visitor and user insights? They've moved to the **Growth** pane.
## Application monitoring
Application monitoring shows how your app is behaving from your visitors' point of view. Pick a time range at the top to zoom in or out.
* **Uptime Monitoring**: Shows the percentage of time your app was online, with a colored bar for recent history. Replit checks your app on a regular schedule and emails you if it goes down.
* **Requests**: How much traffic your app is serving over time, along with the number of unique IP addresses reaching it.
* **HTTP Statuses**: How your app answered recent requests. Successful responses are healthy; a spike of errors is a sign to investigate. Paste an error spike's timeframe into Agent chat and ask it to check the logs.
* **Request Durations**: How long your app takes to respond, grouped into buckets. If most requests land in the slowest buckets, your app may need attention or a [more powerful machine](/features/publishing/machine-configuration).
### Turn on uptime monitoring
Uptime checks are controlled from the publish settings.
Open the **Publishing** tool and start a new publish or republish your app.
Under **Monitoring tools**, switch on **Enable app monitoring**, then publish your app.
After publishing, your uptime appears in the Monitoring tool within a few minutes.
Uptime monitoring is available on Replit Core, Pro, and Enterprise plans. It works for all deployment types except Scheduled Deployments, which don't serve a web page.
## Infrastructure monitoring
Infrastructure monitoring shows what your app is consuming behind the scenes.
* **CPU Utilization**: How much processing power your app is using.
* **Memory Utilization**: How much memory your app is using.
Occasional spikes are normal. If either chart stays consistently high, your app may respond slowly under load. Consider a [more powerful machine configuration](/features/publishing/machine-configuration).
## Logs
Logs show what your app is doing in real time, including errors and messages your app prints while it runs. Replit retains logs for 7 days.
You can narrow down the logs with the following filters:
* **Errors only**: View only error logs.
* **Search**: Enter a phrase to find in the logs.
* **Date**: Select a date range.
If something looks wrong in your app, you don't need to read logs yourself. Ask Agent to investigate, and it reads the logs for you.
## Next steps
* [After you publish](/features/publishing/after-you-publish): What happens when your app goes live.
* [Machine configuration](/features/publishing/machine-configuration): Give your app more power.
* [Feedback widget](/features/publishing/feedback-widget): Hear from your visitors directly.
# Publishing
Source: https://docs.replit.com/features/publishing/overview
Learn how to publish your Replit App from the Publishing tool — domain, access, database, monitoring, security, and deployment settings in one place.
The Publishing tool is where you take your app live and manage how it runs on the web. It brings everything into one pane: your app's web address, who can use it, its production database, monitoring, security, and the settings that control how it's hosted.
To open it, select **Publishing** under **Replit Cloud** in the **Tools** pane, or select **Publish** in the top-right of the Project Editor.
## Publish your app
The main pane walks you through everything your app needs to go live. Review each section, then select **Publish**.
* **Domain**: The web address for your app. Replit suggests a `.replit.app` name and checks that it's available. You can change it, or connect a [custom domain](/features/publishing/custom-domains) after publishing.
* **What you're publishing**: A preview of the app that will go live, with the URL it will use.
* **Who can access your app**: Choose **Public**, **Password protected**, **Workspace only**, or **Invite only**. The private options limit your app to your workspace or the people and groups you invite. Learn more about [app access](/features/publishing/private-deployments).
* **Database settings**: Manage how your app's production database is created and filled with data when you publish. Learn more about [production databases](/features/data-and-storage/development-and-production).
* **Monitoring tools**: Turn on app monitoring to be the first to know when your app is down. Replit continuously checks that your app is online and emails you if something goes wrong. Learn more about [monitoring your app](/features/publishing/monitoring-a-deployment).
* **Security tools**: Run a deep security scan before you publish. Security Agent combines AI with leading static analysis tools to check your project for vulnerabilities. Learn more in the [Project Security Center](/features/security/project-security-center).
* **Engagement tools**: Turn on the feedback widget to add a feedback button to the corner of your published app. Review submissions in your inbox and send them to Agent for fixes.
## Adjust settings
Select **Adjust settings** to manually configure how your app is hosted. Most builders never need to change these settings. Replit picks sensible defaults.
* **Deployment type**: The technology used to publish your app. **Autoscale** is recommended for most apps because it scales from zero to any level of demand. Compare [deployment types](/features/publishing/deployment-types).
* **Machine configuration**: The power of the servers running your app. Select **Edit** to change the CPU, memory, and the maximum number of machines. The pane shows the cost per machine and the cost at maximum traffic. Learn more about [machine configuration](/features/publishing/machine-configuration).
* **Deployment secrets**: Private keys your app uses to access APIs and services (a secure, hidden storage area for sensitive values like API keys). Secrets sync automatically from your development environment to your published app. Learn more about [Secrets](/core-concepts/project-editor/app-setup/secrets).
* **Deployment geography**: Where your app is hosted. Choosing a region closer to your users reduces latency. Once you publish, your app and its resources are locked to this region. To change regions later, remix the app. Learn more about [publishing geography](/features/publishing/publishing-geography).
* **Block publishing of critical vulnerabilities**: Replit always runs a security scan before publishing. This setting controls whether publishing is blocked when critical vulnerabilities are found. Learn more in the [Project Security Center](/features/security/project-security-center).
## Next steps
A step-by-step guide from Publish button to live URL.
Buy a domain or connect one you already own.
Logs, analytics, and uptime monitoring for your published app.
When to use Autoscale, Static, Reserved VM, or Scheduled.
# Who can access your app
Source: https://docs.replit.com/features/publishing/private-deployments
Control who can open your published app: public, password protected, workspace only, or invite only. No code changes required.
When you publish your app, you control who can open it. Choose an option under **Who can access your app** in the publish settings. Replit handles the sign-in screen and access checks for you, with no code changes required.
Restricting access is useful for apps such as:
* Internal tools
* Apps in the beta testing phase
* Apps that access sensitive information
## Access options
* **Public**: Anyone on the internet with the URL can use your app.
* **Password protected**: Anyone on the internet with the password can use your app. Visitors enter a shared password. They don't need a Replit account.
* **Workspace only**: All admins, members, and viewers in your workspace. Replit marks this option as **Private**.
* **Invite only**: Only you, admins, invited groups, and invited users. Replit marks this option as **Private**. This is the most restrictive option.
The default depends on where you're building: apps in your personal workspace default to **Public**, and apps in an organization workspace default to a private option.
With the two **Private** options, visitors without access are prompted to sign in through Replit before they can view the app. In a personal workspace where you're the only member, **Workspace only** and **Invite only** behave the same way. The distinction matters when you work in a shared workspace with collaborators.
## Choose access when you publish
1. Select **Publish** in the top-right of the Project Editor, or open **Publishing** under **Replit Cloud** in the **Tools** pane.
2. Under **Who can access your app**, select **Public**, **Password protected**, **Workspace only**, or **Invite only**.
3. Select **Publish**.
Scheduled Deployments don't have access options because they don't serve a web page.
## Change access for a live app
Changing access requires unpublishing your app first. Unpublish it from the Publishing tool, choose a different option under **Who can access your app**, and publish again.
## Manage who's invited
With **Invite only**, you grant access to individual users or groups from your workspace's access management. Workspace admins always have access. Learn more about [access management](/teams/identity-and-access-management/repl-access-management).
Workspace admins can restrict access options for their organization, including turning off password-protected publishing.
## Next steps
* [Publish your app](/features/publishing/overview): Review the full publish flow.
* [Access management](/teams/identity-and-access-management/repl-access-management): Manage users and groups in your workspace.
# Publishing Geography
Source: https://docs.replit.com/features/publishing/publishing-geography
Choose where your published project runs and stores data by selecting a publishing geography.
When you publish a Replit project, you can choose the geographic region where your project's compute and storage resources are hosted. By default, Replit recommends the geography closest to you. This helps reduce latency for your app's visitors and meet data residency requirements.
Publishing geography selection is available to builders on Core, Pro, and Enterprise plans.
Free plan builders publish to the North America geography by default.
## Available geographies
Replit supports the following publishing geographies:
| Geography | Description |
| :---------------- | :-------------------------------------------- |
| **North America** | Hosts your project in North America (default) |
| **Europe (EU)** | Hosts your project in the European Union |
| **South America** | Hosts your project in South America |
| **Australia** | Hosts your project in Australia |
| **Asia** | Hosts your project in Asia |
North America and Europe (EU) are available to all eligible builders. South
America, Asia, and Australia are rolling out gradually and may not yet be
visible in the geography dropdown. If you don't see a geography you need,
contact Replit support.
When you select a geography, all published artifacts for your project (such as compute, database, and Object Storage) are automatically colocated in the same region. A geography-specific proxy also helps reduce latency for your app's visitors.
## Selecting a geography
By default, Replit recommends the geography closest to you. To choose a different geography:
Open the **Publishing** tool in your Replit project.
Expand the **Advanced** settings.
Select your preferred geography from the **Geography** dropdown.
Select **Publish** to publish your project to the selected geography.
## Enforcing a geography on published projects
Enterprise admins can enforce a publishing geography for all projects across their organization. When a policy is set, builders in the organization publish to the configured geography. This policy applies only to projects that have not yet been published — projects already published to a different geography are not affected.
Enforcing a publishing geography is an Enterprise feature. To learn more about Enterprise plans, see [Pricing](https://replit.com/pricing/).
Navigate to your **Account settings**.
Select **Advanced**.
Choose the geography that all projects published for the first time must use.
## Limitations
Before selecting a geography, keep the following limitations in mind:
* **Geography cannot be changed after publishing.** Once you publish your project to a geography, that selection is permanent. You cannot migrate a published project to a different geography.
* **Development environment artifacts may not match your published geography.** Resources such as Object Storage can be created before you publish. All development environments currently run in North America. Support for hosting your development environment in the nearest publishing region is coming soon.
## Next steps
* [Autoscale Deployments](/features/publishing/deployment-types#autoscale): Learn how autoscaling adjusts capacity based on traffic.
* [Reserved VM Deployments](/features/publishing/deployment-types#reserved-vm): Publish your project to a dedicated virtual machine.
* [Published App Monitoring](/features/publishing/monitoring-a-deployment/): View logs and monitor your published project.
To learn more about how Replit handles data processing, see the [Data Processing Addendum](https://replit.com/dpa).
# SEO Agent
Source: https://docs.replit.com/features/publishing/seo-agent
Run a technical SEO audit on your published app with Replit's SEO Agent, then apply one-click fixes for crawlability, metadata, and structured data.
SEO Agent runs a technical SEO audit across your project and surfaces the issues that limit how well search engines and AI crawlers can find and understand your app. Each finding becomes a one-click fix you can review and apply with Agent.
It lives in the **Growth** pane in the Project Editor and works on apps you have already published. For most builders, the workflow is: publish your app, open SEO Agent, run a scan, review the findings, and apply the fixes.
## What SEO Agent does
SEO Agent focuses on **technical SEO**, the structural and machine-readable parts of your app that determine how easily search engines and AI crawlers can discover, index, and understand it.
It reviews your project and proposes fixes for issues such as:
* **Crawlability and indexing**: `robots.txt`, `sitemap.xml`, and a crawlable link and page structure.
* **Page metadata**: unique, descriptive `` tags and meta descriptions on every page.
* **Structured data**: JSON-LD markup that helps search engines show rich results.
* **Open Graph and social tags**: the metadata that controls how your links preview when shared.
* **Semantic markup**: proper heading order, landmark elements, and descriptive `alt` text on images.
SEO Agent makes sure the app you have built is technically sound for search,
and does not write content or build topical authority for you.
## Before you start
SEO Agent requires:
* **A published app.** SEO Agent audits a live, public web deployment, so publish your app first if you haven't yet. See [SEO Rating](/features/publishing/seo-rating) for the deployment types that support SEO.
* **A paid plan.** SEO Agent is available to builders on a paid plan. If you're on the free plan, you'll see an upgrade option in the Growth pane.
There are two ways to reach SEO Agent: open the **Growth** pane in the Project Editor directly, or select **Optimize SEO with Agent** next to your SEO Rating in the **Publishing** tool, which opens the Growth pane ready to scan.
## Where to find it
SEO Agent works on a published app. Until you publish, the **Growth** pane is locked and prompts you to **Go to Publishing**.
Once your app is published, the **SEO Rating** card in the Growth pane shows your current rating and a **Run scan with Agent** button.
For the full step-by-step walkthrough — running a scan, applying fixes, and merging the changes — see [Improve your app's SEO](/build/improve-seo).
To control how your app previews when shared on social platforms, connect a
[custom domain](/build/add-custom-domain) and republish. Social and link
previews use your app's public production URL, so a published custom domain
gives you accurate previews.
## SEO Agent and your SEO Rating
The **SEO Rating** shown next to SEO Agent comes from an automatic [Lighthouse audit](/features/publishing/seo-rating) that runs after every publish and rates your app as Healthy, Needs Work, or Weak. The rating tells you *where your app stands*.
SEO Agent helps you *improve it* by scanning for issues and applying fixes. Republishing after a fix refreshes the rating.
You can also skip the scan UI entirely and just ask Agent directly:
Audit my site for SEO best practices and apply the fixes. Add a sitemap,
robots.txt, Open Graph tags, structured data where it makes sense, and make
sure every page has a unique title and meta description.
## Next steps
See how the Lighthouse SEO rating is calculated, what each rating means, and
which deployment types support it.
A step-by-step guide to publishing, scoring, and optimizing your app's SEO.
Move your app to your own domain for accurate social previews and stronger
search signals.
The best deployment type for content-heavy, SEO-critical sites.
# SEO Rating
Source: https://docs.replit.com/features/publishing/seo-rating
Measure and improve your published app's search engine optimization with Replit's SEO rating and Agent.
When you publish a web app on Replit, a Search Engine Optimization (SEO) audit runs automatically against your live URLs and surfaces an SEO rating in the Publishing tool. If the rating has room to grow, a single click hands the specific issues to Agent so you can fix them in seconds.
For most builders, the entire workflow is: publish your app, glance at the rating, and ask Agent to "optimize my SEO." This page explains what is happening underneath and how to get the most out of it.
## What is SEO and why it matters
Search engine optimization (SEO) is the practice of building your site so that search engines like Google can find, understand, and rank it. Strong SEO means your app shows up when people search for what you offer — without paying for ads.
A handful of things drive most of your SEO outcomes: clear page titles and descriptions, semantic HTML, fast load times, mobile-friendly layouts, descriptive alt text on images, and a crawlable site structure. Search engines reward sites that are easy to read for both humans and machines.
If you are launching a landing page, a marketing site, a blog, a directory, or anything else where discoverability matters, SEO is one of the highest-leverage things you can invest in early.
## How Replit improves your SEO out of the box
Replit handles a lot of the SEO foundations for you so you can focus on your content and product:
* **Fast, globally distributed hosting**: Replit Deployments serve your app from infrastructure tuned for speed, and you can choose where your app runs with [Publishing Geography](/features/publishing/publishing-geography).
* **HTTPS by default**: Every published app gets a TLS certificate managed by Replit, which is a baseline ranking signal for search engines.
* **Custom domains**: Connect your own domain to build trust and brand authority. See [Custom Domains](/features/publishing/custom-domains).
* **Static Deployments for content sites**: For marketing pages, blogs, and documentation, [Static Deployments](/features/publishing/deployment-types#static) deliver pre-rendered HTML that search engines crawl easily.
* **Agent writes SEO-aware code**: When Agent builds your pages, it produces semantic HTML, accessible markup, and meta tags by default — the same things SEO tools check for.
* **The SEO rating**: An automatic post-publish audit so you always know where you stand, paired with a one-click handoff to Agent to fix what it finds.
## The SEO rating
After every successful publish, Replit runs a Lighthouse audit against the URLs in your deployment and stores the results. The Publishing tool then displays an overall SEO rating for your app.
### Where to find it
Open the **Publishing** tool on a published app. The SEO rating appears on the deployment overview alongside your other build details. Hover the rating to see the specific action items Lighthouse flagged for each page.
If you don't see an SEO rating, your app is likely private or hasn't been published recently. The rating only appears for public web-facing apps that have been published.
### How to read your rating
Replit shows one of three ratings based on the Lighthouse audit:
| Rating | What it means |
| :--------- | :------------------------------------------------------------------------------ |
| Healthy | Your app follows SEO best practices. Keep an eye on it after major changes. |
| Needs Work | Several issues are limiting how well search engines can understand your app. |
| Weak | Important SEO basics are missing. Fixing them usually takes only a few minutes. |
If your app has multiple pages, the badge shows the **lowest** rating across every URL Replit crawled, so the worst page surfaces first instead of being averaged away.
### When the rating is calculated
The audit runs automatically after every successful publish. The rating usually appears within a minute or two of a deployment going live, and the Publishing tool refreshes the badge as soon as results land.
### Supported deployment types
The SEO rating is calculated for public web-facing deployments where search engines can crawl URLs:
* [Autoscale Deployments](/features/publishing/deployment-types#autoscale)
* [Reserved VM Deployments](/features/publishing/deployment-types#reserved-vm)
* [Static Deployments](/features/publishing/deployment-types#static)
Scheduled deployments and private deployments won't produce an SEO rating because they do not serve public web traffic.
## Optimize SEO with Agent
An **Optimize SEO with Agent** button appears next to your rating. Selecting it opens [SEO Agent](/features/publishing/seo-agent) in the Growth pane, where you can run a technical SEO audit, review the issues it finds, and apply one-click fixes.
You can also skip the button entirely. Open Agent and say **"optimize my SEO"** — Agent will pick up your latest results and start working through them.
After Agent finishes its changes, republish your app. The SEO rating recalculates against the new build and the badge updates automatically.
Common fixes Agent will apply:
* Add or rewrite missing or generic `` tags so each page has a unique, descriptive title
* Add a meta description to every page
* Add descriptive `alt` text to images
* Set the `lang` attribute on the `` element
* Make sure links have discernible text (no "click here" or empty anchors)
* Add a `robots.txt` and a `sitemap.xml`
* Add a viewport meta tag for mobile rendering
* Improve color contrast on text that fails accessibility checks
* Add Open Graph and Twitter card meta tags so links to your app preview well on social platforms
## Best practices for an SEO-optimized site on Replit
Whether you ask Agent to handle these for you or write them yourself, these are the highest-impact things to get right on a Replit-built app:
* **Give every page a unique title and meta description.** Aim for titles under 60 characters and descriptions around 150–160 characters.
* **Use semantic HTML.** Wrap your layout in ``, ``, ``, and ``. Use `` once per page and step heading levels in order.
* **Add alt text to every image.** Describe what the image shows, not just what it is.
* **Generate a `sitemap.xml` and `robots.txt`.** Ask Agent to create both so search engines know what to crawl.
* **Add Open Graph and Twitter card tags.** Control how your app looks when shared on social media.
* **Use a custom domain.** A branded domain builds trust with both visitors and search engines. See [Custom Domains](/features/publishing/custom-domains).
* **Pick the right deployment type.** For content-heavy sites, [Static Deployments](/features/publishing/deployment-types#static) deliver pre-rendered HTML that search engines parse instantly.
* **Add structured data.** JSON-LD markup helps search engines show rich results for products, articles, FAQs, and events.
* **Keep your app fast.** Optimize images, avoid render-blocking scripts, and lean on Replit's hosting to keep response times low.
A simple way to apply most of these in one shot:
Audit my site for SEO best practices and apply the fixes. Add a sitemap, robots.txt, Open Graph tags, structured data where it makes sense, and make sure every page has a unique title and meta description.
## Next steps
* [SEO Agent](/features/publishing/seo-agent) — run a technical SEO audit and apply one-click fixes from the Growth pane.
* [Custom Domains](/features/publishing/custom-domains) — connect your own domain to your published app.
* [Static Deployments](/features/publishing/deployment-types#static) — the best deployment type for content-heavy, SEO-critical sites.
* [Publishing Geography](/features/publishing/publishing-geography) — choose where your app runs to keep response times low for your audience.
* [Agent](/features/agent/overview) — learn more about working with Agent on your app.
# App Storage JavaScript SDK
Source: https://docs.replit.com/features/sdks/object-storage-javascript-sdk
Learn how to use the official JavaScript SDK to manage files in Replit App Storage.
This reference guide explains the `Client` class from the `object-storage` library and provides code examples for its methods.
## Client
The `Client` class manages interactions with Replit App Storage. This class features methods for performing operations on files in a bucket.
To import the class from the library, add the following line to your JavaScript code:
```javascript theme={null}
import { Client } from "@replit/object-storage";
```
Use the following code to create a `Client` instance that interacts with Replit Object Storage:
```javascript theme={null}
const client = new Client();
```
## Constructors
**constructor**
* **new Client**(`options?`): `Client`
Creates a new Client instance to interact with Replit App Storage.
**Parameters**
| Name | Type | Description |
| :--------- | :-------------- | :----------------------------------------------- |
| `options?` | `ClientOptions` | Configuration options for setting up the client. |
**Returns**
`Client`
## Methods
### copy
* **copy**(`objectName`, `destObjectName`): `Promise`\<`Result`\<`null`, `RequestError`>>
Copies an object within the same bucket.
This method overwrites any existing object at the destination path.
**Parameters**
| Name | Type | Description |
| :--------------- | :------- | :----------------------------------- |
| `objectName` | `string` | The full path of the object to copy. |
| `destObjectName` | `string` | The full path to copy the object to. |
**Returns**
`Promise`\<`Result`\<`null`, `RequestError`>>
***
### delete
* **delete**(`objectName`, `options?`): `Promise`\<`Result`\<`null`, `RequestError`>>
Deletes an object from the bucket.
**Parameters**
| Name | Type | Description |
| :----------- | :-------------- | :--------------------------------------- |
| `objectName` | `string` | The full path of the object to delete. |
| `options?` | `DeleteOptions` | Configurations for the delete operation. |
**Returns**
`Promise`\<`Result`\<`null`, `RequestError`>>
***
### downloadAsBytes
* **downloadAsBytes**(`objectName`, `options?`): `Promise`\<`Result`\<`Buffer`, `RequestError`>>
Downloads an object and returns its raw contents as a buffer.
**Parameters**
| Name | Type | Description |
| :----------- | :---------------- | :----------------------------------------- |
| `objectName` | `string` | The full path of the object to download. |
| `options?` | `DownloadOptions` | Configurations for the download operation. |
**Returns**
`Promise`\<`Result`\<`Buffer`, `RequestError`>>
***
### downloadAsStream
* **downloadAsStream**(`objectName`, `options?`): `Readable`
Creates a readable stream of the object's contents.
The stream emits any errors encountered during the download.
**Parameters**
| Name | Type | Description |
| :----------- | :---------------- | :----------------------------------------- |
| `objectName` | `string` | The full path of the object to download. |
| `options?` | `DownloadOptions` | Configurations for the download operation. |
**Returns**
`Readable`
### downloadAsText
* **downloadAsText**(`objectName`, `options?`): `Promise`\<`Result`\<`string`, `RequestError`>>
Downloads an object and returns its contents as a string.
**Parameters**
| Name | Type | Description |
| :----------- | :---------------- | :----------------------------------------- |
| `objectName` | `string` | The full path of the object to download. |
| `options?` | `DownloadOptions` | Configurations for the download operation. |
**Returns**
`Promise`\<`Result`\<`string`, `RequestError`>>
### downloadToFilename
* **downloadToFilename**(`objectName`, `destFilename`, `options?`): `Promise`\<`Result`\<`null`, `RequestError`>>
Downloads an object and saves it to the specified location on the local filesystem.
**Parameters**
| Name | Type | Description |
| :------------- | :---------------- | :------------------------------------------------------------------ |
| `objectName` | `string` | The full path of the object to download. |
| `destFilename` | `string` | The path on the local filesystem to write the downloaded object to. |
| `options?` | `DownloadOptions` | Configurations for the download operation. |
**Returns**
`Promise`\<`Result`\<`null`, `RequestError`>>
### exists
* **exists**(`objectName`): `Promise`\<`Result`\<`boolean`, `RequestError`>>
Checks if an object exists in the bucket.
**Parameters**
| Name | Type | Description |
| :----------- | :------- | :------------------------------------ |
| `objectName` | `string` | The full path of the object to check. |
**Returns**
`Promise`\<`Result`\<`boolean`, `RequestError`>>
### getBucket
* **getBucket**(): `Promise`\<`Bucket`>
**Returns**
`Promise`\<`Bucket`>
### init
* **init**(`bucketId?`): `Promise`\<`Bucket`>
**Parameters**
| Name | Type |
| :---------- | :------- |
| `bucketId?` | `string` |
**Returns**
`Promise`\<`Bucket`>
### list
* **list**(`options?`): `Promise`\<`Result`\<`StorageObject`\[], `RequestError`>>
Returns a list of all objects in the bucket.
**Parameters**
| Name | Type | Description |
| :--------- | :------------ | :------------------------------------- |
| `options?` | `ListOptions` | Configurations for the list operation. |
**Returns**
`Promise`\<`Result`\<`StorageObject`\[], `RequestError`>>
### mapUploadOptions
* **mapUploadOptions**(`options?`): `undefined` | `UploadOptions`
**Parameters**
| Name | Type |
| :--------- | :-------------- |
| `options?` | `UploadOptions` |
**Returns**
`undefined` | `UploadOptions`
### uploadFromBytes
* **uploadFromBytes**(`objectName`, `contents`, `options?`): `Promise`\<`Result`\<`null`, `RequestError`>>
Uploads an object using its in-memory byte representation.
This method overwrites any existing object with the same name.
**Parameters**
| Name | Type | Description |
| :----------- | :-------------- | :------------------------------------------- |
| `objectName` | `string` | The full destination path of the object. |
| `contents` | `Buffer` | The raw contents of the object in byte form. |
| `options?` | `UploadOptions` | Configurations for the upload operation. |
**Returns**
`Promise`\<`Result`\<`null`, `RequestError`>>
### uploadFromFilename
* **uploadFromFilename**(`objectName`, `srcFilename`, `options?`): `Promise`\<`Result`\<`null`, `RequestError`>>
Uploads a file from the local filesystem to the bucket.
This method overwrites any existing object with the same name.
**Parameters**
| Name | Type | Description |
| :------------ | :-------------- | :------------------------------------------------------ |
| `objectName` | `string` | The full destination path of the object. |
| `srcFilename` | `string` | The path of the file on the local filesystem to upload. |
| `options?` | `UploadOptions` | Configurations for the upload operation. |
**Returns**
`Promise`\<`Result`\<`null`, `RequestError`>>
### uploadFromStream
* **uploadFromStream**(`objectName`, `stream`, `options?`): `Promise`\<`void`>
Uploads an object by reading its contents from the provided stream.
The stream emits any errors encountered during the upload. This method overwrites any existing object with the same name.
**Parameters**
| Name | Type | Description |
| :----------- | :-------------- | :---------------------------------------------------------- |
| `objectName` | `string` | The full destination path of the object. |
| `stream` | `Readable` | A readable stream from which to read the object's contents. |
| `options?` | `UploadOptions` | Configurations for the upload operation. |
**Returns**
`Promise`\<`void`>
### uploadFromText
* **uploadFromText**(`objectName`, `contents`, `options?`): `Promise`\<`Result`\<`null`, `RequestError`>>
Uploads an object using its in-memory text representation.
This method overwrites any existing object with the same name.
**Parameters**
| Name | Type | Description |
| :----------- | :-------------- | :--------------------------------------- |
| `objectName` | `string` | The full destination path of the object. |
| `contents` | `string` | The contents of the object in text form. |
| `options?` | `UploadOptions` | Configurations for the upload operation. |
**Returns**
`Promise`\<`Result`\<`null`, `RequestError`>>
## Method examples
The following sections provide code examples for managing your files using the Replit Object Storage SDK.
### Retrieve an object as text
```javascript theme={null}
const { ok, value: textValue, error } = await client.downloadAsText('file.json');
if (!ok) {
// ... handle error ...
}
```
### Retrieve an object as its raw byte representation
```javascript theme={null}
const { ok, value: bytesValue, error } = await client.downloadAsBytes('file.png');
if (!ok) {
// ... handle error ...
}
```
### Retrieve an object from a stream
```javascript theme={null}
const { ok, value: stream, error } = await client.downloadAsStream('file.json');
if (!ok) {
// ... handle error ...
}
```
### Download an object to the filesystem
```javascript theme={null}
const { ok, error } = await client.downloadToFilename('file.json', destFilename);
if (!ok) {
// ... handle error ...
}
```
### List objects in the bucket
```javascript theme={null}
const { ok, value, error } = await client.list();
if (!ok) {
// ... handle error ...
}
```
### Upload an object from text
```javascript theme={null}
const { ok, error } = await client.uploadFromText('file.json', data);
if (!ok) {
// ... handle error ...
}
```
### Upload an object as bytes
```javascript theme={null}
const { ok, error } = await client.uploadFromBytes('file.png', data);
if (!ok) {
// ... handle error ...
}
```
### Upload an object from the filesystem
```javascript theme={null}
const { ok, error } = await client.uploadFromFilename('file.json', srcFilename);
if (!ok) {
// ... handle error ...
}
```
### Upload an object from a stream
```javascript theme={null}
const { ok, error } = await client.uploadFromStream('file.json', stream);
if (!ok) {
// ... handle error ...
}
```
### Delete an object from the bucket
```javascript theme={null}
const { ok, error } = await client.delete('file.json');
if (!ok) {
// ... handle error ...
}
```
# App Storage Python SDK
Source: https://docs.replit.com/features/sdks/object-storage-python-sdk
Learn how to use the official Python SDK to manage files in Replit App Storage.
This reference guide explains the `Client` class from the `replit-object-storage-python` package and provides code examples for its class methods.
## Client
The `Client` class manages interactions with Replit App Storage. This class features methods for performing operations on objects in a bucket.
To import the class from the `replit.object_storage` package, add the following line to your Python code:
```python theme={null}
from replit.object_storage import Client
```
Use the following code to create a `Client` instance that interacts with Replit App Storage:
```python theme={null}
client = Client()
```
If your app uses multiple buckets, create one `Client` instance per bucket.
### \_\_init\_\_
The `init` method initializes an instance of the Client class.
```python theme={null}
def __init__(bucket_id: Optional[str] = None)
```
**Argument**:
* `bucket_id` (Optional\[str]): The ID of the bucket the client manages. When omitted, the Client uses the default bucket associated with the Replit App or Deployment.
### copy
The `copy` method copies an object within the same bucket. If an object exists in the same location, it overwrites the original.
```python theme={null}
def copy(object_name: str, dest_object_name: str) -> None
```
**Arguments**:
* `object_name` (str) - The full path of the source object.
* `dest_object_name` (str) - The full path of the object destination.
**Raises**:
* `ObjectNotFoundError` - Indicates the source object does not exist at the specified path.
### delete
The `delete` method permanently removes a file from App Storage.
```python theme={null}
def delete(object_name: str, ignore_not_found: bool = False) -> None
```
**Arguments**:
* `object_name` (str) - The name of the object to delete.
* `ignore_not_found` (bool) - When `True`, suppress the error if the object does not exist.
**Raises**:
* `ObjectNotFoundError` - Indicates the object does not exist.
### download\_as\_bytes
The `download_as_bytes` method retrieves the contents of a file as `bytes`.
```python theme={null}
def download_as_bytes(object_name: str) -> bytes
```
**Argument**:
* `object_name` (str) - The name of the object to download.
**Returns**:
* `bytes`- The raw byte representation of the object's contents.
**Raises**:
* `ObjectNotFoundError` - Indicates the object does not exist.
### download\_as\_text
The `download_as_text` method downloads the contents of a file as a `str` type.
```python theme={null}
def download_as_text(object_name: str) -> str
```
**Argument**:
* `object_name` (str) - The source object name to retrieve.
**Returns**:
* str: The object's contents as a UTF-8 encoded string.
**Raises**:
* `ObjectNotFoundError` - Indicates the object does not exist.
### download\_to\_filename
Downloads the contents of an object into a file on the local disk.
```python theme={null}
def download_to_filename(object_name: str, dest_filename: str) -> None
```
**Arguments**:
* `object_name` (str) - The name of the source object from App Storage to retrieve.
* `dest_filename` (str) - The destination filename on local disk.
**Raises**:
* `ObjectNotFoundError` - Indicates the object does not exist.
### exists
The `exists` method checks if an object exists.
```python theme={null}
def exists(object_name: str) -> bool
```
**Argument**:
* `object_name` (str) - The name of the object to check for existence.
**Returns**:
* `bool`: `True` if the object exists, False otherwise.
### list
The `list` method lists objects in the Bucket.
```python theme={null}
def list(end_offset: Optional[str] = None,
match_glob: Optional[str] = None,
max_results: Optional[int] = None,
prefix: Optional[str] = None,
start_offset: Optional[str] = None) -> List[Object]
```
**Arguments**:
* `end_offset`(Optional\[str]) - Filter results to objects named lexicographically before `end_offset`. If `start_offset` is defined, the objects listed
have names between `start_offset` (inclusive) and `end_offset` (exclusive).
* `match_glob` (Optional\[str]) - Use a glob pattern to filter results. For example: "foo\*bar" matches "footbar", "foo baz bar", and "foobar".
* `max_results` (Optional\[int]) - The maximum number of results to return in the response.
* `prefix` (Optional\[str]) - Filter results to objects whose names have the specified prefix.
* `start_offset` (Optional\[str]) - Filter results to objects whose names are lexicographically equal to or after `start_offset`.
When `end_offset` is set, the objects listed have names between `start_offset` (inclusive) and `end_offset` (exclusive).
**Returns**:
* `List`(Object): A list of objects matching the given query parameters.
### upload\_from\_filename
Use `upload_from_filename()` to upload an object from a source file on the local disk to App Storage.
```python theme={null}
def upload_from_filename(dest_object_name: str, src_filename: str) -> None
```
**Arguments**:
* `dest_object_name`(str) - The name of the uploaded file.
* `src_filename`(str) - The source file to upload.
### upload\_from\_bytes
The `upload_from_bytes` method uploads an object from `bytes` data.
```python theme={null}
def upload_from_bytes(dest_object_name: str, src_data: bytes) -> None
```
**Arguments**:
* `dest_object_name`(str) - The name of the object to upload.
* `src_data`(str) - The `bytes` data to upload.
### upload\_from\_text
The `upload_from_text` method uploads an object from a string.
```python theme={null}
def upload_from_text(dest_object_name: str, src_data: Union[bytes, str]) -> None
```
**Arguments**:
* `dest_object_name`(str) - The name of the object to upload.
* `src_data`(str)- The text data to upload.
### Exception types
* When interacting with Replit App Storage using the `Client`, any method might return one of the following errors:
* `BucketNotFoundError`: Indicates the configured bucket name does not match with any bucket in App Storage.
* `DefaultBucketError`: Indicates missing default bucket configuration.
* `ForbiddenError`: Indicates insufficient permissions to access to the bucket.
* `TooManyRequestsError`: Indicates the operation is rate-limited due to excessive requests.
* `UnauthorizedError`: Indicates authorization restricted access to the operation.
## Class method examples
The following sections provide code examples for managing your objects using the Replit App Storage SDK.
### Retrieve a file as text
```python theme={null}
client.download_as_text("file.json")
```
### Retrieve raw bytes of a file
```python theme={null}
client.download_as_bytes("file.png")
```
### Download a file to the local filesystem
```python theme={null}
client.download_to_filename("file.json", dest_filename)
```
### List objects in the bucket
```python theme={null}
client.list()
```
### Upload a file from text
```python theme={null}
client.upload_from_text("file.json", data)
```
### Upload a file as bytes
```python theme={null}
client.upload_from_bytes("file.png", data)
```
### Upload a objects from the filesystem
```python theme={null}
client.upload_from_filename("file.json", src_filename)
```
### Delete an object from the bucket
```python theme={null}
client.delete("file.json")
```
# Security concepts
Source: https://docs.replit.com/features/security/concepts
Glossary of security terms used across Replit's security tools — CVE, severity, SBOM, exposure, Fix with Agent, Republish, Package Firewall, and Auto-Protect.
Definitions of the security terms used across the [Project Security Center](/features/security/project-security-center) and [Workspace Security Center](/features/security/workspace-security-center).
## CVE
Common Vulnerabilities and Exposures. A CVE is a unique identifier, such as `CVE-2024-12345`, for a publicly disclosed software vulnerability.
## Severity
The risk rating for a vulnerability: critical, high, medium, or low. Use severity with exposure to decide which projects to fix first.
## Dependency
A third-party package that your project depends on. Vulnerabilities in dependencies affect every project that uses them until the dependency is updated or replaced.
## SBOM
Software Bill of Materials. An SBOM is a machine-readable inventory of packages, versions, and licenses in a project.
## SPDX and CycloneDX
Standard SBOM formats used by security and compliance tooling. Choose the format your audit, compliance, or software composition analysis tool expects.
## Exposure
The risk surface created by publishing status and visibility. A public, published project has higher exposure than a private or unpublished project.
## Fix with Agent
An action that asks Replit Agent to draft a patch for an affected project as a background task. Review the generated change before applying it.
## Republish
Redeploys a project using its existing deployment configuration. Use **Republish** after a fix is applied to release the patched version.
## Package Firewall
A network-level protection that blocks malicious and compromised packages at install time, before they download into your app. On by default and powered by Socket. See [Package Firewall](/features/security/package-firewall).
## Auto-Protect
Replit's umbrella of protections that Replit applies to your app automatically. The protections turned on by default for every builder include [Package Firewall](/features/security/package-firewall) for install-time blocking, a web application firewall (WAF), and automatic SSL/TLS encryption. Admins can additionally opt into automatic CVE remediation, where Replit Agent prepares a patch for newly disclosed dependency vulnerabilities and notifies the project owner. See [Auto-Protect](/features/security/project-security-center#auto-protect).
# Security
Source: https://docs.replit.com/features/security/overview
Learn why security matters when you publish from Replit, where Security tools live, and which page to use for project or workspace reviews.
When you publish from Replit, your project can receive real traffic. Replit security tools help you find vulnerabilities, fix accepted issues with Agent, and keep evidence for audits.
## Why security matters
* Published projects can be reached from the open internet, including public routes and APIs.
* Modern projects depend on many packages, and new CVEs can appear after you publish.
* AI-generated code still needs security review, especially around authentication, database queries, secrets, and data handling.
* Compliance programs often require evidence of dependency inventory, vulnerability tracking, and remediation.
## Where to start
* Installing packages? [Package Firewall](/features/security/package-firewall) blocks malicious dependencies at install time, on by default.
* Working in a single project? Use the [Project Security Center](/features/security/project-security-center).
* Auditing across your workspace? Use the [Workspace Security Center](/features/security/workspace-security-center).
* Need a definition? Read [Security concepts](/features/security/concepts).
Replit's security tools protect different points in your app's lifecycle, and work together:
* **Install time**: [Package Firewall](/features/security/package-firewall) blocks malicious and compromised packages before they download.
* **After install**: [automatic dependency scans](/features/security/project-security-center#automatic-dependency-scans) detect newly disclosed CVEs, and Auto-Protect can prepare Agent patches for them.
* **Before you publish**: [Security Agent](/features/security/project-security-center#agent-security-scans) audits your codebase for code, dependency, and privacy vulnerabilities.
Most scanning work follows the same loop: scan, review findings, fix with Agent, republish, and export evidence when needed.
## Where security lives in the product
### In a project
Open the **Security** pane to review project-level findings, run Agent security scans, and inspect dependency vulnerabilities before publishing.
### In your workspace
Select **Security** from the home sidebar to review vulnerabilities across projects, prioritize findings by exposure, and track workspace-level scan history.
### In publishing and settings
* In **Publish** > **Advanced**, use **Block publishing of critical vulnerabilities** to stop critical findings from shipping.
* In **Settings** > **Account** > **Advanced**, set the Auto-Protect severity threshold for Agent-prepared dependency remediations.
## Further reading
* [How Replit Secures AI-Generated Code](https://blog.replit.com/securing-ai-generated-code)
# Package Firewall
Source: https://docs.replit.com/features/security/package-firewall
Package Firewall blocks malicious and compromised packages at install time, before any code reaches your app. On by default, powered by Socket.
New to dependency security? See [Security concepts](/features/security/concepts) for definitions of CVE, SBOM, exposure, Fix with Agent, Republish, and Auto-Protect.
Package Firewall blocks malicious and compromised packages at the network level, before they are ever installed into your app. It is part of [Replit Auto-Protect](/features/security/concepts#auto-protect), the set of protections turned on by default for every builder, and is powered by [Socket](https://socket.dev), a software supply-chain security company.
When you or the Agent run an install command like `npm install` or `pip install`, the request passes through Package Firewall first. Clean packages install as usual and you won't notice a thing. Packages that Socket has flagged as malicious or compromised are blocked before any code reaches your environment.
Package Firewall is **on by default for every builder, with nothing to set up and nothing to migrate**. It protects new and existing apps alike, and there is no setting to configure.
## Why install-time protection matters
Most supply-chain tools only scan dependencies at publish time, long after a package is already installed. For ordinary vulnerabilities that can be enough. Malware is different: it does its damage the instant it is installed — stealing secrets, opening backdoors, or exfiltrating your environment variables. By the time a publish-time scan flags it, the attack has already run.
Package Firewall closes that window. By blocking malicious packages before they download, it stops the attack before a single line of malicious code runs.
## How it works
1. You or the Agent run an install command, such as `npm install ` or `pip install `.
2. The request passes through Package Firewall, which checks the package against Socket's threat intelligence.
3. If the package is clean, the install runs normally with no perceptible difference.
4. If the package is malicious or compromised, the install is blocked before any code reaches your environment.
When something is blocked, you get a clear message about what was stopped and why, including the vulnerability or policy that triggered the block. The Agent sees the same signal, so it can suggest a safe alternative — like fixing a misspelled package name — or hand the decision back to you.
### Supported package managers
Package Firewall protects installs across:
* **JavaScript** — npm, yarn, and pnpm
* **Python** — pip
* **Go** — Go modules
## What Package Firewall catches
Package Firewall blocks both outright malware and compromised or known-vulnerable versions of otherwise legitimate packages — including widely used ones. Many of these vulnerabilities were disclosed after the training cutoff of the models that recommend them, so a model can confidently suggest a dependency version that was known-good in its training data but has since been flagged. These risks have names in the field:
* **Typosquats** — a malicious package with a name one keystroke away from a real one, such as `reqeusts` instead of `requests`. You ask for the wrong package and download malware.
* **Slopsquats** — a model hallucinates a package name that doesn't exist, an attacker registers that exact name, and waits for the next agent to install it.
* **Stale recommendations** — a real package with a disclosed vulnerability that the model recommends because it was known-good before its training cutoff.
This last category is why Package Firewall matters most for AI-built apps: an agent can confidently reach for a dependency that is no longer safe, and Package Firewall stops the install before that code runs.
## How Package Firewall fits with Replit's other security tools
Package Firewall is one of three complementary layers. Each protects a different point in your app's lifecycle, so use them together rather than choosing between them.
| Layer | When it runs | What it does |
| ------------------------------ | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Package Firewall** | At install time | Blocks malicious and compromised packages before they download (prevention). |
| **Automatic dependency scans** | After install, continuously | Detect newly disclosed CVEs in your installed dependencies, with optional Agent-prepared patches. See the [Project Security Center](/features/security/project-security-center#automatic-dependency-scans). |
| **Security Agent** | Before you publish | Audits your entire codebase for code, dependency, and privacy vulnerabilities. See [Agent security scans](/features/security/project-security-center#agent-security-scans). |
## Next steps
* Review findings for a single project in the [Project Security Center](/features/security/project-security-center).
* Audit dependencies across every project in the [Workspace Security Center](/features/security/workspace-security-center).
* Read [How Replit Secures AI-Generated Code](https://blog.replit.com/securing-ai-generated-code) for more on Replit's approach to security.
# Project Security Center
Source: https://docs.replit.com/features/security/project-security-center
Find dependency, code, and privacy vulnerabilities in your project with automatic scans and Agent-powered security reviews.
New to dependency security? See [Security concepts](/features/security/concepts) for definitions of CVE, SBOM, exposure, Fix with Agent, Republish, and Auto-Protect.
## How results are categorized
Results from both scan types appear in the Security pane, categorized by severity level:
* **Critical**: Vulnerabilities that pose an immediate risk and should be addressed before publishing. Examples include remote code execution, SQL injection in exposed endpoints, and leaked credentials.
* **High**: Serious issues that could be exploited under certain conditions, such as cross-site scripting (XSS), insecure authentication flows, or unpatched dependencies with known exploits.
* **Medium**: Issues that represent a potential risk but are less likely to be exploitable, such as missing security headers or overly permissive CORS configurations.
* **Low / Informational**: Minor issues or best-practice recommendations, such as deprecated API usage or verbose error messages in production.
## What is the Project Security Center?
The Project Security Center is your project's central hub for finding and fixing security and privacy vulnerabilities before you publish. Open the **Security** pane in your Project to run scans, review findings, and send accepted issues to Agent for remediation.
The Project Security Center supports two types of scans:
1. **Automatic dependency scans**: Free, lightweight scans that check project packages against public vulnerability records
2. **Agent security scans**: AI-assisted reviews that combine model analysis with static code analysis tools to audit your entire codebase
Both scan types surface results in the same Security pane, organized by severity so you can focus on the most impactful issues first. Beyond these scans, Agent also checks the code it writes as you build. See [Security scan while you build](#security-scan-while-you-build).
## Automatic dependency scans
Automatic dependency scans audit the packages your project depends on against public vulnerability records. These scans are **free** and run automatically. When a new Common Vulnerabilities and Exposures (CVE) entry is disclosed, Replit checks it against your project's dependencies and surfaces any matches in the **Security** pane — no manual re-scan needed.
Dependency scanning supports Node.js/npm, Python, Go, Rust, PHP, and Ruby. For example, a scan might flag a known vulnerability in an outdated package like `express@4.18.2`.
### Auto-Protect
Auto-Protect extends automatic dependency scanning. When a matching vulnerability is detected, Replit Agent prepares and tests a patch and emails you a direct link. Auto-Protect covers dependency CVEs only — for vulnerabilities in your application code, use [Agent security scans](#agent-security-scans).
For each new vulnerability matched against your project's dependencies, Replit:
1. Emails you a summary with a direct link to the affected project's **Security** pane.
2. Asks Replit Agent to prepare and test a patch that fixes the vulnerability.
3. Leaves the patch pending your review in the **Security** pane.
Select **Go to Task** to inspect the generated changes before applying them. After you apply the patch, the vulnerability shows as **pending republish** until you publish a new version.
Always republish after applying a patch to ensure your production app is secure.
Replit sends at most one email per Workspace for each new vulnerability. The email summarizes all affected projects in that Workspace. Admins can set the minimum severity that triggers Auto-Protect — for example, critical only.
#### Enable Auto-Protect
Both Auto-Protect settings are **off by default**. Enabling Auto-Protect requires two settings: one admin-only setting that authorizes Replit to prepare patches, and one personal setting that controls whether you receive emails about new vulnerabilities.
Go to **Settings** > **Account** > **Advanced** and select the minimum severity (low, medium, high, or critical) at which Replit should automatically prepare remediations. Setting a higher threshold means Replit only prepares patches for the most serious vulnerabilities.
Go to **Settings** > **Personalization** > **Email Notifications** and select the minimum severity at which you want to be notified about new security issues. High or critical is typical.
Agent-prepared remediations are billed like any other Agent work, even when
prepared proactively by Auto-Protect.
## Agent security scans
Agent security scans go beyond dependency checks to perform a comprehensive audit of your entire codebase. Security Agent combines model-based review with static analysis tools like [Semgrep](https://semgrep.dev/) and [HoundDog.ai](https://hounddog.ai) to find vulnerabilities that pattern-matching alone would miss.
Agent security scans are available to all paid Replit builders. For larger projects, a deep audit can take up to 15 minutes to ensure a thorough assessment.
### What Security Agent does
When you start an Agent security scan, Security Agent performs a full review of your codebase:
1. **Maps your architecture** -- identifies routes, APIs, data flows, and entry points
2. **Builds a threat model** -- creates a customizable threat modeling plan for your application
3. **Runs static analysis** -- uses Semgrep and HoundDog.ai to scan for code-level vulnerabilities and privacy issues
4. **Analyzes findings with AI** -- evaluates whether flagged issues are actually exploitable in your application's context, significantly reducing false positives
5. **Generates a findings report** -- presents identified risks for your review
Agent security scans cover a broad range of vulnerability categories:
* **Static analysis (SAST) issues**: Insecure code patterns like SQL injection, cross-site scripting (XSS), and cross-site request forgery (CSRF)
* **Privacy issues**: Sensitive data flowing into risky sinks like logs, files, or third-party APIs
* **Architectural vulnerabilities**: Security gaps in how your routes, APIs, and data flows are structured
For example, the review might flag an unparameterized database query:
```javascript theme={null}
const query = `SELECT * FROM users WHERE username = '${userInput}'`;
```
Or code that logs sensitive user data:
```javascript theme={null}
logger.info("New signup", {
email: user.email,
phoneNumber: user.phoneNumber,
address: user.address,
});
```
### Starting an Agent security scan
Open the **Security** pane in your Project to launch the Project Security Center.
Select **Run scan with Agent**.
Optionally customize the threat modeling prompt to focus on specific areas of
your application.
Wait for the review to complete. This typically takes a few minutes, but can
take up to 15 minutes for larger projects.
After the review completes, Security Agent generates a report of identified risks. You can review the vulnerability details, dismiss findings you understand and are willing to accept, or revise findings before sending them for remediation.
After you review the findings, send accepted issues to Replit Agent for remediation. Security Agent organizes vulnerabilities into separate tasks so Agent can work on multiple fixes in parallel. After fixes are applied, run another scan to confirm the issues are resolved.
After you fix the first set of findings, run another scan. Larger projects may reveal additional issues once higher-severity findings are resolved.
## Security scan while you build
As you build with Agent, Replit automatically reviews the code Agent writes for common security issues. Potential problems surface during development instead of only before you publish.
The scan is built into the Agent workflow:
* **Runs automatically**: The scan runs as part of Agent's code review, over the files Agent just changed. There's no button to press and no setup required.
* **Looks for common code-level risks**: It flags insecure code patterns, such as injection and cross-site scripting (XSS), along with hardcoded secrets like API keys.
* **Handled in the Agent workflow**: When the scan surfaces a likely issue, Agent takes it into account during its code review and can address it before completing the task. You don't need to take a separate action, and these results don't appear as a separate report in the Security pane.
This scan is an additional layer alongside the other checks in the Project Security Center:
| Check | When it runs | What it covers |
| --------------------------------------------------------- | ----------------------------------------- | --------------------------------------------------------------------------- |
| Security scan while you build | Automatically, during Agent's code review | The code Agent just changed, for insecure patterns and hardcoded secrets |
| [Agent security scans](#agent-security-scans) | When you start a scan | Your entire codebase, with threat modeling and static analysis |
| [Automatic dependency scans](#automatic-dependency-scans) | Automatically, as new CVEs are disclosed | Your project's packages, against public vulnerability records |
| [Publish checks](#publish-checks) | Before you publish | Critical vulnerabilities, which can block publishing when the setting is on |
This check is powered by [Semgrep](https://semgrep.dev/) static analysis.
Because this check focuses on the code Agent just changed, it's an early, lightweight layer rather than a full review. For an in-depth audit of your whole codebase, run an [Agent security scan](#agent-security-scans). Keep [publish checks](#publish-checks) on to catch critical issues before you ship.
## Limitations and best practices
* **Privacy and data handling**: All scanning runs on Replit infrastructure. Your code and data are not sent to Semgrep, HoundDog.ai, or other third parties. Scan configuration and results stay attached to your Replit App.
* **Language support**:
* Dependency scanning supports many popular ecosystems (including **Node.js/npm**, **Python**, **Go**, **Rust**, **PHP**, and **Ruby**).
* Automatic dependency fixing is currently focused on **Node.js/npm**.
* **Not a full security review**: Use scans alongside code review, tests, dependency review, and live app checks.
* **Re-run after changes**: Run a scan again after:
* Adding or updating dependencies
* Making major code changes
* Before publishing a new version
## Publish checks
The **Block publishing of critical vulnerabilities** setting lives in the Deploy tab's Advanced settings (and the Redeploy flow). Replit always runs a security scan before publishing; this toggle decides what happens when the scan finds a critical-severity issue:
* **On** — publishing is blocked until the issue is resolved or dismissed.
* **Off** — publishing proceeds and the finding is surfaced for you to review.
Turn this on to make sure nothing critical ships without your review. Organizations on enterprise plans can require this setting for every app.
This setting used to be labeled "Security scan before publishing" and carried a **Beta** tag. It's now out of Beta and renamed to make the behavior clearer — the scan itself always runs either way.
## Next steps
* Learn more about [Publishing](/learn/projects-and-artifacts/replit-deployments) and how to publish your Replit App once scans are clean.
* Explore [Replit Agent](/features/agent/overview) to fix security and privacy issues directly from the Project Editor.
* Read [How Replit Secures AI-Generated Code](https://blog.replit.com/securing-ai-generated-code) for more on Replit's approach to security.
* Check out [Editor features](/features/editor/editor-and-tools) for more tools to improve code quality, performance, and reliability.
# Replit shared responsibility model
Source: https://docs.replit.com/features/security/shared-responsibility-model
Understand how security, compliance, and operational responsibilities are split between Replit and you when you build, ship, and run apps on Replit.
Building and publishing apps in a secure fashion is a shared responsibility. Replit is responsible for the security of the Replit Agent, platform, and infrastructure on which customer workloads run. Replit takes measures to operate them with reasonable controls and secure defaults, and provides tools you can use to protect your application and data. You are responsible for your application's contents and for using and configuring the tools Replit provides.
This is an intentional balance. Replit wants you to build anything you can dream of, and that freedom means putting certain decisions in your hands. The following table outlines Replit's shared responsibility model, structured along the lines of established cloud and AI shared-responsibility patterns ([Microsoft AI SRM](https://learn.microsoft.com/en-us/azure/security/fundamentals/shared-responsibility-ai), [CSA AICM](https://cloudsecurityalliance.org/artifacts/ai-controls-matrix)), and based on [ISO/IEC 42001](https://www.iso.org/standard/42001) and the [NIST AI RMF](https://www.nist.gov/itl/ai-risk-management-framework):
## Responsibility matrix
### General
| Area | Description | Responsibility |
| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| Terms of Service | Compliance with Replit's Terms of Service. | You |
| Incident response and breach notification | Replit responds to and notifies impacted customers about platform incidents per our Incident Response Policy and contracts; you respond to incidents originating in your projects, application code, data, or end-user accounts. | Replit (platform) You (app) |
| Reporting vulnerabilities to Replit | Notifying Replit of issues discovered in the platform following the [responsible disclosure](https://en.wikipedia.org/wiki/Coordinated_vulnerability_disclosure) model. | Replit (triage and fix) You (report to [security@replit.com](mailto:security@replit.com)) |
| Compliance certifications of the platform | Maintaining attestations (for example, SOC 2 Type II) and providing evidence to customers. | Replit |
| Subprocessors | Replit vets and discloses subprocessors that process customer data on the platform; you vet and disclose subprocessors used by your app. | Replit (platform) You (app) |
### Replit Agent
| Area | Description | Responsibility |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
| Code generation | The generation of the application code by Replit Agent. | Replit |
| Code review | Verifying correctness, security, and licensing of Agent output, including third-party dependencies it introduces. | You |
| Agent harness | The agentic framework used by Replit Agent, memory management, core tools, and so on. | Replit |
| Human-in-the-loop | Approving sensitive actions Agent proposes (deploys, secret changes, outbound calls). | You |
| Prompting | Prompts and instructions given to Replit Agent. | You |
| Prompt injection and untrusted input | Replit hardens the harness and adds mitigations against malicious prompts (does not guarantee prevention); you avoid feeding the Agent untrusted external content without sanitization and validate outputs. | Replit (guardrails) You (input hygiene) |
| Processing of prompts and model interaction | How prompts and generated code are logged, retained, and whether used for training. | Replit (compliant with [Terms of Service](https://replit.com/terms-of-service) and [Data Processing Agreement](https://replit.com/dpa)) |
| Skills / MCP | Replit-vetted Skills and MCP tools are maintained by Replit; user-installed Skills and MCP tools are your responsibility to vet, configure, and revoke. | Replit (first-party) You (third-party) |
### Development environment
| Area | Description | Responsibility |
| ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| Workspace identity and access management (accounts, MFA, SSO, SCIM) | Securing access to your Replit organization and Workspace. | Replit (controls) You (configuration) |
| Workspace audit logs | Logging of who did what in your Replit Workspace. | Replit (provision) You (review) |
| Secrets management | Always use Connectors and the Secrets feature to ensure proper storage of secrets. | You |
| Secrets storage | Replit does not store or log secrets in plaintext. | Replit |
| Sharing and collaboration | Replit gives you the tools to enforce access control; you are responsible for choosing who can view, edit, or remix each app, interact with the Agent, configure Connectors, view secrets, and so on. | Replit (role-based access control) You (configuration) |
| Data residency | Where application development data is stored and processed. Development environments currently run in North America. | Replit |
| Data retention, deletion, and export | How long data is kept and how it is deleted or exported. | Replit (mechanism) You (configuration) |
| Application functionality and correctness | Polish and functionality of the application. Replit is responsible to provide regression testing; you are responsible for stating desired business logic. | Replit (code writing and testing infrastructure) You (determine business logic) |
| Connectors | Replit provides secure mechanisms to connect to other services; you authorize, rotate, and revoke your credentials in the third-party services. | Replit (mechanism) You (third-party credentials and access) |
| Development runtime | Operating system and runtimes. | Replit |
| Network security | Isolation between development instances. | Replit |
| Platform monitoring | Monitoring of the Replit infrastructure fleet. | Replit |
### Published apps
| Area | Description | Responsibility |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- |
| User management | Control how users log in to the published app. | You |
| Usage policy / access control | Control which users have access to which resources or parts of the app based on authorization. | You |
| IP / Copyright | You are responsible for reviewing that Agent output and your application respect intellectual property rights and copyright. | You |
| Information / Data | The data that is consumed, created, or displayed by the application. | You |
| Privacy notices and end-user consent | Privacy disclosures, cookie banners, and consents shown to your end users. | You |
| Regulatory compliance of your application | Meeting laws and regulations applicable to your app (for example, GDPR, CCPA, PHI, PCI DSS, HIPAA, SOC 2). | You |
| Penetration testing of your app | Security testing of the application you build. | You |
| Vulnerability disclosure for your app | Receiving and triaging security reports from researchers about your app. | You |
| Edge protection (anti-DDoS and WAF) | Volumetric and application-layer attack mitigation at the platform edge. | Replit |
| Published apps infrastructure | Where published apps run, infrastructure maintenance, platform vulnerability patching, and so on. | Replit |
| Data residency | Where published app data is stored and processed. Replit offers region selection at publish time; the choice is permanent after publishing. | Replit (capabilities) You (selection) |
| Encryption in transit and at rest | TLS for traffic; encryption of platform-stored data. | Replit |
| Application-layer encryption | Any app-level or field-level encryption needs and any external data stores they connect to. | You |
| Publishing lifecycle | Replit provides tools to select visibility of the published app (Private, Password-protected, Public); you are responsible for choosing the correct visibility. | Replit (mechanism) You (configuration) |
| Vulnerability management | Replit detects and alerts on vulnerabilities in dependencies of already-published apps; you mitigate and remediate them. | Replit (detection) You (remediation) |
| Logging and monitoring | Replit monitors platform availability and abuse signals; you are responsible for application-level logging and monitoring (errors, business events, user activity). | Replit (platform) You (app) |
| Backups and recovery | Backup of code of published apps and Replit-managed database contents. | Replit |
## How responsibility is divided
Most rows in the table follow one of three patterns:
* **Mechanism vs. configuration.** Replit ships the controls: RBAC, visibility settings, MFA, SSO, data residency, retention. You decide which to enable and how to configure them.
* **Detection vs. remediation.** Replit watches the platform and surfaces what it can see: vulnerable dependencies, abuse signals, platform anomalies. You monitor and fix what's inside your application, because you're the only one who knows what "fixed" means in your context.
* **First-party vs. third-party.** Replit-vetted Skills, MCP tools, and Connectors are reviewed by Replit. Anything you connect, install, or wire up yourself is yours to vet, configure, rotate, and revoke.
A few rows are yours alone: usage policy, access control, IP review, end-user privacy notices, and application-level pen testing. They depend on context only you have. Other rows Replit takes care of: they are the platform on which your apps are built and run.
These patterns repeat deliberately. They're the only honest way to split responsibility on a platform where the freedom to build anything is the point.
## Working with Replit Agent
You own the code Agent generates and you're responsible for it. In practice this means a few habits:
1. **Review before you ship.** Agent produces working code, but "working" and "correct" are different things. Read what it wrote, especially around authentication, data handling, and anything that crosses a trust boundary. Asking Agent to write tests and explain its reasoning is a good way to catch regressions when you iterate.
2. **Keep secrets out of prompts.** Use the Secrets feature and Connectors. Don't paste API keys, tokens, or credentials into the chat: Agent doesn't need them in plaintext to use them, and pasting them turns a managed secret into an unmanaged one.
3. **Explain your business logic and access control model.** Tell Replit Agent who should have access to which functionality of your app. Choose one of Replit's Private or Password-protected publishing options if your application is not meant to be viewed by everyone in the world.
4. **Approve sensitive actions deliberately.** When Agent proposes to publish the app, a secret change, or an outbound call, the human-in-the-loop step is yours. Treat it as a real review, not a click-through.
## Compliance and incident response
You are responsible for adhering to [Replit's Terms of Service](https://replit.com/terms-of-service). You are also responsible for understanding your own compliance and legal requirements. To understand what Replit does or does not provide from a compliance standpoint (SOC 2 Type II, subprocessors, certifications, and so on), visit [replit.com/security](https://replit.com/security).
If you find a vulnerability in the Replit platform, report it to [security@replit.com](mailto:security@replit.com) under Replit's [responsible disclosure](https://en.wikipedia.org/wiki/Coordinated_vulnerability_disclosure) process. If you find one in an app you built, that's yours to triage. Platform incidents are handled per Replit's Incident Response Policy; incidents originating in your application, your data, or your end users' accounts are yours to lead on.
# Workspace Security Center
Source: https://docs.replit.com/features/security/workspace-security-center
Scan your workspace's projects for vulnerabilities, view CVE details by severity, fix issues with Agent, and export SBOMs for compliance.
The Workspace Security Center is available across all plans. Use it to scan project [dependencies](/features/security/concepts#dependency) across your workspace and review [CVE](/features/security/concepts#cve) findings by [severity](/features/security/concepts#severity). You can fix issues with Replit Agent, [republish](/features/security/concepts#republish) affected projects, and export Software Bill of Materials ([SBOM](/features/security/concepts#sbom)) reports for compliance.
To scan a single project instead, open the [Project Security Center](/features/security/project-security-center)
from the **Security** pane inside that project.
New to dependency security? See [Security concepts](/features/security/concepts) for definitions of CVE, SBOM, exposure, Fix with Agent, Republish, and Auto-Protect.
## Features
### CVE detection
See vulnerabilities across all projects in your workspace:
* Identify vulnerable projects, prioritized by [exposure](/features/security/concepts#exposure) (publishing status and visibility)
* See affected package names, versions, and severity (critical, high, medium, and low)
* Access remediation guidance for each project
### Affected projects view
Identify which projects contain vulnerabilities and prioritize what to fix first:
* See an overview of vulnerable projects grouped by exposure: total projects, published projects, and publicly published projects
* See a detailed breakdown of affected Replit projects
* Search by CVE ID or project name and filter by severity, owner, publishing status (Published / Not published), and visibility (Public / Private)
* Expand any project row to see every CVE finding (severity, package, version, CVE ID) without leaving the page
### Fix with Agent and republish
Resolve vulnerabilities and redeploy without leaving the Security Center:
* Select **[Fix with Agent](/features/security/concepts#fix-with-agent)** on any affected project to draft a patch as a background task in the project. Review and apply the generated change before republishing.
* Track remediation status through **Task in progress**, **Apply changes**, **Republish**, and the terminal states **Republished** or **Failed**.
* One-click **Republish** with a confirmation dialog redeploys the build using its existing configuration once the fix is merged.
* Take bulk actions such as unpublishing or notifying project owners about vulnerabilities in their projects.
### SBOM export
Export Software Bill of Materials for compliance and auditing:
* Download SBOMs in standard formats ([SPDX](/features/security/concepts#spdx-and-cyclonedx), [CycloneDX](/features/security/concepts#spdx-and-cyclonedx))
* Generate reports for individual projects or your entire workspace
* Browse SBOMs grouped by scan run, with the timestamp, project count, and the user who triggered the run
* Download every SBOM in a scan run as a single bulk zip
* Meet compliance requirements for software supply chain transparency
Bulk SBOM downloads are available on Enterprise plans. Workspaces on other plans see an Enterprise upsell in the SBOM section.
## Accessing the Workspace Security Center
To open the Workspace Security Center:
1. Go to [replit.com](https://replit.com) and sign in to your account.
2. Select **Security** from the left navigation on the home page.
## Scanning your workspace
1. Open the Workspace Security Center.
2. Select **Run security scan** to initiate a scan across the workspace.
3. Review the results organized by impacted project, severity, and deployment exposure.
4. From any affected project, select **Fix with Agent**, then **Republish** once the fix is applied.
Scans analyze dependencies in the workspace's Replit projects and flag known vulnerabilities from public vulnerability records.
## Auto-Protect
Admins can opt their account into **[Auto-Protect](/features/security/concepts#auto-protect)**, which continuously monitors newly disclosed CVEs against every project's dependencies. When a match is found, Replit Agent prepares a tested patch and builders receive an email with a direct link to apply it.
See [Auto-Protect](/features/security/project-security-center#auto-protect) for the full workflow and setup steps, including the admin-only severity threshold in **Settings** > **Account** > **Advanced**.
Contact the dedicated account manager for help configuring the Workspace Security Center or integrating SBOM exports into compliance workflows.
# Resolving "This app is blocked" for Google Connectors
Source: https://docs.replit.com/features/troubleshooting/debugging-google-connectors
Fix the 'This app is blocked' error when connecting Google Drive, Docs, Sheets, Calendar, or Gmail connectors in Replit.
## Overview
If you see the error message **"This app is blocked"** when attempting to connect a Google Workspace service (Drive, Docs, Sheets, Calendar, or Gmail) through [Connectors](/features/integrations/overview#connectors), it is typically caused by a misconfiguration of Google's OAuth settings within your organization's Google Workspace.
This guide walks you through resolving the issue so you can connect Google services to your Replit apps.
These steps apply only to **Google Workspace** accounts (organization-managed accounts). If you are using a personal Google account linked to a `@gmail.com` address and the Replit connector is blocked, you cannot change the OAuth policy yourself — contact your Google Workspace admin or use a different account.
## Troubleshooting steps
### Step 1: Try Incognito mode
Browser extensions or cached data can interfere with the OAuth flow. Using Incognito mode bypasses these issues.
Open a new **Incognito** (Chrome) or **Private** (Firefox/Safari) window in your browser.
Log in to your Replit account at [replit.com](https://replit.com).
Open your app in the Project Editor, navigate to **Connectors** in the sidebar, and try connecting the Google service again.
If the error persists, continue to Step 2.
### Step 2: Verify OAuth settings in Google Workspace
You need access to your organization's **Google Admin console** for this step. Contact your IT team if you do not have admin access.
Log in to your organization's [Google Admin console](https://admin.google.com).
Navigate to the **Users** section and confirm that the account attempting the Replit connection is listed.
Go to **Security > Access and data control > API controls**.
Select **Manage third-party app access**.
Verify that OAuth access is enabled for users in Google Workspace. If it is restricted, grant the required access so Replit can complete the OAuth flow.
If the connection still fails, continue to Step 3.
### Step 3: Add Replit as a trusted OAuth client
If your organization restricts third-party app access by default, you need to explicitly trust Replit.
Log in to your organization's [Google Admin console](https://admin.google.com).
Go to **Security > Access and data control > API controls**.
Under **App access control**, select **Manage third-party app access**.
Select the **Add app** button, then choose **OAuth App Name or Client ID** from the dropdown.
Enter the Replit Client ID:
```
1012035106355-2dhot2e6o0malvog2ofss7akj2nsp8nq.apps.googleusercontent.com
```
Select **Search**. When the Replit app appears in the results, select it.
Set the access level to **Trusted**.
Select **Save**.
Changes to Google Workspace policies can take a few minutes to propagate. Wait 5-10 minutes after saving, then try connecting your Google service in Replit again.
## Still blocked?
If you have completed all three steps and the error persists:
* **Double-check the organizational unit (OU)**: Google Workspace policies can be scoped to specific OUs. Make sure the OAuth and trusted-app settings apply to the OU that contains the user trying to connect.
* **Review Google Workspace alerts**: In the Admin console, check **Reporting > Audit and investigation > OAuth log events** for any denied requests related to Replit.
* **Contact Replit support**: If the issue is not on the Google Workspace side, reach out to [Replit support](https://replit.com/support) for help.
## Related documentation
* [Connectors overview](/features/integrations/overview) -- Learn about all integration types, including Google Workspace connectors
* [Managing your connectors](/replitai/managing-connectors) -- Admin setup for Workspace and organization connectors
* [Google Workspace Admin Help: Control third-party app access](https://support.google.com/a/answer/7281227) -- Google's official guide to managing OAuth app access
***
Special thanks to the [Element451](https://element451.com) team for their [original guide on resolving this error](https://help.element451.com/en/articles/9999308-resolving-this-app-is-blocked-error-for-google-drive-connectors), which served as the basis for this article.
# Fixing Salesforce Connection Expired Errors
Source: https://docs.replit.com/features/troubleshooting/debugging-salesforce-connectors
Fix 'Connection Expired' errors when using the Salesforce connector in Replit by updating your refresh token policy.
## Overview
If your Salesforce connector stops working and you see a **"Connection Expired"** error, it usually means your Salesforce organization's refresh token policy is configured to expire tokens after a set period. When this happens, Replit can no longer authenticate with Salesforce on your behalf, and the connection must be re-authorized.
This guide walks you through updating your Salesforce Connected App settings so the refresh token remains valid until it is explicitly revoked.
These steps require **Salesforce administrator access**. If you do not have admin privileges, contact your Salesforce admin and share this guide with them.
## Troubleshooting steps
### Step 1: Open your Salesforce Connected App settings
Log in to your Salesforce organization as an administrator.
Go to **Setup > Apps > Connected Apps > Manage Connected Apps**.
Locate the **Replit** Connected App in the list and select it.
Select **Edit Policies** to open the policy configuration page.
### Step 2: Update the refresh token policy
The default Salesforce refresh token policy may expire tokens after a set number of days or after a period of inactivity. To prevent connection expiration, change the policy to keep tokens valid indefinitely.
On the Connected App Edit page, locate the **Refresh Token Policy** section under **OAuth Policies**.
Change the policy to **Refresh token is valid until revoked**. This ensures the token does not expire automatically.
Select **Save** to apply the updated policy.
Policy changes may take a few minutes to take effect. After saving, wait a few minutes before reconnecting Salesforce in Replit.
### Step 3: Reconnect Salesforce in Replit
After updating the refresh token policy, reconnect the Salesforce connector in Replit.
Navigate to your app in the Project Editor.
Open the **Connectors** panel in the sidebar.
Select **Reconnect** on the expired Salesforce connection. Complete the OAuth authorization flow when prompted.
## Still seeing errors?
If you have updated the refresh token policy and the connection still expires:
* **Check other token policy options**: Make sure none of the alternative expiration options (such as "Expire refresh token if not used for" or "Expire refresh token after") are selected.
* **Verify IP Relaxation settings**: If your Salesforce org enforces IP restrictions, the **IP Relaxation** setting on the Connected App may block requests from Replit's servers. Consider setting it to **Relax IP restrictions** if appropriate for your security requirements.
* **Review login history**: In Salesforce, check **Setup > Login History** for any failed authentication attempts related to Replit.
* **Contact Replit support**: If the issue is not on the Salesforce side, reach out to [Replit support](https://replit.com/support) for help.
## Related documentation
* [Connectors overview](/features/integrations/overview) -- Learn about all integration types, including Salesforce connectors
* [Managing your connectors](/replitai/managing-connectors) -- Admin setup for Workspace and organization connectors
* [Salesforce Help: Manage Connected Apps](https://help.salesforce.com/s/articleView?id=sf.connected_app_manage.htm) -- Salesforce's official guide to managing Connected App policies
# Mobile app troubleshooting
Source: https://docs.replit.com/features/troubleshooting/mobile-app
Fix common issues when building mobile apps with Expo and React Native on Replit.
When building mobile apps on Replit, you may encounter issues with previews, bundling, or package dependencies. This guide helps you resolve common problems, starting with quick fixes and progressing to deeper debugging steps.
## Quick fixes
Try these first—they resolve most issues:
| Problem | What to try |
| --------------------------------- | ----------------------------------------------------------- |
| Changes not showing on your phone | Shake your phone to open the Expo menu, then tap **Reload** |
| Changes not showing in preview | Press **R** in the console to rebundle |
| App stuck or unresponsive | Stop and restart the app from the console |
## Common issues
When you make changes but don't see them on your phone:
1. **Shake your phone** to open the Expo developer menu
2. Tap **Reload** to redownload the bundle
On the web preview, press **R** in the console to trigger a rebundle.
If changes still don't appear, try clearing the cache (see [Clear the Metro cache](#clear-the-metro-cache) below).
A red error screen usually indicates a JavaScript error or missing module. Read the error message—it often points to the specific file and line.
**Common causes:**
* A package isn't installed or is the wrong version
* A module works on web but not on native (or vice versa)
* Syntax error in your code
**What to try:**
1. Read the error message carefully—it often tells you exactly what's wrong
2. Ask Agent to help fix the error by sharing the message
3. If the error mentions a specific package, try reinstalling dependencies (see [Reinstall packages](#reinstall-packages))
Some packages or features work differently across platforms. React Native compiles to three targets: iOS, Android, and web. A library that works on web might not support native, or might need different configuration.
**What to try:**
1. Check if the package supports your platform in its documentation
2. Ask Agent: "Is this package compatible with Expo Go?"
3. Consider moving the functionality to your server if it's not supported on mobile
When researching packages, look for "Expo compatible" or check the [Expo SDK documentation](https://docs.expo.dev/versions/latest/) for supported modules.
**Check your network:**
* Your phone and computer must be on the same WiFi network
* Some corporate or public networks block the connection
**Try tunnel mode:**
If you're on a restricted network, tunnel mode routes traffic through Expo's servers. Ask Agent to start the app with tunnel mode, or run `npx expo start --tunnel` in the shell.
**Restart Expo Go:**
Close Expo Go completely and reopen it before scanning.
The first build is always slower because there's no cache. Subsequent builds should be faster.
**What affects build time:**
* Number of packages in your project
* First run after clearing the cache
* Network speed when downloading packages
If builds are consistently slow, check if you have unnecessary packages installed.
When you see "Unable to resolve module" or "Module not found":
1. The package might not be installed—ask Agent to install it
2. The package might be installed but the cache is stale—clear the cache
3. The package might not exist or be misspelled—check the package name
Try [reinstalling packages](#reinstall-packages) if the module should exist.
## Debugging commands
When quick fixes don't work, these commands help reset various caches and states. Run them in the Shell.
### Clear the Metro cache
Metro is the bundler that compiles your React Native code. Clearing its cache forces a fresh build.
In the shell, run:
```bash theme={null}
npx expo start --clear
```
This clears the bundler cache and restarts the development server. You'll see "Bundler cache is empty. Rebuilding." in the output.
If you're frequently hitting cache issues, you can add `-c` to your start command. Ask Agent to update the dev command to include the clear flag.
### Reinstall packages
If you're seeing module errors or version mismatches, reinstalling packages often helps.
In the shell, run:
```bash theme={null}
rm -rf node_modules && npm install
```
This deletes all installed packages and reinstalls them from scratch based on your `package.json`.
If your project uses a different package manager (like `bun` or `pnpm`), use the appropriate install command: `bun install` or `pnpm install`.
### Check for version mismatches
Expo Doctor scans your project for common issues like version mismatches between packages.
In the shell, run:
```bash theme={null}
npx expo-doctor
```
Review the output for warnings. If it suggests fixes, evaluate them carefully—don't blindly upgrade packages, as this can introduce new issues.
Only update packages when there's a specific reason to do so. Upgrading "just because" can break your app if the new version has incompatible changes.
## Full reset
When nothing else works, a full reset clears all caches and reinstalls everything.
This command removes all caches and reinstalls packages from scratch. Use it as a last resort.
```bash theme={null}
rm -rf node_modules .expo && npm cache clean --force && npm install && npx expo start --clear
```
**What this does:**
1. `rm -rf node_modules` — Deletes installed packages
2. `rm -rf .expo` — Deletes Expo's local cache
3. `npm cache clean --force` — Clears npm's global cache
4. `npm install` — Reinstalls all packages
5. `npx expo start --clear` — Starts with a fresh Metro cache
After running this, your next build will take longer as everything rebuilds from scratch.
### Clear cache on your device
If the app on your phone seems stuck with old code even after reloading:
* **iOS**: In Expo Go, go to **Settings** and tap **Clear Cache**
* **Android**: Go to **Settings > Apps > Expo Go > Storage > Clear Cache**
## Quick reference
| Problem | Try first | Then try |
| ------------------------- | ------------------------ | ------------------------ |
| Changes not showing | Shake phone → Reload | Clear Metro cache |
| Bundler errors | `npx expo start --clear` | Delete node\_modules |
| Module not found | Reinstall dependencies | Full reset |
| Version mismatch warnings | Run `npx expo-doctor` | Evaluate suggested fixes |
| New package not working | Restart the server | Clear Metro cache |
| Changed app.json | Restart the server | — |
## Getting more help
If you're still stuck:
* **Ask Agent**: Describe the error and what you've tried. Agent can often diagnose and fix issues.
* **Check Expo docs**: The [Expo troubleshooting guide](https://docs.expo.dev/troubleshooting/overview/) covers additional scenarios.
* **Search the error**: Copy the exact error message and search—someone has likely encountered it before.
## Next steps
* Return to [Native Mobile Apps](/features/artifact-types/building-mobile-apps)
* Learn the full publishing flow: [Build and launch a mobile app](/build/mobile-app)
# Checkpoints and Rollbacks
Source: https://docs.replit.com/features/version-control/checkpoints-and-rollbacks
Learn how checkpoints automatically save your work and how rollbacks let you undo changes.
With Replit, you never have to worry about losing your work.
Replit's checkpoint and rollback system provides comprehensive version control and state management for your entire development environment.
When you use Replit Agent, checkpoints automatically capture your complete project state. This includes not just your code changes, but project files, AI conversation context, and connected databases.
## What are checkpoints?
A **checkpoint** is a complete snapshot of your Replit App state created automatically by Agent at key development milestones. Unlike traditional version control that only tracks code changes, Replit checkpoints capture your entire development context.
Think of checkpoints as save points in a video game - you can always go back to a working version of your app.
### Complete state capture
Each checkpoint preserves:
* **Project files**: All files, directories, installed packages, and project configuration
* **AI conversation context**: The complete conversation history and context that led to current state
* **Environment configuration**: Runtime settings and publishing configurations
* **Agent memory**: The AI's understanding of your project architecture, preferences, and patterns
* **Database contents**: The data and schema of your database at the time of checkpoint creation
This comprehensive approach means you can confidently experiment with changes, knowing you can restore not just your code, but your entire development context.
## How rollbacks work
**Rollback** functionality allows you to restore your Replit App to any previous checkpoint state with a single click. This is far more powerful than traditional Git revert operations.
Rollbacks are designed to be safe and predictable:
* **Non-destructive preview**: Some interfaces allow you to preview checkpoint states before rolling back
* **Clear boundaries**: Each checkpoint represents a logical development milestone
* **Conversation continuity**: AI context is preserved, so you can continue building from the restored state
* **Immediate effect**: Rollbacks apply instantly across your entire development environment
### Rolling back
When you roll back to a previous checkpoint, your project returns to that earlier state, including:
1. **Complete project state**: All project files return to their exact state at the selected checkpoint
2. **AI conversation context**: Agent conversations are restored to the point of the checkpoint, maintaining context continuity
3. **Project configuration**: Dependencies, packages, and runtime configurations
4. **Development environment**: Tool configurations and Project Editor settings
5. **Database contents (optional)**: When selected, your database will be restored to the state it was at the time of the checkpoint
By default, rollbacks do not change your database. To include your development database in a rollback, select "Database" in "Additional rollback options."
Note that restoring your **[production database](/features/data-and-storage/development-and-production)** is not performed automatically through this rollback feature.
To learn how to restore your production database to an earlier moment in time, see [the documentation for how to perform a point-in-time restore](/features/data-and-storage/development-and-production).
When you use the rollback feature, you restore the Replit App to a previous state. This removes all changes made after that point, including code edits. Database changes are also reverted if you choose to restore your database.
### Rolling forward
Checkpoints in Replit work bidirectionally—you can move both backward and forward through your project's history.
This gives you complete flexibility to navigate your development timeline without fear of losing work.
If you've rolled back too far or want to recover changes from a later checkpoint, you can **roll forward** to move ahead in your checkpoint history. This allows you to navigate freely through your project's timeline without losing work.
To roll forward, access the history view in the Agent tab by clicking the history icon , then select a checkpoint that occurs after your current position.
Rolling forward is only possible if you have checkpoints ahead of your current position in the timeline. Once you make new changes after a rollback, those future checkpoints become part of an alternate branch of history.
This bidirectional navigation gives you complete control over your project's timeline, ensuring your work is always recoverable.
## Checkpoint creation
Checkpoints are created automatically by Replit's AI tools at strategic moments during development.
### Agent checkpoints
[Replit Agent](/features/agent/overview) creates checkpoints when:
* **Feature completion**: After successfully implementing a requested feature or functionality
* **Major milestones**: When significant progress is made on complex tasks
* **Stable states**: After testing and validation of implemented changes
* **Error recovery**: Before attempting fixes for critical issues
### Checkpoint characteristics
Every checkpoint includes:
* **AI-generated descriptions**: Clear, descriptive summaries of what was accomplished
* **Timestamp information**: Precise creation time for easy identification
* **Change scope**: Indication of files, features, or systems modified
* **Billing information**: For Agent, transparent cost tracking per checkpoint
## Using checkpoints and rollbacks
### Finding checkpoints
Checkpoints appear in multiple locations throughout the Project Editor:
**Agent tab**: View all Agent-created checkpoints with descriptions and rollback options
**Git pane**: See checkpoints as Git commits with full version control integration
**History view**: In Agent chat, click the history icon to access a complete timeline of all checkpoints and their progression
### Performing rollbacks
The rollback process varies slightly depending on where you initiate it:
#### From Agent tab
Open the **Agent** tab in the Project Editor to view all Agent-created checkpoints.
Locate the checkpoint you want to restore and select **Rollback to here**.
Review the rollback warning and confirm to restore your app to the selected state.
Check that your project files, database, and AI context match the restored checkpoint state.
### Best practices
**Use checkpoints strategically**:
* Test your app after each major checkpoint to ensure stability
* Create manual Git commits for long-term version tracking alongside automatic checkpoints
* Review checkpoint descriptions to understand what changed
**Rollback considerations**:
* Always verify the scope of changes before rolling back
* Consider the impact on your database and external integrations
* Communicate rollbacks to collaborators to maintain team awareness
**Iterative development**:
* Build incrementally to take advantage of frequent checkpoints
* Use rollbacks to explore different implementation approaches safely
* Leverage AI context preservation to continue conversations after rollbacks
## Integration with version control
Checkpoints work seamlessly with Replit's broader version control ecosystem:
### Git integration
* **Git commit generation**: Each checkpoint creates a corresponding Git commit
* **Branch compatibility**: Checkpoints respect branch structure and merging workflows
* **Remote sync**: GitHub integration maintains checkpoint synchronization
* **Command line access**: Full Git functionality remains available alongside checkpoints
### Collaboration features
* **Team visibility**: Checkpoints are visible to all project collaborators
* **Merge conflict prevention**: Checkpoint timing reduces likelihood of conflicts
* **Shared context**: AI conversation context helps team members understand changes
* **Real-time updates**: Collaborators see checkpoint creation in real-time
## Advanced features
### Checkpoint previews
Some interfaces support checkpoint preview functionality:
* **Visual comparison**: See your app's appearance at different checkpoint states
* **Non-destructive exploration**: Preview without actually rolling back
* **Progress tracking**: Understand how your app evolved over time
* **Iteration comparison**: Compare different implementation approaches
### Cross-session rollbacks
For advanced builders and team administrators:
* **Extended history**: Access checkpoints across multiple development sessions
* **Administrative control**: Team admins can perform rollbacks across user sessions
* **Audit trails**: Complete history of checkpoint creation and rollback actions
## Use cases
### Experimental development
Checkpoints enable fearless experimentation:
* Try new features knowing you can easily revert
* Test different architectural approaches
* Explore alternative UI designs or user flows
* Implement complex integrations with safety nets
### Debugging and recovery
When issues arise, checkpoints provide reliable recovery:
* Roll back to working states when bugs are introduced
* Isolate problems by comparing checkpoint states
* Restore database integrity after data corruption
* Recover from accidental deletions or modifications
### Learning and iteration
Checkpoints support educational development:
* Compare different implementation strategies
* Learn from AI decision-making process through checkpoint progression
* Build understanding by exploring how features evolved
* Practice new techniques with rollback safety
## Next steps
To learn more about related Replit features, explore:
* [Replit Agent](/features/agent/overview): Learn about AI-powered app development and checkpoint creation
* [Agent modes](/features/agent/agent-modes): Discover Lite, Economy, and Power for targeted or larger builds
* [Version Control](/learn/projects-and-artifacts/version-control): Understand Git integration and broader version control options
* [File History](/features/version-control/file-history): Explore granular file-level change tracking
* [Effective Prompting](/learn/effective-prompting): Master techniques for checkpoint-driven development
# Git disaster recovery
Source: https://docs.replit.com/features/version-control/disaster-recovery
Learn how to recover your Git history and code using Replit's automatic backup system.
Replit automatically backs up your Git repository to help you recover from issues like corrupted `.git` folders or lost commit history. This backup system runs in the background, so your work is protected without any extra effort.
## How it works
Every Replit App maintains a secure backup of your Git repository. When Replit Agent makes changes to the code or you publish your app, they're automatically synced to this backup. If your local Git repository becomes corrupted or unusable, you can restore your full commit history from the backup.
The backup remote is named `gitsafe-backup` and is managed automatically by Replit. You don't need to configure anything—it's already working in the background.
## Viewing your backup history
The easiest way to view your commit history is through the [Git pane](/features/workspace-tools/git-interface). Open it from the Tools section in the Project Editor—it shows your full commit history including all Agent checkpoints. This works for most cases and doesn't require any commands.
If you need to inspect the gitsafe-backup remote directly, you can use the Shell:
```bash theme={null}
git fetch gitsafe-backup main
git log gitsafe-backup/main
```
This shows your complete commit history, including all Agent checkpoints and manual commits. You can use this to verify your work is backed up or to find a specific commit to restore.
## Recovering from Git issues
If you encounter Git errors or your repository becomes corrupted, start with the [Git pane](/features/workspace-tools/git-interface). It can resolve most common issues—like resetting to a previous commit or pulling from a remote—without needing Shell commands.
For cases where the Git pane can't help (such as a fully corrupted `.git` folder), use the Shell-based steps below.
### Check if backup is available
First, verify that the backup remote exists:
```bash theme={null}
git remote -v
```
Look for `gitsafe-backup` in the output. If it's present, you can proceed with recovery.
### Restore your repository
This process replaces your current `.git` folder with the backed-up version. Your working files remain unchanged, but your local Git history will be replaced with the backup.
Back up your Git config file in case you have custom settings:
```bash theme={null}
cp .git/config .git_config_backup
```
Create a temporary clone from the backup:
```bash theme={null}
git clone --bare git://gitsafe:5418/backup.git /tmp/gitsafe-restore
```
Move your corrupted `.git` folder aside and replace it with the backup:
```bash theme={null}
mv .git .git_corrupted_backup
mv /tmp/gitsafe-restore/ .git
```
Copy back your Git configuration:
```bash theme={null}
mv .git_config_backup .git/config
```
After completing these steps, run `git status` to verify your repository is working correctly.
## Troubleshooting common issues
### "fatal: repository not found" or backup remote missing
The backup system may not be enabled for older projects. Contact support if you need help recovering an older project.
### Recovery didn't include recent commits
Backups sync after each Agent commit. If you made changes but didn't commit them, those changes won't be in the backup. Check your working directory for any uncommitted files.
### Git operations are slow or hanging
If Git operations become unresponsive, you may have a stale lock file. You can safely remove it:
```bash theme={null}
rm -f .git/index.lock
```
## Preventing data loss
While the backup system protects your Git history automatically, you can take additional steps to protect your work:
* **Commit frequently**: Make small, frequent commits so your progress is continuously backed up
* **Use checkpoints**: When working with [Replit Agent](/features/agent/overview), checkpoints automatically create commits at key milestones
* **Connect to GitHub**: For critical projects, [connect your app to GitHub](/build/import-from-providers) for an additional layer of backup
## Next steps
To learn more about version control on Replit:
* [Version control overview](/learn/projects-and-artifacts/version-control): Learn about all version control options
* [Using the Git pane](/features/workspace-tools/git-interface): Manage Git visually without command-line
* [Checkpoints and Rollbacks](/features/version-control/checkpoints-and-rollbacks): Understand how Agent checkpoints work
# File History
Source: https://docs.replit.com/features/version-control/file-history
Learn how to recover previous versions of your code using File History's automatic save points.
Get started by opening a text file in the Project Editor and pressing the **History** button in the bottom-right corner.
## Viewing previous versions of a file
Once you've opened up File History, you can view previous versions of a file by using the scroll bar, the arrow buttons, or the **left** and **right** arrow keys.
## Comparing previous versions to the current file
Press the Compare Latest toggle in the bottom left hand of the File History pane to see in-line comparisons of your file at that point in time and the latest version.
## Restoring a previous version of a file
If you want to restore a file to a previous version, just press the `Restore` button, which will restore. Don't worry, you won't erase any history. When you restore to a previous version, it is added as a new version to the file's history.
## Viewing File History playback
You can use the playback feature of File History to watch your file change over time like a movie. This can be useful for creating videos of your programming sessions.
# The Graphical Command Line Interface
Source: https://docs.replit.com/features/workspace-tools/clui-graphical-cli
Learn how to use CLUI, Replit's interactive command bar that lets you perform various actions across Settings, Workspace, and through Shortcuts.
CLUI (Command Line User Interface) is Replit's interactive command bar that lets you perform various actions quickly without navigating through menus. It combines the efficiency of a command line with a graphical interface.
## Features
CLUI provides powerful command-driven interactions across three different contexts in Replit:
* **Settings management**: Manage your settings, view warnings, and restore deleted Replit Apps
* **Quick navigation**: Move between your Replit Apps and access common features via shortcuts
* **Workspace operations**: Find files, search code, and access tools within your development environment
## Usage
### Account CLUI
The Account CLUI helps you manage your settings, teams, and deleted Replit Apps.
**How to access**: Navigate to the [CLUI page](https://replit.com/~/cli), type in the input box to search for a command, and press Enter to execute it.
Type `account` to manage your settings:
* **view-warns**: View warnings you have been issued
* **change-username**: Change your username (can only be done once)
Type `trash` to manage deleted Replit Apps:
* **restore \**: Restore a deleted Replit App by its title (restores the most recently deleted if multiple exist with the same name)
* **view**: View your most recently deleted Replit Apps
Type `team` to manage your teams:
* **view**: View the members of a team you're in by its username
* **fork-repl-to-project**: Fork an existing Replit App to create a Team Project
Type `clear` to clear the screen of all past commands you've executed
### Shortcuts CLUI
The Shortcuts CLUI provides quick access to common Replit features from any page.
**How to access**: Press **CMD/CTRL + K** or click on the search icon in the top navigation bar on most Replit pages.
* **Search**: Search Replit for Replit Apps, Templates, Code, People, and more
* **New**: Create a new Replit App
* **My Replit Apps**: Browse and navigate to your Replit Apps
* **My Code**: Search through the code in all of your Replit Apps
### Workspace CLUI
The Workspace CLUI helps you perform operations, access tools, find files, and search your code while working in a Replit App.
**How to access**: Press **CMD/CTRL + K** or click the Search icon in the upper-left corner while in the Workspace.
* **Find files**: Quickly locate files in your project
* **Search code**: Find specific code snippets across your files
* **Access tools**: Open any tool or panel available in the Workspace
* **Run commands**: Execute workspace-specific commands
# Console
Source: https://docs.replit.com/features/workspace-tools/console
Learn how to use the Console to see your app's output, errors, and activity logs.
Console lets you monitor and review logs printed by your running Replit App in real time.
You can use information from current and past runs to understand your app's behavior,
troubleshoot errors, and optimize performance.
When debugging using Agent, include console logs in your prompt to provide context.
## Features
Console provides the following tools to help you understand your app's behavior:
* **Real time logging**: View your app's output as it happens
* **AI assistance**: Receive suggestions to fix errors reported in the logs
* **Run history**: Show logs from prior runs to track changes
## Usage
You can access the Console tool directly in your Project Editor.
From the left **Tool dock**:
1. Select **All tools** to see a list of Project Editor tools.
2. Select **Console**.
From the **Search bar**:
1. Select the magnifying glass at the top to open the search tool
2. Type "Console" to locate the tool and select it from the results.
Each time you use the **Run** button in your Replit App, Console displays a new entry that includes the following information:
* The Command that executed your code
* Timestamp information
* Standard output and error logs
The following screenshot shows the `npm run dev` command used to start the app and log messages from the run:
Client-side logs, such as those generated from HTML, CSS, and JS code, appear only in the Developer tools in the [Preview](/features/editor/preview) tool.
### AI-powered debugging
When you encounter errors or other information in the logs that you want to understand, select the
**Ask AI** button at the top of the entry. This automatically opens the **Agent** tab and
submits the log content for analysis.
### Log entry commands
Console provides the following tools to manage your logs:
* **Show Only Latest**: Toggle this control to the **on** position to display only the most recent run.
* **Collapse entry**: Select the downward arrow to the left of the command name to hide the logs.
* **Clear past runs**: Select this to delete logs of prior runs. This action is irreversible.
### Network availability
You can control the development version of your app's availability online.
To stop serving requests to the development URL, select the globe with slash icon
on the right side of the network information line.
To enable it, select the globe icon.
To view your development URL, select the `{...}.replit.dev` text in the location bar.
Your app remains accessible in the Preview tool even when set to stop serving requests to the development URL.
### Stop a workflow command
You can stop a running workflow command from the Console Project Editor tool.
Select the square button on the right side of the line that contains your Replit App run command to terminate it.
To restart your app, use the workflow **Run** button at the top of the Project Editor.
## Next steps
To learn more about related Project Editor tools see the following resources:
* [Preview](/features/editor/preview/): Explore the Preview tool for testing your application and viewing console output
* [Agent](/features/agent/overview/): Learn about Agent for code help and error resolution
* [Shell](/features/workspace-tools/shell/): Learn how to use the command-line interface in the Project Editor.
# Using the Git pane
Source: https://docs.replit.com/features/workspace-tools/git-interface
Learn how to use the Git pane for version control, branch management, and collaboration in the Project Editor.
The Git pane in Replit provides a visual interface for Git operations, eliminating the need to use command-line Git commands. This feature makes version control accessible for beginners while remaining powerful for experienced developers.
## Features
The Git pane offers comprehensive version control capabilities directly in the Project Editor, with a user-friendly interface that simplifies complex Git operations.
* **Repository management**: Initialize, connect, and manage Git repositories with GitHub integration
* **Commit tracking**: Stage, commit, and view changes across all your files
* **Branch operations**: Create, switch between, and merge branches visually
* **Conflict resolution**: Identify and resolve merge conflicts with visual assistance
* **Shell integration**: Synchronization between Git commands run in Shell and the Git pane
## Usage
### Repository setup
1. Navigate to the Tools section in your Replit App
2. Select the **+** sign to add new tools
3. Select **Git** from the list of available tools
The Git pane helps you set up and connect your repository:
* **Initialize repository**: Create a new Git repository for your Replit App
* **Connect to a Git provider**: Link your repository to a supported hosted or self-hosted provider for backup and collaboration
* **Configure remote**: Set up and manage the connection to your remote repository
**Self-hosted Git support**: Replit supports GitHub Enterprise Server, GitLab Self-Managed, and Bitbucket Data Center on the Enterprise plan. [Contact Replit sales](https://replit.com/enterprise) for onboarding guidance, provider configuration, and connection debugging. You can also [configure a remote with Git commands in Shell](#using-git-commands-in-shell).
### Change management
1. Make changes to any files in your Replit App
2. Open the Git pane from the Tools section
3. Review changes in the **Review Changes** section
The Git pane provides tools to manage your code changes:
* **Review changes**: See modified files with additions and deletions highlighted
* **Stage files**: Select specific files to include in your next commit
* **Commit changes**: Save your changes with descriptive messages
* **Push updates**: Send your commits to your remote repository with a single click
You can use Replit AI to help generate commit messages that accurately describe your changes.
### Branch management
1. Open the Git pane from the Tools section
2. Select the branch dropdown next to the branch name
3. Create a new branch or select an existing one
The Git pane simplifies working with multiple versions of your code:
* **Create branches**: Make new branches to develop features separately
* **Switch branches**: Move between different versions of your code
* **Publish branches**: Share your branches with your Git provider
* **Pull changes**: Sync with remote updates from collaborators
### Merge conflict resolution
1. Attempt to pull changes when conflicts exist
2. The Git pane will highlight conflicting files
3. Open each conflicted file to see and resolve the conflicts
4. Save the files after resolving conflicts
5. Complete the merge by selecting **Pull**
When code from different sources conflicts, the Git pane helps you:
* **Identify conflicts**: See exactly which files contain conflicts
* **Visualize differences**: Review both versions of the conflicting code
* **Resolve issues**: Choose which code to keep or manually edit conflicts
* **Finalize merges**: Complete the merge process after resolving conflicts
After resolving a conflicted file, you can remove the conflict markers by removing the lines starting with conflict symbols and save the file.
### Using Git commands in Shell
1. Select **All tools** from the left Tool dock
2. Select **Shell** from the available tools
While the Git pane provides a user-friendly interface, power users can use standard Git commands in the Shell for more complex operations. Changes made through either method will be reflected in both places.
If you prefer using Git through the command line:
* **Command synchronization**: Any Git commands executed in the Shell will automatically sync with the Git pane
* **Full Git functionality**: Access advanced Git features not available in the Git pane
* **Seamless switching**: Switch between using Shell commands and Git pane as needed
**GitHub and GitLab CLI Support**: In addition to standard Git commands, you can also use the [GitHub CLI](https://docs.github.com/en/github-cli) (`gh`) and [GitLab CLI](https://docs.gitlab.com/ee/editor_extensions/gitlab_cli/) (`glab`) in the Shell to manage and connect to external Git repositories. These tools provide enhanced functionality for working with GitHub and GitLab repositories, including pull requests, issues, and other platform-specific features.
#### Repository operations
* **Clone repository**: `git clone `
* **Initialize repository**: `git init`
* **Add remote**: `git remote add origin `
#### Making changes
* **Check status**: `git status` (shows modified, added, and deleted files)
* **Stage files**: `git add ` or `git add .` (for all files)
* **Commit changes**: `git commit -m "your commit message"`
* **Push changes**: `git push origin `
* **Pull changes**: `git pull origin `
#### Authentication
When working with private repositories, you'll need to authenticate:
* For GitHub.com repositories, use a personal access token instead of your password
* To avoid re-entering credentials, you can store them using Replit Secrets:
1. Create a new secret with key `GIT_URL`
2. Set the value to `https://:@//`
3. Use `git push $GIT_URL` to push without typing credentials
When using credential secrets, anyone with access to your Replit App can potentially access your Git credentials. For sensitive repositories, consider manually entering credentials each time.
# Shell
Source: https://docs.replit.com/features/workspace-tools/shell
Learn how to use the Shell to run commands in the Project Editor.
Shell lets you perform tasks on the operating system in the Project Editor such as managing files,
installing packages, and running scripts. It provides a powerful text-based interface to
interact with your Replit environment.
You can use Shell to run the following tasks in the Project Editor:
* Execute scripts and programs
* Install and run popular Linux tools and packages
* Upload and download files from the internet
* Manage project files and directories
For better workflow management, prefer the **Run** button instead of running your app from
the Shell. The workflow started by the **Run** button sends output to the Console tool,
which provides a structured way to review the logs.
## Features
Shell provides the following capabilities:
* **Run multiple shells**: Open multiple shell instances to work on different tasks simultaneously
* **Search for text**: Find specific text in the shell output
## Usage
From the left **Tool dock**:
1. Select **All tools** to see a list of Project Editor tools.
2. Select **Shell**.
From the **Search bar**:
1. Select the magnifying glass at the top to open the search tool
2. Type "Shell" to locate the tool and select it from the results.
### Text search
The following steps describe how to access and use the text search tool:
1. Select the magnifying glass at the top right of the Shell tab to open the search dialog.
2. Enter a search term and select **Next** to navigate through the matches.
3. Use **Previous** to go back to prior matches.
4. Select **Exit** or click outside the dialog to exit the text search.
### Multiple shells
To create a new shell, select the menu at the top left of the **Shell** tab arrow and select **New Shell** as shown below:
Use the same menu to switch between shells. The Project Editor labels each shell with the last command executed to help you identify them.
When you open more than one shell, Replit automatically closes idle shell instances.
An idle shell is unselected and not running any user processes.
## Next steps
To learn more about related Project Editor tools see the following resources:
* [Console](/features/workspace-tools/console/): Learn how to use Console to monitor your Replit App workflows.
# SSH
Source: https://docs.replit.com/features/workspace-tools/ssh
Learn how to set up and use SSH to connect your local development environment to Replit Apps for secure remote access and file synchronization.
## What is SSH?
SSH, which stands for Secure Shell, is a secure protocol that facilitates remote access to your Replit App's command line interface. With SSH, you can seamlessly transfer files and leverage your preferred local Integrated Development Environment (IDE) for editing code on Replit, enhancing collaboration and productivity in your development workflow.
SSH functionality is available for Core, Pro, and all other paid plans.
Here's an overview of the process:
* Generate an SSH keypair on your local machine
* Add that SSH key to the **SSH** pane inside any Replit App
* Connect using an SSH client or an editor which can work over SSH (like [VSCode](https://code.visualstudio.com/) or [Cursor](https://www.cursor.com/))
SSH keys are associated with your account, not a particular Replit App. This means that you only need to add a public key once, after which you can connect to any Replit App you have access to.
## Why use SSH?
* **Automatic updates between Replit App and editor**: Any changes made in the Replit App are reflected in your editor instantly, and any modifications in the editor are updated in the Replit App. This seamless synchronization ensures that your codebase is always up-to-date across platforms.
* **File management synchronization**: Whether you add, delete, or update files, these changes are synchronized in real time between your editor and the Replit App. This feature ensures that your project structure remains consistent, regardless of where the changes are initiated.
* **Folder management and file moving**: Moving files across folders is also synchronized between your editors and the Replit App. This ensures that organizational changes made in one environment are accurately reflected in the other, maintaining the integrity and structure of your project.
## Find or create a keypair
To configure SSH for your account, you'll need your SSH public key.
### Figuring out if you already have a keypair
You can check if you already have a public key by running the following command in a Terminal on your local computer:
```sh theme={null}
ls -l ~/.ssh
```
```sh theme={null}
dir %HOMEPATH%\.ssh
```
If you get an error, that's OK, proceed to [Generating a new keypair](#generating-a-new-keypair).
If you see a file called `replit.pub`, please proceed to [Get the contents of your public key](#get-the-contents-of-your-public-key).
### Generating a new keypair
On your machine, open a Terminal (or Command Prompt) window and paste the following command:
```bash theme={null}
ssh-keygen -t ed25519 -f ~/.ssh/replit -q -N ""
```
```sh theme={null}
ssh-keygen -t ed25519 -f %HOMEPATH%\.ssh\replit -q -N ""
```
This command checks if a specific SSH public key file already exists. If not, it creates a new SSH key with some sensible parameters.
### Get the contents of your public key
Once you have either confirmed you have a keypair or created one, display the contents of the public key (one of the two similarly named files, suffixed with `.pub`), as we'll need that for later.
```sh theme={null}
cat ~/.ssh/replit.pub
```
```sh theme={null}
notepad %HOMEPATH%\.ssh\replit.pub
```
Save the contents of `replit.pub` to use later in this article and proceed to [add the SSH key to your account](#add-the-ssh-key-to-your-account).
## Add the SSH key to your account
### Add the public key directly in a Replit App, using the SSH pane
1. In your Replit App on any window, select the **+** button, then search for **SSH**.
2. Navigate to the **Keys** tab and select **New SSH key**.
3. In the popup window, enter a **Label** for your key (e.g., my-ssh-key) and paste the public key you copied into the **Key** section.
Select the **Add SSH Key** button. Your key has been added and authorized for use.
### Add the public key directly in Settings
You can also add an SSH key by opening **Settings** and, under **Account**, selecting **Advanced** (or the **SSH keys** option). Select **Add SSH key** and paste in the contents of `replit.pub` from the previous section, [Find or create a keypair](#find-or-create-a-keypair).
When you have multiple public keys on your machine, it's important to ensure that you use the correct combination of private and public keys for your SSH configuration.
## Connecting to your Replit App
### Configure your SSH config
1. In a terminal, ensure the `~/.ssh` directory and `~/.ssh/config` file exist:
```sh theme={null}
mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/config && chmod 600 ~/.ssh/config
open -a 'TextEdit' ~/.ssh/config || nano ~/.ssh/config
```
```sh theme={null}
if not exist %HOMEPATH%\.ssh mkdir %HOMEPATH%\.ssh && type \NUL > %HOMEPATH%\.ssh\config
notepad %HOMEPATH%\.ssh\config
```
2. Add a configuration block to use the `replit` keypair for all \*.replit.dev domains:
```
Host *.replit.dev
Port 22
IdentityFile ~/.ssh/replit
StrictHostKeyChecking accept-new
```
### Connect from VSCode or Cursor
1. From a Replit App, open the **SSH** pane
2. In the SSH pane, navigate to the **Connect** tab and select **Launch VS Code**.
3. If you are prompted to fill out `~/.ssh/config`, enter the following:
```
Host *.replit.dev
Port 22
IdentityFile ~/.ssh/replit
StrictHostKeyChecking accept-new
```
Adding SSH configuration is only prompted the first time you are trying to connect to VS Code or another editor. To return to the configuration file, you will need to select **Configure SSH Hosts...**.
4. If prompted by an external application warning, select **Yes** to confirm you want to open your project in your preferred editor or VS Code.
5. You may be asked to install or update SSH extensions periodically. Replit will endeavor to be compatible with the latest versions of these IDEs, and you may get important security updates as well.
### Connect manually
At the bottom of the **SSH** pane's "Connect" tab, you will find "Connect manually".
Copy that command, paste it into either a local Terminal (Mac or Linux) or local Command Prompt (Windows) in order to connect directly.
This is also a good way to debug connection issues with IDEs, as well as to collect valuable "verbose" connection information when reporting bugs to Replit Support.
**An error indicating we are attempting to connect with a nonexistent private key**:
```
$ ssh -i ~/.ssh/replit -p 22 c96b6ade-d5e4-4f7a-bc5b-52334509b2a3@c96b6ade-d5e4-4f7a-bc5b-52334509b2a3-00-16nh2hskw3ql8.riker.replit.dev
Warning: Identity file /Users/user/.ssh/replit not accessible: No such file or directory.
```
**Full debug logs of an SSH connection attempt, to include with a bug report**:
```
$ ssh -vvv -i ~/.ssh/replit -p 22 c96b6ade-d5e4-4f7a-bc5b-52334509b2a3@c96b6ade-d5e4-4f7a-bc5b-52334509b2a3-00-16nh2hskw3ql8.riker.replit.dev
OpenSSH_9.6p1, LibreSSL 3.3.6
debug1: Reading configuration data /Users/.../.ssh/config
debug1: /Users/.../.ssh/config line 1: Applying options for *
debug1: /Users/.../.ssh/config line 4: Applying options for *.replit.dev
debug3: channel_clear_timeouts: clearing
debug1: Connecting to c96b6ade-d5e4-4f7a-bc5b-52334509b2a3-00-16nh2hskw3ql8.riker.replit.dev port 22.
debug1: Connection established.
debug1: identity file /Users/dstewart/.ssh/replit type 3
debug1: Local version string SSH-2.0-OpenSSH_9.6
debug1: Remote protocol version 2.0, remote software version Replit-SSH-Proxy
debug1: compat_banner: no match: Replit-SSH-Proxy
debug3: fd 5 is O_NONBLOCK
...
Welcome to the Replit SSH Proxy.
Visit https:/.replit.com/replit-workspace/ssh to learn more about SSH on Replit.
debug3: receive packet: type 51
debug1: Authentications that can continue: password,publickey
debug3: start over, passed a different list password,publickey
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
...
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
```
### Connect via a tool not listed here
There are many SSH clients available for different platforms and operating systems, many offering different features or integrations.
You can always break down the command displayed in "Connect Manually" into its constituent components to determine how to configure each client:
```sh theme={null}
ssh -i ~/.ssh/replit -p 22 c96b6ade-d5e4-4f7a-bc5b-52334509b2a3@c96b6ade-d5e4-4f7a-bc5b-52334509b2a3-00-16nh2hskw3ql8.riker.replit.dev
^-----v-----^ ^^ ^-----------------v----------------^ ^------------------------------v-------------------------------------^
Private Key Port User @ Hostname
```
**Hostname**: `..replit.dev`
**Port**: ``
**User**: `Username`
**Private Key**: Path to the private key file on your computer. Usually next to `replit.pub`.
# Workflows
Source: https://docs.replit.com/features/workspace-tools/workflows
Learn how to set up Workflows — configurable run buttons that execute any commands you choose.
It is a reusable, customizable sequence of steps that can be executed within your replit app. They can be as simple as running `python main.py` or as complex as executing a multi-step procedure.
Example Use Cases:
* Run multiple services in parallel (e.g., frontend + backend)
* Execute files or commands sequentially (e.g., run linter → run tests, compile → execute code)
To start [creating workflows](#creating-workflows), go to the Workflows pane by using the tools sidebar menu, or search for the Workflows pane using `Command + K`.
## Available Task Types
There are current 3 type of tasks available, `Execute Shell Command`, `Install Packages`, and `Run Workflow`.
### Execute Shell Command
`Execute Shell Command` stores a shell command and executes it using the same environment as the Shell pane. This task type offers a wide range of use-cases, from running individual files:
```text theme={null}
python main.py
```
to executing complex stored database query commands:
```text theme={null}
psql -h 0.0.0.0 -U your_username -d your_database -c "SELECT * FROM your_table;"
```
Example use case:
### Install Packages
`Install Packages` utilizes Replit's built-in dependency management system, automatically detecting your project dependencies and installing the necessary packages for your project. See [Dependency Management](/features/project-setup/dependency-management#the-universal-package-manager) for more details on how UPM guesses packages to install for your project under the hood.
Example use case:
### Run Workflow
`Run Workflow` allows you to run another workflow from the current workflow. This allows for reusing workflows and combining them to create more complex workflows.
Example use case:
By using this task type for creating dependencies between workflows, you can edit one workflow and have other workflows referencing it automatically use the latest changes. Note that there is a depth limit placed on deeply nested workflow calls.
## Workflow Execution Mode
Workflows offer two different modes of execution: sequential and parallel.
### Sequential
Sequential execution will run each task in the defined order, waiting for each task to finish before moving on to the next step, and stopping execution of the sequence if a task within the workflow failed.
An example of using this mode is for defining commands that are logically connected, such as git commands for fetching the latest changes from your main branch, then rebasing your current branch on the main branch:
### Parallel
Parallel execution will run each task in parallel, such that each task is started and runs independently of other tasks within the workflow. One task failing does not stop the execution of other tasks.
An example of using this mode is running a fullstack project that needs to start both the frontend and the backend server:
## Creating Workflows
Workflows can be created using the workflows pane by clicking on the `+ New Workflow` button. Start by giving your workflow a descriptive name, chose a suitable mode of execution, and start adding tasks. Tasks can be re-ordered by dragging and dropping them into the desired order.
## Assign Workflow to Run Button
A workflow can also be assigned to the run button to replace the default run button behavior (see [Configure a Replit App](/features/project-setup/configuration)). To keep the default run command configured within `.replit`, select the default "Run Replit App" option within the dropdown.
The selected workflow within the dropdown menu next to the run button will be run when the run button is clicked. Click on your desired workflow within the dropdown menu to change which workflow should be run by the run button.
## Viewing Workflow Outputs
Workflow outputs will be displayed in the `Console` pane. You can toggle the display to only display latest outputs and clear the console altogether.
# August 7, 2026
Source: https://docs.replit.com/updates/2026/08/07/changelog
1 min read
## What's new
* [Security scan while you build](#security-scan-while-you-build)
* [Regenerate production database credentials](#regenerate-production-database-credentials)
* [Build with SSO](#build-with-sso)
* [Move projects between workspaces](#move-projects-between-workspaces)
## Agent
### Security scan while you build
Agent now checks the files it changes for common security issues as part of its code review. This automatic Semgrep scan looks for risky patterns and hardcoded secrets, so Agent can address likely findings before it completes the task.
Learn more about [Security scan while you build](/features/security/project-security-center#security-scan-while-you-build).
## Platform
### Regenerate production database credentials
You can now regenerate credentials for an eligible production database from the **Database** tool. Replit updates the credentials and, when your app has a live supported deployment, starts a redeploy so it can continue using the new credentials. Update any external tools that use the old connection string.
Learn more about [regenerating production database credentials](/features/data-and-storage/connection-details#regenerate-production-database-credentials).
## Teams and Enterprise
### Build with SSO
Pro builders can now configure enterprise SSO for a Replit App that uses [Clerk Auth](/features/auth-and-identity/clerk-auth). Ask Agent for the authentication change you need, and Agent directs you to the Clerk Dashboard. There, connect Okta or Microsoft Entra ID through OIDC or SAML. Enterprise SSO connections are free through October 1, 2026. After that, Clerk pass-through pricing applies. Enterprise availability is coming soon.
Learn more about [Build with SSO](/features/auth-and-identity/single-sign-on).
### Move projects between workspaces
You can now move a project between team workspaces in the same billing account from the **Projects** list. The transfer runs in the background and can't be undone. Linked Account Secrets don't move with the project, so re-link them in the destination workspace.
Learn more about [transferring projects between team workspaces](/teams/identity-and-access-management/transfer-app-to-teams#transfer-between-team-workspaces).
# Publishing and Database Billing
Source: https://docs.replit.com/billing/about-usage-based-billing
Learn how Replit bills for publishing and databases, including outbound data transfer, compute units, requests, and PostgreSQL usage metrics.
There are three types of usage-based billing for publishing:
1. Outbound Data Transfer
2. Autoscale Compute Units
3. Requests
You can view your usage in **Settings** under **Account** → **Account usage**. Billing occurs monthly or once your accumulated costs exceed your monthly credits. Replit Core and Pro users receive monthly allowances for these resources.
If you need additional credits beyond your monthly subscription allowance, you can purchase credit packs on your billing page. See [Managing Your Spend](/billing/managing-spend) for more information about credit packs.
# Publishing
## 1. Publishing Outbound Data Transfer
This type of usage is billed per byte with Replit Core and Pro users receiving monthly allowances. Only egress (outgoing) data is counted against this allowance, potentially leading to overages. In contrast, ingress (incoming) data is always free.
| Subscription | Allowance |
| ------------ | -------------------------------------------------------- |
| Replit Core | 100 GiB |
| Replit Pro | See [Replit Pro pricing](https://www.replit.com/pricing) |
The allowances apply to [Static](/features/publishing/deployment-types#static), [Autoscale](/features/publishing/deployment-types#autoscale), [Reserved VM](/features/publishing/deployment-types#reserved-vm) and [Scheduled](/features/publishing/deployment-types#scheduled) deployments.
See the [pricing page](https://www.replit.com/pricing) for the current price of outbound data transfer.
***
## 2. Compute Units
Autoscale Deployments are billed based on Compute Units, which take into account both CPU and RAM usage over time.
Overages are billed based on Compute Units. The granularity of the billing is down to each individual compute unit. See the [pricing page](https://www.replit.com/pricing) for the current price of compute units.
Here is a breakdown of how RAM and CPU seconds for an Autoscale Deployment translate into Compute Units:
| Resource | Compute Units |
| ------------ | ------------- |
| 1 RAM Second | 2 Units |
| 1 CPU Second | 18 Units |
Static Deployments don't consume Compute Units. Their billing is solely for Outbound Data Transfers beyond a [specified amount](#).
[Learn more about Autoscale Deployments](/features/publishing/deployment-types#autoscale).
***
## 3. Requests
Autoscale Deployments also consider the number of requests made.
See the [pricing page](https://www.replit.com/pricing) for the current price of requests.
# Databases
Replit only charges for usage of [production databases](/features/data-and-storage/development-and-production) -- development databases are always free and included with every Replit App. For details on development databases, see [Development Database](/features/data-and-storage/sql-database).
Replit PostgreSQL is fully managed and serverless, providing effortless high availability and zero maintenance. Billing for production databases is based on actual usage, which can lead to significant cost savings.
Production PostgreSQL databases are billed by two usage metrics:
* **[Compute Time](#compute-time)**: The amount of compute resources consumed per hour.
* **[Data Storage](#data-storage)**: The total volume of data (including historical data) stored.
You can view your current resource usage, including production database usage, in **Settings** → **Account** → **Account usage**.
## Compute Time
Compute time is determined by number of hours your database remains active during a given billing period. Databases are considered active when they receive requests and for an additional 5-minute period after the last request. If a database remains idle for 5 minutes, it will be suspended and enter an inactive state.
## Data Storage
Data storage is the total volume of data stored across all databases in your account, measured in gibibytes (GiB). Storage is calculated as the maximum amount of storage used per month. Each PostgreSQL database consumes 33MB of storage, even if it doesn't contain any data. This is the default storage footprint of the Postgres server.
The total storage limit for each production database is 10 gibibytes (GiB). Development databases include 20 GiB of free storage per Replit App.
# Additional Notes
If there's an issue with your payment method, we'll notify you. Continuous payment failures might lead to the suspension of your published apps. If this happens, please [contact support](https://replit.com/help) and update your payment details to regain access to our services.
# Replit AI Billing
Source: https://docs.replit.com/billing/ai-billing
Learn how billing and credits work for Replit AI features including Agent usage, checkpoints, and managing your spend.
Replit AI features use usage-based billing to charge you based on what you build and how much you use our AI-powered tools. This ensures you only pay for the value you receive from Agent.
## Getting started
**All subscribers** receive one-time free Agent checkpoints.
Additional monthly credits automatically apply to AI usage:
* **Core subscribers**: Monthly credits (see [pricing](https://replit.com/pricing))
* **Pro subscribers**: Tiered monthly credits with rollover for . See [Replit Pro](/billing/plans/replit-pro).
These credits cover Agent and other Replit cloud services like published apps, storage, and databases. Choose [Lite, Economy, or Power](/features/agent/agent-modes) to optimize Agent for speed, cost, or capability.
## Agent features by plan
| Capability | Starter | Core | Pro |
| -------------------------- | ------------- | --------- | --------- |
| Agent chat | ✅ (daily cap) | ✅ | ✅ |
| Lite build | ✅ | ✅ | ✅ |
| Full build | ❌ | ✅ | ✅ |
| Design Canvas | ✅ | ✅ | ✅ |
| Convert design to artifact | ❌ | ✅ | ✅ |
| Visual Editor | ✅ | ✅ | ✅ |
| All artifact types | ❌ | ✅ | ✅ |
| Plan Mode | ❌ | ✅ | ✅ |
| Connectors | ❌ | ✅ | ✅ |
| Task planning (Kanban) | ❌ | ✅ | ✅ |
| Active background tasks | — | 1 | 10 |
| Collaboration seats | — | 5 | 15 |
| Turbo mode | ❌ | ❌ | ✅ |
| Published apps | 1 (30-day) | Unlimited | Unlimited |
| Remove Replit badge | ❌ | ✅ | ✅ |
For full plan details, see [Starter](/billing/plans/starter-plan), [Replit Core](/billing/plans/replit-core), and [Replit Pro](/billing/plans/replit-pro).
## Agent billing
Replit Agent uses **effort-based pricing** that scales with the complexity of your request. You pay based on the actual work Agent performs, ensuring fair pricing whether you're making small tweaks or building complex features. This same pricing applies to all Agent usage, including Plan Mode conversations.
**All Agent interactions are billable** - whether Agent responds with text guidance or makes code changes, there is always a charge, though smaller requests cost less.
### How effort-based pricing works
When you chat with Agent in "Build Mode", it creates **checkpoints** that capture completed work on your request:
* **Simple requests** (like bug fixes or small changes) typically cost less than complex builds
* **Complex builds** (like full features or integrations) are bundled into one checkpoint that may cost more than a simple request, reflecting the total effort involved
* **One checkpoint per request** eliminates intermediate checkpoints and reduces billing noise
* **Transparent pricing** shows you exactly what you're paying for each completed task
A checkpoint occurs when Agent completes work on your request and implements the requested functionality in your code.
It's important to note, that in cases where the Agent performed work by answering a question or request, but didn't make code changes (e.g. in Plan Mode), there is still a charge associated with that work, even if there's not a checkpoint shown. Checkpoints are generally only shown to the user when there are code changes completed.
For detailed information about what checkpoints capture and how they work, see [Checkpoints and Rollbacks](/features/version-control/checkpoints-and-rollbacks).
### Agent services billing
Some Agent capabilities use paid third-party APIs behind the scenes (such as Claude, ChatGPT, and Nano Banana / Gemini). Agent handles these integrations automatically — no API keys or setup required. You're billed at the provider's public API rate, deducted from your Replit credits. These costs appear alongside your other usage on the [usage dashboard](/billing/managing-spend).
To understand the cost of sample apps, check out our simple [interactive demo](https://agent-pricing.replit.app/).
### Track your usage
You can monitor your Agent spending in real-time:
1. **Agent tab**: View costs for individual checkpoints by hovering over the usage icon
2. **Usage dashboard**: See detailed billing information for the current period
3. **Settings**: Set up alerts and budgets in **Account** → **Billing** to control spending
Usage data can take up to 30 minutes to appear on your usage dashboard.
## Managing your spend
Take control of your AI spending with Replit's built-in budget tools:
* **Usage alerts**: Get notified when you reach spending thresholds
* **Budget limits**: Set hard caps to prevent unexpected charges
* **Real-time tracking**: Monitor costs as you build
* **Credit packs**: Purchase additional credits with discounts on larger purchases. See [Managing Your Spend](/billing/managing-spend) for details.
Configure email notifications when you reach custom spending amounts
View detailed breakdowns of your AI and cloud service costs
## Next steps
Ready to start building with AI? Here's how to get the most value from your credits:
* **Try Agent first**: Use your free checkpoints to explore Agent's capabilities
* **Start small**: Begin with simple requests to understand effort-based pricing
* **Use Lite mode**: Leverage [Lite mode](/features/agent/agent-modes) for quick, targeted edits
* **Set up alerts**: Configure spending notifications before you exceed your credits
Learn more about [Replit's AI tools](/build/welcome) or explore our [pricing plans](https://replit.com/pricing).
# Publishing costs
Source: https://docs.replit.com/billing/deployment-pricing
Flexible publishing costs that scale with your app's needs. Pay only for what you use with transparent, credit-based billing.
Replit's publishing costs are designed to scale with your app's needs. Choose from usage-based billing that charges only when your app serves requests, or predictable flat-rate options for consistent workloads.
## How billing works
All publishing costs are deducted from your monthly credits. You only pay usage-based fees after your monthly credits are fully used.
* **Starter Plan**: Includes 1 free published app. The deployment expires after 30 days but can be re-published. See [Starter Plan](/billing/plans/starter-plan) for details.
* **[Core Plan](/billing/plans/replit-core)**: Monthly credits included; see [pricing](https://replit.com/pricing)
* **[Pro Plan](/billing/plans/replit-pro)**: Tiered monthly credits; see [Replit Pro](/billing/plans/replit-pro) and the [pricing page](https://replit.com/pricing) for details
Credits apply automatically to all publishing costs. Unused credits don't roll
over to the next month. Learn more about [usage-based
billing](/billing/about-usage-based-billing).
For a hands-on understanding of publishing costs, explore our [interactive pricing calculator](https://deployment-pricing.replit.app/).
## Deployment types
Choose the deployment type that best fits your app's traffic patterns and resource needs.
Perfect for apps with variable traffic. Pay only when your app serves requests—nothing when idle.
**Best for:** Web apps, APIs, and services with unpredictable traffic patterns
[Learn more about Autoscale Deployments](/features/publishing/deployment-types#autoscale)
**Predictable monthly costs with dedicated resources**
Guaranteed compute resources that run continuously. Choose shared or dedicated VMs based on your performance needs.
**Best for:** Production apps with steady traffic or guaranteed resource requirements
[Learn more about Reserved VM Deployments](/features/publishing/deployment-types#reserved-vm)
**Cost-effective for background tasks and automation**
Run code on a schedule without maintaining persistent infrastructure.
**Best for:** Background jobs, data processing, and automated tasks
[Learn more about Scheduled Deployments](/features/publishing/deployment-types#scheduled)
**Minimal costs for static content with global distribution**
Publish static sites with CDN distribution and pay only for data transfer.
**Best for:** Documentation sites, portfolios, and single-page applications
[Learn more about Static Deployments](/features/publishing/deployment-types#static)
## Understanding request-based billing
With Autoscale Deployments, you only pay when your app is actively working.
When no one visits your app, you pay nothing.
Autoscale Deployments use request-based billing—you're charged only when your app serves traffic. Here's how it works:
1. **App starts up** when the first request arrives (if idle)
2. **Processes the request** using compute resources
3. **Goes idle** after 15 minutes of inactivity
**Billing time:** Often just 1-2 seconds per request, even for complex apps.
### Request-based Billing Timeline
When no one visits your app, you pay nothing. When your app is busy, you pay for the compute resources used.
Here's a timeline of what happens when someone visits your app:
Request-based Billing Timeline
Instance
Requests
Billable
First, the server starts up. Then, it processes the requests. Finally, it goes idle. You only pay for CPU and memory during request processing.
When multiple requests arrive simultaneously (like the stacked blue bars), they share the same compute resources.
Your billing time extends to cover all concurrent requests, but you don't pay separately for each—just for the total time the server is working.
The gaps between green bars represent cost savings during idle time. At the end of the session, the server shuts down.
### Compute units explained
Compute units measure the computational work your app performs:
* **CPU time**: Processing power used (1 CPU second = 18 compute units)
* **Memory time**: RAM consumed (1 GB-second = 2 compute units)
* **Duration**: How long your app works on each request
## Pricing breakdown
Pay only when your app serves requests. Automatically scales based on demand.
| Component | Price |
| :------------------------------------ | ----: |
| **Base fee** (per month) | |
| **Compute units** (per million units) | |
| **Requests** (per million requests) | |
Execute background tasks and scheduled jobs.
| Component | Price |
| :------------------------------------ | ----: |
| **Base fee** (per month) | |
| **Compute units** (per million units) | |
| **Scheduler** | |
Dedicated compute resources with predictable monthly costs.
#### Shared VMs
| Configuration | Price (per month) |
| :------------ | ----------------: |
\| **0.5 vCPU / 2GB RAM** | |
#### Dedicated VMs
| Configuration | Price (per month) |
| :-------------------- | ----------------: |
| **1 vCPU / 4GB RAM** | |
| **2 vCPU / 8GB RAM** | |
| **4 vCPU / 16GB RAM** | |
Host static sites with global CDN distribution.
| Component | Price |
| :------------------------- | ----: |
| **Hosting** | Free |
| **Data transfer** (per GB) | |
## Cost examples by app type
These examples show realistic costs for different types of applications.
**Traffic:** 50 visitors/day, 3 page views each = 4,500 requests/month
| Component | Usage | Cost |
| :---------------- | :----------- | ---: |
| **Base fee** | Monthly | |
| **Compute units** | 13,500 units | |
| **Requests** | 4,500 | |
| **Total** | | |
**Traffic:** 500 visitors/day, 5 page views each = 75,000 requests/month
| Component | Usage | Cost |
| :---------------- | :------------ | ---: |
| **Base fee** | Monthly | |
| **Compute units** | 600,000 units | |
| **Requests** | 75,000 | |
| **Total** | | |
**Traffic:** 10,000 API calls/day = 300,000 requests/month
| Component | Usage | Cost |
| :---------------- | :---------- | ---: |
| **Base fee** | Monthly | |
| **Compute units** | 3.96M units | |
| **Requests** | 300,000 | |
| **Total** | | |
**Usage:** Daily data processing with Scheduled Deployments
| Component | Usage | Cost |
| :----------------------- | :----------- | ---: |
| **Scheduled deployment** | Base fee | |
| **Compute units** | 50,000 units | |
| **Total** | | |
## Monitor and control costs
Configure spending limits and budgets to prevent unexpected charges.
Track real-time consumption and costs in your Usage dashboard.
Understand how [Agent](/features/agent/overview) affects your bill.
View logs, track performance, and monitor published app status.
# Managing Your Spend
Source: https://docs.replit.com/billing/managing-spend
Control AI costs and monitor spending with usage limits, budgets, Plan Mode, and Agent modes. Learn strategies to optimize your Replit usage and reduce unnecessary token consumption.
You can control your costs on Replit by using built-in budget controls, optimizing how you work with [AI Agent](/features/agent/overview), purchasing credit packs, and monitoring your usage patterns. Learn more about [AI billing](/billing/ai-billing).
## View usage
Use the [usage page](https://replit.com/usage) to see where your credits go across your personal account or workspace. Filter by date, resource, project, workspace, group, or member to find what drives usage.
Usage updates in near real time, so you can check recent activity without waiting for a daily report.
## Optimize AI costs
AI features like [Agent](/features/agent/overview) are powerful tools, but strategic use can help you maximize value while controlling costs. Here are effective ways to reduce AI spending.
### Use Plan Mode for cost-effective collaboration
[Plan Mode](/features/agent/plan-mode) is one of the most effective ways to save on AI costs. When you enable Plan Mode, Agent creates a detailed plan without making any code changes. This approach offers several cost benefits:
* **Chat before committing**: Discuss and refine the approach with Agent before any work begins
* **Lower token costs**: Planning conversations use fewer tokens than code generation and editing
* **Precision targeting**: Review and adjust the plan to ensure Agent only works on what matters
* **Iterative refinement**: Get the scope right before spending tokens on implementation
Use [Plan Mode](/features/agent/plan-mode) when you're exploring solutions, refining requirements, or want to understand the approach before implementation.
### Control costs with Agent modes
[Agent modes](/features/agent/agent-modes) let you choose cost vs. capability:
* **Lite**: lightweight models for small, scoped edits.
* **Economy**: fewer credits per task—a good default for everyday builds.
* **Power**: the most capable models for complex work, with optional Turbo for faster (higher-cost) runs.
Agent reviews its own code automatically as it builds, catching mistakes and reducing costly rework—there's no setting to turn on or off. To keep more control over what you spend, scope work first with Plan Mode:
* **Review before execution**: See what Agent plans to do before it makes changes.
* **Selective approval**: Approve the changes that fit your goals and skip the rest.
Combine [Plan Mode](/features/agent/plan-mode) with [Economy mode](/features/agent/agent-modes) for maximum cost control. Plan first, then approve changes step by step.
## Purchase credit packs
If you're on a Core or Pro plan and need additional credits beyond your monthly subscription allowance, you can purchase credit packs from **Settings** → **Account usage** → **Credits** → **Purchase credit pack**. Credit packs have discounts when you buy larger amounts, making them ideal for covering temporary usage spikes or preparing for larger projects.
### Available credit packs
Credit packs are available in four sizes, with increasing discounts on larger purchases:
### How credit packs work
* **Purchase location**: Available in **Settings** → **Account usage** → **Credits** → **Purchase credit pack** for Core and Pro plan customers
* **Expiration**: Credit packs expire six months after the purchase date
* **No renewal**: Credit packs do not automatically renew
* **No rollover**: Unused credits from a pack do not roll over after expiration
* **Automatic usage**: Credits are automatically used from the credit pack that expires earliest first, helping you maximize the value of your purchases
* **Auto-reload**: Turn on auto-reload to automatically purchase a *new* credit pack when your balance runs low, so you don't get interrupted mid-project
* **Manage anytime**: Enable, adjust, or turn off auto-reload from **Settings** → **Billing**
Your usage limits and budgets will apply to usage after you use any credit packs you may have. If you want to limit your usage to just credits you've purchased in your pack, set any limits to \$0.01.
## Set up limits and budgets
You can establish monthly usage limits and budgets for all usage-based billing services to monitor and control your costs.
### Usage limits
Usage limits cap your spending beyond your monthly credits. When you reach your limit, usage-based services are blocked until the next billing cycle or until you increase the limit.
For Core accounts, open **Settings** → **Account** → **Billing** to set up a usage limit. For organizations, you can set your usage limit via the [usage page](https://replit.com/usage) by selecting **Manage** under **Usage total**.
### Service shutdown limit
When this limit is reached, services will be suspended until the budget is increased or the next billing cycle begins. This will help prevent extra charges.
For Core accounts, open **Settings** → **Account** → **Billing** to set up a service shutdown limit.
### Organization budgets
For organizations, you can set your usage budget from the [settings page](https://replit.com/t/replit/settings/billing). Budgets must be in increments of .
You must have organization admin or owner permissions to enable a monthly usage limit. If you don't have access, contact your organization owner.
### Per-user spend limits
Enterprise admins can give individual members a different spend limit than the workspace default. Use this to grant power users a higher cap or to tighten a single member's spend without changing the rest of the workspace.
From your Enterprise workspace, open the [usage page](https://replit.com/usage). The **Agent users** table lists every member of your workspace alongside their current usage.
Find the member you want to adjust and select the edit icon in the **Usage limit** column. The dialog shows the workspace default, any applicable group limit, and a field for the new per-user limit.
Enter the new limit and select **Save**. The override takes effect immediately and the new value appears in the **Usage limit** column. To remove an override later, clear the field and save. The member then falls back to the most specific group or workspace limit that applies to them.
Per-user spend limits are available on the Enterprise plan. Members assigned to a [custom group](/teams/identity-and-access-management/groups-and-permissions) inherit that group's limit unless an individual override is set. Per-user overrides always take precedence over group and workspace defaults.
### Organization admin controls
Organization admins can manage AI model access and integrations from the [organization billing settings](https://replit.com/t/replit/settings/billing).
**Disable external AI model integrations**
Enable this setting to block all users in the organization from using external AI model integrations (such as OpenAI, Anthropic, xAI, and Perplexity through Replit's managed connectors).
Enable this setting to block all users in the organization from using Replit-managed AI integrations.
# App Storage Billing
Source: https://docs.replit.com/billing/object-storage-billing
Learn how Replit charges for App Storage.
## Billing categories
Replit categorizes App Storage billing into the following areas:
* **Storage**: Amount of data capacity used per month. All stored objects have a minimum billing period of seven days.
* **Data Transfer**: Total amount of data uploaded and download throughout the month.
* **Basic Operations**: Operations associated with updating buckets and objects. See Class A Operations in Google Cloud Storage pricing for details.
* **Advanced Operation**: All other cloud object storage operations including retrieving configuration and metadata about objects and buckets. See Class B Operations in Google Cloud Storage pricing for details.
## Prices
The following table lists the prices for each usage category.
| Category | Price |
| ------------------------------- | ---------------------- |
| App Storage | per GiB per month |
| App Storage Data Transfer | per GiB |
| App Storage Basic Operations | per thousand requests |
| App Storage Advanced Operations | per thousand requests |
# Changing your plan
Source: https://docs.replit.com/billing/plans/changing-your-plan
Learn how to change your Replit plan, what happens when a plan change takes effect, and how to cancel a scheduled downgrade.
You can change your plan at any time from your billing settings. Upgrades take effect immediately. Downgrades are scheduled for the end of your current billing period, so you keep what you paid for until then.
## Downgrade your plan
When you choose a lower plan, Replit schedules the change instead of applying it right away. You can move from Pro to Core, choose a lower Pro tier, or switch from yearly to monthly billing.
Self-serve plan changes are available between Pro tiers and between Pro and Core. To change a Replit Enterprise plan, [talk to sales](https://replit.com/teams#inlineForm) instead.
Open **Settings**, then choose **Billing** under **Account**.
Select a lower plan, or switch a Pro plan from yearly to monthly billing. Replit labels the change as a downgrade.
Replit shows a summary of what will change before you confirm. Your current plan stays active until your renewal date, and the scheduled change applies on that date.
Your projects and data stay intact when you downgrade. Nothing is deleted. The downgrade reduces what your plan includes going forward.
You can switch between monthly and yearly billing while choosing a plan. Replit shows when the change takes effect before you confirm it. Switching from monthly to yearly billing takes effect immediately, while switching from yearly to monthly is scheduled for your next renewal date.
## What changes when a downgrade takes effect
A downgrade reduces your plan's limits and features starting on your renewal date. Moving from a higher plan to a lower one can change:
* **Monthly credits**: Your monthly credit allotment drops to the lower plan's amount. See the [pricing page](https://replit.com/pricing) for each plan's credits.
* **Agent capabilities**: Higher-tier Agent features become unavailable—for example, Turbo mode and running multiple [parallel tasks](/core-concepts/agent/task-system).
* **Collaborators**: Your collaborator limit drops to the lower plan's limit. The most recently added collaborators keep access; when a collaborator loses access, their projects transfer to you as the workspace admin.
* **Viewers**: Viewer access is removed if the lower plan doesn't include viewer seats.
* **Database retention**: Your [point-in-time restore](/features/data-and-storage/development-and-production) window shortens to the lower plan's retention.
* **Support**: Your support tier may change to match the lower plan. Compare each plan's support level on the [pricing page](https://replit.com/pricing).
The exact before-and-after values depend on the plans involved and are shown in the confirmation summary before you commit. Compare plans on the [pricing page](https://replit.com/pricing).
When you move between Pro tiers, your plan stays Pro. The confirmation summary shows the monthly credits and billing cadence that will apply after the change.
## Downgrade reminder
Replit emails you a reminder **7 days before** a scheduled downgrade takes effect, listing what will change so you can adjust seats, data, or your plan choice before the change applies.
## Cancel a scheduled downgrade
If you change your mind before the downgrade takes effect, you can cancel it and stay on your current plan with no changes:
Open **Settings** → **Billing**, or use the reminder banner shown while a downgrade is scheduled.
Choose to keep your current plan. The scheduled downgrade is canceled and you continue on your current plan.
## Related
* [Replit Core](/billing/plans/replit-core)
* [Replit Pro](/billing/plans/replit-pro)
* [Managing your spend](/billing/managing-spend)
# Replit Core
Source: https://docs.replit.com/billing/plans/replit-core
Learn about Replit Core membership features including powerful AI tools, high-performance development resources, and one-click publishing.
[Replit Core](https://replit.com/replit-core) membership gives you access to premium
tools that let you quickly go from idea to app. See the [pricing page](https://replit.com/pricing) for current Core pricing (monthly or annual).
## Key features
The Core membership offers the following features:
### AI-powered tools
* **Agent**: Chat with Agent to build, debug, and iterate on your apps
* **Full build**: Use Economy or Power when you want Agent to work independently on larger tasks
* **Lite build**: Quick, targeted edits for fast changes
* **Design Canvas**: Explore visual ideas, generate variations, and convert designs to artifacts
* **Visual Editor**: Directly edit your app's content and layout visually
* **All artifact types**: Web apps, mobile apps, data visualizations, slide decks, animated videos, and more
* **Plan Mode**: Brainstorm and plan work with Agent without editing code
* **Connectors**: Integrate with third-party services like Google, Stripe, and more
### Collaboration
* Invite up to 5 builders to your Workspace — no separate team subscription required
* Background tasks — 1 active task at a time
* Shared Kanban board for planning and tracking work
### Lightning-fast and secure development
* Work in a high-powered cloud development environment
* Avoid interruptions in service with pay-as-you-go billing
* Use the Secrets tool to keep sensitive data secure and separated from the code
See the pricing page for cost and limits for
specific plans.
### Monthly credits
* Receive monthly credits that automatically apply to paid services such as Agent, publishing, network transfer, database storage, and Replit AI Integrations. Need more builders or higher credit tiers? See [Replit Pro](/billing/plans/replit-pro).
### One-click Publishing
Publishing is available on every plan. While the free Starter plan includes 1 published app, Replit Core lifts that cap to unlimited and adds more options:
* Publish an unlimited number of apps
* Select from multiple publishing options to optimize your spending
* Access built-in logging & analytics
* Remove the "Made with Replit" badge from your published apps
### AI-powered support and community events
* Get AI-powered support to resolve billing, account, product, and technical questions quickly
* Access members-only forums and events
* Get early access to new features
## Core vs Starter vs Pro
| Capability | Starter | Core | Pro |
| ----------------------- | ------------- | --------- | --------- |
| Agent chat | ✅ (daily cap) | ✅ | ✅ |
| Lite build | ✅ | ✅ | ✅ |
| Full build | ❌ | ✅ | ✅ |
| Design Canvas | ✅ | ✅ | ✅ |
| All artifact types | ❌ | ✅ | ✅ |
| Plan Mode | ❌ | ✅ | ✅ |
| Connectors | ❌ | ✅ | ✅ |
| Replit AI Integrations | ❌ | ✅ | ✅ |
| Collaboration seats | — | 5 | 15 |
| Active background tasks | — | 1 | 10 |
| Turbo mode | ❌ | ❌ | ✅ |
| Published apps | 1 (30-day) | Unlimited | Unlimited |
For a full comparison, see the [pricing page](https://replit.com/pricing).
## Getting started
Upgrade to Replit Core in just a few steps:
1. Navigate to the Pricing page
2. Select **Join Replit Core**
3. Select either **Monthly** or **Yearly** plan and enter your payment details
## Next steps
To learn more about Replit Core's features, see the following resources:
* [Starter Plan](/billing/plans/starter-plan): Compare Starter plan features with Core
* [Replit Pro](/billing/plans/replit-pro): For teams—up to 15 builders, Turbo mode, and tiered credits
* [Replit Agent](/features/agent/overview/): Start building with Agent
* [Project Editor](/learn/projects-and-artifacts/project-editor/): Learn about the Project Editor and app-building tools
* [Publishing](/learn/projects-and-artifacts/replit-deployments/): Read about the various publishing options for your app
# Replit Enterprise
Source: https://docs.replit.com/billing/plans/replit-enterprise
Replit Enterprise adds SSO/SCIM, governance, dedicated support, and unlimited seats. Upgrade from any plan without leaving Replit or contacting sales.
[Replit Enterprise](https://replit.com/pricing) gives every team — technical or not — a private, compliant Workspace for building and shipping internal tools, prototypes, dashboards, slide decks, and more. It is backed by enterprise identity, dedicated support, and deep security, governance, and data controls.
You can upgrade to Enterprise directly inside Replit. Builders on any plan — Free, Core, or Pro — can move to Enterprise without leaving the product. If you want a guided walkthrough or a larger custom deal, [talk to sales](https://replit.com/teams#inlineForm) instead.
## Key features
Enterprise includes everything in Pro, plus organization-wide identity, governance, integrations, and a dedicated support team:
* **SSO and SAML with SCIM provisioning**: Secure, automated team access tied to your identity provider. See [SAML SSO](/teams/identity-and-access-management/saml) and [SCIM provisioning](/teams/identity-and-access-management/scim).
* **Dedicated, secure Workspace**: Role-based access control mapped to your identity provider's groups, isolated to your organization. See [Groups and permissions](/teams/identity-and-access-management/groups-and-permissions).
* **Audit logging via SIEM**: Stream a full audit trail to your existing security and monitoring tools. See [Audit logs](/teams/identity-and-access-management/audit-logs).
* **Custom stack and design system**: Standardize on the libraries, languages, components, and patterns your company already uses.
* **Admin governance controls**: Require private deployments, ban public apps, mandate security scans, and pin deployment geographies.
* **Enterprise Security Center**: CVE detection across all dependencies, organized by severity, with affected-app drill-down and SBOM downloads for compliance.
* **Custom-scoped first-party integrations**: Tightly scope what each team and app can connect to inside your stack. Bring your own OAuth app for connectors when you want your own branding. See [Configuring OAuth App with Replit](/features/integrations/overview#configuring-oauth-app-with-replit).
* **Data and warehouse integrations**: First-party access to Databricks, BigQuery, Microsoft Fabric, Hex, and Snowflake. Build analytics dashboards and data visualization tools directly against your warehouse.
* **Dedicated Product Advocate and Field Engineer**: Named Replit partners who help your teams adopt Replit, scale up, and unblock. Hands-on onboarding sessions get every team building productively in their new Workspace.
* **Unlimited seats**: No per-seat costs. Invite the whole company.
See the [pricing page](https://replit.com/pricing) for the full list of Enterprise features, or [talk to sales](https://replit.com/teams#inlineForm) to discuss a custom plan.
## Upgrade to Enterprise
You can upgrade to Enterprise from any plan in a few steps. The upgrade happens entirely inside Replit.
Open **Settings**, then choose **Billing** under Account. Click **Upgrade** next to **Change plan**.
On the **Compare Replit plans** screen, click **Get started** under the **Enterprise / Custom** column.
The wizard opens on the **Personalization** step. Enter your **Organization name** and click **Continue**.
On the **How billing works** screen (the **Billing and credit selection** step in the right rail), pick a billing model:
* **Credit commitment** — a fixed annual credit purchase.
* **Pay-as-you-go** — charged via the billing method on file once you exceed your credit limit.
Click **Continue**.
If you chose credit commitment, drag the slider to your desired annual amount, then click **Confirm commitment**. You can adjust this later with your account manager.
Enter your billing details on the **Checkout and provisioning** screen. Replit creates your Enterprise organization and provisions your credits right away.
### What transfers when you upgrade
If you have collaborative Workspaces, Replit moves them into your new Enterprise organization automatically when you complete checkout. Your published apps stay live during the move, with no downtime and no interruption to your work.
* **Transferred**: Your collaborative team Workspaces and the apps inside them.
* **Not transferred**: Your personal Workspace, which stays on your personal account.
Your published apps keep running throughout the upgrade. You do not need to republish or reconnect anything after the move.
Working with sales on a larger deal? Your collaborative workspaces transfer the same way — you keep the apps and history you have already built.
## Next steps
Compare Pro with Enterprise.
Set up SSO, SCIM, groups, and audit logs for your organization.
Get a guided walkthrough, custom pricing, or a larger deal.
# Replit Pro
Source: https://docs.replit.com/billing/plans/replit-pro
Learn about Replit Pro: our most powerful plan for serious builders—Turbo mode, up to 15 builders, tiered credits with rollover, and priority support.
[Replit Pro](https://replit.com/pricing) is built for serious builders who have outgrown Core—whether you're shipping production apps, working with a growing team, or pushing Agent to its limits. See the [pricing page](https://replit.com/pricing) for current Pro pricing.
## Key features
### Most powerful Agent experience
* **Turbo mode**: A **separate toggle** in Advanced settings — turn it on in **Power** mode for **2.5x faster** Agent with the fastest models. Requests cost about 2x more, so it's recommended for experienced builders.
* **Parallel task execution**: Run up to 10 tasks simultaneously for faster iteration.
* **Agent modes**: Choose Lite, Economy, or Power to match the task. See [Agent modes](/features/agent/agent-modes) for choosing a mode.
### Tiered credits and rollover
* **Tiered monthly credits**: Multiple tiers with discounts on larger tiers. Buy in advance, save more, and add credits as you grow. See the [pricing page](https://replit.com/pricing) for current tiers.
* **Credit rollover**: Unused credits roll over for , so you get more value from your subscription.
### Scale your team
* **Up to 15 builders**: Invite up to 15 builders with pooled credits and budget controls. No per-user fees—everyone works from the same plan.
* **Collaborative Workspaces**: Create collaborative Workspaces with pooled credits from the admin's account; organize apps and track usage per Workspace.
### Priority support and reliability
* **Priority support**: Get prioritized, direct access to a support engineer on business days, a Pro and Enterprise benefit on top of AI-powered support.
* **4× database recovery window**: Restore your database to any point in time within the last 28 days, instead of the standard 7 days. Keep in mind that longer retention windows use more storage, so extending the recovery period will increase your usage costs.
### Community and more
* **Exclusive community**: Learn from other serious builders, share what you're working on, and get exclusive access to our team.
* **More coming soon**: Additional features are coming exclusively to Pro this year.
## What's exclusive to Pro
| Feature | Details |
| ----------------------- | ------------------------------------------------ |
| Turbo mode | 2.5x faster Agent with the most capable models |
| Parallel task execution | Run up to 10 tasks simultaneously |
| Up to 15 builders | vs 5 on Core |
| Credit rollover | Unused credits roll over for |
| Priority support | Prioritized, direct access to a support engineer |
| 4× data retention | Recover deleted databases for up to 28 days |
Everything in Core is also included in Pro. For a full comparison, see the [pricing page](https://replit.com/pricing).
## Getting started
1. Go to the [pricing page](https://replit.com/pricing)
2. Select **Replit Pro** and choose your credit tier
3. Complete payment to start building with your team
## Next steps
* [Replit Core](/billing/plans/replit-core): Compare Core (up to 5 collaborators) with Pro
* [Agent modes](/features/agent/agent-modes): Choose Lite, Economy, Power, or Turbo for speed, cost, and performance
* [Billing overview](/category/billing): Understand credits, usage, and credit packs
# Starter Plan
Source: https://docs.replit.com/billing/plans/starter-plan
Learn about the Starter plan features, limitations, and what you can build for Free.
## What you get
The Starter plan gives you everything you need to start building on Replit. Create apps and publish your first project — all at no cost.
### Daily credits for Agent
Starter plan users receive daily credits for Agent usage, up to a monthly cap. These credits reset daily, giving you a fresh allowance to work with Agent each day.
### Monthly credits for cloud usage
You also receive monthly credits that can be used for:
* [Databases (Production)](/features/data-and-storage/development-and-production)
* [Object storage](/features/data-and-storage/object-storage)
* [Publishing (Autoscale, static)](/learn/projects-and-artifacts/replit-deployments)
These credits reset each month.
### Lite build
Access to [Lite build](/features/agent/agent-modes), a fast and focused build experience for quick edits and targeted changes with Agent.
### One free published app
Get free published app whether you're using Lite build or Design Canvas. This published link will automatically go down after 30 days.
Your published app will include a "Made with Replit" badge that contains your unique referral link. If another user signs up with that link from your badge, you'll receive referral credits once you upgrade to a paid plan.
## Limitations
The following features require upgrading to Core:
### Full build
[Full build](/features/agent/overview/) allows Agent to work independently with more power and autonomy. Starter plan builders can only use [Lite build](/features/agent/agent-modes). Full build requires Core or Pro.
### Converting a design to an artifact
Converting a Design Canvas design to a full artifact requires Core. Starter plan builders can create designs and publish them, but converting to an artifact with backend functionality requires an upgrade. If you want to build an app with backend functionality, try starting with [Lite build](/features/agent/agent-modes).
### Third-party connectors
External connectors require Core. This includes integrations with services like Google, Stripe, and other third-party APIs (See more info [here](https://docs.replit.com/features/integrations/overview#connectors)).
### Replit AI Integrations
[Replit AI Integrations](/features/integrations/replit-ai-integrations) requires Core.
### Remove "Made with Replit" badge
Removing the "Made with Replit" badge from your published apps requires Core. Starter plan users will have the badge displayed on their deployments.
### Additional published apps
Starter plan users get free published app. Additional published apps beyond this require Core or Pro.
### Plan Mode
Using Plan Mode requires Core. Plan Mode allows you to brainstorm ideas, plan work, and collaborate with Replit Agent without editing your app's code or data.
### All artifact types
Building artifact types other than web and mobile apps requires Core. Choose from a variety of types including data visualizations, slide decks, animated videos, and more. See [Projects](/features/projects-and-artifacts/projects).
## Upgrading to Core
Ready for more? Upgrade to Core to unlock:
* **More storage and monthly credits** that also let you pay-as-you-go
* **Unlimited published apps** beyond your first free one
* **Full build** for autonomous development
* **Third-party connectors** to connect with external services
* **Replit AI Integrations** so you can use AI models without managing your own API keys
* **Plan Mode** to map out tasks before jumping into a build.
* **Replit Badge removal** for a professional look
* And more
Compare plans and see pricing details
Discover all Core plan features
## Next steps
Ready to start building? Here's how to get the most from your Starter plan:
* **[Build your first app](/build/your-first-app)**: Build a full-stack app
* **[Try Design Canvas](/design/canvas)**: Create beautiful designs in under 2 minutes
* **[Publish your app](/learn/projects-and-artifacts/replit-deployments)**: Publish your deployment and share what you've built with others
# Billing
Source: https://docs.replit.com/category/billing
Replit's billing system helps you optimize your spending on the platform.
Replit's billing system is designed to keep things simple and predictable. When you subscribe to a Replit plan, you receive monthly credits that are included in your subscription fee.
Limited daily Agent and monthly cloud credits
Monthly or annual credits; invite up to 5 collaborators
Tiered credits, up to 15 builders, Turbo Mode, no per-seat fees
This means your usage up to your monthly credit allowance is covered by your subscription—no additional charges. Only when you exceed your monthly credits will you be charged for additional usage.
These credits cover all your usage across Replit's platform, including AI features like Agent, publishing, database operations, and more. Your subscription credits reset each month, giving you a fresh allowance to build and publish your projects.
Beyond the credit system, Replit provides comprehensive billing tools to help you monitor your spending patterns, set monthly budget limits, and control spending with usage limits. You can configure limits and budgets to prevent unexpected charges and give yourself time to increase your budget if needed for uninterrupted access to your projects.
## Getting started
Access Replit's billing features through the tools described in the following sections to take control of your spending and optimize your development workflow.
### Billing in Settings
Review your plan details, payment information, usage limits, and budget settings all in one place.
1. Select your profile icon in the top right corner to access the dropdown menu.
2. Select **Settings**.
3. Under **Account**, select **Billing** to view your current plan, current month usage, alert settings, and budget limit.
### Usage dashboard
Track detailed resource consumption and costs for the current billing period, organized by service category. Use this dashboard to understand how your credits are being used and identify optimization opportunities.
Open **Settings** and, under **Account**, select **Account usage** to view detailed resource consumption and costs for the current billing period.
### Invoices
Review past usage and payments for subscriptions and usage-based charges to track your development costs over time.
Open **Settings** and, under **Account**, select **Billing** or **Account usage**. From there, select **See previous invoices** (or equivalent) to open the invoice portal on Replit's third-party provider.
### Invoice thresholds
On **Core** and **Pro** subscriptions, usage-based charges accumulate until they cross an invoice threshold instead of generating an invoice for every small charge. This reduces invoice frequency and the chance of payment-related service interruptions.
* The threshold starts at for new accounts.
* The threshold can grow up to over time, based on your account standing (for example, consistent on-time payments).
You're still invoiced at the end of your regular monthly billing cycle even if you haven't reached the threshold. To review historical and upcoming invoices, see [Invoices](#invoices) above.
## Key features
* **Credits included**: Starter plan users receive limited daily Agent credits (up to a monthly cap) and monthly cloud credits. Core and Pro include monthly credits. On Pro, unused credits roll over for . Core lets you invite up to 5 collaborators; Pro supports up to 15 builders with pooled credits and no per-seat fees.
* **Credit packs available**: Purchase additional credits on Core and Pro plans, with discounts on larger packs. See [Managing Your Spend](/billing/managing-spend) for details
* **AI features included**: Use Agent within your credit allowance
* **Real-time usage tracking**: Monitor your current plan and usage in **Settings** → **Account** → **Billing** and **Account usage**
* **Smart limits and budgets**: Set custom usage limits and budgets to manage costs and prevent unexpected charges. See [Managing Your Spend](/billing/managing-spend) for more information
* **Detailed usage insights**: Track resource consumption and costs for the current billing period in your **Usage** dashboard
* **Complete invoice history**: View and download current and past costs from the invoice portal linked from the **Usage** dashboard
## Use cases
The following examples show how to use Replit's billing features to maintain control over your development costs while building and scaling your projects.
### Protect your budget when your app scales
When your autoscale deployment experiences sudden growth, use these features to maintain cost control:
* Create a usage limit to cap spending at your custom threshold
* Set a budget limit to suspend your app when you reach the cap
* If you reach your monthly limit, increase your budget and restart the app to restore availability
### Track and optimize your development costs
Use data from the **Usage** and **Invoice** pages to make informed decisions about your development spending:
* Streamline expense reporting with export-ready invoices
* Download or view itemized reports for accounting and budget planning
* Identify cost optimization opportunities by reviewing usage trends across different services
## Next steps
To learn more about Replit's billing and plans, explore these resources:
* [Starter Plan](/billing/plans/starter-plan) - Learn about Starter Plan features and limitations
* [Pricing plans](https://replit.com/pricing) - Compare plans and features to find the right fit for your projects
* [AI Billing](/billing/ai-billing): Learn how Replit charges for Agent usage
* [Publishing and Database Billing](/billing/about-usage-based-billing): Learn about compute units, data transfer, and database costs
* [Replit Pro](/billing/plans/replit-pro) - Learn about the Pro plan for teams: up to 15 builders, Turbo Mode, and tiered credits
# Legal and Security
Source: https://docs.replit.com/category/legal-and-security
Learn about Replit's policies on security, privacy, usage limits, and other legal matters to help you use the platform safely and effectively.
At Replit, we strive to maintain a safe and welcoming environment for all our users. Report any abusive, harmful, or inappropriate content immediately.
It is against our Terms and Conditions to publish content that violates copyrights, privacy, or contract rights. We act immediately on takedown requests.
Learn about warnings, bans, and the site ban process at Replit.
Replit reserves the right to terminate inactive accounts after 1 year of no activity.
Instructions for deleting your personal information from Replit.
Information on how Replit secures your code, applications, and user data.
Learn about the support options Replit offers for users, both free and members.
We strive to create a trusted and safe community. Here's how we do it.
Learn about Replit's service limits, soft limits, and hard limits.
See Replit's accessibility features and commitment to web accessibility.
# Account Inactivity
Source: https://docs.replit.com/legal-and-security-info/account-inactivity
Learn about Replit's account inactivity policy, when accounts may be terminated, and how paid subscriptions affect account status.
A free Replit account provides access to most Replit features and products. An account is kept active by user actions, including logging in and interacting with the Replit Workspace. An inactive Replit account is one that has not been used within a **1-year** period, meaning the user has not logged in to the account during that period. Replit reserves the right to terminate inactive Replit accounts and delete associated user data. Replit will delete Replit Apps associated with inactive free accounts.
Replit accounts under a paid subscription plan are not subject to termination due to account inactivity.
# Strike system FAQ
Source: https://docs.replit.com/legal-and-security-info/strike-system-faq
Learn about warnings, banned community access, and site bans in Replit.
### What is a Warning in Replit?
A staff member will send you a warning when you violate the [Community Standards](https://blog.replit.com/community-standards), [Terms of Service](https://replit.com/site/terms), or [Privacy Policy](https://replit.com/site/privacy). Other disciplinary actions may include unpublishing of your Replit App(s).
### Can I republish my Replit App after it's been unpublished?
Yes. Revise your Replit App to abide by the [Community Standards](https://blog.replit.com/community-standards), then republish.
### What happens when I'm banned from the Community?
When banned from the community, you cannot create posts or share Replit Apps. However, you can still use the online IDE for features unrelated to community activity.
### What happens when I'm banned from Replit?
A ban from Replit means you cannot log into your account and all Replit App will have been deleted. This often occurs for violating the [Terms of Service](https://replit.com/site/terms).
### How can I appeal a ban?
Send an email to [appeals@replit.com](mailto:appeals@replit.com) with your Replit username, a description of the action that you are appealing, and your reasons for the appeal.
# December 13, 2024
Source: https://docs.replit.com/updates/2024/12/13/changelog
Assistant launch, improved Agent, usage updates, and more.
## What's new
* [Assistant Features](#assistant-features)
* [Rollback with Ease](#rollback-with-ease)
* [Build Beautiful Apps](#build-beautiful-apps)
* [Rapid Scraping / Screenshots](#rapid-scraping---screenshots)
* [Usage Updates You'll Love](#usage-updates-youll-love)
This week, Assistant launched—a new AI tool that allows you to edit multiple files and apply changes directly.
**Update (December 2025):** Assistant has been deprecated. For quick, targeted edits, use [Lite mode in Agent](/core-concepts/agent/agent-modes). For discussions and planning, use [Plan mode in Agent](/core-concepts/agent/plan-mode).
Assistant is optimized for chat and quick edits. A common workflow is creating an MVP with Agent, then performing quick edits with Assistant.
Here are some highlights of Assistant:
* **Lightweight:** Assistant is optimized for chat and quick edits, now with the ability to edit multiple files and apply changes directly.
* **Mentions and screenshots:** Mention files or URLs in your prompts. Assistant can scrape the URL or take a screenshot for you.
* **Rollbacks:** Assistant automatically creates checkpoints, allowing you to easily preview edits as diff and roll back with a single click.
* **Flexibility:** Assistant works in any Replit App, regardless of the tech stack. Bring your existing projects or start fresh with Agent.
* **More Beautiful Apps:** Improved support for responsive React apps allows you to create stunning apps.
* **Billing updates:** All usage limits for Agent have been removed, and the credits included in your subscription have been increased.
## Platform updates
### Assistant Features
Replit Assistant is a lightweight AI tool built for chat and quick edits. It can edit multiple files and apply them directly on it's own.
Assistant excels when you give it context—that might mean specific features, files (mention them with `@file`), or URLs (just paste them in).
Assistant can help you iterate faster and uses about 5x less credits than Agent.
### Rollback with Ease
Assistant automatically creates checkpoints, allowing you to easily preview edits as diffs and roll back with a single click if anything looks off.
### Build Beautiful Apps
Improved support for **React apps** ensures your apps appear and function at their peak.
### Rapid Scraping / Screenshots
Screenshot or scrape the contents of any site directly into your prompts with **Assistant** or **Agent**.
Simply paste a URL and Replit offers to take a screenshot or scrape the contents of the page.
As always, you can always attach images to your prompts or mention files with `@file`.
### Usage Updates You’ll Love
* **No More Usage Quotas:** Say goodbye to limits for Agent usage.
* **More Credits for Subscribers:** Core subscribers now receive increased credits.
New billing tools allow you to monitor and limit your spend. Head over to the "usage" tab in Replit to see your usage and set limits.
# December 20, 2024
Source: https://docs.replit.com/updates/2024/12/20/changelog
Snow Mode, custom Assistant prompts, package installs, Agent updates, and platform improvements.
## What's new
* [Snow Mode](#snow-mode)
* [Custom prompts](#custom-prompts)
* [Package installs](#package-installs)
* [Replit App theming](#replit-app-theming)
* [Database notifications](#database-notifications)
* [Recommendation system](#recommendation-system)
* [Integration visibility](#integration-visibility)
* [Workflows](#workflows)
Updates have been rolling out straight into the holiday season. Before getting into product updates, here's some cheer with *Snow Mode*. Try it out today!
## Platform updates
### Snow Mode
### Custom prompts
**Update (December 2025):** Assistant has been deprecated. For quick, targeted edits, use [Lite mode in Agent](/core-concepts/agent/agent-modes).
Custom prompts allow you to take full control of how Assistant interacts. From setting up specific coding standards to customizing Assistant defaults, Custom Prompts have you covered.
You might add things like:
* A specific coding style or framework
* Specific problem solving techniques
* Package management preferences
For example, you might add:
```
use pnpm for package management
use motion/react instead of framer-motion
always use claude-3-5-sonnet-20241022 as your model
```
To spice things up, you can even add some personality to Assistant (this is how I understand the younger generation)
### Package installs
Assistant can now install your packages for you in a single click.
### Replit App theming
Your projects just got a major glow-up. No code required 💅
Now, you can ask Agent to build a React Replit App and customize it effortlessly with no-code theming tools:
* Change the primary color
* Switch between light and dark modes
* Personalize your app's aesthetics to be truly yours
Copy paste this prompt to Agent to try it out!
```
Build me a todo list app in React
```
### Database notifications
You now get a notification when Agent adds a database to your Replit App. Keep an eye out for it in the bottom left.
### Recommendation system
Agent now suggests the next cool features to build in your app, acting as your creative brainstorming partner.
It works like an infinite idea generator that helps guide you from idea to publish-ready software, fast.
### Integration visibility
Agent now features enhanced integration visibility, allowing you to better track and manage integrations throughout your workflow.
Supported integrations include OpenAI, Stripe, Firebase, and more!
### Workflows
A Workflow is an easily configurable "Run" button that can run any command(s) you'd like.
It is a reusable, customizable sequence of steps that can be executed within your Replit App. They can be as simple as running **`python main.py`** or as complex as executing a multi-step procedure.
Example Use Cases:
* Run multiple services in parallel (e.g., frontend + backend)
* Execute files or commands sequentially (e.g., run linter → run tests, compile → execute code)
To start [creating workflows](https:/.replit.com/replit-workspace/workflows#creating-workflows), go to the Workflows pane by using the tools sidebar menu, or search for the Workflows pane using **`Command + K`**.
Check it out [here](https:/.replit.com/replit-workspace/workflows).
# December 27, 2024
Source: https://docs.replit.com/updates/2024/12/27/changelog
Integrations improvements, Replit Teams updates, build notifications, and database polish.
## What's new
* [Integrations](#integrations)
* [Build notifications](#build-notifications)
* [Database polish](#database-polish)
* [Agent improvements](#agent-improvements)
* [Replit Teams updates](#replit-teams-updates)
Happy Holidays!
## Platform updates
### Integrations
Integrations are now *front and center* in the Agent UI. You can easily add your favorite services to your Agent apps. Several new integrations have been launched and polished—check them out. Some highlights:
* Perplexity
* Firebase
* OpenAI
* Anthropic
* Google Services
### Build notifications
Agent now sends you notifications when it's done working—listen for the audio notification.
If you're a more visual person, check out the favicon of the browser tab for status updates.
### Database polish
A new database notification now appears in the dock when Agent adds a database to your project.
### Agent improvements
Agent now pauses immediately when requested, rather than completing its current execution. This should make it easier to stop Agent when you've changed your mind.
You might also notice some fancy new "Run" buttons in the Agent UI.
## Teams and Enterprise
### Replit Teams updates
Here are a few exciting updates for Teams:
* Teams may now customize Replit App icons and cover images
* Solid color covers have been replaced with custom images
* Replit Teams is now available on Mobile!
Now you can create shareholder value from practically anywhere 🤯
# January 3, 2025
Source: https://docs.replit.com/updates/2025/01/03/changelog
2 min read
## What's new
* [xAI integration](#xai-integration)
* [Custom domain error handling](#custom-domain-error-handling)
* [Menu search feature](#menu-search-feature)
* [Neon database improvements](#neon-database-improvements)
* [React by default](#react-by-default)
* [Replit Teams login](#replit-teams-login)
🎆 Happy New Year!
The team took some time to recharge, but updates keep coming.
## Platform updates
### xAI integration
Agent can now add xAI directly to your apps.
Add Grok to your projects and publish them in seconds. Just mention "add AI features with xAI" in your prompts or select xAI from integrations—Agent builds with the API.
More of your favorite integrations are coming to Agent.
### Custom domain error handling
Specific error messages for custom domain verification failures are now available, helping you debug issues faster.
### Menu search feature
You can now search the menu items in the sidebar in your Replit Apps.
### Neon database improvements
The Neon database integration has been optimized. Databases added with Agent are now more cost friendly and performant.
### React by default
The default template for new frontend Replit Apps now uses React. Your projects are more polished and functional out of the box.
## Teams and Enterprise
### Replit Teams login
The Teams login flow has been updated to make it easier to get started. This includes a new login experience with a team context selection page and improved account switching for Teams customers.
# January 10, 2025
Source: https://docs.replit.com/updates/2025/01/10/changelog
2 min read
## What's new
* [Slack integration](#slack-integration)
* [Agent and Assistant improvements](#agent-and-assistant-improvements)
* [Shell bash completion](#shell-bash-completion)
* [Elixir ecosystem fix](#elixir-ecosystem-fix)
* [Custom domain UX improvement](#custom-domain-ux-improvement)
* [Enhanced project featuring controls](#enhanced-project-featuring-controls)
* [Teams mobile search](#teams-mobile-search)
Another great week of updates!
## Platform updates
### Slack integration
Agent now integrates with the Slack API. That means you can use Agent to build apps that:
* Post messages
* Read history
from/to all your favorite Slack channels.
Submit what you build to the [Agent Showcase](https://forms.gle/qxpfr82wNpKsCdok9).
### Agent and Assistant improvements
* Agent now loads faster from the homepage so you can get to building faster.
* A floating popup now provides quick access to Assistant when selecting text in Console and Shell. Simply select text and select the Assistant icon to ask a question.
### Shell bash completion
Shell now has autocomplete! Hit tab twice to autocomplete a command.
### Elixir ecosystem fix
Resolved issues with Elixir's mix tooling, the language now works as expected.
### Custom domain UX improvement
You can now paste a URL into the custom domain input and Replit automatically extracts the domain for you.
## Teams and Enterprise
### Enhanced project featuring controls
It's now easier to feature and un-feature your organization's public projects!
Now you can control a project's featured state directly from the workspace via the project info modal and from the projects index table.
Plus, when you feature a project, you'll get a sneak peek of how it will appear on your public profile.
### Teams mobile search
You can now search for your Teams Replit Apps on mobile.
# January 17, 2025
Source: https://docs.replit.com/updates/2025/01/17/changelog
2 min read
## What's new
* [SendGrid integration](#sendgrid-integration)
* [Web view mobile support](#web-view-mobile-support)
* [DNS record format update](#dns-record-format-update)
* [Flask deployment upgrade](#flask-deployment-upgrade)
* [Assistant inline shell commands](#assistant-inline-shell-commands)
## Platform updates
### SendGrid integration
You can now build email integrations with Agent. This allows you to send emails from your new Agent projects using the SendGrid API.
### Web view mobile support
We've added the ability to scale web view to common mobile screen sizes. In addition, we've added a QR code in the URL dropdown and networking pane for easier mobile device testing.
As a reminder—even while you're building your project, it's accessible from the internet. Just visit the dev URL from any device.
### DNS record format update
We've modified how custom domain DNS records are formatted to match industry standards.
This should make it easier to configure custom domains.
### Flask deployment upgrade
gunicorn is now the default web server for Flask stack deployments.
This resulted in a 40x performance improvement over previous Flask deployments.
### Assistant inline shell commands
Assistant can now execute shell commands directly in the chat pane. Save time by running commands without leaving the chat!
We've also added warnings for potentially dangerous shell commands and revamped the UI for installing packages.
# January 24, 2025
Source: https://docs.replit.com/updates/2025/01/24/changelog
2 min read
## What's new
* [Assistant + Workflows](#assistant----workflows)
* [Better Zips](#better-zips)
* [Autoscale deployment optimizations](#autoscale-deployment-optimizations)
## Platform updates
### Assistant + Workflows
Assistant now integrates with "Workflows." That means you can chat with Assistant to configure how your Replit Apps run.
If you haven't used Workflows before, they're really cool and can take your Replit Apps to the next level.
You can learn more [here](/references/workspace/workflows).
### Better Zips
We've improved the speed and reliability of zipping Replit Apps. You'll notice "export as zip" is now lightning fast.
### Autoscale deployment optimizations
Autoscale deployments are now more reliable and faster thanks to some behind-the-scenes improvements on cold-start times.
# January 31, 2025
Source: https://docs.replit.com/updates/2025/01/31/changelog
2 min read
## What's new
* [Repl -> App](#repl----app)
* [Enhanced notifications](#enhanced-notifications)
* [Object Storage improvements](#object-storage-improvements)
* [De-cluttered diffs](#de-cluttered-diffs)
* [More performant Agent in Asia](#more-performant-agent-in-asia)
* [X login](#x-login)
* [Rapid repo import](#rapid-repo-import)
## Platform updates
### Repl -> App
Repls are now "Apps." Simplicity is the name of the game.
### Enhanced notifications
Payment failure and invoice notifications have been improved. You now receive a 24-hour grace period before your App is suspended, along with more transparency throughout the process.
This update helps you avoid any disruptions to your Replit experience.
### Object Storage improvements
Search functionality and pagination (pages) have been added to the Object Storage pane, making it easier to browse your files.
### De-cluttered diffs
Assistant file changes now open temporary diff panes. This makes it easier to see the changes you're making without bogging down your workspace with endless tabs.
The panes automatically close when you apply the changes.
### More performant Agent in Asia
Cloud services have been optimized for Agent builders in Asia. You'll notice snappier responses and a much smoother experience.
### X login
You can now register and sign-in to Replit with X. Welcome to the future.
### Rapid repo import
Want to bring your favorite GitHub repo to Replit?
You can now do so instantly.
Just type `replit.com/YOUR_REPO_URL` into your browser, for example:
`https://replit.com/github.com/mattppal/magnetic-feel`
# February 7, 2025
Source: https://docs.replit.com/updates/2025/02/07/changelog
2 min read
## What's new
* [Agent is now free to try](#agent-is-now-free-to-try)
* [Replit Mobile](#replit-mobile)
* [New Replit App cover pages](#new-replit-app-cover-pages)
* [Documentation migration to Mintlify](#documentation-migration)
* [Drizzle Studio release](#improved-database-viewer)
* [Input box actions update](#agent-actions)
## Platform updates
### Agent is now free to try
Agent and Assistant are now free to try! Whether you're a seasoned Replit developer or just starting out, you can now experiment with these powerful tools without any restrictions.
Your first 10 checkpoints are free (that includes existing, paid developers too). Select [https://replit.com](https://replit.com) to give them a shot.
### Replit Mobile
Replit Mobile has been completely rebuilt from the ground up! The new mobile app delivers a faster, more intuitive coding experience on the go.
Select [https://replit.com/mobile](https://replit.com/mobile) to try it.
### New Replit App cover pages
Your cover pages got a major upgrade. They're now more developer-friendly and feature the starting prompt for any app built with Agent.
### Documentation migration
The documentation platform has been upgraded to Mintlify, making it easier than ever to navigate and access information.
A huge thank you to the Mintlify team for their help in migrating the documentation.
### Improved database viewer
The database viewer now uses **Drizzle Studio**, providing a more robust and developer-friendly experience for interacting with your data.
Try it out!
### Agent actions
Your Agent input box just got smarter with new integrated actions for additional changes. More seamless integrations are on the way to make your development experience even smoother.
# February 14, 2025
Source: https://docs.replit.com/updates/2025/02/14/changelog
2 min read
## What's new
* [Mobile development](#mobile-development)
* [Social coding challenges](#social-coding-challenges)
* [Agent updates](#agent-updates)
* [Object Storage](#object-storage)
* [App management](#app-management)
## Platform updates
### Mobile development
React Native and Expo support is here to help you build and test iOS and Android apps directly in Replit.
This includes:
* Enhanced iOS and Android development capabilities
* Integrated mobile preview and debugging tools
* Streamlined App Store deployment via Expo EAS
Checkout our [tutorial](https://www.youtube.com/playlist?list=PLto9KpJAqHMRuHwQ9OUjkVgZ69efpvslM) to get started.
### Social coding challenges
The newest challenge features a prize pool!
Replit is taking over TikTok with exciting challenges and amazing prizes for developers of all skill levels.
Visit [replit.com/contest](https://replit.com/contest) to participate.
### Agent updates
Agent and Assistant continue to improve with under-the-hood optimizations for performance and reliability.
This includes improvements to stack selection as well as support for the latest OpenAI reasoning models.
### Object Storage
Object Storage now loads and handles large file collections faster and more efficiently.
### App management
Small change, big impact. You can now rename your app without having to reload the window.
# February 21, 2025
Source: https://docs.replit.com/updates/2025/02/21/changelog
2 min read
## What's new
* [Replit 🤝 Grok](#replit--grok)
* [One-click deploy for Assistant](#one-click-deploy-for-assistant)
* [Replit 🤝 Expo](#replit--expo)
* [Improved international character support](#improved-international-character-support-in-screenshots)
## Platform updates
### Replit 🤝 Grok
Create and deploy Grok 3 apps in seconds with Assistant and one-click deployments. Watch the video to see how it works.
### One-click deploy for Assistant
**Update (December 2025):** Assistant has been deprecated. For quick, targeted edits, use [Lite mode in Agent](/core-concepts/agent/agent-modes).
Assistant now helps you deploy your apps with a single click.
### Replit 🤝 Expo
The partnership with Expo continues to bring you powerful mobile development tools.
Read our [blog post](https://expo.dev/blog/from-idea-to-app-with-replit-and-expo) about how this partnership helps you build mobile apps faster.
If you missed it last week, get started with our new [mobile development tutorial](https://www.youtube.com/playlist?list=PLto9KpJAqHMRuHwQ9OUjkVgZ69efpvslM).
### Improved international character support in screenshots
Agent now handles international text with ease.
Agent's screenshot capabilities now include full support for Chinese, Japanese, and Korean (CJK) characters. Screenshots display all characters clearly and accurately in your native language.
# February 28, 2025
Source: https://docs.replit.com/updates/2025/02/28/changelog
2 min read
## What's new
* [Agent v2](#agent-v2)
* [Deployment improvements](#deployment-improvements)
* [Claude 3.7 Sonnet release](#claude-37-sonnet-release)
* [Database performance improvement](#database-performance-improvement)
* [Better documentation](#better-documentation)
## Platform updates
### Agent v2
A new Agent experience is now available to all builders. This new Agent is faster, more accurate, and more capable than the previous version.
It's now powered by Claude 3.7 Sonnet, Anthropic's most advanced model yet.
You can try it out by joining the Explorer Program. Find instructions [here](https://youtu.be/pE_XT2TaXCA).
### Deployment improvements
AI suggestions now appear for builders selecting static deployment for dynamic apps, improving Agent behavior when handling deployment requests.
### Claude 3.7 Sonnet release
Advanced Assistant mode has been upgraded with Claude 3.7 Sonnet for all paid builders. This means improved accuracy and capability for complex requests.
### Database performance improvement
Database operations are now faster than ever, with the most expensive operation reduced from 200ms to under 1ms.
### Better documentation
The documentation has been redesigned to be easier to understand and use, making it completely LLM-friendly.
The documentation now features a "Copy Page" button, which allows you to copy the entire page as markdown. You can also index the documentation with `llms.txt` and `llms-full.txt` to use with your own LLMs.
* [https://docs.replit.com/llms.txt](https://docs.replit.com/llms.txt)
* [https://docs.replit.com/llms-full.txt](https://docs.replit.com/llms-full.txt)
# March 7, 2025
Source: https://docs.replit.com/updates/2025/03/07/changelog
2 min read
## What's new
* [Mobile App Webview improvements](#mobile-app-webview-improvements)
* [Additional Webview improvements](#additional-webview-improvements)
* [First look at the new mobile app](#first-look-at-the-new-mobile-app)
## Platform updates
### Mobile App Webview improvements
The Mobile App Webview just got a whole lot better.
* Added streaming HTML support in PIP Webview
* Implemented native Webview on all iOS devices with proper cookie handling
* Consolidated Webview implementations by removing two redundant pane versions
### Additional Webview improvements
Improvements have been made for a more consistent Webview experience across all devices.
* Added warning banner in Webview for blocked third-party cookies
* Includes call-to-action button to test web app in new tab
* Helps developers identify issues caused by strict browser settings
### First look at the new mobile app
Haven't tried the Mobile App yet? Check out our latest video for a first look.
# March 14, 2025
Source: https://docs.replit.com/updates/2025/03/14/changelog
2 min read
## What's new
* [Neon DB history retention](#neon-db-history-retention)
* [Enhanced link context features](#enhanced-link-context-features)
* [Assistant model selection](#assistant-model-selection)
* [Web View performance improvements](#web-view-performance-improvements)
## Platform updates
### Neon DB history retention
Configurable history retention for Neon databases is now available to help you manage costs more effectively. This directly addresses feedback about database cost management.
### Enhanced link context features
You can now see live previews of link content (screenshots and text) in both Assistant and Agent. This feature also extends to the Replit Mobile App.
### Assistant model selection
For Advanced builders, the option to switch back to Claude 3.5 Sonnet v2 in Assistant settings is now available. Performance improvements for Claude 3.7 Sonnet are ongoing.
### Web View performance improvements
Enjoy smoother iframe navigation and better compatibility with secure websites in Web View. The proxy system has been enhanced to handle security headers more intelligently, eliminating those frustrating navigation blocks you may have encountered previously.
# March 21, 2025
Source: https://docs.replit.com/updates/2025/03/21/changelog
2 min read
## What's new
* [Visual Editor for JS Stack](#visual-editor)
* [Agent timeline messages](#agent-timeline-messages)
## Platform updates
### Visual Editor
Agent just got eyes - click. describe. done.
We've just launched an exciting new feature—you can now click and select elements directly in your projects for JavaScript apps!
This makes building and editing your UI more intuitive than ever. Want to learn more? Check out our detailed walkthrough on the blog at [https://blog.replit.com/cartographer](https://blog.replit.com/cartographer).
### Agent timeline messages
You'll now see a visual indicator whenever Agent sets up a Blueprint for your project. This makes it easier to follow along with what Agent is doing and understand the development process.
We've also enhanced our analytics to better track how you're using Blueprints, helping us make smarter improvements in the future.
# March 28, 2025
Source: https://docs.replit.com/updates/2025/03/28/changelog
2 min read
## What's new
* [Agent v2 is now available](#agent-v2-is-now-available)
* [DeepLearning.AI course launch](#deeplearningai-course-launch)
* [Invoice threshold update](#invoice-threshold-update)
## Platform updates
### Agent v2 is now available
Agent v2 is now available for all users. This release brings significant performance improvements and new features to enhance the development experience. [Learn more about Agent v2](/core-concepts/agent) and start building today.
### DeepLearningAI course launch
Replit's latest free course, Vibe Coding 101 with Replit, is now live on DeepLearningAI. This course takes you from idea to app in minutes, making software development more accessible. [Register for the course](https://www.deeplearning.ai/short-courses/vibe-coding-101-with-replit/?utm_campaign=replit-launch\&utm_medium=partner\&utm_source=replit) and start your development journey today.
### Invoice threshold update
The invoice threshold has increased for Core and Pro subscriptions. This update reduces invoice frequency and payment-related service interruptions, creating a smoother experience for developers. The implementation includes comprehensive risk assessment and monitoring measures. For details on the new threshold, see [Invoice thresholds](/category/billing#invoice-thresholds).
# April 4, 2025
Source: https://docs.replit.com/updates/2025/04/04/changelog
2 min read
## What's new
* [Lucide icon improvements](#better-icons)
* [Assistant performance improvements](#assistant-performance-improvements)
* [Agent reliability improvements](#agent-reliability-improvements)
* [3D model generation milestone](#3d-model-generation-milestone)
## Platform updates
### Better icons
Agent now matches phrases to icons better than before. You'll notice improved icon usage in your apps!
### Assistant performance improvements
Recent performance improvements to Assistant have received positive feedback from customers and users. The enhanced performance creates a smoother experience for all Assistant users. These improvements are separate from Agent context gathering but may influence future optimizations.
### Agent reliability improvements
Several fixes are rolling out to enhance Agent reliability. These include reducing breaking changes, resolving crashes in problematic nix environments, and fixing issues with the bash tool execution.
### 3D model generation milestone
Agent users are now generating 1,500 3D models every day—a significant milestone for the 3D generation capabilities.
# April 11, 2025
Source: https://docs.replit.com/updates/2025/04/11/changelog
2 min read
## What's new
* [Referral program launch](#referral-program-launch)
* [App idea generator for logged-out visitors](#app-idea-generator-for-logged-out-visitors)
## Platform updates
### Referral program launch
Free-tier users can now create referral links.
Users earn per friend who upgrades to Core. Free users must upgrade to Core themselves to unlock their earned referral credits.
### App idea generator for logged-out visitors
A new homepage is out for logged-out visitors to Replit.com. It's a fun way to discover new apps—if you're new to Replit, head to Replit.com to give it a shot.
# April 18, 2025
Source: https://docs.replit.com/updates/2025/04/18/changelog
2 min read
## What's new
* [Smarter integrations matching](#smarter-integrations-matching)
* [Faster AI responses](#faster-ai-responses)
* [Streamlined Agent progress UX](#streamlined-agent-progress-ux)
* [Clearer checkpoint titles](#clearer-checkpoint-titles)
* [Dev preview URL education](#dev-preview-url-education)
* [Better file uploads](#better-file-uploads)
* [Bulk organization invites](#bulk-organization-invites)
* [Enhanced app restoration](#enhanced-app-restoration)
## Platform updates
### Smarter integrations matching
Agent now better identifies when to add external tools and services in new chats. Try creating a new chat and prompting:
Add AI with Anthropic to my app
You'll experience more accurate results as Agent connects your apps with external services, helping you build more powerful applications faster.
### Faster AI responses
The AI systems have been supercharged to deliver dramatically faster responses:
* Experience near-instant interactions with both Agent and Assistant
* Enjoy smoother conversations with faster response times
* Building and iterating on your apps is now more fluid than ever
### Streamlined Agent progress UX
The new "Preview" pane replaces both the "Progress" and "Webview" panes, positioning it front and center to eliminate the output drawer. This improvement helps you stay in flow while building apps without having to dig into code. Helpful tips through a floating banner also guide you during builds.
### Clearer checkpoint titles
Checkpoints are now more accessible with concise titles, while preserving detailed technical information in commit descriptions. This makes your project history easier to understand without sacrificing the technical details you need.
### Dev preview URL education
An educational banner now appears when a Dev Preview is opened in a new tab, helping you understand the purpose of .replit.dev URLs as you build and test your applications.
### Better file uploads
File uploads are now more reliable and easier to use, with a larger "drag and drop" area.
## Teams and Enterprise
### Bulk organization invites
Teams can now invite multiple users to their Organization at once, streamlining collaboration and onboarding for larger groups.
### Enhanced app restoration
Organization admins can now view recently deleted Apps with a new CLUI command, making the existing restore-repl command significantly more usable. This helps you recover important projects quickly when needed.
# April 25, 2025
Source: https://docs.replit.com/updates/2025/04/25/changelog
2 min read
## What's new
* [Mobile app Agent tour and deployments in dock](#mobile-app-agent-tour-and-deployments-in-dock)
* [Deployment secrets sync with workspace secrets](#deployment-secrets-sync-with-workspace-secrets)
* [Enhanced checkpoint event UI](#enhanced-checkpoint-event-ui)
* [Team invitation improvements](#team-invitation-improvements)
* [Advanced privacy settings for teams](#advanced-privacy-settings-for-teams)
## Platform updates
### Mobile app Agent tour and deployments in dock
The mobile app now features a guided Agent onboarding tour to help new builders get started quickly. Plus, Deployments now appear in the dock by default, making it easier to manage your published applications right from your mobile device.
### Deployment secrets sync with workspace secrets
Deployments now automatically sync with your Workspace secrets! This means less error-prone redeploys as your environment variables stay in sync. You can still override individual values when needed by "unsyncing" them explicitly.
### Enhanced checkpoint event UI
The checkpoint event interface has been revamped with an improved design and more intuitive controls. Plus, staff now have access to cross-session rollbacks, allowing for more powerful version management.
## Teams and Enterprise
### Team invitation improvements
Managing team invitations is now easier with clear visibility into expired invites and the ability to re-send invitations. Whether an invite expired or is still pending, you can quickly re-send it with a single click.
### Advanced privacy settings for teams
Enterprise teams now have enhanced control over their organization's data with new Advanced Privacy settings. Prevent members from creating public apps or exporting code as zip files, ensuring your intellectual property stays protected within your organization.
# May 2, 2025
Source: https://docs.replit.com/updates/2025/05/02/changelog
2 min read
## What's new
* [Replit Auth launch](#replit-auth)
* [Updated UBB suspension policy](#updated-ubb-suspension-policy)
* [App type selector fully launched](#app-type-selector-fully-launched)
* [New unified org switcher](#new-unified-org-switcher)
* [Replit Teams Annual plan](#replit-teams-annual-plan)
## Platform updates
### Replit Auth
[Replit Auth](/features/auth-and-identity/authentication) is out for all users! It's a built-in authentication system that lets you add user login to your apps with minimal setup. Instead of building complex authentication systems from scratch, Replit Auth provides a secure, ready-to-use solution integrated with Replit's infrastructure.
**Key Features:**
* **Zero setup** - Add authentication with a single prompt in Agent
* **Built-in security** - Uses Replit's infrastructure with protections against common attacks
* **User management** - Simplified user administration through the Auth pane
* **Database integration** - Automatic user entries in your database
* **Customizable login page** - Personalize the login experience for your app
* **Password reset** - Replit handles password reset emails, eliminating the need for your own email delivery provider
Getting started is simple - just include a request for Replit Auth in your Agent prompt:
Help me create an app that \[your app idea] and should feature Replit Auth.
### Updated UBB suspension policy
We've improved our payment grace period system to better support established users while protecting their deployments. Longer-standing users now have more time to address payment issues, ensuring that critical applications stay online while payment details are updated.
### App type selector fully launched
The app type selector is now available to all users! This feature makes it easier to choose the right template when starting a new project, helping you get up and running faster with appropriate configurations for your specific use case.
## Teams and Enterprise
### New unified org switcher
We've streamlined the organization switching experience with a new unified interface. This cleaner, more intuitive design makes it easier to navigate between your personal account and various organizations, helping you collaborate more efficiently.
### Replit Teams Annual plan
Replit Teams now offers an annual plan option, providing a more cost-effective way for teams to access our collaborative features. Subscribe annually to unlock additional value for your team's development needs.
# May 9, 2025
Source: https://docs.replit.com/updates/2025/05/09/changelog
2 min read
## What's new
* [Notion integration](#notion-integration)
* [PayPal checkout integration](#paypal-checkout-integration)
* [Improved image handling for broken Unsplash URLs](#improved-image-handling-for-broken-unsplash-urls)
* [Enhanced enterprise deployment privacy settings](#enhanced-enterprise-deployment-privacy-settings)
## Platform updates
### Notion integration
The Notion Agent integration is now available to all users, allowing seamless integration between your Replit projects and Notion workspaces.
Quickly build applications that leverage Notion's powerful database and document capabilities with guided setup through Agent. This integration enables connection with Notion API for building connected applications.
That means you can build Replit apps that push and pull data from your Notion workspaces!
### PayPal checkout integration
Enable PayPal payments in your applications with our new PayPal checkout integration.
Now available to all users, this integration makes it easy to add a trusted payment option to your applications, expanding your ability to monetize your projects.
### Improved image handling for broken Unsplash URLs
Say goodbye to broken stock images in your projects!
If you didn't know, Agent already adds stock images to your projects from Unsplash. But sometimes URLs break. The reason? LLMs are great at hallucinating stock image URLs.
We've added a feature that automatically replaces broken stock images with working alternatives, ensuring your applications always display professionally.
## Teams and Enterprise
### Enhanced enterprise deployment privacy settings
Enterprise customers now have greater control over Deployment privacy with multiple configuration options.
This enhanced feature allows organizations to precisely manage access to their deployed applications, providing the security and flexibility that enterprise environments demand. Team users now also benefit from private Deployments by default, requiring explicit opt-in for public sharing.
# May 16, 2025
Source: https://docs.replit.com/updates/2025/05/16/changelog
2 min read
This week's release is all about safety and security. Replit has added a new security scan feature, checkpoint previews, and time travel, as well as many enterprise and teams features. For a quick recap, watch the launch video:
## What's new
* [Security scans](#security-scans)
* [Checkpoint previews](#checkpoint-previews)
* [Replit time travel](#replit-time-travel)
* [Ask Agent to add a database](#ask-agent-to-add-a-database)
* [SCIM for Enterprise customers](#scim-for-enterprise-customers)
* [Replit Auth matching by default](#replit-auth-matching-by-default)
* [Viewer seats for Replit Teams](#viewer-seats-for-replit-teams)
* [Full-screen email verification](#full-screen-email-verification)
* [Google Analytics blueprint](#google-analytics-blueprint)
## Platform updates
### Security scans
Replit now includes a security scan feature. It's a simple way to scan code for common security issues.
Check out the [security features](/tutorials/vibe-code-securely) and follow the [security checklist](/tutorials/vibe-code-security-checklist) for best practices.
Learn more about the Project Security Center [here](/core-concepts/security/project-security-center).
### Checkpoint previews
Introducing checkpoint previews to Replit's development environment. Visualize your app at different stages of development without rebuilding or restoring previous versions.
This capability enables easier progress tracking, iteration comparison, and versioning—offering a comprehensive view of your project's evolution. This feature pairs with the [vibe coding workflow](https://learn.replit.com).
### Replit time travel
The time travel feature has landed on Replit. Navigate seamlessly through your project history while maintaining your development context.
Explore various versions, understand evolutionary changes, recover from missteps, and experiment with greater confidence—all within your current development environment. This complements the [Git integration](/learn/projects-and-artifacts/version-control) for more powerful version control.
### Ask Agent to add a database
Database configuration becomes straightforward with Agent integration in the DB pane. This AI-powered workflow guides you through database setup, simplifying data persistence implementation without complex configuration code.
Developers can focus on building core functionality while Agent handles the database details. Learn more about [Replit Agent](/core-concepts/agent) and [database options](/learn/projects-and-artifacts/storage-and-databases).
### Replit Auth matching by default
User authentication in your apps becomes effortless with automatic Replit Auth matching.
This feature activates when your application requires authentication. It eliminates the need for custom registration forms, password recovery systems, or social login configurations. This creates a smoother path to secure user management.
### Full-screen email verification
A streamlined verification process for protected actions enhances account security.
This integrated approach presents email verification after sign-in when needed. It ensures account protection while maintaining a consistent user experience—balancing security with convenience.
This is part of the ongoing commitment to [information security](/teams/information-security/overview).
### Google Analytics blueprint
Monitor your application's performance with the Google Analytics blueprint.
Agent now integrates analytics setup directly into your development workflow. This enables traffic monitoring, user behavior tracking, and growth metrics without complex configuration.
It brings professional analytics capabilities to every developer. Try it with [Agent integrations](/replitai/integrations).
## Teams and Enterprise
### SCIM for Enterprise customers
The new SCIM integration empowers Enterprise customers to manage Replit access directly through their identity providers.
Connect Okta, Active Directory, Rippling, or other identity platforms to automate Replit seat provisioning and deprovisioning. This eliminates manual user management overhead and streamlines enterprise workflows.
Read the detailed [SCIM documentation](/teams/identity-and-access-management/scim) to get started.
### Viewer seats for Replit Teams
Introducing Viewer Seats for Replit Teams. Share your applications with stakeholders who only view and interact with your apps—not edit them—without requiring full team licenses.
Perfect for sharing with executives, clients, or teammates who use but don't build your tools. Learn how to set up and manage [Viewer Seats](/teams/identity-and-access-management/viewer-seats).
# May 23, 2025
Source: https://docs.replit.com/updates/2025/05/23/changelog
2 min read
## What's new
* [Sonnet 4 in Agent](#sonnet-4-in-agent)
* [Faster Agent responses](#faster-agent-responses)
* [Visual Editor rollout](#visual-editor-rollout)
* [Extended app preview time](#extended-app-preview-time)
* [Team member app transfers](#team-member-app-transfers)
* [Private Development URLs feature](#private-development-urls)
## Platform updates
### Sonnet 4 in Agent
Replit Agent is now powered by Claude Sonnet 4.0.
See what you can build with the latest from Anthropic.
### Faster Agent responses
Agent stability and performance improvements result in a smoother, more reliable coding experience.
Experience a sharp reduction in response times for most queries—making Agent feel more responsive and natural.
### Visual Editor rollout
A new, updated Visual Editor is now available. Create beautiful layouts visually while the editor automatically generates the corresponding code, making web development more accessible and efficient. Check it out [here](/learn/projects-and-artifacts/visual-editor) to learn more.
### Extended app preview time
Your app previews now stay active for 10 minutes after closing your workspace (up from just 20 seconds). This provides a much smoother experience when multitasking or sharing your work, especially on mobile devices where you might switch between apps while testing your project.
## Teams and Enterprise
### Team member app transfers
Organization members can now transfer their apps to other members of their org. This feature solves key collaboration challenges, letting teams redistribute ownership of apps as projects evolve and team responsibilities change.
### Private Development URLs
New privacy setting for enterprise organizations
Enterprise customers can now require private development URLs for all projects, enhancing security by ensuring development work remains protected within the organization's environment.
# May 30, 2025
Source: https://docs.replit.com/updates/2025/05/30/changelog
2 min read
## What's new
* [Preview empty state improvements](#preview-empty-state-improvements)
* [AI latency improvements](#ai-latency-improvements)
* [Unified GitHub tab refresh](#unified-github-tab-refresh)
* [iOS app payment support](#ios-app-payment-support)
* [Stripe Checkout release](#stripe-checkout-release)
* [SCIM provisioning streamlined](#scim-provisioning-streamlined)
## Platform updates
### Preview empty state improvements
The preview experience in Agent applications now handles empty states and auto-running more intelligently, creating a smoother workflow when building with Agent.
### AI latency improvements
Replit AI response times and latency have been significantly reduced through infrastructure improvements. You'll notice faster interactions when using AI-powered features throughout Replit, including Agent and Assistant.
### Unified GitHub tab refresh
The GitHub integration tab features a cleaner, more cohesive interface. The refreshed design makes connecting and managing your GitHub repositories more intuitive within your Workspace.
New unified GitHub tab interface
### iOS app payment support
iOS users can now purchase Replit Core and set up payment methods directly through the Replit Mobile App. This makes it easier to access premium features on the go.
### Stripe Checkout release
The new Stripe Checkout integration provides a smoother, more secure payment experience for all developers. Enjoy streamlined purchasing with this industry-standard payment solution that makes upgrading to Replit Core effortless.
## Teams and Enterprise
### SCIM provisioning streamlined
Enterprise user onboarding just got significantly easier with improved SCIM account provisioning flow. New users are automatically set up without manual steps, creating a frictionless experience for enterprise Teams growing on Replit.
# June 6, 2025
Source: https://docs.replit.com/updates/2025/06/06/changelog
2 min read
## What's new
* [Visual Editor image management](#visual-editor-image-management)
* [New Agent entrypoints in workspace](#new-agent-entrypoints-in-workspace)
* [CSV export for Teams admins](#csv-export-for-teams-admins)
* [Teams viewer seat management](#teams-viewer-seat-management)
## Platform updates
### Visual Editor image management
Image management in Visual Editor is now effortless. Select any image and instantly update it by swapping URLs or uploading new files directly. You'll see immediate previews and seamless updates, making it faster than ever to create visually engaging content. The refreshed interface also delivers improved responsiveness for a smoother editing experience.
### New Agent entrypoints in workspace
We've introduced contextual Agent entrypoints throughout your workspace to accelerate debugging and problem-solving. Agent now appears exactly where you need help most, eliminating the friction of context switching between tools.
Get instant assistance with code debugging, console errors, and deployment issues directly in context. Whether you're troubleshooting a runtime error or need help understanding a complex function, Agent provides targeted support without disrupting your workflow.
The integrated chat history ensures continuity across debugging sessions, so you can build on previous conversations and maintain context as you work through complex problems.
## Teams and Enterprise
### CSV export for Teams admins
Organization administrators can now export the complete apps table as a CSV file. This streamlines tracking, analysis, and reporting on your organization's repl usage, with full metadata including app visibility status and key usage metrics.
### Teams viewer seat management
Teams now offer more flexible seat management with streamlined upgrade workflows. Viewers can request member seat upgrades, while administrators can review and approve these requests directly from the members page. The enhanced interface for editing member roles makes team management more intuitive and efficient.
# June 13, 2025
Source: https://docs.replit.com/updates/2025/06/13/changelog
2 min read
## What's new
* [Figma import](#figma-import)
* [Mobile app update](#mobile-app-update)
* [Organization app sharing improvement](#organization-app-sharing-improvement)
* [Workspace quality improvements](#workspace-quality-improvements)
* [Teams members page improvements](#teams-members-page-improvements)
* [Infrastructure improvements](#infrastructure-improvements)
## Platform updates
### Figma import
Turn your designs into code with the new Figma imports feature! Now available to all users at Replit.com/import, this powerful integration lets you seamlessly convert Figma designs into working code. This dramatically speeds up your development workflow and bridges the gap between design and implementation.
### Mobile app update
The latest mobile app update is now available in the App and Play stores! The update includes a refreshed home screen design and new in-app UBB limit setting controls. This gives you more flexibility and control over your mobile development experience.
### Workspace quality improvements
The team has rolled out numerous improvements to make your creation experience smoother and more intuitive. From a more reliable preview pane to more consistent mobile behavior, these refinements create a more polished environment for bringing your ideas to life.
### Infrastructure improvements
Behind the scenes, the team is modernizing infrastructure to deliver a faster, more stable platform. These technical improvements pave the way for more powerful features and a better developer experience in the future.
## Teams and Enterprise
### Organization app sharing improvement
Enjoy a cleaner, more organized workspace in your teams! New apps created in organizations will no longer automatically share with all members. This reduces clutter and gives you more control over what appears in team members' workspaces.
### Teams members page improvements
Managing your team just got easier with new usability improvements to the Teams Members page. Now you can sort, filter, and search across Members, Viewers, and Invites tabs. These are features that enterprise customers have been requesting to help manage large teams efficiently.
# June 20, 2025
Source: https://docs.replit.com/updates/2025/06/20/changelog
2 min read
## What's new
* [New prompt examples](#new-prompt-examples)
* [View live app button](#view-live-app-button)
* [Deployment prevention](#deployment-prevention)
* [Security scanner improvements](#security-scanner-improvements)
* [Python run performance improvements](#python-run-performance-improvements)
## Platform updates
### New prompt examples
Discover fresh inspiration with updated prompt examples!
The language has been standardized and diverse design directions added to help you create apps that go beyond the typical look and feel.
### View live app button
Access your published apps instantly! A "View live app" button now appears on the cover page whenever your app is published and you have permission to view it, making it easier to preview your work.
### Deployment prevention
Stay secure with new deployment protection. Replit now prevents you from accidentally publishing development servers to production, helping you avoid security vulnerabilities before they become a problem.
### Security scanner improvements
Enhanced security monitoring now automatically detects and flags attempts to deploy development servers, specifically protecting against the Vite vulnerability (CVE-2025-30208) before deployment.
### Python run performance improvements
Python runs are now faster than ever! Thanks to internal improvements, the execution time of Python runs has been reduced for a smoother experience.
# June 27, 2025
Source: https://docs.replit.com/updates/2025/06/27/changelog
2 min read
## What's new
* [Security scanner updates](#security-scanner-updates)
* [Agent system prompt optimization](#agent-system-prompt-optimization)
* [New app creation experience](#new-app-creation-experience)
* [New App Store screenshots](#new-app-store-screenshots)
* [New landing page for viewer seats](#new-landing-page-for-viewer-seats)
* [Organization suspension from UBB services](#organization-suspension-from-ubb-services)
## Platform
### Security scanner updates
Experience faster, smarter security scanning with our major Security Scanner update. Scans now cache results and only re-run when your code changes, making subsequent scans lightning fast. New ignore functionality lets you hide security issues you don't want to see while keeping them discoverable when needed.
### Agent system prompt optimization
Enjoy faster, more efficient Agent interactions with our latest system improvements. Agent now completes tasks 2-3 seconds faster per action while maintaining the same high-quality results you expect.
### New app creation experience
Build better apps with our redesigned creation experience! Now you can visualize and plan your app before building, helping you understand the development plan and iterate on design direction. See exactly what Agent will build before committing to the rapid build process.
### New App Store screenshots
Check out our fresh new look in the App Store and Google Play Store! Updated screenshots now showcase our latest features and improved iPad experience.
## Teams and Enterprise
### New landing page for viewer seats
Organization viewers now get a dedicated dashboard to easily discover and access apps in their Replit organization. Star favorites, search deployed apps, and discover popular deployments - all automatically filtered to show only apps you have access to.
### Organization suspension from UBB services
Enhanced billing protection ensures sustainable service for all users by preventing abuse of unpaid services in enterprise accounts.
# July 4, 2025
Source: https://docs.replit.com/updates/2025/07/04/changelog
2 min read
## Table of Contents
* [Web Search for Agent](#web-search-for-agent)
* [Custom Agent Instructions](#custom-agent-instructions)
* [Effort-based billing](#effort-based-billing)
* [Improved icons](#improved-icons)
* [Gallery](#gallery)
* [Teams App Store experience](#teams-app-store-experience)
## Platform
### Web Search for Agent
Agent can now search the web and fetch up-to-date information with [Web Search](/core-concepts/agent/web-search). Build apps with the latest documentation, current market data, and accurate details from across the internet. No more knowledge cutoffs—your apps now use the most recent information available.
### Custom Agent Instructions
Personalize your Agent experience with [replit.md](/core-concepts/agent/replit-dot-md). This special file lets you define your coding style, project preferences, and context. Agent automatically creates this file using proven best practices, and you can customize it to match your workflow.
### Effort-based billing
Experience smarter checkpoint pricing with our new [effort-based billing](/billing/ai-billing). Dynamic pricing based on actual agent effort creates single checkpoints per run instead of multiple ones.
### Improved icons
Enjoy faster, more beautiful App icons. We've upgraded to a curated selection of pre-generated icons with smart semantic matching and colorful designs that load instantly.
### Gallery
Discover amazing community projects in our new [Gallery](https://replit.com/gallery). Browse featured projects and see what incredible things the Replit community is building.
## Teams and Enterprise
### Teams App Store experience
Discover and manage your team's apps like never before. The new org "App Store" experience on the Deployments page lets you star favorites, search across all deployments, see recently opened apps, and discover popular deployments based on traffic volume.
# July 11, 2025
Source: https://docs.replit.com/updates/2025/07/11/changelog
2 min read
## What's new
* [replit.md documentation](#replit-md-documentation)
* [Deployment privacy indicators](#deployment-privacy-indicators)
* [Agent multi-tool calling upgrade](#agent-multi-tool-calling-upgrade)
## Platform
### replit.md documentation
Customize Agent's behavior with `replit.md`, a special configuration file that helps Agent understand your project's preferences, coding style, and architecture. Agent automatically creates this file using proven best practices, then uses it to build applications that match your exact specifications. Guide Agent with project context, define coding standards, specify your preferred tech stack, and set communication preferences—all in one place.
**[Learn how to customize Agent with replit.md →](/core-concepts/agent/replit-dot-md)**
### Deployment privacy indicators
Quickly identify whether your deployments are public or private with new visual indicators in the deployments pane. This improvement helps prevent confusion and ensures you know exactly who can access your deployed applications.
### Agent multi-tool calling upgrade
Save 15% on Agent costs and get results 30% faster with our enhanced multi-tool calling system. Agent now batches operations more efficiently and handles tool errors more intelligently, delivering the same quality results while using fewer resources.
# July 18, 2025
Source: https://docs.replit.com/updates/2025/07/18/changelog
2 min read
## What's new
* [Domain purchasing](#domain-purchasing)
* [LLM routing improvements](#llm-routing-improvements)
* [Push notifications for usage alerts](#push-notifications-for-usage-alerts)
## Platform
### Domain purchasing
Now you can purchase and configure a custom domain, directly from Replit. We've rolled out domain purchasing to 100% of core users, making it easier than ever to give your projects a professional web presence.
### LLM routing improvements
Enjoy faster AI responses and better performance with our improved LLM routing system. This enhancement delivers more efficient AI interactions while reducing costs.
### Mobile push notifications for usage alerts
Stay informed about your usage with push notifications! You'll now receive alerts when you reach your usage warning threshold and usage limit, helping you manage your account proactively.
# July 25, 2025
Source: https://docs.replit.com/updates/2025/07/25/changelog
2 min read
## What's new
* [Queue](#queue)
* [Domain management improvements](#domain-management-improvements)
* [Improved proof of work UI](#improved-proof-of-work-ui)
## Platform
### Queue
Agent messages are now automatically queued, so each new request waits until the current task is complete before running. This works like a task list, letting you interact with AI in a more asynchronous, organized way.
### Domains improvements
You can now seamlessly move purchased domains between different Apps without redeploying. This flexible domain management approach saves time and makes it easier to reorganize your projects as they evolve.
Domains now *also* supports custom DNS records, giving you complete control over your domain configuration. Connect to third-party services, set up email, or configure advanced routing without leaving Replit.
### Improved proof of work UI
We've refreshed our proof of work interface with an intuitive design and helpful tooltips. This update makes it easier to understand how proof of work affects your experience and provides clearer guidance on what's happening behind the scenes.
# August 1, 2025
Source: https://docs.replit.com/updates/2025/08/01/changelog
2 min read
## What's new
* [Agent now has access to Replit Docs](#agent-now-has-access-to-replit-docs)
* [New database pane](#new-database-pane)
* [Theme toggle in avatar dropdown](#theme-toggle-in-avatar-dropdown)
* [Visual editor color picker improvement](#visual-editor-color-picker-improvement)
## Platform
### Agent now has access to Replit Docs
Agent can now instantly answer your questions about Replit features and documentation. With direct access to the full Replit Docs, Agent provides fast, accurate, and comprehensive help right where you code.
### New database pane
Experience clearer database management with our redesigned database pane. The new interface makes it easier to distinguish between development and production databases, streamlining your database workflow.
### Theme toggle in avatar dropdown
Switch between light and dark themes instantly with the new theme toggle conveniently located in your avatar dropdown menu.
### Visual editor color picker improvement
Enjoy a smoother color editing experience in Agent's visual editor. Clicking on color hex inputs now automatically opens the color picker popup for effortless color selection.
# August 8, 2025
Source: https://docs.replit.com/updates/2025/08/08/changelog
2 min read
## What's new
**Platform**
* [Improved filesystem search](#improved-filesystem-search)
* [Object Storage agent integration](#object-storage-agent-integration)
* [Visual editor focus improvement](#visual-editor-focus-improvement)
* [Rollback suggestions and date toggle](#rollback-suggestions-and-date-toggle)
* [Image generation full rollout](#image-generation-full-rollout)
* [Live activities on iOS](#live-activities-on-ios)
* [Replit App to organization transfer](#replit-app-to-organization-transfer)
* [Folder downloads](#folder-downloads)
* [MX record support for domains](#mx-record-support-for-domains)
**Enterprise**
* [SCIM quality of life improvements](#scim-quality-of-life-improvements)
## Platform
### Improved filesystem search
Agent now delivers smarter, more intuitive file search across your entire codebase. With advanced long-context AI, Agent understands your project structure and content, providing deeper context and more relevant, open-ended answers to your queries—making it easier than ever to find exactly what you need.
### Object Storage Agent integration
Build file upload features effortlessly with [Agent's](/core-concepts/agent) new [Object Storage](/features/data-and-storage/object-storage) capabilities! Your AI assistant can now set up Object Storage, inspect configurations, and generate complete backend and frontend code with advanced features like authentication and access controls.
Learn more about [Object Storage](/features/data-and-storage/object-storage) and explore all available [Agent integrations](/replitai/integrations#data-storage--management).
### Visual Editor focus improvement
Stay in the flow while using the [Visual Editor](/learn/projects-and-artifacts/visual-editor)! When you select an element to edit, focus automatically returns to the chat input, letting you immediately start typing your next prompt without interruption.
### Rollback suggestions and date toggle
Navigate your project history more easily with smart rollback suggestions and flexible date viewing! Get intelligent recommendations for when to roll back your code, plus toggle between relative and absolute timestamps to find the perfect checkpoint.
### Image generation full rollout
Create stunning visuals directly in your projects! Image generation is now available to all users, giving you the power to create custom graphics, illustrations, and visual content right within your development environment.
### Live activities on iOS
Stay connected to your [Workspace](/learn/projects-and-artifacts/project-editor) even when you're away! Live activities on iOS allow you to monitor your running projects and jump back into your Workspace with a single tap from your lock screen or notification center.
### Replit App to Organization transfer
Easily move your personal projects to your team! Use the new "Transfer To Organization" action to seamlessly transfer your personal [Replit Apps](/category/replit-apps) to any organization you're part of, making it simple to collaborate on existing projects.
### Folder downloads
Download entire folders with ease! You can now download complete folders from your projects, available for Explorer and Staff users.
### MX record support for domains
Connect your email providers seamlessly! You can now create MX records on [domains purchased through Replit](/features/publishing/custom-domains), enabling you to link mail providers and manage custom email services for your projects.
## Enterprise
### SCIM quality of life improvements
Streamline your team management with enhanced [SCIM](/teams/identity-and-access-management/scim) capabilities! Enterprise organizations can now self-serve SCIM setup without manual intervention, and provision users directly into Guest roles for seamless contractor access.
# August 15, 2025
Source: https://docs.replit.com/updates/2025/08/15/changelog
1 min read
## What's new
This week was focused on bug fixes and performance improvements.
We're gearing up for something big, stay tuned!
# August 22, 2025
Source: https://docs.replit.com/updates/2025/08/22/changelog
2 min read
## What's new
* [SOC 2 Type II certification](#soc-2-type-ii-certification)
* [Multiple SSO providers for Enterprise](#multiple-sso-providers-for-enterprise)
## Teams and Enterprise
### SOC 2 Type II certification
Replit is now SOC 2 Type II certified, having completed a rigorous 12-month security audit with zero exceptions or comments. This certification validates our enterprise-grade security practices and demonstrates our platform's reliability and compliance for enterprise customers.
### Multiple SSO providers for Enterprise
Enterprise customers can now configure multiple SSO providers and set up multiple organizations per provider. This gives large companies the flexibility to use different authentication providers for different teams while maintaining centralized control and shared access where needed.
# August 29, 2025
Source: https://docs.replit.com/updates/2025/08/29/changelog
2 min read
## What's new
* [New features](#new-features)
* [App themes](#app-themes)
* [Shareable app creation links](#shareable-app-creation-links)
* [Infrastructure](#infrastructure)
* [Agent infrastructure upgrades](#agent-infrastructure-upgrades)
* [Enterprise](#enterprise)
* [Security rating improvement](#security-rating-improvement)
* [Organization subscription cancellation](#organization-subscription-cancellation)
## New features
### App themes
Transform your web apps with beautiful, professional themes. Apply custom designs and share themes with your team for consistent branding across projects.
Learn more about [how to use app themes](/replitai/app-themes).
Certain preview elements were inspired by [tweakcn](https://github.com/jnsahaj/tweakcn). Check out the public open-source software repository [here](https://github.com/jnsahaj/tweakcn) from Sahaj Jain.
### Shareable app creation links
Share the power of AI‑powered app creation. Generate links that automatically create apps from your prompts, making it easy to share ideas and help others get started.
```md theme={null}
replit.com/create?prompt="Make me a cool demo for my app idea"
```
## Infrastructure
### Agent infrastructure upgrades
Agent now runs on improved infrastructure with enhanced task handling, deeper reasoning capabilities, and extended work sessions. These upgrades help Agent tackle bigger projects and deliver better results across all your coding tasks.
## Enterprise
### Security rating improvement
Replit now ranks as "Advanced" with a 780 security score on Bitsight, demonstrating our commitment to enterprise‑grade security for your projects and data.
### Organization subscription cancellation
Organizations now have more flexible subscription management. Cancel a subscription without deleting the organization, and keep full access until the billing period ends.
# September 5, 2025
Source: https://docs.replit.com/updates/2025/09/05/changelog
2 min read
## What's new
* [Platform](#platform)
* [General Agent launch](#general-agent-launch)
* [Plan mode](#plan-mode)
* [Enterprise](#enterprise)
* [GCP Marketplace integration](#gcp-marketplace-integration)
## Platform
### General Agent
Replit Agent now works on any codebase in any language or framework that runs on NixOS! Previously limited to specific templates, Agent can now assist with Developer Frameworks, GitHub imports, and any custom project setup. This powerful expansion brings full AI coding assistance to enterprise and power user workflows.
Read more about General Agent [here](/core-concepts/agent/general-agent).
### Plan mode
Plan mode introduces a new way of chatting with Replit Agent that focuses on asking questions, brainstorming, and planning your work. With plan mode, you can use Agent to create a todo list for future work, then execute on long-running tasks in build mode.
Read more about Plan mode [here](/core-concepts/agent/plan-mode).
## Enterprise
### GCP Marketplace integration
Enterprise customers can now purchase Replit directly through Google Cloud Platform Marketplace and use their existing GCP credits for payment. This streamlines procurement processes and makes it easier for organizations with GCP budgets to adopt Replit for their development workflows.
# September 12, 2025
Source: https://docs.replit.com/updates/2025/09/12/changelog
2 min read
## Agent 3 Launch
This week, we launched Agent 3.
Agent 3 delivers major upgrades to autonomy, reliability, and speed:
* **App Testing**: Agent self-tests in a real browser, finds issues, and fixes them in a reflection loop. See [App Testing](/core-concepts/agent/app-testing).
* **Longer run time**: Agent can work autonomously for up to 200 minutes with Live Monitoring, ideal for larger builds. Learn more in [Agent](/core-concepts/agent#max-autonomy).
* **Agent generation**: Build agents and automations that run on schedules or integrate with Slack and Telegram. See [Agents & Automations](/core-concepts/agent/agents-and-automations).
Read more on the announcement page: [Agent 3](https://replit.com/agent3).
## App connectors and integrations
Ship faster with built‑in integrations and connectors:
* **Replit managed**: Built‑in integrations that work automatically in your apps.
* **Connectors**: First‑party integrations you can sign into once and reuse across apps.
* **External integrations**: Trusted third‑party services set up by Agent, using your API keys.
Learn more in the docs: [Agent integrations](/replitai/integrations).
## Agents & Automations (beta)
Build intelligent agents, chatbots, and automated workflows as part of Agent 3:
* **Slack Agent**: Create Slackbots for research, Q\&A, and automation
* **Telegram Agent**: Build bots for scheduling, support, and more
* **Timed Automation**: Run scheduled workflows on a cadence
Note: External triggers require deployment (Autoscale or Scheduled). Learn more: [Agents & Automations](/core-concepts/agent/agents-and-automations).
# September 19, 2025
Source: https://docs.replit.com/updates/2025/09/19/changelog
2 min read
## Platform
### Autonomy level control for Agent
Take control of how independently Agent works on your projects with new Autonomy Level settings. Choose from Low (task list execution only), Medium (adds code review), High (full app review), or Max (completely autonomous planning) to match your workflow preferences and project needs.
### Malicious file detection
Stay protected while coding with enhanced Security Scanner capabilities that now detect and block malicious files from supply chain attacks, including protection against the recent attack targeting npm packages.
### Supply chain attack blocking
Enhanced security protection automatically blocks data exfiltration attempts from compromised npm packages, keeping your sensitive information safe during development without interrupting your workflow.
### Email copying from members page
Quickly copy member email addresses directly from your organization's member management page with a simple click, making team communication and administration more efficient.
### Mobile connectors support
With Agent 3, Connectors launched, allowing you to connect to third party services like GitHub, Notion, and more.
Now, you can add Connectors to your apps on the go, with full mobile support.
Learn more about Connectors [here](/replitai/integrations).
### Student discount usage update
The student discount program is now live.
Students can get \$15 off per month for the first six months of their Replit Core subscription. Join with a student email address to get started.
### 'Deploy' is now 'Publish'
The terminology has been simplified. "Deploy" is now called "Publish" throughout the platform, making it clearer and more intuitive when you're ready to share your projects with the world.
## Teams and enterprise
### SOC 2 pentest completion
Replit successfully completed its annual SOC 2 penetration testing with excellent outcomes, demonstrating year-over-year improvement in security posture and maintaining enterprise-grade protection for your code and data.
### Faster user deletion in CLUI
Streamlined account management for compliance needs. Internal tools now support faster processing of data deletion requests, helping Replit respond quickly to privacy requirements.
# September 26, 2025
Source: https://docs.replit.com/updates/2025/09/26/changelog
2 min read
## What's new
* [Security scan in deployment](#security-scan-in-deployment)
* [Agent playground testing improvements](#agent-playground-testing-improvements)
## Platform
### Security scan in deployment
Protect your applications with our new pre-publishing security scan. Toggle the scan on or off before deploying your apps to catch malicious files and security vulnerabilities. Keep your code safe with high-confidence security rules that scan for potential threats before they go live.
### Agent playground testing improvements
Test your AI agents and automations more effectively with enhanced playground features. Now includes visual rendering of tool calls when testing Slack and Telegram agents, plus live test results for time-based workflow automations. Get better visibility into how your agents perform before deployment.
## Teams and Enterprise
### Security scan enforcement for enterprises
Enterprise admins now have the power to enforce security scans across all team deployments. Ensure consistent security standards across your organization by requiring security scans for all published applications, giving you complete control over your team's security posture
# October 3, 2025
Source: https://docs.replit.com/updates/2025/10/03/changelog
2 min read
## Platform updates
* [Vercel import integration](#vercel-import-integration)
* [Git source control enhancements](#git-source-control-enhancements)
* [Connectors platform launch](#connectors-platform-launch)
* [App Themes font improvements](#app-themes-font-improvements)
## Teams and Enterprise
* [Connectors admin management](#connectors-admin-management)
### Vercel import integration
Migrate your Vercel apps to Replit with one click! The new import flow makes it seamless to move your Next.js and other Vercel-hosted applications to Replit. Perfect timing for developers looking for Vercel alternatives. Learn more in the [Import from Vercel quickstart](/build/import-from-vercel) and the [Import to Replit guide](/references/workspace/import).
### Git source control enhancements
Enhanced Git integration brings better remote management and workspace flexibility. Connect and create Git remotes with improved UX, easily switch between personal and organization workspaces, and ensure code is always up-to-date before deployment. Learn more in [Using the Git pane](/references/version-control/git-interface).
### Connectors platform launch
Build faster with 24 pre-built app integrations! Connect your Replit projects to popular services like Stripe, Figma, and more through our new Connectors platform. Each connector is powered by MCP (Model Context Protocol) for seamless AI-assisted development. See [Agent integrations](/replitai/integrations) and [Managing your connectors](/replitai/managing-connectors).
### App Themes font improvements
Customize your apps with 19 additional Google Fonts including popular choices like Crimson, EB Garamond, Figtree, and Source Sans Pro. The font picker now renders each font in its actual typeface, making it easier to visualize your design choices. Browse fonts organized by category (Serif, Sans-Serif, Monospace) with helpful tooltips explaining each type. Learn more in [App Themes](/replitai/app-themes).
## Teams and Enterprise
### Connectors admin management
Enterprise customers get advanced connector management with role-based access controls for shared API keys and fully-custom OAuth client configuration. Connectors are opt-in at the organization level, giving admins complete control over which integrations are available to team members. See [Managing your connectors](/replitai/managing-connectors).
# October 10, 2025
Source: https://docs.replit.com/updates/2025/10/10/changelog
2 min read
## Platform updates
* [Agent usage cost visibility](#agent-usage-cost-visibility)
* [Escape key for Visual Select/Edit mode](#escape-key-for-visual-select-edit-mode)
* [Faster agent stopping](#faster-agent-stopping)
* [GitHub import improvements](#github-import-improvements)
* [Dependency vulnerability scanning](#dependency-vulnerability-scanning)
* [Webview logging experience](#webview-logging-experience)
## Teams and Enterprise
* [Support seat access for teams](#support-seat-access-for-teams)
### Agent usage cost visibility
See Agent usage costs in real time while tasks run. Open the chat header drawer to monitor spend for active tasks—especially helpful for longer, higher‑autonomy runs.
### Escape key for Visual Select/Edit mode
Press Escape to exit Visual Select mode or return to Build mode. A small shortcut that keeps you moving.
### Faster agent stopping
Agent responds faster when you stop or start it from the workspace, reducing wait time.
### GitHub import improvements
Get real‑time progress during GitHub imports instead of generic messages, plus faster import speeds.
### Dependency vulnerability scanning
The security scanner now detects dependency vulnerabilities for Go, JavaScript, Python, and Rust, with more languages coming soon.
### Webview logging experience
View webview logs and console output in one place—the same logs Agent uses—making debugging simpler.
## Teams and Enterprise
### Support seat access for teams
Add Replit Support as a Guest account that doesn’t count toward billing. Grant scoped access to specific Apps when you need help, while keeping workspace privacy under your control.
# October 17, 2025
Source: https://docs.replit.com/updates/2025/10/17/changelog
2 min read
## What's new
* [Build mode redesign for React apps](#build-mode-redesign-for-react-apps)
* [ClickUp integration](#clickup-integration)
## Platform updates
### Build mode redesign for React apps
Build React apps that look polished from the start. The redesigned build mode follows clear design guidelines, pulls in AI‑generated and stock images during your first build, and produces production‑ready code.
## Teams and Enterprise
### ClickUp integration
Connect your Replit workspace to ClickUp to build agents and automations that work with your team’s tasks, lists, and projects. This connector is in limited Enterprise rollout while we evaluate feedback.
# October 24, 2025
Source: https://docs.replit.com/updates/2025/10/24/changelog
2 min read
## What's new
* [Build Score rating system](#build-score-rating-system)
* [SSO support for Replit Auth in Enterprise apps](#sso-support-for-replit-auth-in-enterprise-apps)
* [Plan mode improvements](#plan-mode-improvements)
## Platform
### Build Score rating system
Help us improve Agent by sharing your experience! You'll now see an optional 1-5 rating after key milestones like your first checkpoint or when you publish. Your feedback helps us understand what's working and what needs improvement throughout your building journey.
### Plan mode improvements
Start building faster with smarter Plan mode! Agent now suggests task lists more proactively, so you spend less time prompting and more time building. Plus, a new checkpoint is automatically created when transitioning from planning to building, making it easier to roll back changes if needed.
## Teams and Enterprise
### SSO support for Replit Auth in Enterprise apps
Enterprise customers can now seamlessly log into Replit Auth-enabled apps using their company's SSO! This fixes a critical issue where employees were previously blocked from accessing apps when their organization enforced SSO for Replit login.
# October 31, 2025
Source: https://docs.replit.com/updates/2025/10/31/changelog
2 min read
## What's new
* [Custom domain verification improvements](#custom-domain-verification-improvements)
* [Database soft delete and restoration](#database-soft-delete-and-restoration)
* [Slash command connector discovery](#slash-command-connector-discovery)
* [Zendesk connector](#zendesk-connector)
* [Bulk delete for organizations](#bulk-delete-for-organizations)
* [Agentmail connector](#agentmail-connector)
* [Salesforce and ClickUp connectors](#salesforce-and-clickup-connectors)
* [Domains interface redesign](#domains-interface-redesign)
## Platform
### Custom domain verification improvements
Custom domain verification is now faster and more reliable, with clearer status tracking and better error detection. Failed verifications are automatically retried, and guidance helps you fix DNS issues quickly.
### Database soft delete and restoration
Accidentally deleted a database? Deleted Neon databases now have a 7‑day retention period, so you can recover data if needed. Support can restore on request today; self‑serve restore from the trash is coming soon.
### Slash command connector discovery
Discover and connect to your favorite tools faster with the new `/` command. It works on the home page and in the Agent input, making integrations easier to find and use.
### Agentmail connector
Build email workflows with the new Agentmail connector. Agent gets a dedicated inbox to track state and automate responses—perfect for support ticket systems, capturing sales inquiries, or any workflow that reacts to incoming email.
### Domains interface redesign
Managing custom domains got a major upgrade. The redesigned interface is cleaner and adds clearer status tracking, so it’s easier to see and manage all your connected domains at a glance.
## Teams and Enterprise
### Zendesk connector
Connect your Zendesk support system to Replit with full read and write access to the Ticket API. Build custom dashboards, automate ticket escalation to Slack, sync tickets with Linear, or create customer health reports that combine support history with billing data. Available for Core and Teams.
### Bulk delete for organizations
Clean up your organization workspace efficiently with bulk delete. You can delete multiple apps at once—members can delete their own apps, and admins can delete any app in the organization. You’ll see a warning for apps with active deployments before deletion.
### Salesforce and ClickUp connectors
Teams and Enterprise customers can now connect Salesforce and ClickUp to their workflows. Build custom CRM integrations, automate project management, or create powerful cross‑platform automations between your favorite business tools.
# November 07, 2025
Source: https://docs.replit.com/updates/2025/11/07/changelog
2 min read
## What's new
* [Animated agent icon](#animated-agent-icon)
* [Agent tools dropdown in planning flow](#agent-tools-dropdown-in-planning-flow)
* [At symbol filename support in Agent](#at-symbol-filename-support-in-agent)
* [Connectors support for remixing](#connectors-support-for-remixing)
* [Analytics dashboard for enterprise admins](#analytics-dashboard-for-enterprise-admins)
## Platform updates
### Animated agent icon
The Agent icon is now animated during operation, providing better visual feedback that Agent is actively working. This improvement enhances perceived speed and makes it easier to observe Agent activity during the initial planning phase, especially in the centered chat layout where feedback is closer to your request.
### Agent tools dropdown in planning flow
The Agent tools dropdown is now available during initial planning and task list approval flows. This lets you configure your preferred Agent settings—including Autonomy Level and other preferences—right from the start of your build.
Learn more about [code review](/features/agent/agent-modes).
### At symbol filename support in Agent
Agent now supports `@` filename mentions in addition to `/` commands, bringing design parity with popular development tools. This feature was highly requested by enterprise users and power users familiar with Cursor-style workflows.
Learn more about [providing context to Agent](/learn/effective-prompting).
### Connectors support for remixing
Previously, remixing any Replit app that used a connector would break the integration, since the remixed repl wasn't automatically authorized to use the connector. We've updated the remixing flow to handle connectors gracefully:
* Users are now prompted to set up required connectors when remixing
* The remix process clearly indicates which integrations need to be configured
* No more broken integrations after remixing
Learn more about [Agent integrations](/replitai/integrations) and [Managing your connectors](/replitai/managing-connectors).
## Teams and Enterprise
### Analytics dashboard for enterprise admins
Enterprise admins now have access to a comprehensive Analytics Dashboard—a major feature request from enterprise customers including Meta and Atlassian. The dashboard provides:
* **User Activity Monitoring**: Track engagement and collaboration across your organization
* **Resource Usage Tracking**: Monitor spend by user and Replit App
* **Deployment Oversight**: Keep an eye on deployment activity
* **Cost Management**: Get visibility into resource consumption and costs
Learn more about [Enterprise features](/category/teams) and [usage tracking](/category/billing).
# November 16, 2025
Source: https://docs.replit.com/updates/2025/11/16/changelog
2 min read
## Platform updates
* [Azure Marketplace integration](#azure-marketplace-integration)
* [GitLab and Bitbucket support](#gitlab-and-bitbucket-support)
### Azure Marketplace integration
Replit is now live on Azure Marketplace! Many organizations already have dedicated budgets for Azure, and this integration allows them to use those funds directly toward Replit subscriptions and usage.
Following the GCP Marketplace integration from September, this addition makes it even easier for enterprise teams to adopt Replit using their existing cloud procurement processes and budgets.
[View on Azure Marketplace](https://marketplace.microsoft.com/en-us/product/saas/replit.replit?tab=Overview)
### GitLab and Bitbucket support
Replit now supports GitLab and Bitbucket repositories in addition to GitHub, giving you more flexibility in where you store your code. You can now import projects from GitLab and Bitbucket directly into Replit, along with improved git functionality across all supported platforms.
The enhanced git integration includes:
* **Multi-platform support**: Import and work with repositories from GitHub, GitLab, and Bitbucket
* **Improved git operations**: Faster and more reliable git commands throughout the workspace
* **Better repository management**: Streamlined workflows for cloning, pushing, and pulling from any supported git provider
Learn more about [importing projects](/references/workspace/import) and [using git in Replit](/references/version-control/git-interface).
# November 21, 2025
Source: https://docs.replit.com/updates/2025/11/21/changelog
2 min read
## Platform updates
* [Design Mode: Create stunning websites in under 2 minutes](#design-mode-create-stunning-websites-in-under-2-minutes)
* [Fast Mode now available to everyone](#fast-mode-now-available-to-everyone)
* [Import ZIP archives directly](#import-zip-archives-directly)
* [Enhanced Atlassian connectors](#enhanced-atlassian-connectors)
* [HoundDog privacy scanning integration](#hounddog-privacy-scanning-integration)
* [New connector: Todoist](#new-connector-todoist)
* [Replit Auth UI improvements](#replit-auth-ui-improvements)
* [Replit Core available through American Express](#replit-core-available-through-american-express)
## Teams and Enterprise
* [Enterprise data warehouse connectors](#enterprise-data-warehouse-connectors)
### Design Mode: Create stunning websites in under 2 minutes
Design Mode is now live. Powered by Google's Gemini 3, Design Mode creates beautiful interactive designs and static websites in under 2 minutes—faster and better-looking than ever before on Replit.
Perfect for rapid prototyping, landing pages, and simple websites, Design Mode focuses on visual quality without backend complexity. When you need functionality, convert your design to a full app with one click.
[Learn more about Design Mode](/replitai/design-mode)
### Fast Mode now available to everyone
Fast Mode is now available to everyone and **free until Dec 1**. Get faster execution speeds across your Replit projects to build and iterate quicker.
[Learn more about Lite mode](/core-concepts/agent/agent-modes)
### Import ZIP archives directly
Import `.zip` archives directly into a new app. Replit automatically downloads and extracts files into your Replit App, so you can start building and collaborating on existing projects immediately.
[Learn how to import from ZIP](/build/import-from-zip)
### Enhanced Atlassian connectors
Atlassian Connectors (Jira, Confluence) now automatically detect your site URL from your access tokens, eliminating manual setup. This streamlined connection flow reduces friction and saves configuration time.
[Explore Agent integrations](/replitai/integrations)
### HoundDog privacy scanning integration
HoundDog is now integrated into the Security Scanner. It automatically detects sensitive data exposure including PII, API keys, and credentials that could leak through logs or external services. Combined with Semgrep, you get comprehensive security coverage.
[Learn more about the Project Security Center](/core-concepts/security/project-security-center)
### New connector: Todoist
Connect Todoist to manage tasks programmatically from your Replit apps. Integrate task management into your workflows and automate task creation, updates, and tracking.
[Explore all Agent integrations](/replitai/integrations)
### Replit Auth UI improvements
The Replit Auth UI has been redesigned for a more polished, user-friendly authentication experience.
[Learn about Replit Auth](/features/auth-and-identity/authentication)
### Replit Core available through American Express
Replit Core is now available as a perk for American Express Cardholders. Check your AMEX account to access this exclusive offer.
[Learn about Replit Core](/billing/plans/replit-core)
### Enterprise data warehouse connectors
**BigQuery, Databricks, and Snowflake** connectors are now available to all enterprise customers. Connect your data warehouses directly to Replit and build powerful data-driven applications.
[Learn about managing your connectors](/replitai/managing-connectors)
# November 26, 2025
Source: https://docs.replit.com/updates/2025/11/26/changelog
2 min read
## What's new
* [Stripe Integrated Payments for Core Users](#stripe-integrated-payments-for-core-users)
* [Better search rankings for Custom Domains](#better-search-rankings-for-custom-domains)
## Platform
### Stripe Integrated Payments for Core Users
Integrate Stripe directly into your apps with one click. Agent sets up payments and subscriptions with real-time sync to Database for subscription statuses, so you can focus on building your product instead of wiring together payment infrastructure.
[Learn about Stripe Payments Integration](/core-concepts/monetization/stripe-payments)
### Better search rankings for Custom Domains
When you link a custom domain to your published app, search engines now index only your custom domain—not your `replit.app` subdomain. This prevents duplicate content penalties and helps your app rank better in search results.
[Learn about Custom Domains](/features/publishing/custom-domains)
# December 05, 2025
Source: https://docs.replit.com/updates/2025/12/05/changelog
1 min read
## What's new
* [Build full-stack mobile apps with Agent](#build-full-stack-mobile-apps-with-agent)
* [Database now generally available](#database-now-generally-available)
* [Fast Mode handles more autonomously](#fast-mode-handles-more-autonomously)
* [Connect third-party services faster](#connect-third-party-services-faster)
## Platform
### Build full-stack mobile apps with Agent
Agent can now build [mobile apps](/features/artifact-types/building-mobile-apps) with a full backend server. This unlocks powerful capabilities including [AI Integrations](/replitai/integrations), [Database](/features/data-and-storage/sql-database), [Object Storage](/features/data-and-storage/object-storage), and connectors—everything you need for production-ready mobile development.
### Database now generally available
The new [Database](/features/data-and-storage/sql-database) is now the default for all new Replit Apps. This upgrade delivers enhanced reliability and infrastructure control, with improved performance and easier data management for your projects.
### Fast Mode handles more autonomously
[Lite mode](/core-concepts/agent/agent-modes) (formerly Fast Mode) can now handle more tasks on its own while recommending Agent for larger changes. Build faster with quick iterations and seamless handoffs.
### Connect third-party services faster
Connect third-party services faster with improved connector support. Add most API key-based services by simply providing their configuration—no complex setup required. Enhanced with multi-key configurations and extended health checks for more reliable [integrations](/replitai/integrations).
# December 12, 2025
Source: https://docs.replit.com/updates/2025/12/12/changelog
2 min read
## What's new
* [Agent now supports custom MCP servers](#agent-now-supports-custom-mcp-servers)
* [Plaid Connector for Enterprise (experimental)](#plaid-connector-for-enterprise-experimental)
## Platform
### Agent now supports custom MCP servers
Agent can now connect to remote Model Context Protocol (MCP) servers, giving you access to new capabilities and tools with minimal setup. This unlocks the ability for Agent to call external tools and pull context from remote systems.
With custom MCP servers, you can:
* Connect to remote servers that pull context and take actions in external tools
* Access hundreds of tools and data sources through the MCP open standard
* Automatically load tools that each server makes available
Partners can integrate their services with Agent by exposing an MCP server—no additional integration work required.
**Learn more:**
* [MCP servers overview](/replitai/mcp/overview)
* [MCP directory](/replitai/mcp/directory)
* [Learn about MCP in three minutes](/tutorials/mcp-in-3)
## Teams and Enterprise
### Plaid Connector for Enterprise
Enterprise customers can now enable the Plaid Connector to connect bank accounts and build apps with fintech primitives. This connector is in active development, with new features and improvements being added based on customer feedback.
With the Plaid Connector, you can:
* Connect bank accounts to your applications
* Access fintech primitives for building financial features
* Manage connectors centrally through the admin dashboard
**Learn more:**
* [Managing your connectors](/replitai/managing-connectors)
* [Agent integrations](/replitai/integrations)
# December 19, 2025
Source: https://docs.replit.com/updates/2025/12/19/changelog
2m read
## What's new
* [Documentation UI Refresh](#documentation-ui-refresh)
* [Rollback Session Stitching](#rollback-session-stitching)
* [Custom MCP Server Icons](#custom-mcp-server-icons)
### Documentation UI Refresh
The documentation site received a visual update to better align with Replit's Workspace design and brand colors. This creates a more cohesive experience between the docs and the main application.
* Updated color scheme to match brand colors
* Design now more closely resembles the Workspace interface
* Improved visual consistency across Replit properties
### Rollback Session Stitching
Rollbacks now automatically connect consecutive sessions, making it easier to rewind through multiple work sessions. This quality-of-life improvement helps you navigate your project history more smoothly.
### Custom MCP Server Icons
Custom MCP servers now display proper icons using Google Favicon API, plus an MCP tag for easier identification in your Workspace.
### Status Dot Design Update
Status indicator dots now have a cleaner visual appearance with the removal of box shadows.
# December 26, 2025
Source: https://docs.replit.com/updates/2025/12/26/changelog
2 min read
## What's new
* [Gift cards](#gift-cards)
* [Replit Rewind 2025](#replit-rewind-2025)
* [Replit ChatGPT App](#replit-chatgpt-app)
* [Credit packs holiday sale](#credit-packs-holiday-sale)
* [Fast Build](#fast-build)
* [learn.replit.com brand refresh](#learnreplitcom-brand-refresh)
* [Security Center for Enterprise](#security-center-for-enterprise)
## Platform
### Gift cards
Gift cards are now available just in time for the holidays. You can purchase gift cards in denominations from \$50 to \$1,000 and redeem them on existing accounts, making them perfect for last-minute gifts for builders and developers.
### Replit Rewind 2025
Replit Rewind 2025 is your personalized year-in-review experience. If you have created at least two apps this year, you can see your building highlights, including total apps created and published, your building persona, and year over year activity insights. Share your achievements and celebrate your creative journey.
### Replit ChatGPT App
The Replit ChatGPT App enables you to build Replit Apps directly from ChatGPT conversations. This integration connects Replit's development platform with ChatGPT's conversational interface, allowing you to build and publish apps without leaving ChatGPT.
**Learn more:** [Replit in ChatGPT](/platforms/chatgpt)
### Credit packs holiday sale
Credit packs are now available to all builders with a special end-of-year promotion: \$200 off the \$1,000 credit pack through December 31, 2025.
### Fast Build
Agent now builds your first app significantly faster. First build time has been reduced from 15 to 20 minutes down to 3 to 5 minutes, while Build mode design quality now matches Design mode.
### Learn brand refresh
The learning platform at learn.replit.com has been updated with a fresh visual design that matches the Workspace aesthetic.
## Teams and Enterprise
### Security Center for Enterprise
Security Center is now available for all Enterprise users. As an Enterprise admin, you can scan your entire organization's Replit Apps with a single click and receive:
* CVE detection across all dependencies, organized by severity
* A detailed view showing which Replit Apps are affected
* SBOM (Software Bill of Materials) export capabilities
# January 02, 2026
Source: https://docs.replit.com/updates/2026/01/02/changelog
2 min read
The Replit team is spending time with friends and family to celebrate the holiday season. Stay tuned for more updates and improvements next week.
In the meantime, you can read about all the updates from 2025 [here](https://blog.replit.com/2025-replit-in-review?utm_source=Matt\&utm_medium=docs\&utm_campaign=changelog).
# January 09, 2026
Source: https://docs.replit.com/updates/2026/01/09/changelog
2 min read
## What's new
* [Automation preview for Agent users](#automation-preview-for-agent-users)
* [Private apps for free accounts](#private-apps-for-free-accounts)
* [Made with Replit badge](#made-with-replit-badge)
* [AI command in Shell](#ai-command-in-shell)
* [New AI models in Integrations](#new-ai-models-in-integrations)
## Platform
### Automation preview for Agent users
Automation preview is now available to all Agent builders. Get a preview of the automation step graph in seconds, instead of waiting minutes to see visual progress.
### Private apps for free accounts
Builders on free accounts can now create private apps. Free tier limits still apply on how many apps you can create.
### Made with Replit badge
A "Made with Replit" badge now appears on free published apps. Remove it by upgrading to Replit Core. Select the badge to learn more about Replit.
### AI command in Shell
Interact with LLMs in Shell using the `replit ai` command. This works for both direct Shell access and Agent workflows.
### New AI models in Integrations
Support for newly-launched AI models is now available in AI Integrations:
| Model | Description |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `gpt-5.2` | OpenAI's most capable model for professional knowledge work. First model above 90% on ARC-AGI-1 with a 400K context window. |
| `claude-opus-4.5` | Anthropic's flagship model optimized for coding, agents, and computer use. Achieves 80.9% on SWE-bench Verified. |
| `gemini-3-flash-preview` | Google's high-speed model for agentic workflows with 1M token context. Near Pro-level reasoning at lower latency and cost. |
| `gemini-3-pro-preview` | Google's advanced multimodal model with state-of-the-art reasoning and real-world knowledge. |
| `gemini-3-pro-image-preview` | Google's Nano Banana Pro model for high-quality image generation and editing with accurate text rendering. |
# January 16, 2026
Source: https://docs.replit.com/updates/2026/01/16/changelog
3 min read
## What's new
* [Mobile Apps on Replit](#mobile-apps-on-replit)
* [Redesigned tool calls UI in Agent chat](#redesigned-tool-calls-ui-in-agent-chat)
* [Node.js security patch](#nodejs-security-patch)
## Platform
### Mobile Apps on Replit
Build native iOS apps from a simple prompt. Agent creates full React Native apps, and you can add features like databases, Stripe payments, or OpenAI integrations as you go. Preview your app by scanning a QR code with Expo Go, then submit to the App Store through Replit's guided flow. Apple reviews and distributes apps through the App Store.
Ready to build your first mobile app? Check out [Native Mobile Apps](/features/artifact-types/building-mobile-apps) to get started, or follow the [Build and launch a mobile app](/tutorials/build-and-launch-a-mobile-app) tutorial.
**\$15K Mobile Buildathon**: Join the Mobile Buildathon to build something amazing and compete for prizes. [Learn more](https://replit.com/buildathon).
### Redesigned tool calls UI in Agent chat
Agent chat now features a cleaner, more compact interface for tool calls. Tool calls collapse into grouped rows with stacked icons, making it easier to see what's happening at a glance. File edits and creations link directly to the diff panel for easy review. This streamlined design helps you follow Agent runs with less noise and more clarity.
### Node.js security patch
A critical security vulnerability was announced in Node.js this week. All Agent development environments and Replit's Node.js applications have been patched to use secure versions. Your apps will also update to the secure version when you republish them.
# January 23, 2026
Source: https://docs.replit.com/updates/2026/01/23/changelog
2 min read
## What's new
* [Audio support in AI integrations](#audio-support-in-ai-integrations)
* [Web search in Agent automations](#web-search-in-agent-automations)
* [RulesSync support for replit.md](#rulesync-support-for-replitmd)
## Platform
### Audio support in AI integrations
AI integrations now supports audio capabilities with four new models:
* `gpt-4o-transcribe` and `gpt-4o-transcribe-mini` for speech-to-text transcription
* `gpt-4o-audio` and `gpt-4o-audio-mini` for audio output generation
Build applications that process or generate audio content—transcribe podcasts, create voice assistants, or add speech interfaces to your apps.
### Web search in Agent automations
Create automations that use web search without requiring API keys. Agent integrates LLM-native web search through AI integrations, enabling scheduled research, news summaries, or educational content delivery.
### RulesSync support for replit.md
The open source project [RulesSync](https://github.com/dyoshikawa/rulesync) now supports `replit.md` files. Keep your AI agent configuration files (`CLAUDE.md`, `AGENT.md`, and `replit.md`) synchronized across multiple projects.
# January 30, 2026
Source: https://docs.replit.com/updates/2026/01/30/changelog
1 min read
## What's new
* [LinkedIn skills verification built on Replit](#linkedin-skills-verification-built-on-replit)
* [Open in Replit links with prefilled prompts](#open-in-replit-links-with-prefilled-prompts)
## Platform
### LinkedIn skills verification built on Replit
LinkedIn launched AI-powered skills verification, built on Replit. Verify your coding skills directly on LinkedIn with interactive challenges that test real-world programming abilities.
### Open in Replit links with prefilled prompts
"Open in Replit" links now support prefilled prompts. Create links that open Replit with a pre-written prompt, making it easier for others to get started building. This feature is available in ChatPRD and Replit Docs.
# February 06, 2026
Source: https://docs.replit.com/updates/2026/02/06/changelog
2 min read
## What's new
* [Agent Inbox](#agent-inbox)
* [Replit + Gemini CLI extension](#replit--gemini-cli-extension)
* [Replit Learn lessons 5-7](#replit-learn-lessons-5-7)
* [Updated Quickstart and tutorials](#updated-quickstart-and-tutorials)
## For Teams
* [Custom OpenAI key support](#custom-openai-key-support)
## Platform
### Agent Inbox
Leave feedback directly on [published apps](/cloud-services/deployments/about-deployments) with [Agent Inbox](/build/enable-feedback). When visitors use the feedback widget on your published app, you can use [Agent](/core-concepts/agent) to implement their suggestions. Available for all paid users.
### Replit + Gemini CLI extension
Create and interact with projects through the Gemini CLI. The Replit extension is now live in the Gemini CLI Extensions directory, available alongside 300+ other developer extensions.
### Replit Learn lessons 5-7
Lessons 5-7 are now live on [Replit Learn](https://learn.replit.com), completing the AI Foundations Module. Learn what makes an "app" an app, how AI works, and what vibe coding is through hands-on projects. Perfect for builders new to AI and Replit.
### Updated Quickstart and tutorials
Updated [Quickstart](/getting-started/quickstarts/ask-ai) and [Design vs Build Mode tutorial](/tutorials/design-vs-build-mode) with new interactive demo projects.
### Custom OpenAI key support
Use your own OpenAI key with [AI integrations](/replitai/replit-ai-integrations) instead of the default model provider. Available for Teams customers.
# February 13, 2026
Source: https://docs.replit.com/updates/2026/02/13/changelog
2 min read
## What's new
* [Claude Opus 4.5 support](#claude-opus-45-support)
* [Open in Replit button (Beta)](#open-in-replit-button-beta)
* [Agent production SQL database access](#agent-production-sql-database-access)
* [Bitbucket integration improvements](#bitbucket-integration-improvements)
* [User/group level budgets](#usergroup-level-budgets)
* [Connection reliability improvements](#connection-reliability-improvements)
## Platform
### Claude Opus 4.5 support
Claude Opus 4.5 is now supported in AI Integrations, giving you access to Anthropic's latest AI capabilities optimized for coding and agents.
### Open in Replit button (Beta)
You can now tackle Linear tickets directly on Replit with the new 'Open In Replit' button. This beta feature needs to be enabled in preferences and automatically populates the prompt with issue details. The team is working with Linear to improve the integration.
### Agent production SQL database access
Agent can now view and query your production SQL database in read-only mode, allowing it to work with real production data without risk of accidental modifications.
### Bitbucket integration improvements
Enhanced Bitbucket import support makes it easier for you to migrate your repositories into Replit alongside GitHub and GitLab.
### Connection reliability improvements
Several improvements to enhance the Integrations experience:
* Connection tokens are less likely to expire due to an improved background reconnection process
* Clear display when connections are in an unhealthy/error state
* Ability to re-connect integrations directly from the error state
## Teams and Enterprise
### User/group level budgets
Budget management capabilities are now enabled for all enterprise customers:
* Enterprise team admins can set default usage budgets on all members
* Admins can set budgets on specific groups (e.g., Admins/Members and custom groups)
* Coming soon: admins will be able to set override budgets on individual users
# February 20, 2026
Source: https://docs.replit.com/updates/2026/02/20/changelog
2 min read
## What's new
* [Pro Plan launch](#pro-plan-launch)
* [Background memory compression](#background-memory-compression)
* [Production deployment logs access](#production-deployment-logs-access)
* [Skills Search](#skills-search)
* [Razorpay MCP integration](#razorpay-mcp-integration)
* [Expanded default MCP list](#expanded-default-mcp-list)
* [Video Stack](#video-stack)
* [Deployment visibility settings](#deployment-visibility-settings)
## Pro Plan launch
Replit Pro is here, and Core now offers even better value. We've made plans clearer and more purpose-built:
* **Replit Pro**: For serious builders—Turbo Mode (2.5x faster Agent, separate toggle), tiered credits with rollover, up to 15 builders with no per-seat fees, priority support, and 4× data retention. [Learn about Pro](/billing/plans/replit-pro).
* **Core**: Invite up to 5 collaborators at no extra cost. See the [pricing page](https://replit.com/pricing) for current Core pricing.
* **Teams plan sunset**: Teams is being replaced by Pro. Existing Teams customers are upgraded to Pro at no additional cost for the remainder of their term. Migration starts . [Details and timeline](https://blog.replit.com/pro-plan).
* **Agent modes**: Choose **Economy** (cost-optimized) or **Power** (performance); **Turbo** is a separate toggle (Pro/Enterprise only, 2.5x faster). [Agent modes guide](/core-concepts/agent/agent-modes).
* **Fast Mode is now Lite Mode**: Same lightning-quick, scoped changes—updated name in the product and docs. [Lite mode](/core-concepts/agent/agent-modes).
* **Code Optimizations**: The setting that controls how Agent reviews its own code (formerly Autonomy Level) is now called Code Optimizations. [Code review](/features/agent/agent-modes).
* **Collaboration**: Better collaboration on all paid plans—unlimited workspaces, simplified sharing, unified settings, per-workspace usage tracking. Core: 5 collaborators; Pro: 15 builders.
## Platform
### Background memory compression
Agent no longer pauses your workflow to optimize its memory. Previously, you'd see an "Optimized Agent memory" message that blocked progress for 30+ seconds. Now this happens seamlessly in the background, so Agent stays responsive while you work.
### Production deployment logs access
Agent now has access to production Deployment logs, enabling it to find and fix errors based on real production data. Expect more production debugging enhancements coming soon.
### Skills Search
Skills Search lets you browse and install popular skills directly from within Replit without needing to prompt Agent or manually upload files.
### Razorpay MCP integration
The Razorpay MCP integration is now available, expanding payment capabilities for builders in India. Connect Razorpay to your Replit project to accept payments, manage orders, and handle refunds directly through Agent.
### Expanded default MCP list
The default MCP list on [replit.com/integrations](https://replit.com/integrations) has expanded, letting you connect new integrations with a single click.
### Video Stack
Video Stack lets you create animated videos with code by leveraging generated images and videos for creative motion visuals. Build animated videos entirely with code directly in your Replit project.
## Teams and Enterprise
### Deployment visibility settings
Deployment visibility settings let organizations deploy apps with visibility scoped to admins, members, or viewers of your Team. Control exactly who can access deployed applications within your organization.
# February 27, 2026
Source: https://docs.replit.com/updates/2026/02/27/changelog
2 min read
## What's new
* [Password manager keyboard navigation](#password-manager-keyboard-navigation)
* [Agent performance improvements](#agent-performance-improvements)
* [System theme support](#system-theme-support)
* [Quick feedback widget improvements](#quick-feedback-widget-improvements)
## Platform
### Password manager keyboard navigation
You can now log into Replit via your password manager extension using only the keyboard. Previously, pressing the down arrow to navigate to the email field would refocus on it, requiring you to use a mouse.
### Agent performance improvements
Agent performance has been improved with new optimizations and an improved architecture.
### System theme support
Replit now follows your system theme preference, or you can manually select light or dark mode from the quick menu, the Settings Pane, or the Workspace command palette.
### Feedback widget improvements
The feedback widget has shipped with improvements based on user feedback:
* Full i18n support so browser translation works in other languages
* Customize position, background color, and icon on widget
# March 06, 2026
Source: https://docs.replit.com/updates/2026/03/06/changelog
2 min read
## What's new
* [Connectors and AI Integrations now enabled by default for Teams and Enterprise](#connectors-and-ai-integrations-now-enabled-by-default-for-teams-and-enterprise)
* [AI Chat message truncation](#ai-chat-message-truncation)
* [GPT-Codex-5.3 support in AI Integrations](#gpt-codex-53-support-in-ai-integrations)
* [RevenueCat integration now generally available](#revenuecat-integration-now-generally-available)
## Platform
### AI Chat message truncation
Long messages in AI Chat are now truncated with a "Show more" button, keeping your chat history readable.
### GPT-Codex-5.3 support in AI Integrations
You can now use `gpt-codex-5.3` in AI Integrations.
### RevenueCat integration now generally available
RevenueCat integration is now generally available and makes it easy to monetize your mobile apps. Ask Agent to add a subscription and it handles the app store setup for you.
## Teams and Enterprise
### Connectors and AI Integrations now enabled by default for Teams and Enterprise
Connectors and AI Integrations are now enabled by default for Teams and Enterprise — no opt-in required.
Connectors is now powering over 100k active repl connections (with over 450k created to date).
# March 13, 2026
Source: https://docs.replit.com/updates/2026/03/13/changelog
2 min read
## What's new
* [Introducing Replit Agent 4](#introducing-replit-agent-4)
## Agent
### Introducing Replit Agent 4
Agent 4 is here. Built for creativity, Agent is your AI creative partner - turning your ideas into apps, designs, slides, and more, all from plain language. No coding required.
With Agent 4, you can:
* **Build anything**: create web apps, mobile apps, data dashboards, AI-powered tools, and more
* **Design before you build**: explore mockups on the [Design Canvas](/learn/projects-and-artifacts/canvas) before committing to code
* **Plan your project**: use [Plan mode](/core-concepts/agent/plan-mode) to map out your build before any code is written
* **Run tasks in parallel**: Agent handles multiple tasks at once so you can move faster
* **Collaborate with teammates**: invite others to your project and build simultaneously
* **Connect your tools**: pull data from BigQuery, Linear, Slack, Notion, and more directly from chat
Describe your idea and let Agent bring it to life. No setup required.
# March 20, 2026
Source: https://docs.replit.com/updates/2026/03/20/changelog
2 min read
## What's new
* [Replit PWA on Microsoft App Store](#replit-pwa-on-microsoft-app-store)
* [Empty project creation](#empty-project-creation)
* [Enterprise Audit Log Portal](#enterprise-audit-log-portal)
## Platform
### Replit PWA on Microsoft App Store
Replit is now available as a Progressive Web App (PWA) on the Microsoft App Store, making it easier for Windows builders to discover and install Replit as a native-like application.
### Empty project creation
You can now create an empty project from the import page. Empty projects don't trigger Agent on start—no credits consumed on creation—and give you full control over framework and tooling setup. The option is available on the import page for builders who want this level of control.
## Teams and Enterprise
### Enterprise Audit Log Portal
Enterprise Audit Log Portal (v1) is now available to all enterprise customers. Admins can view events performed by members of their organization and configure event stream integrations with their SIEM platform of choice—including S3, Datadog, Splunk, Google Cloud Storage, and Microsoft Sentinel.
# March 27, 2026
Source: https://docs.replit.com/updates/2026/03/27/changelog
1 min read
## What's new
* [Application-level analytics](#application-level-analytics)
## Platform
### Application-level analytics
You can now view analytics at the application level, not just the deployment level. This gives you a clearer picture of your app's overall performance—including requests, top URLs, HTTP statuses, and response times.
# April 3, 2026
Source: https://docs.replit.com/updates/2026/04/03/changelog
1 min read
## What's new
* [Stock and AI-generated images in Library](#stock-and-ai-generated-images-in-library)
* [Plan Mode fix](#plan-mode-fix)
* [Slide export improvements](#slide-export-improvements)
## Agent
### Stock and AI-generated images in Library
Stock images and AI-generated images now appear in the Library sidebar. Previously, these images were created in your project but not surfaced in the Library for easy browsing. You can now find and reuse any image Agent downloaded or generated directly from the Library sidebar.
Learn more about [artifacts and the Library sidebar](/features/projects-and-artifacts/artifacts#library-sidebar).
### Plan Mode fix
Plan Mode now correctly activates when you toggle it on after sending your first message. Previously, toggling Plan Mode mid-conversation was silently ignored.
### Slide export improvements
Exporting large slide decks (150 slides or more) is now more reliable. Export timeouts now scale with the number of slides, supporting decks with up to 200+ slides.
# April 10, 2026
Source: https://docs.replit.com/updates/2026/04/10/changelog
3 min read
## What's new
* [Databricks Apps integration](#databricks-apps-integration)
* [Recreate any UI from a screenshot](#recreate-any-ui-from-a-screenshot)
* [Razorpay payments for India](#razorpay-payments-for-india)
* [RevenueCat App Store Connect sync](#revenuecat-app-store-connect-sync)
* [Choose where your app runs with publishing geography](#choose-where-your-app-runs-with-publishing-geography)
* [Connectors available on all paid plans](#connectors-available-on-all-paid-plans)
* [Past invoices in usage page](#past-invoices-in-usage-page)
## Integrations
### Databricks Apps integration
Enterprise builders can now build data-aware apps on Replit and deploy them directly to Databricks. Agent connects to your Databricks environment and can examine your data schema without the data leaving Databricks. When your app is ready, publish it straight to Databricks Apps. The running app is hosted entirely in Databricks and inherits Databricks authentication, Unity Catalog governance, and your existing network restrictions.
This integration is available to enterprise organizations with a Databricks workspace. Learn more at the [Replit x Databricks partner page](https://replit.com/partners/databricks).
## Agent
### Recreate any UI from a screenshot
Paste a screenshot into Agent and ask it to "build this" or "recreate this UI." Agent reproduces the design at high fidelity in a single pass, across web apps and slide decks. This is useful for replicating existing designs, rebuilding reference UIs, or quickly prototyping from a mockup.
### Connectors available on all paid plans
Builders on Core and Pro plans can now access the full set of connectors directly from their Workspace.
Learn more about [managing connectors](/replitai/managing-connectors).
## Platform
### Razorpay payments for India
Builders in India can now pay with UPI and cards through Razorpay. This includes e-mandate support for recurring subscriptions, as required by the Reserve Bank of India. If you are an existing subscriber in India, you will soon be able to switch from Stripe to Razorpay from your billing page.
### RevenueCat App Store Connect sync
The RevenueCat integration now includes automatic syncing to Apple. When you configure in-app purchases in RevenueCat, that configuration syncs directly to App Store Connect.
Learn more about [RevenueCat subscriptions](/core-concepts/monetization/revenuecat-subscriptions).
### Choose where your app runs with publishing geography
Core, Pro, and Enterprise builders can now select the geography where their app is published. When you publish to a geography, your compute, Database, and Object Storage artifacts are all colocated in that region. A geography-specific proxy helps reduce latency for your app's visitors.
Europe is now available alongside North America, with Australia, South America, and Asia coming soon. Enterprise admins can also restrict their organization to a single geography for compliance.
Learn more about [publishing geography](/features/publishing/publishing-geography).
### Past invoices in usage page
You can now view past invoices directly from the **Usage** page in your account settings. Select any prior billing period from the dropdown to see a full breakdown of consumption by app.
# April 17, 2026
Source: https://docs.replit.com/updates/2026/04/17/changelog
2 min read
## What's new
* [Claude Opus 4.7 powers Power mode](#claude-opus-4-7-powers-power-mode)
* [New Agent modes dropdown](#new-agent-modes-dropdown)
* [Agent suggests follow-up tasks](#agent-suggests-follow-up-tasks)
* [Projects page improvements](#projects-page-improvements)
* [Filter the Projects page by artifact — now including Slides](#filter-the-projects-page-by-artifact)
* [Replit Agent on Google Cloud Marketplace](#replit-agent-on-google-cloud-marketplace)
* [Custom groups for SCIM organizations](#custom-groups-for-scim-organizations)
## Agent
### Claude Opus 4.7 powers Power mode
Power mode now runs on Anthropic's Claude Opus 4.7. Select **Power** in the Agent modes dropdown and Agent routes your request to the new model automatically.
Learn more about [Agent modes](/core-concepts/agent/agent-modes).
### New Agent modes dropdown
The Agent mode selector in the chat input is now a simpler segmented control. Pick between Lite, Economy, and Power right from the toolbar, and reach Turbo through Advanced settings when you need it..
What's new:
* **Segmented control in the toolbar.** Lite, Economy, and Power sit side-by-side so it's obvious which mode you're in and how to switch.
* **Keyboard shortcut.** Press **⌘+Shift+I** (Ctrl+Shift+I on Windows) to cycle through modes without reaching for your mouse.
* **Turbo highlighted in orange.** Turbo is the fastest mode but costs more, so it stands out in the UI to keep the cost tradeoff visible.
* **Advanced settings collapsed by default.** The controls for testing, code review, and Turbo live behind **Advanced settings** so the main view stays clean.
* **Max mode has been retired.** Use Power for the most capable builds, or turn on Turbo inside Advanced settings when you want the fastest response.
Learn more about [Agent modes](/core-concepts/agent/agent-modes).
### Agent suggests follow-up tasks
Agent now proposes **follow-up tasks** after it finishes work, using the full context of your project to suggest what to build next. Three kinds of suggestions show up under each completed task:
* **New features to build** — capabilities that pair naturally with what you just shipped
* **Performance improvements** — optimizations Agent noticed while working on the task
* **User experience enhancements** — polish that rounds out the feature
Review each suggestion, select **Accept** on the ones you want, and Agent runs them in the background while you keep building. Hide suggestions you don't need with **Hide suggested tasks** in the Done column, and bring them back anytime.
Learn more about [follow-up task suggestions](/features/agent/follow-up-tasks).
## Workspace
### Projects page improvements
Three quality-of-life improvements landed on the Projects page:
* **Artifact previews on every card.** Each project card now shows small icons for each artifact inside. Hover any icon to preview that artifact's screenshot without opening the project.
* **Default sort by last opened by you.** The page now puts the projects *you* worked on most recently at the top, so your current work stays front and center in busy team workspaces.
* **Personal pinning.** Pin the projects you return to often. Pins are private to you and don't affect what other members of your workspace see.
Learn more about [managing your projects](/features/projects-and-artifacts/projects#managing-your-projects).
### Filter the Projects page by artifact
You can filter your Projects page by artifact using the **Build type** dropdown. Select the artifact type (for example, Slides) to see only the projects that contain it.
Learn more about [Slide Decks](/features/artifact-types/slide-decks#finding-your-slide-decks).
## Integrations
### Replit Agent on Google Cloud Marketplace
Replit Agent is now available as an MCP Server listing on [Google Cloud Marketplace](https://console.cloud.google.com/marketplace/product/replit-public/replit-agent4?pli=1). Enterprise teams using Google Cloud can provision Agent through their existing billing relationship and integrate it with Gemini Enterprise.
## Teams and Enterprise
### Custom groups for SCIM organizations
Organizations with SCIM provisioning enabled can now create custom groups in Replit alongside their IdP-synced groups. Use custom groups for project-based access, one-off permission grants, or any structure that isn't mirrored in your identity provider.
SCIM-synced groups remain managed through your identity provider — custom groups are managed directly in Replit by organization admins.
Learn more about [SCIM](/teams/identity-and-access-management/scim#creating-custom-groups-alongside-scim).
# April 24, 2026
Source: https://docs.replit.com/updates/2026/04/24/changelog
3 min read
## What's new
* [Security Agent reviews your whole codebase](#security-agent-reviews-your-whole-codebase)
* [CVE Auto-Protect patches critical vulnerabilities automatically](#cve-auto-protect-patches-critical-vulnerabilities-automatically)
* [Preview on an iOS Simulator or Android Emulator](#preview-on-an-ios-simulator-or-android-emulator)
* [Add a mobile app to older projects](#add-a-mobile-app-to-older-projects)
* [Plaid connector is live](#plaid-connector-is-live)
## Platform
### Security Agent reviews your whole codebase
**Security Agent** is a new AI-powered reviewer that audits not just your dependencies, but your entire project. It builds a threat model, maps your routes and data flows, runs static analysis with Semgrep and HoundDog.ai, and uses an LLM to decide which findings are actually exploitable in the context of your app. When the review finishes, Security Agent organizes the accepted findings into parallel tasks that Replit Agent can fix in one pass.
Security Agent is available to all paid builders. Open the **Security** pane in your project and select **Run Scan with Agent** to try it.
Learn more about [Security Agent](/core-concepts/security/project-security-center#agent-security-scans).
### CVE Auto-Protect patches critical vulnerabilities automatically
When a new critical CVE is disclosed for a package your app depends on, **CVE Auto-Protect** detects the match across every project you own, has Agent prepare a patch in a background task, runs your tests to make sure nothing breaks, and notifies you with a link to review. You stay in control — nothing is published until you approve the fix.
This means your apps can be patched within minutes of a new vulnerability becoming public, instead of waiting for you to notice.
Learn more about [CVE Auto-Protect](/core-concepts/security/project-security-center#auto-protect).
## Workspace
### Preview on an iOS Simulator or Android Emulator
When your project includes a mobile app, the Preview panel can now stream a real **iOS Simulator** or **Android Emulator** right into your workspace. No Xcode, no Android Studio, and no physical device required. Build a mobile app with Agent, pick your device from the Preview panel's dropdown, and tap around as if you had the phone in your hand. Edits hot-reload in the simulator as Agent makes them.
Available to paid builders on Core, Pro, and Enterprise plans, on Chrome, Safari, and Chromium-based browsers. Firefox isn't supported for mobile simulators.
Learn more about [previewing on a simulator or emulator](/features/artifact-types/building-mobile-apps#preview-on-a-simulator-or-emulator).
## Agent
### Add a mobile app to older projects
Projects created before Agent 4 launched can now be updated to support multiple artifacts — which means you can add a mobile app, a pitch deck, or another artifact to a project that used to support only one. Agent preserves your URL, data, secrets, and deployment as it reorganizes the project. More than 200 projects migrated in the first 48 hours after the wider rollout.
Learn more about [updating older projects for multiple artifact support](/features/projects-and-artifacts/updating-projects-for-multiple-artifacts).
## Integrations
### Plaid connector is live
You can now connect to 12,000+ financial institutions with the **Plaid** connector. Team admins configure credentials once in **Integrations**, and your app's users authenticate their own bank accounts through Plaid Link. Access tokens are scoped per user, so data stays private.
Build a personal finance coach that works with real transaction data, a live portfolio tracker connected to your brokerage, and more. Check out the [Replit x Plaid partner page](https://replit.com/partners/plaid) for demos and setup steps.
Learn more about [managing connectors](/replitai/managing-connectors).
# May 1, 2026
Source: https://docs.replit.com/updates/2026/05/01/changelog
2 min read
## What's new
* [Replit App Monitoring keeps an eye on your published apps](#replit-app-monitoring-keeps-an-eye-on-your-published-apps)
* [Create full Slide Decks with Agent](#create-full-slide-decks-with-agent)
## Platform
### Replit App Monitoring keeps an eye on your published apps
You can now turn on **App monitoring** for any published Replit App and get a real-time uptime check, a colored uptime bar in your **Publishing** view and **Analytics** tab, and an email when your app goes down. App monitoring is available on every paid plan and works on every Deployment type except Scheduled Deployments. If your app does have a hiccup, select **Investigate recent downtime with Agent** to spin up a background task that pulls the affected windows, reviews logs and code, and proposes a fix.
Learn more about [App monitoring](/features/publishing/monitoring-a-deployment#app-monitoring).
## Agent
### Create full Slide Decks with Agent
Describe the presentation you want, such as a pitch deck, product overview, sales deck, or team update, and Agent creates a polished deck with layouts, text, and visuals included. You can refine slides through chat, edit text and styling with Visual Editor, present from the browser, publish the deck as a live URL, or export it to PPTX, Google Slides, or PDF.
Learn more about [Slide Decks](/features/artifact-types/slide-decks).
# May 8, 2026
Source: https://docs.replit.com/updates/2026/05/08/changelog
2 min read
## What's new
* [Workspace Security Center 2.0](#workspace-security-center-2-0)
* [Private publishing for everyone](#private-publishing-for-everyone)
* [External access tokens for Private Deployments](#external-access-tokens-for-private-deployments)
* [Speaker notes and Presenter view in Slide Decks](#speaker-notes-and-presenter-view-in-slide-decks)
* [Agent accepts SVG uploads](#agent-accepts-svg-uploads)
* [New animated icons for Agent modes](#new-animated-icons-for-agent-modes)
## Platform
### Workspace Security Center 2.0
Review and act on dependency vulnerabilities across every project in your workspace from one place. The Workspace Security Center now surfaces your highest-risk projects up front and lets you search and filter affected projects by severity, publish status, visibility, and owner. You also get the full remediation loop without leaving the Security Center: kick off an Agent task, review the proposed fix, then republish the project. You can notify project owners individually or in bulk, unpublish high-exposure projects on the spot, and download SBOMs for compliance audits.
Learn more about the [Workspace Security Center](/core-concepts/security/workspace-security-center).
### Private publishing for everyone
Private and password-protected app publishing was previously limited to the Pro and Enterprise plans. Builders on Core and Starter can now publish privately too, so anyone can keep an internal tool, beta app, or work-in-progress behind a Replit sign-in.
Learn more about [Private Deployments](/features/publishing/private-deployments).
### External access tokens for Private Deployments
External access tokens are now available for private Replit Apps. Mint tokens to set up integrations — Slack, GitHub, Twilio, and others — that reach your private deployments separately from connectors. They give power users more control over their applications and make private Replit Apps even more secure. Open **Adjust settings** on your deployment to find the new **External access tokens** tab.
Learn more about [External access tokens](/references/publishing/external-access-tokens).
## Agent
### Speaker notes and Presenter view in Slide Decks
Slide Decks now support speaker notes and a dedicated Presenter view. Notes live-sync between the editor and the presentation window in both directions, so you can remote-control your deck from one device while screensharing from another. Ask Agent to write the notes for you, then refine them in the editor while your audience sees only the slide. Presenter view is also available from the mobile slides artifact card.
Learn more about [Slide Decks](/features/artifact-types/slide-decks).
### Agent accepts SVG uploads
You can now attach SVG files to Agent. Drop an SVG into the chat or paste a URL, and Agent reads the markup the same way it reads any other attachment. Uploads are sanitized in your browser before they reach Agent or storage, so common SVG-based attack vectors are stripped automatically.
### New animated icons for Agent modes
Lite, Economy, and Power Agent modes have new custom animated icons that hint at each mode's character. The new icons appear in the Agent mode picker and across the workspace anywhere a mode is shown.
Learn more about [Agent Modes](/core-concepts/agent/agent-modes).
# May 15, 2026
Source: https://docs.replit.com/updates/2026/05/15/changelog
2 min read
## What's new
* [Buy Enterprise online with automated SSO setup](#buy-enterprise-online-with-automated-sso-setup)
* [Per-user spend limits for Enterprise workspaces](#per-user-spend-limits-for-enterprise-workspaces)
* [Export Canvas frames as PNGs](#export-canvas-frames-as-pngs)
* [Nine new connectors ready to use out of the box](#nine-new-connectors-ready-to-use-out-of-the-box)
* [Four new MCP servers in the directory](#four-new-mcp-servers-in-the-directory)
## Teams and Enterprise
### Buy Enterprise online with automated SSO setup
You can now purchase the Replit Enterprise plan directly from the [pricing page](https://replit.com/pricing). No sales call required. After checkout, the in-product wizard guides you through Single Sign-On setup end-to-end. Paste your Identity Provider values into the SAML form, and Replit provisions your SSO connection automatically. Your team can be live on Enterprise within minutes instead of waiting on email back-and-forth.
Learn more about [SAML SSO setup](/teams/identity-and-access-management/saml).
### Per-user spend limits for Enterprise workspaces
Enterprise admins can now set a different agent spend limit for individual workspace members. Open the **Agent users** table on your [usage page](https://replit.com/usage), select the edit icon on any row, and choose a new limit. Per-user limits take precedence over group and workspace defaults. This is useful when you want to grant power users a higher cap or tighten spend for a single member without changing the rest of the workspace.
Learn more about [Managing your spend](/billing/managing-spend#per-user-spend-limits).
## Agent
### Export Canvas frames as PNGs
Right-click any artifact or design frame on the Canvas and select **Export** > **PNG** to download a snapshot of the current preview. Great for sharing a quick visual in a doc, a chat, or a teammate review without taking a manual screenshot. The exported image matches exactly what the frame shows on the Canvas at the moment you export.
Learn more about [Canvas](/learn/projects-and-artifacts/canvas#export-a-frame-as-a-png).
## Integrations
### Nine new connectors ready to use out of the box
Nine more connectors now ship with default credentials, so you can connect them to Agent with one click. No need to set up your own OAuth app first. Open the **Integrations** panel in your project, pick the service, and authorize the connection.
* **Airtable**: Read and write to bases, tables, and records.
* **GitLab**: Access projects, issues, merge requests, and pipelines.
* **Basecamp**: Read and manage projects, to-dos, messages, and schedules.
* **Productboard**: Read and update features, releases, and customer feedback.
* **Teamwork**: Read and manage projects, tasks, and time entries.
* **Twitch**: Read streams, channels, and viewer activity.
* **Square**: Accept payments and manage orders, customers, and inventory.
* **Intercom**: Read and write conversations, contacts, and support workflows.
* **Mailchimp**: Read and manage audiences, campaigns, and email marketing data.
Learn more about [connectors](/replitai/integrations#available-connectors).
### Four new MCP servers in the directory
The [MCP directory](/replitai/mcp/directory) now has four hosted Model Context Protocol servers. Open the **Integrations** panel, find the server under **MCP Servers for Replit Agent**, and select **Add to Replit** to connect it.
* **Twilio**: Search Twilio docs and 1,800+ API endpoints for voice, SMS, email, and identity.
* **Mixpanel**: Query Mixpanel events, funnels, retention, and dashboards.
* **Lazyweb**: Search 257k+ real app screens for UI references and design research.
* **Doola**: Register a US LLC and manage formation, bookkeeping, and taxes.
Browse the full list in the [MCP directory](/replitai/mcp/directory).
# May 22, 2026
Source: https://docs.replit.com/updates/2026/05/22/changelog
2 min read
## What's new
* [Layout controls in the Visual Editor](#layout-controls-in-the-visual-editor)
* [Agent settings stay yours in shared projects](#agent-settings-stay-yours-in-shared-projects)
* [Agent suggests Power Mode when you're stuck](#agent-suggests-power-mode-when-youre-stuck)
* [Cleaner task settings dropdown](#cleaner-task-settings-dropdown)
* [Two new connectors: Quiver AI and Browserbase](#two-new-connectors-quiver-ai-and-browserbase)
## Workspace
### Layout controls in the Visual Editor
The Visual Editor now has dedicated **Layout** controls so you can adjust flexbox layout visually instead of asking Agent to rewrite the styles. Select any container, expand the Layout section, and choose a flex direction, alignment, and justification. Set a pixel gap between items, or flip on the **Space between** toggle to push children to opposite edges.
The editor pane has also been regrouped into clearer **Text**, **Image**, **Layout**, **Color**, and **Border** sections so the control you need is easier to find.
Learn more about the [Visual Editor](/design/visual-editor#layout-controls).
## Agent
### Agent settings stay yours in shared projects
Your Agent preferences, such as model tier, plan mode, auto-merge, and auto-approve-plan, now stick to you instead of being shared with everyone in the project. A teammate switching to Power Mode on their tasks no longer flips your settings too. The setting you pick is the setting Agent uses when you send the next message, even in projects with many collaborators.
Learn more about [Agent Modes](/features/agent/agent-modes#settings-in-shared-projects).
### Agent suggests Power Mode when you're stuck
When Agent notices you're hitting the same problem over and over in Economy Mode, it will now suggest switching to Power for your next message. The suggestion looks for repeated requests, or code that keeps failing, and it shows up at most once per project. Agent skips the suggestion in planning sessions, when you've already mentioned a budget concern, or when you're on the free plan.
Learn more about [Agent Modes](/features/agent/agent-modes).
### Cleaner task settings dropdown
The dropdown that opens from a task's header is easier to use. The active task or planning title now sits at the top with inline rename, automation settings (auto-apply, auto-approve) live in their own section between the title and actions, and the popover has a fixed width so it stops shifting around as task names change. Disabled automation rows are hidden so the menu only shows what applies to the current task.
Learn more about the [task board](/features/agent/task-board#settings-on-each-task).
## Integrations
### Two new connectors: Quiver AI and Browserbase
Two more services are now available in the connector catalog. Open the **Integrations** panel and select **Add new integration** to connect either one.
* **Quiver AI**: Generate SVG illustrations and vectorize raster images through a managed API. Useful when Agent needs a clean SVG asset on demand.
* **Browserbase**: Run managed headless browsers for fetch, search, and full session automation. Useful when Agent needs to load a real web page, run JavaScript, or interact with a site that blocks plain HTTP requests.
Learn more about [connectors](/features/integrations/overview#available-connectors).
# May 29, 2026
Source: https://docs.replit.com/updates/2026/05/29/changelog
2 min read
## What's new
* [Upgrade to Enterprise without leaving Replit](#upgrade-to-enterprise-without-leaving-replit)
* [Connect Stripe by installing an app, no keys to copy](#connect-stripe-by-installing-an-app-no-keys-to-copy)
* [Generate 3D models with the Tripo3D connector](#generate-3d-models-with-the-tripo3d-connector)
* [Agent can generate music, sound effects, and speech](#agent-can-generate-music-sound-effects-and-speech)
* [Generate media right on Canvas](#generate-media-right-on-canvas)
## Teams and Enterprise
### Upgrade to Enterprise without leaving Replit
You can now upgrade to Replit Enterprise from any plan, Free, Core, or Pro, without leaving the product or contacting sales first. If you have collaborative workspaces, they move into your new Enterprise organization automatically when you complete checkout. Your published apps stay live throughout, with no downtime.
Learn more about [Replit Enterprise](/billing/plans/replit-enterprise#upgrade-to-enterprise).
## Billing
### Connect Stripe by installing an app, no keys to copy
Taking your app live with Stripe is simpler. Instead of copying live API keys from the Stripe dashboard, you now install the Replit Integrated Payments app from the Stripe Marketplace. Your production keys get wired up for you. Open the Publish pane, install the app, and finish the connection in Stripe.
Learn more about [going live with Stripe](/features/monetization/stripe-payments#go-live).
## Integrations
### Generate 3D models with the Tripo3D connector
Tripo3D is now in the connector catalog. Ask Agent to generate 3D models from a text description or an image, useful for games, product mockups, and AR experiences. Usage is billed to your Replit credits.
Learn more about [connectors](/features/integrations/overview#available-connectors).
## Agent
### Agent can generate music, sound effects, and speech
Agent can now create audio for your apps. Ask for background music, sound effects, or spoken narration, and Agent generates the audio and adds it directly to your project. Usage is billed to your Replit credits.
Learn more about [audio generation](/features/agent/audio-generation).
## Workspace
### Generate media right on Canvas
You can now create media directly on Canvas. Open the **Generate** tool in the Canvas toolbar and choose **Image**, **Vector Graphic**, or **Video** to generate it in place. The whole flow stays on the board, so you can design and iterate without switching tools.
Learn more about [Canvas](/design/canvas).
# June 5, 2026
Source: https://docs.replit.com/updates/2026/06/05/changelog
2 min read
## What's new
* [Sell physical products with Shopify](#sell-physical-products-with-shopify)
* [Build data apps on Microsoft Fabric](#build-data-apps-on-microsoft-fabric)
* [Custom domains set up their own DNS](#custom-domains-set-up-their-own-dns)
* [Improve your search ranking with SEO Agent](#improve-your-search-ranking-with-seo-agent)
* [Use Stripe in collaborative workspaces](#use-stripe-in-collaborative-workspaces)
## Integrations
### Sell physical products with Shopify
You can now build an online store that sells physical products. Ask Agent to build a shop, and it creates a Shopify store for you, adds your products, and sets up the cart and checkout. Agent hands you a link to claim the store, then you sign up for a Shopify plan and connect payments to go live.
Learn more about [connecting Shopify](/features/integrations/shopify).
### Build data apps on Microsoft Fabric
You can now build AI-powered data apps in Replit and publish them straight into Microsoft Fabric. Start from the Microsoft Fabric template, connect a Power BI semantic model, and ask Agent to build dashboards and internal tools on your governed enterprise data, with authentication and access policies staying inside Fabric.
Learn more about [building data apps on Microsoft Fabric](/connectors/warehouses/microsoft-fabric).
## Workspace
### Custom domains set up their own DNS
Connecting your own domain name is now far simpler. When you link a domain, Replit sets up the required DNS records for you through Entri, so you no longer have to copy records into your domain provider by hand. Pick your domain, confirm, and Replit handles the rest.
Learn more about [custom domains](/features/publishing/custom-domains).
## Agent
### Improve your search ranking with SEO Agent
SEO Agent reviews your published app and finds the issues that keep search engines and AI tools from discovering it. Each finding comes with a one-click fix you can review and apply. Open the **Growth** pane in your project to run a scan.
Learn more about [SEO Agent](/features/publishing/seo-agent).
## Billing
### Use Stripe in collaborative workspaces
Stripe now works in collaborative workspaces, so your whole team can build, test, and monetize the same app together. Everyone in the workspace can work with the connected Stripe account instead of building payments alone.
Learn more about [Stripe Payments](/features/monetization/stripe-payments).
# June 12, 2026
Source: https://docs.replit.com/updates/2026/06/12/changelog
3 min read
## What's new
* [Customize Agent with workspace instructions and skills](#customize-agent-with-workspace-instructions-and-skills)
* [Block malicious packages with Package Firewall](#block-malicious-packages-with-package-firewall)
* [Faster slide import and export](#faster-slide-import-and-export)
* [Add visual references when you generate media on Canvas](#add-visual-references-when-you-generate-media-on-canvas)
* [Choose which production alerts reach your inbox](#choose-which-production-alerts-reach-your-inbox)
## Agent
### Customize Agent with workspace instructions and skills
You can now teach Agent how your team works once, and have it apply everywhere. Set **custom instructions** that Agent follows in every project, and create reusable **skills** that Agent loads on demand for specific tasks. You manage both in **Workspace Settings** > **Customization**.
Learn more about [Agent Customization](/features/agent/agent-customization).
## Platform
### Block malicious packages with Package Firewall
Replit now blocks malicious and compromised software packages before they ever reach your app. Package Firewall checks every install across common package managers and stops harmful dependencies automatically. It is on by default, and Agent adapts its plan to use safer alternatives when something is blocked.
Learn more about [Package Firewall](/features/security/package-firewall).
## Workspace
### Faster slide import and export
PowerPoint and Google Slides exports are three to ten times faster, large photo-heavy decks no longer produce oversized PDF files, and you can jump to a Google Slides export in one selection.
Learn more about [exporting slide decks](/features/artifact-types/slide-decks#exporting).
### Add visual references when you generate media on Canvas
When you generate an image, video, or vector graphic on Canvas, you can now attach things already on your board as visual references. Pick a frame, a note, or an image and Agent uses it to guide the result, so your generated media matches the look of your project.
ChatGPT Images 2.0 does not support uploads at the moment. Switch the model, for example to Nano Banana Pro, to attach visual references.
Learn more about [generating media on Canvas](/design/toolbar#generate).
## Security
### Choose which production alerts reach your inbox
You now control production alerts separately from other emails. A new **Production Alerts** setting decides whether Replit emails you about uptime incidents, security vulnerabilities in your dependencies, and language model updates. If a published app uses an out-of-date model, Replit also prepares a draft task so you can upgrade with one review.
Learn more about [notification settings](/features/editor/user-settings#notifications).
# June 19, 2026
Source: https://docs.replit.com/updates/2026/06/19/changelog
3 min read
## What's new
* [Use Replit from Claude](#use-replit-from-claude)
* [New MCP servers: Apollo and Black Forest Labs](#new-mcp-servers-apollo-and-black-forest-labs)
* [Voice Mode](#voice-mode)
* [Invite external guests to Enterprise workspaces](#invite-external-guests-to-enterprise-workspaces)
## Integrations
### Use Replit from Claude
Replit is now available as a connector in Claude. Connect it once, and you can create, update, and ask questions about your Replit apps directly from a conversation with Claude. You can also send a design straight from Claude Design to Replit. It opens as a runnable app, and Agent plans how to turn it into a working product.
Learn more about [using Replit from Claude](/features/platforms/claude).
### New MCP servers: Apollo and Black Forest Labs
Two new servers join the one-click MCP catalog. Connect **Apollo** to research accounts and contacts and build outbound lists from a conversation with Agent. Connect **Black Forest Labs** to generate and edit FLUX images without leaving your project.
Learn more in the [MCP list](/features/mcp/overview).
## Agent
### Voice Mode
You can now describe what you want to build out loud. Tap the microphone in the Agent chat box, speak your prompt, and Replit transcribes your speech into editable text. Review the text, make any edits, and send it like any other message. Voice Mode is available on all Replit plans.
Learn more about [Voice Mode](/features/agent/voice-mode).
## Teams and Enterprise
### Invite external guests to Enterprise workspaces
Enterprise admins can now invite outside collaborators into a workspace as Guests without going through their identity provider. Share a single app with an external email, and that person joins as a Guest with access to only that app. Guests appear in a dedicated table where you can see which apps they can reach and revoke access at any time.
Learn more about [inviting external guests](/teams/identity-and-access-management/managing-members#inviting-external-guests).
# June 26, 2026
Source: https://docs.replit.com/updates/2026/06/26/changelog
3 min read
## What's new
* [A new Integrations experience with 450+ integrations](#a-new-integrations-experience)
* [Use Replit from Slack](#use-replit-from-slack)
* [Multiple workspaces for SCIM customers](#multiple-workspaces-for-scim-customers)
## Integrations
### A new Integrations experience
You can now browse every service Replit connects to in one place. The redesigned Integrations page brings connectors, MCP servers, and Git providers together as clickable cards, with category filters and a badge that marks the integrations Replit can connect for you. The catalog now spans more than 450 integrations, and each one opens a dedicated page with sample use cases. You can preview the full catalog at [replit.com/integrations](https://replit.com/integrations).
Learn more about [Agent integrations](/features/integrations/overview).
### Use Replit from Slack
Replit is now a launch partner for Slack's Slackbot MCP Client. Ask Slackbot to build with Replit, and it creates, updates, and shows your Replit Apps right inside Slack. You stay in the conversation while Replit Agent does the work.
Learn more about [using Replit from Slack](/features/platforms/slack).
## Teams and Enterprise
### Multiple workspaces for SCIM customers
Enterprise customers who provision members through SCIM can now create more than one workspace. Assign your synced groups to separate workspaces for cleaner access boundaries, budget controls, and team separation, while your identity provider stays the source of truth. This is available under open enrollment for new Enterprise customers.
Learn more about [SCIM workspace access](/teams/identity-and-access-management/scim#managing-workspace-access).
# July 3, 2026
Source: https://docs.replit.com/updates/2026/07/03/changelog
2 min read
## What's new
* [The redesigned Replit Desktop App](#the-redesigned-replit-desktop-app)
* [Sell in your app with Whop, no setup required](#sell-in-your-app-with-whop)
* [Downgrade from Pro to Core in one step](#downgrade-from-pro-to-core-in-one-step)
## Platform
### The redesigned Replit Desktop App
The redesigned Replit Desktop App brings the full Replit experience to your computer. You get the same building experience as the web, plus native touches: work across several apps at once, see at a glance when Agent needs you or finishes, and preview your open apps without switching between them.
Learn more about the [Replit Desktop App](/features/platforms/desktop-app).
## Integrations
### Sell in your app with Whop
You can now add payments to your app with Whop by asking Agent. Agent creates a Whop account for you, connects it, and builds checkout into your project, with no external setup and no API keys to paste in. Whop is the fastest way to start selling digital products, memberships, and subscriptions.
Learn more about [Whop Payments](/features/monetization/whop-payments).
## Billing
### Downgrade from Pro to Core in one step
You can now move from Replit Pro to Replit Core directly, without canceling your subscription first. Previously the only way down was to cancel, which dropped you to the free plan before you could resubscribe. If you start to cancel, Replit now offers to downgrade to Core instead, so you keep a paid plan and your published apps stay running.
Learn more about [changing your plan](/billing/plans/changing-your-plan).
# July 10, 2026
Source: https://docs.replit.com/updates/2026/07/10/changelog
1 min read
## What's new
* [Buy a domain right inside Replit](#buy-a-domain-right-inside-replit)
* [Connect Excalidraw to Agent](#connect-excalidraw-to-agent)
* [Editors can answer Agent's questions](#editors-can-answer-agents-questions)
## Platform
### Buy a domain right inside Replit
You can now search for and buy a custom domain for your app without leaving Replit. Find an available name, complete checkout, and Replit connects the domain to your published app for you. No separate registrar account to set up.
Learn more about [buying a domain on Replit](/features/publishing/custom-domains#buy-a-new-domain-on-replit).
## Integrations
### Connect Excalidraw to Agent
You can now connect Excalidraw so Agent creates and edits diagrams and whiteboards for you. Sign in once on the Connectors page, then ask Agent to build with Excalidraw across your apps. No credentials to copy or paste.
Learn more about [connectors](/features/integrations/overview#available-connectors).
## Workspace
### Editors can answer Agent's questions
When you build together in a shared app, any editor can now answer Agent's routine questions instead of waiting for the app owner. Sensitive steps, such as connecting an integration or adding a secret, still stay with the owner.
Learn more about [managing app access](/teams/identity-and-access-management/repl-access-management).
# July 17, 2026
Source: https://docs.replit.com/updates/2026/07/17/changelog
1 min read
## What's new
* [Agent suggests connectors when several fit](#agent-suggests-connectors-when-several-fit)
* [Meet the new Tools pane](#meet-the-new-tools-pane)
* [A faster task sidebar](#a-faster-task-sidebar)
## Integrations
### Agent suggests connectors when several fit
When you ask Agent to connect a service and more than one provider works, Agent now shows a short list so you can pick the one you want. Before, Agent had to ask a follow-up question first. Choose a provider, sign in once, and Agent keeps building.
Learn more about [connectors](/features/integrations/overview#let-agent-suggest-a-connector).
## Workspace
### Meet the new Tools pane
Everything your app can use now has one home in your workspace. The new pinned Tools pane brings Database, Auth, Domains, Secrets, and more together in a single place. That makes the full set of tools easy to find at a glance. The tools themselves haven't changed. They just have a clearer home.
Learn more about the [Tools pane](/features/editor/editor-and-tools).
### A faster task sidebar
The task sidebar is now a denser, easier-to-scan task navigator. Each task has its own hover card for quick actions and details, the Task Board has a clearer entry point, and tasks stay put instead of shifting when you expand or collapse the sidebar.
Learn more about the [task lifecycle](/features/agent/task-lifecycle).
# July 24, 2026
Source: https://docs.replit.com/updates/2026/07/24/changelog
3 min read
## What's new
* [A new way to build from your phone](#a-new-way-to-build-from-your-phone)
* [Bring more Slack context to Agent](#bring-more-slack-context-to-agent)
* [More flexibility when changing your Pro plan](#more-flexibility-when-changing-your-pro-plan)
* [Lower prices across Replit Cloud](#lower-prices-across-replit-cloud)
## Mobile
### A new way to build from your phone
The Replit Mobile App has a refreshed home screen and simpler project navigation. Swipe between Agent, tasks, and Preview, describe what you want to build with your voice, and follow Agent progress with improved notifications and Live Activities.
Learn more about the [Replit Mobile App](/features/platforms/mobile-app#navigate-your-project).
## Integrations
### Bring more Slack context to Agent
After you connect Slack, Agent can search the messages, files, channels, and people you can access. It can read private conversations and thread replies, send messages as you, and create or update Slack canvases.
Learn more about [using Slack with Agent](/features/integrations/overview#use-slack-with-agent).
## Billing
### More flexibility when changing your Pro plan
You can now move between individual Pro tiers and change your billing cadence from your billing settings. Replit shows whether your change takes effect now or at the end of your current billing period before you confirm it.
Learn more about [changing your plan](/billing/plans/changing-your-plan#downgrade-your-plan).
### Lower prices across Replit Cloud
Starting August 1, Replit Cloud prices are lower across deployments, App Storage, and outbound data transfer. The new rates apply automatically to published projects at the start of your first billing cycle on or after August 1.
Learn more about the [August cloud pricing updates](/billing/aug-cloud-billing-updates).
# July 31, 2026
Source: https://docs.replit.com/updates/2026/07/31/changelog
3 min read
## What's new
* [Replit Design is live](#replit-design-is-live)
* [Choose Agent's primary model](#choose-agents-primary-model)
* [Connect more MCP servers](#connect-more-mcp-servers)
* [A rebuilt usage page](#a-rebuilt-usage-page)
* [Stay signed in longer](#stay-signed-in-longer)
## Workspace
### Replit Design is live
Replit Design is now live. Describe what you want to create, explore interactive mockups, and refine the direction. When a frame is ready, Core and Pro users can turn it into a working app in the same project.
Learn more about [Replit Design](/design/what-is-replit-design).
## Agent
### Choose Agent's primary model
You can now choose the primary model Agent uses for a task. Select Lite, Economy, or Power, then choose from the available models for that mode. Lite is now available wherever you can use Agent, including in mobile apps. Available models vary by organization, authorization, and Turbo access.
Learn more about the [Model selector](/features/agent/model-selector).
### Connect more MCP servers
Eligible workspaces can connect to Supabase, Statsig, and Calendly from the pre-listed MCP server catalog. Replit also recognizes the official Braintrust MCP endpoint and starts its OAuth sign-in flow when you add it manually.
Learn more about [MCP servers](/features/mcp/overview).
## Billing
### A rebuilt usage page
The redesigned Usage page is rolling out to selected enterprise accounts and new customers. Filter usage by date, resource, project, workspace, group, or member.
Learn more about [viewing usage](/billing/managing-spend#view-usage).
## Teams and Enterprise
### Stay signed in longer
Replit sessions now last longer before you need to sign in again. Enterprise admins can configure Session timeout presets.
# Analytics Dashboard
Source: https://docs.replit.com/billing/teams-billing/analytics-dashboard
View activity, resource usage, published apps, and costs with the Enterprise Analytics Dashboard.
The Analytics Dashboard is available exclusively for Enterprise customers.
The Analytics Dashboard gives Enterprise admins comprehensive visibility into their organization's Replit usage. See engagement metrics, spending breakdowns, and published app performance from a centralized interface.
## Features
### Activity monitoring
See how your organization engages with Replit:
* View active members and their contribution patterns
* See collaboration activity across teams
* Identify usage trends over time
### Resource usage tracking
View spending by member and app:
* See resource consumption broken down by team member
* View usage patterns across individual apps
* Identify high-consumption apps and members
### Publishing oversight
See your organization's published app activity:
* View total published apps with public vs. private access breakdowns
* See publishing frequency, app views, and remix activity
* Review days online, unique viewers, and resource usage per app
### Cost management
View resource consumption and costs across your organization:
* See spending breakdowns by member, team, or app
* Compare costs against budgets and allocations
* Export usage reports for internal accounting
## Accessing the dashboard
To open the Analytics Dashboard:
1. Go to [replit.com](https://replit.com) and sign in to your Enterprise account.
2. Select **Analytics** from the left navigation on the home page.
Contact your dedicated account manager for help using your Analytics Dashboard.
# Cancellation
Source: https://docs.replit.com/billing/teams-billing/cancellation
Learn how to cancel your organization subscription and understand what happens to your resources when you delete your organization.
## Subscription cancellation
You can cancel your subscription by deleting your organization under your organizations advanced settings. Upon deletion of your org, all resources will be deleted (Replit Apps, published apps, Projects, etc.) and you will immediately lose access to the organization.
# Managing Seats
Source: https://docs.replit.com/billing/teams-billing/managing-seats
Learn how to add and remove seats in your organization, including prorated billing and scheduling changes for the next contracted period.
## Where to manage seats
Seats can be managed from **Settings** (under **Account** → **Seats** or your organization's billing section) or the members page. **Note:** After migration to Pro, the billing model changes—Pro has no per-seat fees and supports up to 15 builders. See the [Pro plan](/billing/plans/replit-pro) or [blog](https://blog.replit.com/pro-plan) for current behavior.
## Adding Seats
Adding a seat happens immediately and you will pay a prorated value for the seat for the remainder of your billing period and get a prorated Monthly Credit. For example, if you are half way through the billing period, the seat will cost 50% of the full cost, and the Monthly Credit for the seat will be 50%. At the next billing period cycle, the seat will cost full value and the Monthly Credit will be the full amount.
## Removing Seats
To remove a seat from your organization, that seat must be empty. Any seat that is associated with a user cannot be removed. Removing a seat does not immediately take effect — you will have access to this seat until the end of your current contracted period. At the start of the next contracted period, your organization will have the updated number of seats.
### Adding members to seats scheduled for removal
If you have a seat scheduled to be removed at the start of the next contracted period, you can still add a member to consume that seat. Adding a member will stop that seat from being removed at the start of the next contracted period.
# Overview
Source: https://docs.replit.com/billing/teams-billing/overview
Learn about billing for organizations on Replit Pro, including tiered credits, pooled usage, and migration from the former Teams plan.
## Replit Pro
The **Pro plan** replaced the former Teams plan. Pro has **no per-seat fees**: you get **up to 15 builders** with **pooled credits** and budget controls. Everyone works from the same plan. See [Replit Pro](/billing/plans/replit-pro) for full Pro plan features.
## Billing and usage
Invoices include your plan cost and usage-based charges. To see historic and upcoming bills, visit the usage page. Usage is tracked per workspace so you can see how credits are consumed across your organization. See [Workspaces](/features/collaboration/workspaces) for how projects, teammates, settings, and billing are organized.
## Usage-based pricing
Visit [Usage-based billing](/billing/about-usage-based-billing) for details on compute, data transfer, databases, and other usage.
## Credit packs
If your organization needs additional credits beyond your monthly allowance, you can purchase credit packs in **Settings** → **Account usage** → **Credits** → **Purchase credit pack**.
Credit packs expire six months after the purchase date and do not renew or roll over. Credits are automatically used from the credit pack that expires earliest first. On Pro, unused subscription credits also roll over for .
Credit packs are non-refundable, since they function as prepaid, usage-based value.
# Replit Pro and Enterprise
Source: https://docs.replit.com/category/teams
Have your team build production-ready customer apps and business tools faster with Replit.
Up to 15 builders, pooled credits, Turbo Mode, no per-seat fees — see [pricing](https://replit.com/pricing)
Custom pricing with advanced security and compliance features
Choose the right plan for your organization. **Pro** is the team plan: up to 15 builders with pooled credits and no per-user fees. **Enterprise** adds advanced security, compliance, and support for larger organizations. If you have multiple Teams organizations, each workspace will migrate to its own Pro subscription for the remainder of its term; you can consolidate after migration.
## Pro
Pro provides shared resources and collaborative features for serious builders and teams:
* **Up to 15 builders**: No per-seat fees—everyone works from the same plan with pooled credits
* **Tiered credits**: Multiple tiers. Unused credits roll over for . See the [pricing page](https://replit.com/pricing) for current tiers
* **Turbo Mode**: 2.5x faster Agent via a separate, opt-in toggle (off by default). Available on Pro and Enterprise; on Enterprise, an admin enables it for the organization first.
* **Private Deployments**: Secure app hosting with controlled access
* **Viewer Seats**: Ability for stakeholders and non-builders to use published private apps
* **Unified settings**: Organize apps, track usage per workspace, and manage billing and users from one place
## Enterprise
Enterprise includes all Pro features plus enhanced security, control, and support for organizations:
SOC-2 compliant platform with SSO/SAML, SCIM Provisioning, and advanced security controls.
Manage teams, billing, and resources from a central dashboard. Monitor usage and control costs effectively.
* **SSO/SAML with SCIM Provisioning**: Secure team access with Single Sign-On and automated user provisioning
* **Dedicated Development Environment**: Role-based access control with IDP groups for granular permissions
* **Admin Controls**: Require Private Deployments and mandate a static security scan before publishing
* **Workspace Security Center**: Detect CVEs across dependencies by severity. View affected apps and download SBOMs for compliance.
* **Custom Integration Permissions**: Define access boundaries for first-party integrations across your organization
* **Larger Deployment VMs**: Access expanded VM sizes for scalable app hosting
* **Dedicated Support**: Access your dedicated account manager and sales engineer for platform support
* **Enterprise Data Connectors**: Connect to Snowflake, BigQuery, and Databricks for seamless data integration
* **Unlimited Viewer Seats**: Give stakeholders and non-builders unlimited access to your published private apps
## Essential resources
Learn more about Pro and Enterprise with comprehensive documentation:
Comprehensive guide to user management, permissions, and SSO integration
Detailed information about our security features and compliance standards
Additional documentation:
* [Workspaces](/features/collaboration/workspaces): Understand Personal and Team Workspaces
* [Custom Templates](/teams/custom-templates) — Standardize how your organization builds with Agent
* [Design Systems](/teams/custom-design-system) — Set up your organization's design system for Agent
* [Billing for organizations](/billing/teams-billing/overview)
* [Replit Pro plan](/billing/plans/replit-pro)
## Use cases
Pro and Enterprise support diverse organizational needs across different scales:
* **Enterprise Applications**: Build and publish mission-critical applications with enterprise-grade security and scaling
* **Business Tooling**: Develop and maintain business tools with seamless access management
* **Rapid Prototyping**: Accelerate innovation with instant development environments
Ready to transform your team's development workflow? [Contact our sales team](https://replit.com/teams) for a personalized demo and enterprise pricing information.
# Databricks Connectors
Source: https://docs.replit.com/connectors/warehouses/databricks
Choose and set up a Databricks connector so Replit Agent can build applications backed by your Databricks workspace.
The Databricks connectors are available exclusively on the **Enterprise**
plan.
The Databricks connectors let Replit Agent query your Databricks workspace. Builders can create dashboards, reporting tools, and data applications using natural language. No SQL expertise is required.
Replit supports two Databricks connection types. Choose one based on the identity that should run each query.
## Choose a connection type
| | **User-to-machine (U2M)** | **Service principal (M2M)** |
| ------------------------ | ------------------------------------------------------- | ------------------------------------------- |
| Connector name in Replit | Databricks for Databricks Apps (U2M) | Databricks (Service Principal) |
| Query identity | The individual builder | A shared service principal |
| Databricks permissions | Each builder's Unity Catalog permissions | The service principal's permissions |
| Audit attribution | The builder who ran the query | The service principal |
| Builder sign-in | Each builder signs in with their own Databricks account | No individual Databricks sign-in |
| Best for | Per-user permissions and audit attribution | Shared access and non-interactive workflows |
Use each builder's Databricks identity, permissions, and audit attribution.
Use one shared Databricks identity and permission set for authorized
builders.
## Set up the U2M connector
U2M setup involves three roles:
1. **Databricks account admin**: creates an OAuth app connection and provides SQL Warehouse details.
2. **Replit organization admin**: configures the connector with the OAuth credentials.
3. **Builder**: signs in with their Databricks account and starts building.
### U2M prerequisites
Before you start, confirm you have:
* A Databricks **account admin**. App connections are configured in the account console, not the workspace admin settings.
* A Replit organization admin.
* A Databricks account for every builder who will use the connector.
* Workspace access for every builder, including **Can use** permission on the SQL Warehouse and the required Unity Catalog permissions.
### Step 1: Create an OAuth app connection
You must be a Databricks account admin to complete this step.
The Databricks account admin registers Replit as an OAuth application. The app connection provides the client ID and client secret used to configure Replit.
In your Databricks workspace, open the workspace picker in the top-right corner and select **Manage account**.
In the account console, select **Settings**, then open the **App connections** tab.
Select **Add connection**. Enter an application name that identifies Replit, such as `replit-u2m`.
Under **Redirect URLs**, enter:
```text theme={null}
https://replit.com/connectors/oauth/callback
```
Under **Access scopes**, select **All APIs**. This allows Agent to use Databricks SQL and the Databricks APIs needed to build and manage Databricks Apps.
Select **Generate a client secret**. Databricks cannot add a secret to this connection after it is created.
Set the token lifetimes according to your organization's security policy. The example uses **Access token TTL** `1440` minutes (24 hours) and **Refresh token TTL** `129600` minutes (90 days), the maximum values shown by Databricks. A shorter refresh token lifetime can require builders to sign in more often.
Select **Add**.
**All APIs** grants broader access than SQL alone. Control the connector's effective access with each builder's Databricks permissions.
Copy the **Client ID** and **Client Secret**, then store them in your organization's secret manager.
Databricks displays the client secret once. Record its expiration date and rotate the app connection before the secret expires.
New or updated OAuth app connections can take up to 30 minutes to become
available.
### Step 2: Share the SQL Warehouse details
Each builder enters the SQL Warehouse details when authorizing the U2M connector. Publish these values somewhere your builders can access, such as an internal onboarding page.
In the Databricks workspace, select **SQL Warehouses** and open the warehouse builders should use.
Select **Connection details**, then copy the **Server hostname** and **HTTP path**.
### Step 3: Enable U2M in Replit
You must be a Replit organization admin to configure connectors.
From your Replit account home, open **Settings**, then **Integrations**. Search for `Databricks U2M`, find **Databricks for Databricks Apps (U2M)**, and select **Enable**.
Enter the **Client ID** and **Client Secret** from the Databricks app connection.
Confirm that the redirect URL shown in Replit matches the URL configured in Databricks:
```text theme={null}
https://replit.com/connectors/oauth/callback
```
Under **Connector Scopes**, enable `all-apis` and `offline_access`. The `offline_access` scope gives Replit a refresh token for long-lived sessions.
Select **Configure**.
Confirm that **Databricks for Databricks Apps (U2M)** appears under **Your integrations**.
### Step 4: Sign in as a builder
Each builder signs in with their own Databricks account before using the connector. Replit can refresh the session until the refresh token expires.
On the **Integrations** page, find **Databricks for Databricks Apps (U2M)** and select **Sign in**. Review the connection details, then select **Continue to Databricks for Databricks Apps**.
Enter the SQL Warehouse **HTTP path** provided by your Databricks admin, then select **Next**.
Replit next asks for the SQL Warehouse **Server hostname**. Enter it and continue to Databricks. Sign in when prompted, review the requested access, and approve the request.
Every query Agent runs through this connection uses your Databricks permissions and is attributed to you in Databricks audit logs.
After approval, Databricks returns you to Replit and the connector is ready to use.
## Set up the service principal connector
Service principal setup involves three roles:
1. **Databricks admin**: creates the service principal and grants permissions in Databricks.
2. **Replit organization admin**: configures the connector and access in Replit.
3. **Builder**: starts building with the shared Databricks identity.
### Service principal prerequisites
Before you start, confirm you have:
* Databricks account admin or workspace admin access.
* Replit organization admin access.
### Step 1: Create a service principal in Databricks
You must be a Databricks account admin or workspace admin to complete this
step.
The Databricks admin creates a machine-to-machine identity, called a [service principal](https://docs.databricks.com/aws/en/admin/users-groups/service-principals), that Replit uses to connect to Databricks.
In Databricks, select your avatar in the top-right corner, then select **Settings**.
In the Settings sidebar, select **Identity and access**.
Under **Management and permissions**, find **Service principals** and select **Manage**.
Select **Add service principal**, then select **Add new**.
Enter a clear name for the service principal, then select **Add**.
After Databricks creates the service principal, confirm it is active. Keep this page open if you need the service principal details while configuring the Replit connector.
Open the **Permissions** tab, select **Grant access**, choose the service principal, set the permission to **Manage**, then select **Save**.
### Step 2: Get your SQL Warehouse connection details
The Replit connector needs Databricks SQL Warehouse connection details to route queries to the right compute resource.
In the Databricks sidebar, select **SQL Warehouses**.
Select the SQL Warehouse you want Replit Agent to use. If you do not already have one, select **Create SQL warehouse** and create a new warehouse.
Open the warehouse and select **Connection details**. Locate the **Server hostname** and **HTTP path** values. You need these values when creating the Databricks connector in Replit.
### Step 3: Create the Databricks connector in Replit
You must be a Replit organization admin to configure connectors.
The Replit admin adds the Databricks connection details to Replit so builders can use the connector.
From your Replit account home, open the **Integrations** page. Under **Connectors**, find **Databricks (Service Principal)** and select **Sign in**.
Replit shows a confirmation dialog before redirecting to Databricks for authentication. Review the details and select **Continue to Databricks**.
Paste the **HTTP path** from your Databricks SQL Warehouse connection details (for example, `/sql/1.0/warehouses/abcdef1234567890`), then select **Next**.
Paste the **Server hostname** from the same connection details (for example, `abc-12345678-wxyz.cloud.databricks.com`), then select **Continue to Databricks** to complete authentication.
Use Role-Based Access Control to choose which members or groups in your organization can use this connector.
Back on the **Integrations** page, confirm that **Databricks (Service Principal)** appears under **Connectors** with an **Active** connection status.
## Build with Agent
After connecting with either method, builders can create applications that use Databricks data with Agent.
Select the **Databricks App** template when you want to deploy the finished app to your Databricks environment. You do not need the template to use a configured connector to access Databricks data and assets.
From the Replit home page, open the template selector and choose **Databricks App**.
Add your prompt after the prefilled instructions. For inspiration, browse the [Databricks Dev Hub templates](https://www.databricks.com/devhub/templates).
Review the SQL Agent generates, the tables it queries, and the application structure. Ask for changes in natural language.
## Troubleshooting
Check the Databricks permissions for the identity running the query. With
U2M, this is the individual builder. With the service principal connector,
it is the shared service principal. The identity may have metadata access
but no read permission on the data. Grant the required catalog, schema, or
table permissions and try again.
Verify that the **Server hostname** and **HTTP path** match the SQL Warehouse
connection details in Databricks. For U2M, check the values entered by the
affected builder. Also confirm that the warehouse is running and the query
identity has permission to use it.
For U2M, confirm the Databricks app connection lists
`https://replit.com/connectors/oauth/callback` under **Redirect URLs**, with
no trailing slash. If authentication fails for every builder, verify the
shared Client ID and Client Secret, confirm the secret has not expired, and
make sure the scopes in Replit match the Databricks app connection.
For the service principal connector, verify that the service principal
details entered in Replit match the service principal created in Databricks.
If credentials were rotated, update the connector in Replit.
This can happen with U2M when the refresh token expires or is revoked.
Complete the Databricks authorization flow again. If builders must reconnect
more often than your security policy requires, review the app connection's
token lifetimes.
## Related documentation
* [Warehouse connectors overview](/connectors/warehouses/overview): all supported warehouse connectors.
* [Connect Snowflake](/connectors/warehouses/snowflake): step-by-step Snowflake setup.
* [Managing your connectors](/replitai/managing-connectors): connector management and configuration.
* [Databricks OAuth user-to-machine authorization](https://docs.databricks.com/aws/en/dev-tools/auth/oauth-u2m): Databricks documentation on U2M OAuth.
* [Enable custom OAuth applications in Databricks](https://docs.databricks.com/aws/en/integrations/enable-disable-oauth): Databricks documentation on app connections.
* [Databricks service principals](https://docs.databricks.com/aws/en/admin/users-groups/service-principals): Databricks documentation on service principals.
* [Databricks SQL Warehouses](https://docs.databricks.com/aws/en/compute/sql-warehouse/): Databricks documentation on SQL Warehouse compute.
# Build Data Apps on Microsoft Fabric
Source: https://docs.replit.com/connectors/warehouses/microsoft-fabric
Build and publish data apps on Microsoft Fabric with Replit Agent.
Build AI-powered apps in Replit and publish them directly into Microsoft Fabric, with enterprise-grade governance and security built in. The Microsoft Fabric integration turns governed enterprise data into internal tools such as dashboards, workflows, and AI applications. Teams go from prompt to production faster, while authentication and access policies stay inside the Fabric environment they already trust.
## What a Fabric data app is
A Fabric data app is a static React app that renders Power BI charts by running [Data Analysis Expressions (DAX)](https://learn.microsoft.com/en-us/dax/) queries against a [Power BI semantic model](https://learn.microsoft.com/en-us/power-bi/connect-data/service-datasets-understand). A few characteristics shape how you build with it:
* **Power BI semantic models are the data source.** Charts are driven by DAX queries against the semantic models (datasets) you connect.
* **Read-only by design.** The app reads data with DAX `EVALUATE`; it does not write back to Power BI. If you need writable state, use a separate application database alongside the dashboard.
* **Rendered through the Fabric portal.** The data layer runs inside the Microsoft Fabric portal, which executes your queries against the semantic model and returns results to the app. Your data stays within your Fabric environment.
* **Hosted on Microsoft infrastructure.** You can publish a finished data app to Microsoft's hosting so it runs alongside the rest of your Fabric environment.
Microsoft Fabric data apps require access to a Microsoft Fabric tenant with Power BI semantic models, and—during preview—membership in the approved tester program.
Behind the scenes, [Rayfin](https://github.com/microsoft/rayfin) (an open-source SDK and CLI for building application backends) lets Agent define and publish production-ready apps on top of your Fabric data.
You stay in a single workflow: describe the app, let Agent scaffold it, connect to governed Fabric data, and publish to run within your organization's Fabric tenant.
This guide covers the builder flow, how the app connects to Fabric data, and the options for teams and automation. For general data dashboards backed by other warehouses, see [Data Visualization](/features/artifact-types/data-apps).
## Use-cases
For organizations already invested in the Microsoft data ecosystem, this is a much faster path to internal software. Instead of spending weeks wiring together authentication, APIs, deployment tooling, and governance policies, teams describe what they want and let Agent build it.
Common use cases include:
* Department-specific productivity tools
* Operational dashboards
* Data exploration tools
* Workflow automation apps
* Reporting interfaces
For enterprise IT, governance, authentication, and security stay inside the Fabric environment your organization already manages, so rapid app creation does not come at the cost of centralized control.
## Build a Fabric data app
The builder flow is conversational. You stay in Replit the whole time; authentication and data access happen through Microsoft when prompted.
On the Replit home page, open the **Templates** dropdown and choose **Microsoft Fabric App** under **Org templates**. This puts Agent into the data-app workflow with the Fabric tooling preloaded.
Type a prompt describing the dashboard or reporting tool to build. For example: "Build a month-over-month sales growth dashboard from our Fabric sales model." You do not need to write DAX—Agent generates the queries.
When prompted, sign in with Microsoft OAuth against the tenant that holds your Fabric data. This authorizes Agent to read the semantic models you have access to. The identity you sign in with must have access to the Fabric workspace you want to use.
When Agent asks, share the Power BI / Fabric semantic model you want to use. You can provide either the full dataset URL from the Fabric portal (for example, `https://app.powerbi.com/groups//datasets//...`) or the workspace ID plus the dataset/item ID. Agent uses these to identify the workspace and semantic model to query.
The model must be **published to the Power BI service**—local `.pbix` files can't be used.
Agent explores the semantic model's schema, writes DAX queries, and assembles the dashboard with appropriate charts. Review the result and ask for changes in natural language—add a filter, change a chart type, or add another metric.
When the dashboard is ready, you can publish it to Microsoft's hosting so it runs within your Fabric environment. The publishing story is covered separately; this guide focuses on connecting to data and building the app.
## Connecting to Fabric data
To read data, the app needs an authorized connection to Microsoft Fabric. Replit establishes that connection in one of two ways.
### App-level Fabric sign-in (viewers)
Viewers of a published data app never configure a connector. They authenticate through the app's embedded Microsoft Fabric single sign-on, and the app reads data as their identity through the Fabric portal. This keeps access governed by your existing Fabric permissions.
### The Microsoft Fabric connector (the easy path for builders)
For builders, the **Microsoft Fabric connector** is the convenient way to authorize data access during development. It is optional—an easy path, not a requirement.
* The first builder to set it up completes a **one-time OAuth** with Microsoft.
* Other collaborators **in the same project inherit** that connection.
* A **different workspace** must enable the connector and complete its own OAuth.
* The OAuth'd identity must have access to the target Fabric workspace.
The connector uses Microsoft Entra OAuth and is scoped to your tenant. Manage it from your project's [Integrations](/features/integrations/overview) page like any other Replit connector. For broader connector concepts, see [Managing your connectors](/replitai/managing-connectors).
During private preview, there are no shared Replit-managed credentials for the Microsoft Fabric connector. Builders authorize against their own Microsoft Entra tenant.
## Teams and automation
For shared team usage or non-interactive environments (such as CI), interactive OAuth is not always practical. In those cases, supply a **service principal** token through your project [Secrets](/core-concepts/project-editor/app-setup/secrets) instead of signing in interactively. The app uses the service principal's identity to read Fabric data.
This is the closest analog to a machine-to-machine setup: a non-human identity, provisioned in Microsoft Entra and granted Fabric workspace access, authenticates the app without a person in the loop. Confirm the service principal has access to the workspaces and semantic models the app queries.
## Troubleshooting
The Fabric data layer runs through the Microsoft Fabric portal. If charts render empty or the app preview fails to load data, confirm you completed the Microsoft sign-in and that the signed-in identity has access to the workspace and semantic model you linked.
Make sure you pasted the Power BI dataset link from the Fabric portal and that your identity (or service principal) has at least read access to that workspace. Re-share the dataset link if Agent reports it cannot resolve the workspace or model.
Re-authorize the Microsoft Fabric connector from the project [Integrations](/features/integrations/overview) page. Confirm the OAuth'd identity has Fabric workspace access. For team or CI use, prefer a service principal token supplied through Secrets.
## Related documentation
* [Data Visualization](/features/artifact-types/data-apps): build dashboards and reporting tools with Agent.
* [Warehouse connectors overview](/connectors/warehouses/overview): all supported warehouse connectors.
* [Managing your connectors](/replitai/managing-connectors): connector management and configuration.
* [Microsoft Fabric documentation](https://learn.microsoft.com/en-us/fabric/): Microsoft's documentation for Fabric and Power BI.
# Warehouse Connectors
Source: https://docs.replit.com/connectors/warehouses/overview
Connect Replit Agent to data warehouses (BigQuery, Databricks, Snowflake) and analytics platforms to build data-driven applications.
Warehouse connectors let Replit Agent securely query your organization's data warehouses. Builders use natural language to create dashboards, reporting tools, and data applications — no SQL expertise required. Admins keep centralized control with role-based access.
## Supported warehouses
Warehouse connectors are available on **Enterprise** plans.
| Warehouse | Setup guide |
| ---------------- | ------------------------------------------------------------------------------------------------ |
| BigQuery | Coming soon |
| Databricks | [Connect Databricks](/connectors/warehouses/databricks) |
| Microsoft Fabric | [Build data apps on Microsoft Fabric](/connectors/warehouses/microsoft-fabric) (private preview) |
| Snowflake | [Connect Snowflake](/connectors/warehouses/snowflake) |
Each warehouse has its own setup flow because the OAuth integration, identity model, and credential format differ. Pick the warehouse you use and follow its dedicated guide.
## Analytics and data platforms
Analytics connectors are available on Core and Pro plans alongside Enterprise. Connect your analytics tools so Agent can read and work with your product data:
* **Segment** — Customer data, event streams, and audience segments from your CDP
* **Amplitude** — Product analytics, user behavior data, and engagement metrics
* **Hex** — Collaborative data notebooks and query results
Manage these the same way as other Replit connectors. See [Managing your connectors](/replitai/managing-connectors).
## How warehouse connectors work
Setup is a one-time process that involves three roles:
1. **Warehouse admin** — Creates an OAuth integration or service identity in the warehouse
2. **Replit organization admin** — Adds the credentials to Replit and configures access
3. **Builder** — Signs in and starts building with Agent
Once configured, builders ask Agent to use the warehouse and Agent writes and executes SQL against it.
### Building with warehouse data
After connecting, you can ask Agent to build applications that use your data. Agent can:
* Build internal tools that fetch and display live data
* Create dashboards with charts and visualizations backed by your warehouse
* Generate SQL queries to power your application's backend
* Explain schema and table structures to help you understand what to build
While Agent can answer ad-hoc questions about your data, the primary purpose of warehouse connectors is to enable Agent to build functional applications that leverage your organization's data. Warehouse queries are executed directly against your instance, so make sure your OAuth scopes and database user permissions allow the necessary read and write operations.
## Connector availability
| Connector | Starter | Core | Pro | Enterprise |
| ---------------- | ------- | ---- | --- | ------------------- |
| BigQuery | — | — | — | ✅ |
| Databricks | — | — | — | ✅ |
| Microsoft Fabric | — | — | — | ✅ (private preview) |
| Snowflake | — | — | — | ✅ |
| Segment | — | ✅ | ✅ | ✅ |
| Amplitude | — | ✅ | ✅ | ✅ |
| Hex | — | ✅ | ✅ | ✅ |
## Related documentation
* [Connect Databricks](/connectors/warehouses/databricks) — Step-by-step Databricks setup
* [Build data apps on Microsoft Fabric](/connectors/warehouses/microsoft-fabric) — Build dashboards backed by Power BI semantic models (private preview)
* [Connect Snowflake](/connectors/warehouses/snowflake) — Step-by-step Snowflake setup with OAuth configuration and troubleshooting
* [Managing your connectors](/replitai/managing-connectors) — Connector management on collaborative workspaces in Core and Pro, and across organizations in Enterprise
* [Connectors overview](/features/integrations/overview) — Learn about all integration types
* [Workspaces](/features/collaboration/workspaces) — Understand Personal and Team Workspaces
# Snowflake Connectors
Source: https://docs.replit.com/connectors/warehouses/snowflake
Set up a Snowflake connector to build data-driven applications with Replit Agent.
The Snowflake connector is available exclusively on the **Enterprise** plan.
Warehouse Connectors let Replit Agent query your organization's data warehouses. With the Snowflake connector, builders can create dashboards, reporting tools, and data applications using natural language — no SQL expertise required.
Setup is a one-time process that requires a Snowflake admin and a Replit workspace admin. Once configured, any organization member can sign in and start building with Snowflake data.
This guide walks you through the full setup. Three roles are involved:
1. **Snowflake Account Admin** — Creates the OAuth integration in Snowflake
2. **Replit Workspace Admin** — Configures the connector in Replit
3. **Builder** — Signs in and starts building
## Create the OAuth integration in Snowflake
The Snowflake Account Admin creates an OAuth Security Integration that allows Replit to authenticate with Snowflake.
### Prerequisites
* `ACCOUNTADMIN` role in Snowflake
* Access to run SQL in Snowflake worksheets
### Run the setup script
Open your Snowflake account and make sure you are using the `ACCOUNTADMIN` role. You can verify this in the role dropdown in the top-right corner.
Click **Worksheets** in the left sidebar and create a new worksheet.
Copy and paste the following SQL script and run it:
```sql Create OAuth integration theme={null}
-- Drop existing integration if needed
DROP INTEGRATION IF EXISTS REPLIT_OAUTH;
-- Create OAuth integration for Replit
CREATE SECURITY INTEGRATION REPLIT_OAUTH
TYPE = OAUTH
ENABLED = TRUE
OAUTH_CLIENT = CUSTOM
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://replit.com/connectors/oauth/callback'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = 7776000
OAUTH_ALLOW_NON_TLS_REDIRECT_URI = FALSE
BLOCKED_ROLES_LIST = ()
COMMENT = 'OAuth integration for Replit connector';
```
The redirect URI must be exactly `https://replit.com/connectors/oauth/callback`. Any other value causes a 404 error during authentication.
Setting `BLOCKED_ROLES_LIST = ()` ensures no roles are blocked from using the integration. Without this, you may get "invalid consent request" or "role blocked" errors when connecting.
Run this query to get the Client ID and Client Secret:
```sql Get OAuth credentials theme={null}
-- View integration details
DESCRIBE INTEGRATION REPLIT_OAUTH;
-- Get Client ID and Secret
WITH secrets AS (
SELECT PARSE_JSON(
SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('REPLIT_OAUTH')
) as creds
)
SELECT
creds:OAUTH_CLIENT_ID::STRING as CLIENT_ID,
creds:OAUTH_CLIENT_SECRET::STRING as CLIENT_SECRET
FROM secrets;
```
Copy the **Client ID** and **Client Secret** from the output. You need these for the next step.
## Configure the connector in Replit
The Replit Workspace Admin adds the Snowflake credentials to Replit. Once configured, anyone in the organization can sign in.
This step requires an Enterprise plan with admin access.
Go to your organization's settings and select the **Integrations** tab.
Click **Add New Connector** and select **Snowflake**.
Provide the **Client ID** and **Client Secret** from the previous step.
Set the connector scope to `refresh_token`.
Only use the `refresh_token` scope. Other scopes like `session:role-any` or `session:role:PUBLIC` may cause an "invalid scope" error.
Click **Save** to enable the connector.
## Sign in to Snowflake
Any organization member with access to the connector can sign in. Sign in from the **Integrations** page first to verify the connection before using it with Agent.
Go to **Integrations** in Replit. Under **Connectors**, find **Snowflake**.
Click **Sign In** on the Snowflake connector.
The OAuth prompt asks for your Snowflake Account ID.
To find your Account ID, look at your Snowflake URL:
```
https://app.snowflake.com/myorg/myaccount
```
Take the two parts after `app.snowflake.com/` and join them with a hyphen:
```
myorg-myaccount
```
The URL uses a `/` between the two parts, but the Account ID uses a `-` instead.
Snowflake redirects you to the login page. Enter your Snowflake credentials to complete the OAuth flow.
## Start building with your Snowflake data
After connecting, you can use the Snowflake connector with Agent in two ways:
* **Slash command** — Type `/snowflake` in the prompt to use the connector
* **Natural language** — Ask Agent to use your Snowflake data directly
Here is an example prompt:
```
Build me a dashboard using my Snowflake data. Show total revenue
by region with a bar chart, a trend line by quarter, and a table
of top 10 customers. Dark theme, clean and modern.
```
Agent writes and executes SQL queries against your Snowflake data and builds a working application.
## Troubleshooting
Your Snowflake integration may have roles blocked by default.
Verify your integration was created with `BLOCKED_ROLES_LIST = ()`. If you already created it without this setting, run:
```sql Fix blocked roles theme={null}
CREATE OR REPLACE SECURITY INTEGRATION REPLIT_OAUTH
TYPE = OAUTH
ENABLED = TRUE
OAUTH_CLIENT = CUSTOM
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://replit.com/connectors/oauth/callback'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = 7776000
OAUTH_ALLOW_NON_TLS_REDIRECT_URI = FALSE
BLOCKED_ROLES_LIST = ()
COMMENT = 'OAuth integration for Replit connector';
```
If the error persists, check that your default role is not blocked:
```sql Set default role theme={null}
ALTER USER "YOUR_USERNAME" SET DEFAULT_ROLE = 'PUBLIC';
```
Verify that the redirect URI in your Snowflake integration is exactly:
```
https://replit.com/connectors/oauth/callback
```
Any mismatch causes a 404 during the OAuth flow.
Make sure the connector scope in Replit is set to `refresh_token` only. Remove any other scopes like `session:role-any` or `session:role:PUBLIC`.
Verify that the Client ID and Client Secret in Replit match what Snowflake generated. Re-check by running:
```sql Verify credentials theme={null}
WITH secrets AS (
SELECT PARSE_JSON(
SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('REPLIT_OAUTH')
) as creds
)
SELECT
creds:OAUTH_CLIENT_ID::STRING as CLIENT_ID,
creds:OAUTH_CLIENT_SECRET::STRING as CLIENT_SECRET
FROM secrets;
```
## Related documentation
* [Warehouse connectors overview](/connectors/warehouses/overview) — Overview of all supported warehouse connectors
* [Connect Databricks](/connectors/warehouses/databricks) — Step-by-step Databricks setup
* [Managing your connectors](/replitai/managing-connectors) — Connector management and configuration
* [Snowflake — Configure OAuth for custom clients](https://docs.snowflake.com/en/user-guide/oauth-custom) — Snowflake's OAuth documentation
# Account and access
Source: https://docs.replit.com/help/account-and-access
Answers to common account questions—resetting passwords, recovering access, changing your email or username, deleting your account, appealing suspensions, and corporate network access.
These answers cover account access and security. For account deletion details, see [Deleting your data](/legal-and-security-info/deleting-your-data); for suspensions, see the [strike system FAQ](/legal-and-security-info/strike-system-faq).
1. Go to [replit.com/forgot](https://replit.com/forgot).
2. Enter the email tied to your account.
3. Open the reset email from `notifications@replit.com`—check your spam folder if you don't see it.
4. Select the link and create a new password.
If you signed up with Google, GitHub, Facebook, or Apple, use the same page to create a standalone password. If the email doesn't arrive, confirm you're entering the exact email you signed up with.
Try these in order:
1. Reset your password at [replit.com/forgot](https://replit.com/forgot), and check your spam folder for the email.
2. If you signed up with Google, GitHub, or Apple, use the **Continue with \[provider]** button rather than the email and password form.
3. Confirm you're using the email you signed up with—you may have used a different one.
If none of these work, [contact Replit Support](https://replit.com/support).
Act quickly:
1. Reset your password at [replit.com/forgot](https://replit.com/forgot).
2. Sign out of other active sessions from your account security settings.
3. [Contact Replit Support](https://replit.com/support) with details of what you noticed.
If you're seeing projects that aren't yours, you may be signed in to the wrong account—check the account name in the top-right corner.
To change your username, run the `account > change-username` command in [CLUI](/features/workspace-tools/clui-graphical-cli) and submit your new username. You can change your username only once.
To change your email, go to **Settings → Profile**, then edit your email. If you can't complete identity verification, [contact Replit Support](https://replit.com/support) with your current and new email addresses.
Download anything you want to keep first—deletion can't be undone. On the web, cancel any active subscription, then go to **Settings → Profile** and request account deletion. On mobile, open **Account → More → Delete account** in the Replit app. See [Deleting your data](/legal-and-security-info/deleting-your-data).
This happens when you sign up one way (such as email) and later sign in another way (such as Google), creating a second account.
1. Try logging in with both methods to confirm there are two accounts.
2. Decide which to keep.
3. Copy any projects from the account you're closing—use **Download as zip** or fork them.
4. Delete the account you don't need from **Settings → Profile**.
If you're not sure which account holds your subscription or projects, [contact Replit Support](https://replit.com/support).
You likely have multiple accounts connected to the same login provider. Try logging in with a different method—email and password, or a different provider—to reach the account you want. If you need help identifying which method maps to which account, [contact Replit Support](https://replit.com/support) with your username.
The `workspace.*.repl.co` SSH hostname has been retired. Open the [SSH](/features/workspace-tools/ssh) pane in your project and copy the current connection command—it uses a `*.replit.dev` address. Update any scripts or SSH config that still reference the old `repl.co` address.
Replit suspends accounts that violate its Terms of Service or community guidelines, and a billing dispute or chargeback can trigger an automatic hold. First, check your email (including spam) for a message explaining the reason.
If it's billing-related, resolve the outstanding invoice in **Settings → Billing**. If you believe the suspension was an error, [contact Replit Support](https://replit.com/support) with your username, your registered email, and a brief explanation. See the [strike system FAQ](/legal-and-security-info/strike-system-faq) and [trust and safety](/legal-and-security-info/trust-and-safety).
A corporate or school network can block Replit even when your account is fine. The usual symptoms are a sign-up button that spins forever, a blank workspace, repeated disconnects, or a Cloudflare "Attention Required!" 403 page. These happen when corporate security tools—SSL/TLS inspection appliances, header-rewriting proxies, or low-reputation shared egress IPs—interfere with the connections Replit relies on.
First, confirm the network is the cause:
1. Retry on a different network, such as a personal phone hotspot, using the same browser.
2. Try an incognito or private window, and a browser without managed extensions or policies.
If Replit works off the corporate network but not on it, ask your IT team to allowlist Replit. Allowlisting by domain is more reliable than by IP address, because Replit's IP addresses change. Ask them to allow these domains:
* `replit.com` and `*.replit.com`—the main site and static assets
* `*.replit.dev`—development URLs
* `*.replit.app`—published apps
* `*.repl.co`—legacy development URLs
* `replit-com-static.b-cdn.net`—fonts
* `replitcdn.b-cdn.net`—media
Replit uses persistent WebSocket connections, frequent API calls, and auth-token exchanges across these domains, so also ask your IT team to check the following:
* **SSL/TLS inspection**—add a certificate-inspection bypass for the domains above. Inspection proxies can silently fail on Replit's certificates and leave pages hanging with no visible error.
* **Header rewriting**—proxy rules that modify, strip, or inject HTTP headers break cross-domain API and authentication calls.
* **WebSocket traffic**—allow `wss://` connections to the domains above.
* **Browser policies**—Group Policy or MDM rules that block cookie persistence or third-party cookies for non-allowlisted domains can break sign-in.
* **DNS resolver**—confirm `replit.com` and a `*.replit.dev` hostname resolve, and compare against a public resolver such as `8.8.8.8` or `1.1.1.1`. Split-horizon or filtering resolvers sometimes return no record for development URLs.
If Replit still fails on the corporate network after your IT team applies these changes, [contact Replit Support](https://replit.com/support) with your username and the exact error or Cloudflare Ray ID you see.
Connectors use OAuth tokens that can expire or be revoked. To reconnect, open **Tools → Connectors**, disconnect the broken connector, then connect again and re-authorize. The token updates in your project [Secrets](/core-concepts/project-editor/app-setup/secrets) automatically.
If it reconnects but still fails, confirm your account with the third-party service is active and has the right permissions. See [Managing connectors](/replitai/managing-connectors) and the [integrations overview](/features/integrations/overview).
Accounts can't be transferred directly—an account is tied to the credentials that created it. To hand over a specific project instead, have the new owner create an account. Share the project with them and ask them to fork it into their account. To change the email on your current account, go to **Settings → Profile** and edit your email. Subscriptions can't be transferred—the new owner needs their own. For a business account handoff, [contact Replit Support](https://replit.com/support).
## Still need help?
If your account question isn't answered here, [contact Replit Support](https://replit.com/support).
# Agent and AI
Source: https://docs.replit.com/help/agent-and-ai
Answers to common Agent questions—fixing a frozen or looping Agent, reducing costs, Agent modes, rolling back changes, and using your own API keys.
These answers cover working with Agent. For full reference, see the [Agent overview](/features/agent/overview), [Agent modes](/features/agent/agent-modes), and [AI billing](/billing/ai-billing).
1. Open the command palette with `Cmd+K` (Mac) or `Ctrl+K` (Windows).
2. Search for **Restart compute** and select it to restart the development environment.
3. Open a new Agent chat and describe your task again to continue.
While Agent looks frozen, stop sending messages—extra messages create conflicting instructions. If Agent keeps freezing on the same task, break the work into smaller, focused prompts.
1. Select **Stop** in the Agent panel to halt it immediately.
2. Open the command palette with `Cmd+K` (Mac) or `Ctrl+K` (Windows), search for **Restart compute**, and select it.
3. Open a new Agent chat and rephrase your task more specifically.
To avoid loops:
* Break large tasks into smaller prompts—one goal per message.
* Use [Plan mode](/features/agent/plan-mode) to scope the work before Agent builds.
* Set a usage limit in [Managing your spend](/billing/managing-spend) so a loop can't run up a large bill.
Three settings make the biggest difference:
* **[Economy mode](/features/agent/agent-modes)**—uses fewer credits per task and is a good default for everyday builds.
* **[Plan mode](/features/agent/plan-mode)**—scope and approve work before Agent builds, so you don't pay for changes you didn't want.
* **Usage limit and budget**—set a hard cap in [Managing your spend](/billing/managing-spend).
It also helps to start a new Agent chat when you switch tasks. Check your usage dashboard to see which tasks cost the most.
Agent has three top-level modes. See [Agent modes](/features/agent/agent-modes) for full guidance.
* **Lite**—fast, lightweight models for quick, scoped edits.
* **Economy**—optimized for cost; a strong default for everyday builds.
* **Power**—the most capable models for complex tasks and larger codebases.
* **Turbo**—a toggle in Advanced settings, available in Power mode, that runs the fastest models. It's significantly faster but costs more, so use it intentionally.
Separately, [Plan mode](/features/agent/plan-mode) lets Agent scope work before making changes, while Build mode applies changes directly. See [Plan vs. Build mode](/learn/plan-vs-build-mode). All modes use credits, including Plan mode reasoning.
Replit saves [checkpoints](/features/version-control/checkpoints-and-rollbacks) as Agent works. In the Agent chat, find the message before the change you want to undo and select the rollback option next to it to restore your project to that point.
For full rollback options—including recovering specific files—see [Checkpoints and rollbacks](/features/version-control/checkpoints-and-rollbacks).
During the build and edit phase, Agent works in a sandboxed environment with restricted outbound access. Your published app can still make external API calls when it runs—the sandbox applies to Agent's editing environment, not your running app.
If an API call fails in your running app, confirm your keys are saved in the [Secrets](/core-concepts/project-editor/app-setup/secrets) pane, then check the provider's status page. On a corporate or school network, outbound connections from your app may be blocked—check with your network admin.
Yes. Add your keys to the [Secrets](/core-concepts/project-editor/app-setup/secrets) pane and your app uses them for its API calls. Open the **Secrets** tool, select **+ New secret**, and enter a name (such as `OPENAI_API_KEY`) and value.
You can [bring your own AI provider keys](/features/integrations/replit-ai-integrations) for the models your app calls. The model that powers the Agent experience itself runs on Replit's infrastructure and can't be swapped.
Keep Agent focused with tighter prompts:
* Start with the word *Only*—for example, "Only add a delete button to the user card. Don't change anything else."
* Use [Plan mode](/features/agent/plan-mode) first to review what Agent intends to do before it changes anything.
* If Agent makes an unwanted change, ask it to undo that change in the same chat right away.
For more, see [Effective prompting](/learn/effective-prompting).
## Still need help?
If your Agent question isn't answered here, [contact Replit Support](https://replit.com/support).
# Billing and refunds
Source: https://docs.replit.com/help/billing-and-refunds
Answers to common billing questions—billing thresholds, refund eligibility, unexpected charges, storage costs, and how to read your invoices.
These answers cover the billing questions Replit builders ask most often. For how usage-based billing works in detail, see [Usage-based billing](/billing/about-usage-based-billing) and [Managing your spend](/billing/managing-spend).
Replit bills for usage above your included monthly credits when that usage reaches a set amount—a *billing threshold*—rather than only at the end of the cycle. Your Core plan includes in monthly credits, and Agent usage beyond those credits is billed separately once it reaches the threshold.
To keep future charges lower:
1. Use [Plan mode](/features/agent/plan-mode) to scope and approve work before Agent builds, so you avoid costly rework.
2. Use [Economy mode](/features/agent/agent-modes) for everyday builds, which uses fewer credits per task.
3. Set a usage limit and budget in [Managing your spend](/billing/managing-spend) to cap charges beyond your credits.
4. Start a new Agent chat for each new task to keep context short.
To see what triggered a charge, open **Settings → Account usage** and select **See previous invoices**.
When you subscribe through the App Store or Google Play, Apple or Google handles billing, so payment options don't appear inside the mobile app. Manage payments on the web instead:
1. Open a browser and go to **Settings → Billing**.
2. Select **Update payment method**.
3. Enter your card details and save.
After you add a web payment method, you can manage billing and purchase credit packs from the **Billing** tab. See [Managing your spend](/billing/managing-spend) for credit pack details.
Refund eligibility depends on your plan and what you're asking to refund. Keep these points in mind:
* Agent and AI usage charges are non-refundable, because each charge reflects compute that was already used.
* [Custom domain registration fees are non-refundable](/build/domain-purchasing).
For subscription-fee refunds, [contact Replit Support](https://replit.com/support) from your registered email and include your reason for the request. Cancel your subscription first from **Settings → Billing**.
Exact subscription refund windows and eligibility are confirmed by the support team for your specific account and plan.
Agent and AI usage charges are non-refundable, because each charge reflects compute that Replit already used to run your tasks. You can prevent future surprises:
1. Open **Settings → Account usage** and set a usage limit and budget. See [Managing your spend](/billing/managing-spend).
2. Use [Economy mode](/features/agent/agent-modes) for cost-conscious builds.
3. Use [Plan mode](/features/agent/plan-mode) to scope work before Agent builds and reduce rework.
If you think a charge was made in error, gather the charge amount, the date, and your payment intent ID. The ID starts with `pi_` and appears on the invoice detail page. Then [contact Replit Support](https://replit.com/support).
A charge after cancellation usually comes from one of two things:
* Usage from before you canceled that didn't reach its billing threshold until after your cancellation date.
* A retry of an earlier failed payment for a previous billing period.
To review it, open **Settings → Account usage**, select **See previous invoices**, and check the invoice date and the usage period it covers. If it still looks wrong, [contact Replit Support](https://replit.com/support) and include your `pi_` payment intent ID.
Storage charges appear when your stored data exceeds your plan's included limit. See [Usage-based billing](/billing/about-usage-based-billing) for how storage is metered and [Object storage billing](/billing/object-storage-billing) for object storage costs.
To find what's using space, open a Shell in your project and run:
```bash theme={null}
du -sh *
du -ah | sort -rh | head -20
```
Then remove build artifacts (such as `.cache` or `dist`), old logs, and unused uploads, and clear old data from your database. After you free up space, future storage charges stop building up.
[Custom domain registration fees are non-refundable](/build/domain-purchasing), because domain registrations involve third-party costs that can't be reversed once processed.
If you registered a domain by mistake or want to transfer it, [contact Replit Support](https://replit.com/support) with your domain name and the email linked to your account. The team will explain your options.
Billing holds can take a short time to clear after a payment is confirmed. Try these steps:
1. Hard-refresh your browser with `Cmd+Shift+R` (Mac) or `Ctrl+Shift+R` (Windows).
2. Sign out and sign back in to reload your account status.
3. Open **Settings → Account usage**, select **See previous invoices**, and confirm the invoice shows as paid.
Deployments don't restart automatically after a hold is lifted. If your app is still offline, open **Publishing** and select **Publish** to push it live again. If your account stays suspended, [contact Replit Support](https://replit.com/support).
Before disputing a charge with your bank, identify it first:
1. Open **Settings → Account usage**, select **See previous invoices**, and review the date, amount, and description.
2. Check whether anyone else has access to your account or payment method.
3. Look for a Replit billing email around the charge date, including in your spam folder.
Charges are usually a subscription fee, a usage charge that hit a billing threshold, or a credit pack purchase.
Contact Replit Support *before* disputing a charge with your bank—a chargeback can lock your account.
[Contact Replit Support](https://replit.com/support) with your `pi_` payment intent ID, the charge amount, and the date.
Most declines come from your bank or card issuer, not Replit—often an automatic security block on an unfamiliar transaction. Try these in order:
1. Add a different card at **Settings → Billing → Update payment method** and try again.
2. Call your bank, tell them you're authorizing a payment to Replit, and ask them to approve it.
3. If your card restricts international purchases, ask your bank to allow them.
If the decline continues, [contact Replit Support](https://replit.com/support).
Two identical charges aren't always a duplicate. Common explanations:
* A subscription fee plus a credit pack of the same amount, shown as separate line items.
* A failed payment that was retried and then succeeded.
* A genuine duplicate, which is rare.
Open **Settings → Account usage**, select **See previous invoices**, and compare the payment intent IDs (`pi_`) on both charges—different IDs mean separate transactions. If both show as paid for the same item on the same invoice, [contact Replit Support](https://replit.com/support).
App Store payments can take a short time to sync with Replit. Try these first:
1. Force-close the Replit app and reopen it.
2. Sign out of your Replit account and sign back in.
3. Open **Settings → Account usage** and check whether the credits have already appeared.
Don't make a second purchase. If the credits still don't appear, find the Replit transaction in your App Store **Purchase History** and note the transaction ID. Then [contact Replit Support](https://replit.com/support) so the team can apply the credits.
## Still need help?
If your billing question isn't answered here, [contact Replit Support](https://replit.com/support).
# Custom domains and DNS
Source: https://docs.replit.com/help/custom-domains-and-dns
Answers to common custom domain questions—connecting a domain, troubleshooting SSL and verification, and configuring Clerk authentication.
These answers cover connecting and troubleshooting custom domains. For full reference, see [Add a custom domain](/build/add-custom-domain) and [Custom domains](/features/publishing/custom-domains).
If you bought your domain through Replit, the DNS records are managed for you—open **Publishing → Domains** and follow the in-product setup. See [Domain purchasing](/build/domain-purchasing).
To connect a domain from an external registrar:
1. Open your project and go to **Publishing → Domains**.
2. Select **Connect your own domain**, enter your domain, and continue.
3. Replit shows an A record and a TXT record—copy both.
4. Add both records at your DNS provider.
5. Return to Replit and start verification.
A few important notes:
* Both an A record and a TXT record are required for SSL. Apex (root) CNAMEs aren't supported—use an A record for your root domain.
* Wildcard certificates (`*.example.com`) aren't supported; connect each subdomain individually.
* On Cloudflare, set your A record to **DNS only** (the grey cloud) so proxy mode doesn't block SSL setup.
* DNS changes can take up to 48 hours to propagate.
See [Custom domains](/features/publishing/custom-domains) for the full reference.
Work through these checks in order—most issues come from one of them:
1. **Wait for DNS to propagate.** Changes can take up to 48 hours. Confirm your records are visible globally with a DNS lookup tool.
2. **Remove AAAA records.** IPv6 (AAAA) records on the same hostname as your A record can block SSL.
3. **Remove old or conflicting A records.** Keep only one A record at your root domain pointing to Replit.
4. **Set Cloudflare to DNS only.** The orange cloud (proxy mode) interferes with SSL provisioning.
5. **Disconnect and reconnect the domain** in **Publishing → Domains → Manage** to force a fresh certificate, then wait a few minutes and reload.
6. **Check CAA records.** If you have CAA records, at least one must allow Let's Encrypt as an issuer, since Replit issues certificates through it.
These checks apply to externally registered domains. If you bought your domain through Replit, [contact Replit Support](https://replit.com/support). See [Custom domains](/features/publishing/custom-domains).
A few issues commonly come up when using [Clerk authentication](/features/auth-and-identity/clerk-auth) on a custom domain:
* **"Clerk CNAME records required" warning.** This is a Clerk integration requirement and doesn't block your domain's verification or SSL. Open **Publishing → Domains**, select **Manage**, find the authentication DNS setup section, and add each listed CNAME record exactly at your DNS provider. If the section doesn't appear, disconnect and reconnect the domain.
* **Domain stuck on Verifying after prior Clerk use.** If the domain was attached to a different Clerk application, remove it there in your [Clerk dashboard](https://dashboard.clerk.com), then disconnect and reconnect the domain in Replit.
* **Migrating to your own Clerk instance.** Switching from Replit-managed Clerk to your own instance requires a manual step—[contact Replit Support](https://replit.com/support). See [Clerk auth migration](/features/auth-and-identity/clerk-auth-migration).
If you're still stuck, [contact Replit Support](https://replit.com/support) with your domain name, your project name, and what you've already tried.
## Still need help?
If your domain question isn't answered here, [contact Replit Support](https://replit.com/support).
# Database
Source: https://docs.replit.com/help/database
Answers to common database questions—fixing disabled endpoints, restoring tables, migrating to production, and connection errors.
These answers cover the production database. For full reference, see [Production databases](/features/data-and-storage/development-and-production) and [SQL database](/features/data-and-storage/sql-database).
This error means your database compute endpoint has been paused. To unpause it:
1. Open the **Database** pane and select **Development** from the dropdown.
2. If an **Unpause database** button appears, select it.
3. Switch the dropdown to **Production** and select **Unpause database** again if it appears.
If the button doesn't appear, a conflicting `DATABASE_URL` secret may be hiding it. Open the **Secrets** pane, compare any `DATABASE_URL` entry with the connection string in the **Database** pane, and update or remove the conflicting secret so they match.
Common causes are an unpaid invoice (pay it to prevent recurrence) or a transient pause during publishing (the unpause steps above resolve it). See [Production databases](/features/data-and-storage/development-and-production).
No. If the outage is already listed on [status.replit.com](https://status.replit.com), the team is working on it and a ticket won't speed up the fix. Open the active incident and subscribe to updates to be notified as it progresses.
If your database problem is *not* listed on the status page, [contact Replit Support](https://replit.com/support).
Replit supports point-in-time restore for production databases. The restore window depends on your plan—7 days on [Core](/billing/plans/replit-core) and 28 days on [Pro](/billing/plans/replit-pro).
To restore, open the **Database** pane, go to the database, open its restore settings, select the timestamp you want, and confirm. If you're outside the restore window, [contact Replit Support](https://replit.com/support). See [Production databases](/features/data-and-storage/development-and-production).
A conflicting database URL usually hides the **Unpause** button. Open the **Secrets** pane, find any `DATABASE_URL` entry, and compare it with the connection string in the **Database** pane. If they differ, the secret is overriding the correct URL—remove it, refresh, and check the **Database** pane again.
If the button still doesn't appear after removing the conflicting secret, [contact Replit Support](https://replit.com/support) with your project URL.
Your app is opening more database connections at once than the pool allows. Common causes:
* Connections that aren't closed after each request
* A traffic spike
* Slow queries holding connections open
Most frameworks expect a single shared connection pool rather than a new connection per request.
For the fastest fix, open a new Agent chat, describe the error, and ask Agent to check how your app manages database connections.
Replit keeps development and production databases separate so test changes don't hit live data. To run migrations against production, add your migration command to your deployment's build or pre-deploy step so it runs on each deploy. For example, use `drizzle-kit migrate` for Drizzle. You can also run the migration manually from a Shell in your production environment.
See [Create a production database when publishing](/features/data-and-storage/development-and-production).
Sometimes this happens independently of billing. Try unpausing manually: open the **Database** pane, select **Development**, and select **Unpause database** if it appears, then repeat for **Production**.
If the button doesn't appear or the problem keeps recurring, [contact Replit Support](https://replit.com/support) with your project URL—this can require a manual unpause. See [Production databases](/features/data-and-storage/development-and-production).
## Still need help?
If your database question isn't answered here, [contact Replit Support](https://replit.com/support).
# Deployment and publishing
Source: https://docs.replit.com/help/deployment-and-publishing
Answers to common publishing questions—debugging failed publishes, reading logs, fixing runtime errors, redeploying, and changing regions.
These answers cover publishing and deployments. For step-by-step troubleshooting, see [Troubleshooting deployments](/build/troubleshooting), and for deployment types and monitoring, see [Autoscale deployments](/features/publishing/deployment-types#autoscale) and [Monitoring a deployment](/features/publishing/monitoring-a-deployment).
Most Autoscale publish failures are fixable once you read the deployment logs:
1. Open **Publishing** and find the failed deployment.
2. Select the three-dot menu next to it to open the logs.
3. Copy the log output, open a new Agent chat, paste it, and ask what's wrong and how to fix it.
If you see a `No run command configured` error even though you set one, open your deployment settings, disconnect the run command, re-add it, then save and republish. See [Troubleshooting deployments](/build/troubleshooting).
If publishing succeeded but the live app returns a 500 error, the issue is in your app code rather than Replit's infrastructure:
1. Open **Publishing**, view the logs, and copy the full error text.
2. Open a new Agent chat, paste the logs, and ask what's causing the error.
3. Apply the fix and republish.
If Agent can't find the problem, open **Publishing → History**, find the last working version, and redeploy it. See [Troubleshooting deployments](/build/troubleshooting).
1. Open the command palette with `Cmd+K` (Mac) or `Ctrl+K` (Windows), search for **Restart compute**, and select it.
2. Open **Publishing** and select **Publish** to trigger a new deployment.
3. If it fails again, open the failed deployment's logs from the three-dot menu, copy the build log, and paste it into a new Agent chat for diagnosis.
If the deployment stays stuck, [contact Replit Support](https://replit.com/support) with your full build logs. See [Troubleshooting deployments](/build/troubleshooting).
1. Check your deployment logs for recurring timeout or out-of-memory messages.
2. Check your deployment resources for CPU or memory limits—see [Monitoring a deployment](/features/publishing/monitoring-a-deployment).
3. Open a new Agent chat, paste recent logs, and ask Agent to find bottlenecks.
Common causes include database queries without indexes, blocking synchronous operations, and memory leaks. With [Autoscale deployments](/features/publishing/deployment-types#autoscale), the first request after scaling to zero can take a few seconds—that's a normal cold start.
Open **Publishing → History**, select the failed deployment, and view the build logs. Find the first line marked `ERROR` or `FAILED`—that's usually the root cause, and the lines after it are knock-on effects. Copy that section into a new Agent chat for diagnosis. Most build failures come from missing dependencies, an incorrect run command, or a failed database migration. See [Monitoring a deployment](/features/publishing/monitoring-a-deployment).
This is almost always a configuration difference between environments. Check that:
* Every key from your development [Secrets](/core-concepts/project-editor/app-setup/secrets) pane is also set in your deployment secrets—they're separate environments.
* Your `DATABASE_URL` points to the production database, not development.
* There are no hard-coded `localhost` or `127.0.0.1` references; use relative paths or environment-based URLs instead.
Then check your deployment logs for production-specific errors. See [Troubleshooting deployments](/build/troubleshooting).
[Autoscale deployments](/features/publishing/deployment-types#autoscale) restart regularly by design. A `SIGTERM` in your logs means the process was gracefully stopped—this is normal. `Exit code 1` means the process crashed on its own; check the lines just before it for the actual error.
If restarts are frequent enough to affect users, look for unhandled promise rejections, out-of-memory errors, or missing environment variables that cause startup to fail.
Replit keeps development and production secrets in separate stores, and changing one doesn't update the other. The [development Secrets](/core-concepts/project-editor/app-setup/secrets) pane is only available in the editor; your published app reads from your deployment secrets.
To update a variable in your live app, set it in your deployment secrets, then open **Publishing** and select **Publish** to push it live again. The new values take effect when the new deployment starts. See [Troubleshooting deployments](/build/troubleshooting).
Open **Publishing** and select **Publish**. Replit builds and publishes your current code even if nothing changed—useful after updating a secret, after a database unpause, or to pick up a dependency update.
If your app is unresponsive and a full redeploy feels heavy, open the command palette with `Cmd+K` (Mac) or `Ctrl+K` (Windows), search for **Restart compute**, and select it.
Yes. Open **Publishing**, select a new region, and publish to redeploy there. See [Publishing geography](/features/publishing/publishing-geography).
Your database region can't be changed in place—to move it, fork the app and deploy the forked version in the new region. After changing region, your `.replit.app` subdomain may change, so connect a [custom domain](/features/publishing/custom-domains) first if you need a stable URL, and re-add any deployment secrets.
Open **Publishing** and select the option to shut down your deployment, then confirm. Your app goes offline and stops incurring deployment charges. Your project files, code, and database aren't deleted—only the live deployment stops. Custom domain connections tied to this deployment are removed, so re-add them if you republish.
If cost is your concern, note that [Autoscale deployments](/features/publishing/deployment-types#autoscale) scale to zero when there's no traffic, so you may not need to shut down at all.
## Still need help?
If your deployment question isn't answered here, [contact Replit Support](https://replit.com/support).
# Networking and app errors
Source: https://docs.replit.com/help/networking-and-app-errors
Answers to common published-app errors—403 Forbidden, Application failed to respond, CORS, 502 Bad Gateway, and outbound request issues.
These answers cover errors you might see on a published app. For broader troubleshooting, see [Troubleshooting deployments](/build/troubleshooting).
A 403 on a published app usually comes from one of these:
* **Oversized request headers**—too many cookies can make headers large enough to be rejected at the edge. Clear your browser cookies for the domain and test again.
* **Missing authentication**—the request doesn't include a required login token or session.
* **An access restriction**—your app may be configured to block some traffic. See [private deployments](/features/publishing/private-deployments) and [external access tokens](/features/deployment-customization/external-access-tokens).
For a detailed diagnosis, paste your deployment logs into a new Agent chat.
Your app process isn't listening on the port Replit expects. Replit passes the correct port through the `PORT` environment variable, so bind to it instead of a hard-coded value:
```js theme={null}
const PORT = process.env.PORT || 3000;
```
```python theme={null}
port = int(os.environ.get("PORT", 3000))
```
Your app may also have crashed before binding—check your deployment logs for startup errors. With [Autoscale deployments](/features/publishing/deployment-types#autoscale), the first request after a quiet period can take a few seconds (a cold start), which is normal.
A CORS error means your frontend and backend are on different origins and the backend hasn't been set up to allow that. If they're part of the same app, use relative URLs like `/api/endpoint` to avoid CORS entirely.
Otherwise, configure your backend to allow your frontend's origin. For Express, for example:
```js theme={null}
const cors = require("cors");
app.use(cors({ origin: "https://your-frontend.replit.app" }));
```
Allow only the specific origins you need before publishing. See [Troubleshooting deployments](/build/troubleshooting).
Deployed apps fail when the production environment differs from your local setup. Check three things:
1. **Hard-coded localhost URLs**—replace `localhost:3000` or `127.0.0.1` with relative paths or environment-based URLs, then redeploy.
2. **Missing production secrets**—confirm every required key is set in your deployment secrets. See [Secrets](/core-concepts/project-editor/app-setup/secrets).
3. **Migrations not run in production**—run pending migrations against the production database before publishing.
If errors continue, [contact Replit Support](https://replit.com/support) with your error message and the steps you tried.
A 502 usually means your app process crashed or returned output the server couldn't use. Check your deployment logs for crash errors just before the 502s appear—unhandled promise rejections and uncaught exceptions can crash a Node.js process silently.
Add a handler to surface crashes:
```js theme={null}
process.on("uncaughtException", (err) => console.error("Uncaught:", err));
```
Once you can see the underlying error in your logs, paste it into a new Agent chat for help fixing it.
First confirm whether the request is being blocked rather than failing in your code. Open your deployment logs and look for messages about blocked or redirected outbound requests.
Common causes and fixes:
* **Self-referencing URLs**—if your backend calls its own public URL (such as `fetch("https://myapp.replit.app/api/...")`), use a relative path like `fetch("/api/...")` instead.
* **Requests during the build phase**—make outbound calls at runtime, not during the build.
* **Network restrictions**—on a corporate or school network, outbound connections may be blocked; check with your network admin.
If none of these apply and requests are still blocked, [contact Replit Support](https://replit.com/support) with the relevant log lines.
The `.replit.app` subdomain is derived from your project name and isn't guaranteed to stay the same when you unpublish and republish, especially if the project was renamed.
The permanent fix is a [custom domain](/features/publishing/custom-domains), which stays the same across redeployments. To try to restore the old subdomain, make sure your project name matches the original (rename it back if needed) and republish—Replit can't manually reassign a released subdomain. See [Publishing geography](/features/publishing/publishing-geography).
## Still need help?
If your error isn't covered here, [contact Replit Support](https://replit.com/support).
# Help center
Source: https://docs.replit.com/help/overview
Browse answers to the questions Replit builders ask most often, grouped by topic—billing, deployment, databases, Agent, domains, and more.
This help center answers the questions Replit builders ask most often. Most issues can be resolved here without contacting support. Pick a category to browse common questions and their answers, with links to the full reference docs where you need more detail.
Charges, billing thresholds, refunds, and unexpected payments
Plan features, Agent pricing, credits, and credit packs
Upgrade, cancel, transfer, and manage your subscription
Agent modes, costs, rollbacks, and common Agent issues
Publish failures, logs, redeploys, and deployment regions
Paused endpoints, restores, migrations, and connection errors
Connect a domain, fix SSL, and configure DNS records
403, 502, CORS, and other published-app errors
Passwords, login recovery, account changes, and suspensions
Recover, share, export, and move projects and files
## Still need help?
If you can't find an answer here, [contact Replit Support](https://replit.com/support). For details on response times and what support covers, see the [support policy](/legal-and-security-info/support-policy).
For a shorter general-purpose FAQ, see [FAQ](/features/additional-resources/faq).
# Pricing and plans
Source: https://docs.replit.com/help/pricing-and-plans
Answers about Replit plans, how Agent usage is priced, monthly credits and rollover, credit packs, and discounts.
These answers cover plans and pricing. For full plan details, see [Starter](/billing/plans/starter-plan), [Core](/billing/plans/replit-core), and [Pro](/billing/plans/replit-pro), and check the [pricing page](https://replit.com/pricing) for current rates.
Agent uses [effort-based pricing](/billing/ai-billing) that scales with the complexity of your request. Every Agent interaction is billable—including [Plan mode](/features/agent/plan-mode) conversations—because Agent does reasoning work even when it doesn't change code.
To manage costs, use [Economy mode](/features/agent/agent-modes), scope work with [Plan mode](/features/agent/plan-mode), and set a usage limit and budget in [Managing your spend](/billing/managing-spend). To see a breakdown of your charges, open **Settings → Account usage** and select **See previous invoices**.
Each plan targets a different stage of building:
* **Starter** is free, with a daily Agent allowance and limited monthly cloud credits, basic Agent access, and one published app. See [Starter plan](/billing/plans/starter-plan).
* **Core** includes in monthly credits, full Agent with Plan and Build modes, up to 5 collaborators, unlimited published apps, and a 7-day database restore window. See [Core plan](/billing/plans/replit-core).
* **Pro** (/month) adds Turbo mode, up to 15 builders with pooled credits, tiered credits, and a 28-day database restore window. Unused credits roll over for . See [Pro plan](/billing/plans/replit-pro).
For a side-by-side comparison and current pricing, see the [pricing page](https://replit.com/pricing).
Replit runs an education program for students and educators. To check current eligibility, discounts, and how to apply, visit [replit.com/education](https://replit.com/education).
Specific discount amounts and eligibility rules are managed by the education program and may change—the education page is the source of truth.
Annual billing gives you a lower effective monthly rate in exchange for paying for the year upfront. [Core](/billing/plans/replit-core) is /year. To switch, choose the annual option when you subscribe or change your plan. For other plans and current savings, see the [pricing page](https://replit.com/pricing).
It depends on your plan. Core credits reset at the start of each billing cycle and don't roll over. Pro includes [credit rollover](/billing/plans/replit-pro)—unused credits carry over for before expiring.
If your balance is higher than your monthly allocation, the extra may be referral or promotional credits, which have their own expiration dates.
Credit packs add credits on top of your monthly allocation, with discounts on larger packs:
Open **Settings → Account usage** and select the option to purchase a credit pack. Credits apply to Agent usage, deployments, storage, and other usage-based services. See [Managing your spend](/billing/managing-spend#purchase-credit-packs) for details.
If you subscribed through the App Store, add a web payment method to your account first.
Replit doesn't offer a time-limited free trial for paid plans, but you have options to try Replit first:
* The [Starter plan](/billing/plans/starter-plan) is free with no time limit.
* The [education program](https://replit.com/education) offers discounted access to eligible students.
For current subscription refund terms, [contact Replit Support](https://replit.com/support).
When you change plans mid-cycle, Replit credits the unused portion of your current plan toward the cost of the new plan. The exact proration is shown on the billing confirmation screen before you complete the change, so you can review it before anything is charged.
## Still need help?
For questions about your specific plan or charges, [contact Replit Support](https://replit.com/support).
# Projects and files
Source: https://docs.replit.com/help/projects-and-files
Answers to common project questions—recovering deleted projects, exporting, sharing, connecting GitHub, secrets, and rolling back to a checkpoint.
These answers cover working with projects and files. For related reference, see [Secrets](/core-concepts/project-editor/app-setup/secrets), [Checkpoints and rollbacks](/features/version-control/checkpoints-and-rollbacks), and the [integrations overview](/features/integrations/overview).
Open your project and go to **Tools → Connectors**, find the service (such as Resend), and connect it. After you authorize, the API key is saved as a secret in your project. If you're setting up a custom email domain, add the DNS records the service shows you at your DNS provider.
See the [integrations overview](/features/integrations/overview) for available connectors and [Add integrations](/build/add-integrations).
Deleted projects can be restored for a limited time. Open a Shell in any project and run:
```bash theme={null}
trash view
trash restore your-project-name
```
After the retention window passes, deleted projects are permanently removed. If you're past it, [contact Replit Support](https://replit.com/support).
Select the three-dot menu at the top of the file tree and choose **Download as zip**. For large projects, the download may take a moment. If it fails, open a Shell and run `zip -r project.zip .`, then download `project.zip` from the file tree.
You have three options:
* **Read-only**—set the project's privacy to public so anyone with the link can view it.
* **Edit access by invite**—select **Invite**, enter a username or email, and set the permission level.
* **Join link**—create a join link from **Invite** so anyone with the link can join and edit.
Core supports up to 5 collaborators and Pro up to 15; collaborators don't need a paid plan to edit your project. See [Workspaces](/features/collaboration/workspaces).
Link your GitHub account from your account's connected services, then open the [Git tool](/features/workspace-tools/git-interface) in your project and connect the repository. Turn on auto-sync in the Git pane for two-way syncing. To import an existing repository, see [Import from providers](/build/import-from-providers).
If Git sync stops working, reconnect GitHub from your connected services. A fine-grained personal access token gives a more reliable connection.
For editor lag, try these:
* Hard-refresh with `Cmd+Shift+R` (Mac) or `Ctrl+Shift+R` (Windows).
* Close unused file tabs.
* Open the command palette with `Cmd+K` (Mac) or `Ctrl+K` (Windows), search for **Restart compute**, and select it.
* Try a different browser to rule out extensions.
For slow code execution rather than editor lag, check for heavy loops or memory limits. You can see CPU and memory usage in the resources panel at the bottom of the editor.
Open the **Secrets** tool (the lock icon), select **+ New secret**, and enter a key and value. Read it in your code with `process.env.API_KEY` (Node.js) or `os.environ["API_KEY"]` (Python).
Secrets in the development [Secrets](/core-concepts/project-editor/app-setup/secrets) pane are only available in the editor. For published apps, add the same keys in your deployment secrets—they're kept separate by design.
[Account Secrets](/core-concepts/project-editor/app-setup/secrets) are available across all your projects—useful for keys you reuse. Add them from your account settings, and they'll be available in every project you own. If the same key exists in both Account Secrets and a project's Secrets pane, the project-level value takes priority.
Open a Shell and run `git status` to see the conflicts.
The next two commands discard uncommitted changes and can't be undone. Save anything you want to keep first—for example, copy edited files out of the project.
To discard local changes and return to your last clean state, run `git checkout -- .`; to reset to the last commit, run `git reset --hard HEAD`.
If your `.git` folder is corrupted and Git commands fail, open a new Agent chat and paste the error—Agent can often repair the repository. See [Disaster recovery](/features/version-control/disaster-recovery).
Replit saves [checkpoints](/features/version-control/checkpoints-and-rollbacks) as Agent works. In the Agent panel, find the message before the change you want to undo and select the rollback option next to it, then confirm.
Replit no longer supports rolling a published app back to a previous version. To revert a published app, roll your project back to an earlier checkpoint (as described above), then publish again to redeploy that state. To recover a single file, open it, select its name, and use **Show history** to restore a previous version. See [File history](/features/version-control/file-history).
Projects can't be transferred directly, but you can copy one. The easiest way is to share the project with the destination account and fork it there. Alternatively, download the project as a zip and re-upload it into a new Repl on the other account.
After copying, set up secrets, the database, and deployment configuration in the new project—those aren't included in the copy.
## Still need help?
If your project question isn't answered here, [contact Replit Support](https://replit.com/support).
# Subscriptions
Source: https://docs.replit.com/help/subscriptions
Answers about managing your Replit subscription—upgrading, canceling, fixing failed payments, transferring, and pausing.
These answers cover managing your subscription. For full plan details, see [Core](/billing/plans/replit-core) and [Pro](/billing/plans/replit-pro).
Compared with [Core](/billing/plans/replit-core), [Pro](/billing/plans/replit-pro) (/month) adds:
* Turbo mode
* Up to 15 builders with pooled credits
* Tiered credits. Unused credits roll over for
* A 28-day database restore window (versus 7 days on Core)
* Priority support
To upgrade, open **Settings → Billing**, select the Pro plan, and confirm your payment details. For a feature comparison and current pricing, see the [pricing page](https://replit.com/pricing).
Open **Settings → Billing** and select the option to cancel your subscription, then complete the confirmation steps. You keep your plan features until the end of the billing period, after which your account moves to the free [Starter plan](/billing/plans/starter-plan).
Before the transition, be aware that published apps may go offline, custom domain connections are removed, and storage is reduced. Download anything you want to keep first. If your subscription shows as `past_due`, a payment may have failed—resolve it before canceling.
Open **Settings → Billing**, select **Update payment method**, and add or update your card. Replit retries the outstanding payment automatically after you save.
If the problem continues, [contact Replit Support](https://replit.com/support) with your payment intent ID (it starts with `pi_`). Billing failure notices sometimes land in your spam folder.
Subscriptions are tied to your Replit account and can't be transferred directly. To change the email on your account while keeping the subscription, go to **Settings → Profile**, then edit your email.
To move a subscription to a different account, [contact Replit Support](https://replit.com/support)—these are handled case by case.
Two charges in one month usually come from one of these:
* A subscription fee plus a separate usage charge that hit a billing threshold
* A retried payment that succeeded after an earlier failure
* More than one active subscription
To see what each charge is for, open **Settings → Account usage** and select **See previous invoices**. If something still doesn't add up, [contact Replit Support](https://replit.com/support).
Plan changes are usually available right away. If new features aren't showing up:
1. Hard-refresh with `Cmd+Shift+R` (Mac) or `Ctrl+Shift+R` (Windows).
2. Sign out and sign back in.
3. Open **Settings → Billing** and confirm the change went through—it should show your new plan name.
If billing shows the right plan but features still aren't there, [contact Replit Support](https://replit.com/support) with your username and the feature you're trying to use.
Some subscribers qualify to pause their subscription for one month instead of canceling. If you're eligible, the option appears when you go to cancel. During a pause:
* Your next payment is skipped and no monthly credits are granted
* Published projects stay live and collaborators keep access
* Eligible credits roll over and credit packs stay usable
* Agent and hosting usage is still billed pay-as-you-go
**Settings → Billing** shows a **Paused** badge and your pause end date, and your subscription resumes automatically on that date. You can cancel a scheduled pause before it takes effect, but an active pause can't end early. You can pause your subscription only once.
## Still need help?
For account-specific subscription questions, [contact Replit Support](https://replit.com/support).
# Reporting Abuse on Replit
Source: https://docs.replit.com/legal-and-security-info/abuse-report
At Replit, we strive to maintain a safe and welcoming environment for all our users. If you encounter abusive, harmful, or inappropriate content, we encourage you to report it immediately. We have established multiple channels to address various types of concerns efficiently. Here's how you can help
## 1. Use the On-Site reporting feature
Use the on-site reporting feature for a quick and direct way to report content that violates our [Community Standards](https://blog.replit.com/community-standards). This method ensures that your report is immediately sent to our staff members for review. Here's how to use it:
* Navigate to the content you wish to report.
* Look for a report button or link. This is usually located near the content itself, such as under a post or within a user's profile options.
* Select the report button or link and describe the nature of the abusive content.
* Submit your report. Our team will review it as soon as possible and take appropriate action.
For more detailed instructions on using the reporting feature, please read [How to Make Reports](./trust-and-safety#how-to-make-reports).
## 2. Report Abuse via email
If you come across phishing attempts or suspect a piece of content is designed to deceive or harm others by pretending to be something it's not, please report it directly to our dedicated email address for abuse reports:
* **Email**: `abuse@replit.com`
* **Subject**: Briefly describe the issue (e.g., "Phishing Attempt Detected").
* **Body**: Include detailed information about the phishing attempt, such as URLs, user account names involved, and a description of the content. Attach any relevant screenshots if possible.
### Additional Resources
For cybersecurity organizations looking to report phishing detections via automation, we invite you to contact us for potential partnership opportunities. Please reach out to the abuse team at [abuse@replit.com](mailto:abuse@replit.com) to discuss further.
## 3. Issue DMCA Takedown Requests
For copyright holders or their authorized representatives, Replit respects your intellectual property rights and follows the Digital Millennium Copyright Act (DMCA) procedures to address your concerns. For detailed instructions on copyright claims on Replit, please read [Copyright claims and takedown requests](./copyright-claims-takedown-requests).
## 4. Report Security vulnerabilities
If you've discovered a security vulnerability within Replit, we highly value your contribution to our community's safety and encourage you to report it to us. Please read our [Security](./security) documentation for instructions on disclosing potential vulnerabilities.
# Copyright claims and takedown requests
Source: https://docs.replit.com/legal-and-security-info/copyright-claims-takedown-requests
Learn how to submit DMCA takedown requests for copyrighted content or private information on Replit Apps and understand the required documentation process.
It is against our [Terms and Conditions](https://replit.com/site/terms) for users to publish any content that violates privacy rights, publicity rights, copyrights, or contract rights. We will immediately remove a replit app at your request in the case of either of the following:
* You hold a copyright to content contained within a public/private replit app, or a public/private classroom assignment.
* Personal/private information is contained within a public/private replit app, or a public/private classroom assignment.
To issue a takedown request, send an email to [dmca@replit.com](mailto:dmca@replit.com). Ensure that your request complies with all the requirements of the DMCA (see below). Our team will review your submission and take appropriate action.
Per the Digital Millennium Copyright Act (DMCA, see 17 U.S.C 512(c)(3) for details), we require the following information in writing for DMCA takedown requests:
* An electronic or physical signature of the person authorized to act on behalf of the owner of the copyright's interest.
* A description of the copyrighted work that you claim has been infringed, including the URL of the location where the copyrighted work exists, or a copy of the copyrighted work.
* Identification of the URL or other specific location on the service where the material that you claim is infringing is located.
* Your address, telephone number, and email address.
* A statement by you that you have a good faith belief that the disputed use is not authorized by the copyright owner, its agent, or the law.
* A statement by you, made under penalty of perjury, that the above information in your notice is accurate and that you are the copyright owner or authorized to act on the copyright owner's behalf.
# Deleting your data
Source: https://docs.replit.com/legal-and-security-info/deleting-your-data
Learn how to permanently delete your account and personal information from Replit using either the web browser or mobile app.
To delete your personal information from Replit, please follow these instructions. If you are using a desktop web browser:
1. Log in to Replit and open **Settings** (click your profile icon, then **Settings**, or go to [https://replit.com/settings](https://replit.com/settings)).
2. Under **Account**, open **Billing** and scroll to "Manage subscription" if needed.
3. In the "Delete Account" section, click "Request account deletion" then "Yes, Delete my Account" to confirm.
You can also perform the same process using our mobile app:
1. Open **Settings** (e.g. tap your profile or the Settings entry in the app).
2. Go to the account/billing section and find "Manage Account" or "Delete Account".
3. Tap "Delete Account" and confirm when prompted.
Deleting your account removes all of your content from Replit (including Replit Apps, templates, posts), and results in your personal information being purged from our systems. You will not be able to recover this data if you change your mind.
For further information about your rights over your personal data, please view our [Privacy Policy](https://replit.com/site/privacy).
# Security
Source: https://docs.replit.com/legal-and-security-info/security
Your code, applications, and data are important. We're committed to protecting them—Replit's security is our security, too.
## Reporting a Vulnerability
Please use the following dedicated channel for all security-related concerns:
* **Email**: `security@replit.com`
* **Subject**: "Security Vulnerability Report".
* **Body**: Describe the nature of the vulnerability in detail, including the steps to reproduce it if possible. Please include any relevant information that would help us understand the severity and scope of the issue, such as the potential impact on user data or system integrity.
## Responsible Disclosure
Pursuant to our [terms of service](https://replit.com/site/terms), you should not take any actions
that interfere or disrupt the service. If you are in doubt, and think there might be a risk of service
disruption, then don't try to verify the bug yourself – email us and we'll work with you to verify it.
Email [security@replit.com](mailto:security@replit.com) with a description of the issue and we'll respond as soon as possible.
# Support Policy
Source: https://docs.replit.com/legal-and-security-info/support-policy
Replit offers different support options for all Replit builders.
## Community support
All Replit builders can access the [Replit Community Hub](https://replit.com/community) for community support and resources.
## Replit Core support
Replit Core includes AI-powered support. Both technical and billing questions start with AI support, which resolves most issues quickly using Replit's documentation and your account context. Billing questions can also be escalated to Replit's support team when needed.
## Replit Pro and Enterprise support
Replit Pro and Enterprise members receive prioritized, direct access to a support engineer, in addition to AI-powered support. Premium Support Engineers are currently staffed Monday–Friday, 6 am–6 pm PT. Full resolution times may vary depending on the complexity and nature of the issue.
## Scope
While Replit Agent is a powerful tool designed to help you build quickly, it may occasionally produce code that doesn't fully match your intent or contains errors. Reviewing, modifying, and refining application code—either through manual changes or additional Agent prompts—is ultimately the user's responsibility.
Replit Support is here to ensure the platform itself is functioning correctly and to assist with billing, account, and platform-related issues. However, Replit Support is unable to provide hands-on debugging or fixes for individual application-level code.
However, [Replit Learn](https://blog.replit.com/replit-learn) is a great resource for learning how to use Replit and build your first app!
## Contact us
Support is available to all Replit builders via the in-app [`? Get Help` button](https://replit.com/t/replit?supportform=true).
# Trust and Safety at Replit
Source: https://docs.replit.com/legal-and-security-info/trust-and-safety
Replit strives to create a fun and creative community that is also trusted and safe. To achieve this goal, Replit has implemented rules and policies that promote positive behavior and protect builders. In this document, you will find a summary of key rules, tips on how to report any concerns, and information on where to learn more.
## Rules for Content and Behavior
To maintain a safe and trusted environment, Replit has established a set of rules that are detailed in the [Terms of Service](https://replit.com/site/terms). The same rules apply whether you are publishing a Replit App or engaging with other builders in the Community.
* Keep it appropriate. All content must be suitable for a workplace environment and free of any offensive language or nudity. Violent and graphic content, as well as content that depicts or encourages self-harm, is prohibited.
* No bullying. Replit has a zero-tolerance policy for bullying, trolling, doxxing, hate speech, racism, sexism, or any other form of prejudice. Violation of this rule may result in an immediate ban.
* No illegal or regulated content. Replit should not be used for any illegal activities, such as dealing in drugs, sex, gambling, weapons, or pirated software.
* Misuse of the service is not allowed. Do not share content that could harm other builders, such as spam, malware, or phishing. Replit Apps that consume an excessive amount of resources, such as spam bots and cryptocurrency miners, are also not allowed.
## How Replit enforces rules
The Replit team works to keep the service safe by actioning reports concerning content that violates the [Terms](https://replit.com/site/terms), [Community Standards](https://blog.replit.com/community-standards), or [Privacy Policy](https://replit.com/site/privacy).
If your content violates the rules, Replit takes appropriate action against it. In circumstances of serious violations, you may be banned from using Replit. For more information, check out the [Strike System FAQ](/legal-and-security-info/strike-system-faq).
## Protecting underage builders
Replit upholds the highest global privacy standards for its youngest members. To ensure that their personal information remains safe, Replit does not collect it in the first place.
To protect children from inappropriate images, Replit automatically scans all images uploaded to the platform. Machine learning technology quickly detects and flags most images that violate the rules for review by a staff member.
Replit also takes swift action to prevent predators from using the platform. Any account that shares child abuse material (CSAM) or seeks sexual contact with minors will be terminated and may be reported to the authorities.
## How to Make Reports
### Reporting a Replit App
Report a Replit App to a staff member by visiting its cover page and selecting the kebab menu. Select the "Report" option and provide a reason for the report. A staff member will investigate and take appropriate action as soon as possible
### Reporting a User
Report a user by accessing the "Report" option on their profile page. Provide a reason for the report, and a staff member will review and address as soon as possible
### Reporting a Theme
Report a theme by accessing the "Report" option on the theme page. Themes should not be reported because of their appearance, but only because they contain content such as an offensive name that violates the rules.
## Additional Information
This page contains an easy-to-read summary of information that is given in more detail in other policy documents. If you would like more information, consult these resources:
* [Terms of service](https://replit.com/site/terms)
* [Privacy Policy](https://replit.com/site/privacy)
* [Copyright claims and takedown requests](./copyright-claims-takedown-requests)
# Usage Quota & Limits
Source: https://docs.replit.com/legal-and-security-info/usage
Learn about Replit's resource limits, including CPU, RAM, storage, and network restrictions that apply to Replit Apps based on your plan.
Replit has certain soft and hard limits in using its service. Hard limits are automatically enforced by the Service. Soft limits are consumable resources that you agree not to exceed. Details of these limits are shown at [https://replit.com/site/pricing](https://replit.com/site/pricing) and may be updated there from time to time Long periods of inactivity may result in an account or your use of the Service being deemed inactive.
* CPU per Replit App: determined by plan (hard)
* RAM per Replit App: determined by plan (hard)
* Concurrent Replit Apps: 20 (hard)
* Storage per Replit App: determined by plan and storage used by other Replit Apps (hard)
* Storage per account: determined by plan (hard)
* Network bandwidth: determined by plan (soft)
In addition, regardless of your plan, some limits and restrictions are imposed on your Replit App’s content and its network activity in order to enforce our Terms of Service. If these limits are exceeded, your Replit App may become temporarily unavailable, or particular operations may fail with an error. These include:
* A limit on the number of concurrent outgoing network connections in a given period.
* Limits on the frequency and size of requests to Replit’s internal GraphQL API.
* Restrictions on the use of code that appears to violate our Terms of Service, such as cryptocurrency mining.
# Replit web accessibility statement
Source: https://docs.replit.com/legal-and-security-info/web-accessibility
Learn about Replit's commitment to web accessibility, WCAG 2.1 compliance goals, current accessibility status, and how to provide feedback about accessibility features.
*See the accessibility features [here](/features/editor/user-settings).*
Replit believes that computing is for everyone. As such, Replit is committed to making the service fully accessible to all, including people with disabilities. This statement explains the accessibility goals, the progress towards meeting those goals, and how you can provide feedback about accessibility on Replit.
# Conformance goals
The aim is to achieve full compliance with the W3C WAI's Web Content Accessibility Guidelines (WCAG) 2.1, which defines requirements for designers and developers to improve accessibility for people with disabilities. Replit is currently partially conformant with WCAG 2.1 level AA. Partially conformant means that some parts of the website content do not yet fully conform to the accessibility standard.
# Current status
Replit has an ongoing internal project to improve the site's accessibility, responding to internal evaluation, builder interviews and reports, and the results of an independent evaluation conducted by the Cornell University IT Department in 2021.
The majority of content on the website is available in HTML format conformant with current W3C standards for HTML and CSS. Non-text content presented to you, such as images and form elements, has a text alternative that can be recognized and spoken aloud by screen readers.
Despite ongoing efforts to ensure accessibility of Replit, you may encounter some limitations. In particular, the inability to fully manipulate the Workspace using your keyboard is a known issue that Replit is working to address.
# Giving feedback
If you have any trouble accessing the Replit website, provide feedback by emailing [contact@replit.com](mailto:contact@replit.com). Include the URL (web address) of the material you tried to access, the problem you experienced, and your contact information.
# Replit MCP Server
Source: https://docs.replit.com/platforms/mcp-server
Connect your MCP client to Replit to create, update, and manage apps programmatically.
The Replit MCP Server is in **beta**. Tools and behavior may change.
Replit's MCP server lets external clients create, update, and manage full-stack applications on Replit using the [Model Context Protocol](https://modelcontextprotocol.io). Powered by Replit Agent, it transforms natural language prompts into live, published apps.
This page is the developer reference for connecting your own MCP client. Looking to use Replit from a tool you already use? See [Replit in Claude](/features/platforms/claude), [Replit in Slack](/features/platforms/slack), or [Replit in ChatGPT](/features/platforms/chatgpt).
## Server details
| Property | Value |
| ------------------ | --------------------------------------------------------- |
| **URL** | `https://replit-mcp.com/server/mcp` |
| **Transport** | Streamable HTTP |
| **Authentication** | OAuth 2.0 (handled automatically by MCP clients and SDKs) |
### Requirements
**For developers:**
* An MCP client or SDK that supports Streamable HTTP transport
**For builders (end users):**
* A Replit account (Free, Core, Pro, or Enterprise)
### Authentication
The server uses OAuth 2.1 with PKCE. MCP clients like Claude Code handle the entire flow automatically. If you're building with an MCP client SDK, it handles discovery, dynamic client registration, PKCE, and token exchange — you provide the UX (browser redirect, callback handler, token storage). See the [MCP authorization spec](https://modelcontextprotocol.io/specification/2025-03-26/basic/authorization) for details.
### Connecting
Configure the server URL in your MCP client. Builders will complete the OAuth consent flow when they first connect.
**MCP SDK (TypeScript):**
```typescript TypeScript (MCP SDK) theme={null}
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const transport = new StreamableHTTPClientTransport(
new URL("https://replit-mcp.com/server/mcp"),
{ authProvider: yourOAuthProvider } // Implement the OAuthClientProvider interface
);
const client = new Client({ name: "my-client", version: "1.0.0" });
await client.connect(transport);
```
See the [MCP TypeScript SDK documentation](https://modelcontextprotocol.io/sdk/js) for details. The SDK handles the internal OAuth flow automatically.
**Claude Code:**
```bash Claude Code theme={null}
claude mcp add --transport http replit https://replit-mcp.com/server/mcp
```
***
## Tools
The server exposes three public tools.
### `create_app_from_prompt`
Create a new Replit App from a natural language description. Replit Agent immediately starts building the app.
| Parameter | Type | Required | Description |
| ---------------------- | -------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `appDescription` | string | Yes | Natural language description of the app to build. |
| `app_stack` | string (enum) | Yes | One of: `"react_website"`, `"mobile_app"`, `"design"`, `"slides"`, `"animation"`, `"data_visualization"`, `"3d_game"`, `"document"`, `"spreadsheet"`. Use `"react_website"` for most web apps. |
| `userSpecifiedAppName` | string \| null | No | App name if provided by the user. |
| `userQuotes` | string \| null | No | Exact user quotes not fully captured in `appDescription`. |
| `attachmentSummary` | string \| null | No | Summary of essential details from attachments. |
**Response:**
```json theme={null}
{
"phase": "creating",
"replId": "d44d994b-96e1-4a1c-8085-88401b870a9a",
"turnId": "turn-id",
"replUrl": "https://replit.com/@username/App-Name",
"user": { "id": 12345, "username": "username" }
}
```
Agent builds the app asynchronously — direct the builder to the `replUrl` to track progress. Use `replId` and `replUrl` in subsequent tool calls.
### `update_app_using_prompt`
Make changes to an existing Replit App. Use this to add features, fix bugs, or iterate on the app after it has been created.
| Parameter | Type | Required | Description |
| ------------------- | -------------- | -------- | ------------------------------------------------------ |
| `replId` | string (UUID) | Yes | The `replId` from `create_app_from_prompt`. |
| `changeDescription` | string | Yes | Description of the change to make. |
| `replUrl` | string | No | The `replUrl` from `create_app_from_prompt`. |
| `userQuotes` | string \| null | No | Exact user quotes not captured in `changeDescription`. |
| `attachmentSummary` | string \| null | No | Summary of attachment details. |
### `ask_question`
Ask Replit Agent about the current app. Runs in discussion mode — it won't modify the app. Use this to check build status, ask about the tech stack, or relay builders' questions.
| Parameter | Type | Required | Description |
| ---------- | ------------- | -------- | ------------------------------------------- |
| `replId` | string (UUID) | Yes | The `replId` from `create_app_from_prompt`. |
| `question` | string | Yes | The question to send to Replit Agent. |
***
## Example workflows
These examples show the prompts an MCP client can translate into Replit tool calls. The exact phrasing is flexible.
### Create and iterate on an app
Start with a detailed product prompt:
> Create a mobile-friendly neighborhood seed-swap app. Include seed listings, pickup requests, profiles, and a warm, garden-inspired visual style. Name it Seed Circle.
Your client calls `create_app_from_prompt`, which returns a `replId` and `replUrl`. Replit Agent continues building asynchronously, so open the returned URL to follow progress.
After the first build, request a focused change:
> Add filters for plant type and pickup distance. Keep the existing visual style and make the filters easy to use on mobile.
Your client calls `update_app_using_prompt` with the original `replId`. You can continue sending changes against the same app.
### Ask about an app without changing it
Use `ask_question` when you need context instead of an edit:
> Which database tables does this app use, and where is the pickup request flow implemented?
The tool runs Replit Agent in discussion mode. It can explain the app or report build progress without modifying files.
### Hand off between clients
The `replId` identifies the app across MCP calls. Store it with the conversation, then provide it when another client continues the work.
For example:
1. Create an app from Claude Code.
2. Open the returned `replUrl` to review the live build in Replit.
3. Continue iterating from another MCP client using the same `replId`.
***
## Troubleshooting
| Error | Cause | Fix |
| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `MCP error -32001: Request timed out` | Tool call took longer than the MCP timeout window. The operation is still running in the background. | Direct the user to the `replUrl`. Do not retry. |
| `"Replit was not able to build your Replit App."` | Access token is not scoped to the MCP server resource. | Verify your auth provider is configured correctly. If building a custom OAuth flow, ensure the `resource` parameter is set to `https://replit-mcp.com/server/mcp`. |
| `"Not authenticated"` | No valid session or token. | Re-authenticate through the OAuth flow. |
# Managing Your Connectors
Source: https://docs.replit.com/replitai/managing-connectors
Set up and manage connectors on Core, Pro, and Enterprise plans. Centralized admin controls, scoped access, and audit tracking.
You can manage connectors so your team uses integrations in a consistent, secure way. What’s available depends on your plan:
* **Core and Pro**: Connector management is available in **collaborative workspaces**. The account admin sets up and manages connections for that workspace; builders can use them in apps within that workspace.
* **Enterprise**: Organization-wide connector management with advanced controls—custom OAuth clients, API key access controls, and bring-your-own keys.
## Key capabilities
* **Centralized management**: Admin sets up a service once; builders use it across apps in that workspace.
* **Visibility and audit**: See which apps and members use which services.
* **Per-app consent and revocation**: Revoke or rotate access without code changes.
**Enterprise only:**
* **Role-based access controls**: Scoped, least-privilege permissions and access controls on API keys.
* **Bring your own OAuth**: Use organization-owned OAuth clients with custom scopes.
* **Bring your own OpenAI key**: Use your own OpenAI API key instead of Replit’s default.
## How it works
Admin sets up a service once using the credentials.
Admin approves which groups can use the connector (Enterprise) or makes it available to the collaborative workspace (Core/Pro).
Members build with that service by asking Agent in apps within the workspace or org.
Admins can monitor which members and apps use which services.
## Security and governance
* Credentials and tokens are managed by the platform, not stored in individual apps.
* Centralized revocation and rotation without code changes.
* Enterprise: scoped access with least-privilege permissions and optional custom OAuth configuration.
## Setup and management
### Enable new connectors
From your collaborative workspace (Core/Pro) or organization home (Enterprise), open the **Integrations** page.
Select **Enable new connector** in the top right.
Select the service you want to enable (e.g. Notion, GitHub, Google, Outlook, Dropbox, Salesforce).
Enable the connector using the default configuration. On **Enterprise** only, you can create a custom OAuth connector (e.g. Drive scopes `.../auth/drive.file`, `.../auth/drive.install`).
Select **Submit**.
### Configure access (Enterprise)
1. After enabling a connector, select **Manage**.
2. Grant access to specific groups as needed.
### Modify connectors
* After enabling a connector, select **Manage**.
* Deleting a connector removes it for all builders in that workspace (Core/Pro) or organization (Enterprise).
* On Enterprise, you can edit scopes for custom OAuth connectors.
## Plan comparison
| Feature | Core (collaborative workspace) | Pro (collaborative workspace) | Enterprise |
| ------------------------------- | ------------------------------ | ----------------------------- | ------------ |
| Enable and manage connectors | ✓ | ✓ | ✓ |
| Scope | Workspace | Workspace | Organization |
| Create custom OAuth clients | — | — | ✓ |
| Set access controls on API keys | — | — | ✓ |
| Bring your own OpenAI key | — | — | ✓ |
### Bring your own OpenAI key (Enterprise)
Enterprise customers can use Connectors to bring their own OpenAI API key instead of Replit's default AI infrastructure. This lets you use existing OpenAI agreements and manage AI usage through your own account.
## What's next
Connector management is expanding to support:
* Webhook events for event-driven workflows
* Deeper admin experience with permissions, assignments, and analytics
## Related documentation
* [Workspaces](/features/collaboration/workspaces): Understand Personal and Team Workspaces
* [Connectors overview](/features/integrations/overview) — Learn about all integration types
* [Warehouse connectors](/connectors/warehouses/overview) — Connect to BigQuery, Databricks, Snowflake, Segment, Amplitude, and Hex
# Admin API
Source: https://docs.replit.com/teams/admin-api
Use the Replit Enterprise Admin API to access account usage, workspaces, members, and projects programmatically.
The Admin API is in **beta**. Available endpoints and behavior may change.
The Admin API gives Enterprise account admins read-only, programmatic access to account analytics and administration data. Use it to build internal reporting, operational workflows, and integrations for your Enterprise account.
## Who can access the Admin API
The Admin API is available only to **account admins** on Enterprise accounts. Account admins can create and manage API keys. Workspace admins and other account members cannot access the Admin API or create its keys.
To learn more about Enterprise admin roles, see [Account and Workspace Admins](/teams/identity-and-access-management/account-and-workspace-admins).
## Create an API key
In your Enterprise account, open **Settings** and select **Developer**.
Select **Create API key**. Admin API keys are read-only.
Copy the key, which begins with `rpl_`, and store it in a secure secret manager. Treat it like a password and never share it.
Send the key as a Bearer token with your API requests.
## What you can do
The Admin API provides read-only endpoints for:
* **Usage:** Account usage and gross ledger cost, filtered or grouped by workspace, member, project, or time period.
* **Workspaces:** Workspace lists and details, including member and project counts, admins, and creation time.
* **Members:** Account and workspace membership, filtered by role or searched by name, username, or email.
* **Projects:** Projects across team workspaces, filtered by visibility or deployment status, or searched by title, slug, or description.
API responses support cursor pagination and include rate-limit headers and an `X-Request-Id` for request tracking.
## Building with Replit Agent
You can ask Replit Agent to build a custom dashboard with the Admin API. Describe the account data you want to track, such as usage by workspace or costs by project, and Agent can build the dashboard and its API integration.
In a Replit project, click the **+** button next to the chat input and select **Use a skill**.
Under **Replit skills**, select **Admin API** to give Agent the API context and integration guidance.
Tell Agent what you want to track and how you want to view it. For example, ask Agent to build a dashboard that shows usage by workspace and cost by project.
When Agent needs to make API requests, add your Admin API key to your project's Secrets. Do not paste the key into chat or commit it to your project.
## API reference
For endpoint details, request parameters, and integration examples, see the [Admin API developer documentation](https://api.replit.com/docs).
# Setting up a Design System
Source: https://docs.replit.com/teams/custom-design-system
Configure Agent with your organization's design system - component library, brand assets, design tokens, and visual standards - so every app, site, and artifact follows your design language.
A design system gives Agent the knowledge it needs to build on-brand UI across everything your organization creates on Replit - web apps, mobile apps, slides, and other artifacts. By setting up your component library, design tokens, brand assets, and usage rules within the standard Replit pnpm monorepo, Agent applies your visual language from the first prompt.
Design systems are available exclusively on the **Enterprise** plan. Only org admins can configure and manage design systems.
## Why set up a design system
Without a design system, every builder needs to manually explain your component library, color tokens, and layout conventions to Agent. Setting up a design system solves this by:
* **Encoding your visual standards**: Agent uses your exact components, colors, and spacing - not generic defaults
* **Ensuring consistency**: Every app follows the same design language
* **Reducing onboarding time**: New builders produce on-brand results immediately
* **Capturing tribal knowledge**: Design decisions and component usage patterns that live in your team's heads get documented for Agent
## What you will need
* Frontend code component library as a tarfile or set of tarfiles
* Font assets and icons used in your design system
* Any AI documentation of your design system (MCP, Agent Skills)
## What you can configure
Setting up a design system involves three parts:
1. **Custom instructions**. Your `custom_instruction/instructions.md` file gives Agent the high-level rules that apply to every project: which component library to use, which design tokens to reference, and which patterns to follow. Agent always has this file in context.
2. **Skills**. Skills in `.agents/skills/` provide detailed reference material that Agent loads on demand. Use them for component API documentation, theming guides, layout pattern libraries, and other deep reference content that would be too large for the main instructions file.
3. **Design and brand assets**. Place your logos, icons, fonts, and other brand assets in a dedicated folder (for example, `src/assets/brand/`). Configure a Vite path alias so Agent and builders can reference them with clean imports like `@brand/logo.svg` instead of fragile relative paths. This keeps asset references consistent across the entire project.
## Step-by-step guide
This guide walks you through setting up a design system end to end using your existing component library packaged as tarfiles:
1. **Create a new Replit app** and upload your tarfiles.
2. **Tell Replit Agent to install the packages and display all of the components.** Agent will configure the project and render your component library.
3. **Review the output.** Make sure all components look correct and match your expectations. Once everything is verified, proceed to [Creating the design system skill](#creating-the-design-system-skill).
### Creating the design system skill
With your components ready, the final step is to create a design system skill so Agent can reference your components, tokens, and usage patterns in every project.
Copy the entire prompt below and paste it into Agent. Replace `` with the name of your design system:
````
Create a `` design system skill from the components and packages in this project.
Use the file structure shown below with a `SKILL.md` at the root, a `references/` directory for guides and component docs, and a `packages/` directory containing all dependencies needed to function.
Go through every component in the project and document each one in its own file under `references/components/`, including its props, variants, and example usage.
Format `SKILL.md` as an index that links out to the guide and component reference files, with a "General Guidance" section and a "Components" section, following the example shown below.
File structure:
.agents/skills/your-design-system/
├── SKILL.md
├── references/
│ ├── guides/
│ │ ├── setup.md
│ │ ├── guardrails.md
│ │ ├── layout-and-spacing.md
│ │ └── ...
│ └── components/
│ ├── component-index.md
│ ├── button.md
│ ├── checkbox.md
│ └── ...
└── packages/
└── (Tar files or code components)
The `SKILL.md` file acts as an index that links out to separate markdown files for guides and component references. Each linked file covers one topic in detail. Here is an example of what the generated `SKILL.md` looks like:
```markdown
---
name: your-design-system
description: Use when building or modifying any UI. Provides component API references, layout guidance, and visual style rules for your design system.
---
# Your Design System
## General Guidance
- [Setup](references/guides/setup.md) — Installation, project configuration, and provider setup
- [Guardrails](references/guides/guardrails.md) — Hard rules that must never be broken (banned patterns, required tokens, accessibility minimums)
- [Layout & Spacing](references/guides/layout-and-spacing.md) — Grid system, spacing scale, responsive breakpoints, and page templates
- ...
## Components
- [Component Index](references/components/component-index.md) — Full list of available components with status and category
Individual component references (props, variants, examples):
- [Button](references/components/button.md)
- [Checkbox](references/components/checkbox.md)
- ...
```
Guide files cover one topic each — setup and installation steps, best practices and rules, reference tables for token values, and short code examples showing correct usage.
Component files document a single component each, including the component name, a brief description, a props table, usage examples, and any guidelines or constraints. The more complete these files are, the better Agent's output will be.
````
### Connect your skill to Agent
Once the skill is created, make sure your `custom_instruction/instructions.md` points Agent to it:
```markdown theme={null}
# Design System
Read and follow the design system skill at `.agents/skills/your-design-system/`.
Always apply the design system when building or modifying UI.
```
Finally, pre-populate `replit.md` with design-system-specific context so Agent understands your visual standards from the start. Include a project overview, your preferred component library, key design preferences (spacing scale, accessibility requirements), and the architecture stack.
### Validate your setup
Before rolling out your design system, verify these essentials:
* `custom_instruction/instructions.md` points Agent to your design system skill
* `.agents/skills/` includes the skill with component references, guides, and packages
* `replit.md` is pre-populated with project overview, preferences, and architecture
* Design tokens file is included (`tokens.css` or equivalent)
* Design system package is pre-installed in `package.json`
* Create a new test app and verify Agent uses the design system correctly
### Pin the design system to your organization
Once your design system is ready, pin it so every org member can use it:
1. Navigate to the design system app in your organization
2. Open the app's action menu (three-dot menu)
3. Select **Pin to Agent input box**
Only org admins (members of the `system_admins` role) can pin and unpin design systems.
Set member access to **Read-only** so that members can see and use the pinned design system without being able to edit it.
The design system now appears as a selectable pill below the Agent input box for every member of your organization. To remove it, open the same menu and select **Unpin from Agent input box**.
## Maintain your design system over time
Design systems evolve. Keep yours current:
* **Update token files** when your design system ships new colors, spacing, or typography values
* **Update skills** when components get new props, variants, or usage patterns
* **Update instructions** when design principles or standards change
* **Bump package versions** when new releases of your design system ship
* **Test regularly** by creating a new app and verifying that Agent produces correct output
## Design Systems vs. Custom Templates
Design systems and [custom templates](/teams/custom-templates) serve different purposes:
| | Design Systems | Custom Templates |
| -------------------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| **Purpose** | Change the frontend stack to your team's and utilize your code components | Replace the default stack entirely (e.g., Rust, Go, C++) |
| **Stack** | Works within the standard Replit pnpm monorepo | Defines a completely custom project structure |
| **What it provides** | Component library rules, design tokens, brand assets, visual skills | Full boilerplate: runtime, build config, dependencies, project layout |
| **Applies to** | Web apps, mobile apps, slides, artifacts - anything Agent builds | Only apps created from that specific template |
Use a design system when you want Agent to follow your visual standards across the normal Replit experience. Use a custom template when you need a fundamentally different stack.
## Related resources
* [Custom Templates](/teams/custom-templates) - Set up entirely custom stacks for your organization
* [Agent Skills](/features/agent/skills) - How skills work and how to create them
* [Use a skill](/build/use-agent-skills) - Hands-on guide to using skills
* [replit.md](/features/project-setup/replit-dot-md) - Customize Agent behavior with project context
* [Enterprise overview](/category/teams) - Learn about Enterprise features
# Custom Templates
Source: https://docs.replit.com/teams/custom-templates
Set up and manage custom templates on Replit Enterprise to standardize how your organization builds with Agent.
## Getting started
Replit is a cloud development environment capable of writing and running any framework or stack. To build a custom template, there are two recommended paths:
1. **[Import](https://replit.com/import) from a Git provider** — Import your existing starter stack (or one matching your preferences) from GitHub, GitLab, or Bitbucket.
2. **Fork the Blank template** — Fork the [Blank template](https://replit.com/@replit/Nothing?v=1) to start from scratch with a completely empty development environment.
Customers have successfully built templates matching Rust, Python, Java, C++, and many other stacks — if it runs at all, it can run on Replit.
We recommend working with Replit's **Field Engineering team** when building your first templates. They have extensive experience setting up custom templates across a wide range of stacks and are available to help. Reach out to your Account Executive to get connected.
Custom templates let Enterprise admins create pre-configured starting points that appear directly in the Agent input box for every member of your organization. When a builder selects a custom template, Agent forks it and uses the template's configuration, instructions, and skills to guide all subsequent work. No extra setup required.
Custom templates are available exclusively on the **Enterprise** plan. Only org admins can pin and manage templates.
## How custom templates work
A custom template is a standard Replit App in your organization that has been **pinned to the Agent input box**. When a builder selects it:
1. Agent creates a new app by forking the template (all files are copied)
2. Agent skips the planning phase and goes straight to building
3. The template's `custom_instruction/instructions.md` file is injected into Agent's context
4. Custom [skills](/features/agent/skills) from `.agents/skills/` are discovered and made available
5. The [`replit.md`](/features/project-setup/replit-dot-md) file provides ongoing project context
This means your organization's standards, patterns, and tooling are baked in from the very first interaction.
## Template file structure
Here is the recommended layout for a custom template:
```
my-template/
├── .replit # App configuration (run commands, ports, modules)
├── replit.md # Agent memory: project overview and preferences
├── custom_instruction/
│ └── instructions.md # Company instructions injected into Agent's prompt
├── .agents/
│ └── skills/
│ └── my-skill/
│ └── SKILL.md # Custom skills Agent can invoke on demand
└── ... # The rest of your repo structure
```
Each file serves a distinct purpose. The sections below walk through how to configure each one.
## Set up a custom template
### Create the base app
Create a new Replit App in your organization. Set up the project with all the files, dependencies, and configuration your builders need as a starting point. This includes:
* Source code scaffolding (components, utilities, config files)
* Pre-installed dependencies (`package.json`, `requirements.txt`, etc.)
* Environment configuration in the [`.replit` file](/replit-app/configuration)
### Configure shared secrets
If your template relies on API keys, tokens, or other credentials, add them to the template's **Secrets** (under the Tools pane) before pinning. When a builder creates a new app from the template, all secrets are copied into the new app automatically, so builders can start working without configuring credentials themselves.
Document every secret in `custom_instruction/instructions.md` (or in a dedicated skill) so builders know what is available and what each key is used for.
Secrets are copied at fork time, not dynamically synced. If you rotate a key or add a new secret to the template, existing apps that were previously forked are not updated. Builders must add or update secrets manually in those apps.
### Write custom instructions
Create a file at `custom_instruction/instructions.md` in the project root. This is the most important file in your template — it tells Agent how your organization builds software.
The folder name must be `custom_instruction` (singular), not `custom_instructions`.
Agent injects this file directly into its system prompt with a preamble that frames it as company-provided guidance. Write it in Markdown and include:
* **Architecture patterns**: How your apps should be structured
* **Coding standards**: Naming conventions, file organization rules, linting expectations
* **Component usage**: Which libraries and components to use (and which to avoid)
* **API patterns**: How to call your backend services, handle authentication, manage errors
* **Testing requirements**: What tests are expected and how to run them
* **Deployment guidelines**: Environment-specific configuration and deploy workflows
````markdown theme={null}
# Company Engineering Standards
## Architecture
All web applications use React with TypeScript. Use functional components
with hooks exclusively. State management uses Zustand for local state
and React Query for server state.
## Component Library
Use our internal design system package `@acme/ui`. Never use raw HTML
elements for buttons, inputs, forms, or modals — always use the
corresponding component from `@acme/ui`.
Import components like this:
```tsx
import { Button, TextField, Modal } from '@acme/ui';
```
## API Integration
All API calls go through the `@acme/api-client` package. Never use
raw fetch or axios directly. Authentication is handled automatically
by the client.
## Testing
Every component must have a corresponding test file. Use Vitest
for unit tests and Playwright for integration tests.
````
**Size limit**: Content is soft-limited to approximately 25 KB. Content beyond this limit may be progressively truncated. As your instructions grow, move detailed reference material into [skills](/features/agent/skills) in `.agents/skills/` rather than keeping everything in `instructions.md`. Skills are loaded on demand when relevant, so they do not count against the instruction size limit and keep your main instructions focused on high-level rules.
### Add custom skills
Create skills in the `.agents/skills/` directory for specialized workflows that Agent should follow. Each skill is a directory containing a `SKILL.md` file with YAML frontmatter.
```
.agents/skills/
├── use-design-system/
│ └── SKILL.md
├── api-integration/
│ └── SKILL.md
└── run-tests/
└── SKILL.md
```
Each `SKILL.md` needs a `name` and `description` in its frontmatter:
```markdown theme={null}
---
name: use-design-system
description: Use when building UI components. Provides component patterns, theming rules, and accessibility requirements for the Acme design system.
---
# Acme Design System
## Available components
- `Button` — Primary, secondary, and ghost variants
- `TextField` — Text input with validation support
- `Modal` — Dialog overlay with focus trapping
...
```
| Field | Required | Details |
| ------------- | -------- | ----------------------------------------------------------------------- |
| `name` | Yes | Max 64 characters. Lowercase letters, numbers, and hyphens only. |
| `description` | Yes | Max 1,024 characters. Describes what the skill does and when to use it. |
| `enabled` | No | Defaults to `true`. Set to `false` to disable without deleting. |
**How skills load**: Agent sees only the `name` and `description` in its prompt. It reads the full `SKILL.md` content on demand when the skill is relevant to the current task. This means the `description` is critical — write it to match the scenarios where Agent should use the skill.
Skills can also include supporting files alongside `SKILL.md`:
```
.agents/skills/use-design-system/
├── SKILL.md
├── references/
│ └── component-api.md
└── assets/
└── theme-tokens.json
```
For more about skills, see [Agent Skills](/features/agent/skills) and [Use a skill](/build/use-agent-skills).
### Configure replit.md
Pre-populate `replit.md` in the project root with your template's architecture overview. This file is always loaded into Agent's context and serves as ongoing project memory.
The file should have these four sections:
```markdown theme={null}
# Overview
Task management application built with React, TypeScript, and the Acme
design system. Uses Express.js backend with PostgreSQL.
# User Preferences
- Use TypeScript for all files
- Prefer functional components with hooks
- Follow Acme coding standards
# System Architecture
- Frontend: React + TypeScript + @acme/ui
- Backend: Express.js + TypeScript
- Database: PostgreSQL with Drizzle ORM
- Auth: Acme SSO via @acme/auth
# External Dependencies
- @acme/ui: Internal design system
- @acme/api-client: API integration layer
- @acme/auth: Authentication SDK
```
Agent updates `replit.md` as the project evolves. If the file grows beyond approximately 4,000 tokens, Agent automatically summarizes it to keep it focused and useful.
For more details, see [replit.md](/features/project-setup/replit-dot-md).
### Pin the template to your organization
Once your template is ready:
1. Navigate to the template app in your organization
2. Open the app's action menu (three-dot menu)
3. Select **Pin to Agent input box**
Only org admins (members of the `system_admins` role) can pin and unpin templates.
Set member access to **Read-only** so that members can see and use the pinned template without being able to edit it.
The template now appears as a selectable pill below the Agent input box for every member of your organization. To remove it, open the same menu and select **Unpin from Agent input box**.
### Control template access
Pinning makes a template visible to every org member. For more targeted distribution, use the **Invite** button on the template app to share it with specific [Groups or individual users](/teams/identity-and-access-management/groups-and-permissions). This lets you limit which teams or people can see and fork the template while keeping it unpinned from the org-wide input box.
## What happens when a builder selects a template
When an org member picks a pinned template from the Agent input box:
1. **Fork**: A new app is created as a copy of the template, with all files included
2. **Skip planning**: Agent bypasses the initial planning conversation and goes directly into building mode
3. **Load instructions**: `custom_instruction/instructions.md` is read and injected into Agent's system prompt as company-provided guidance
4. **Discover skills**: Skills in `.agents/skills/` are identified and listed in Agent's context for on-demand loading
5. **Load project context**: `replit.md` is read and injected into Agent's context (or auto-generated if missing)
6. **Inherit configuration**: The `.replit` file, dependencies, and all template files carry over to the new app
The builder can immediately start prompting Agent with their specific requirements, and Agent operates within the guardrails established by the template.
## How files work together
Each configuration file serves a distinct role:
| File | Purpose | When Agent reads it | Mutable by Agent |
| ------------------------------------ | ---------------------------------- | ------------------------------------ | --------------------------------- |
| `custom_instruction/instructions.md` | Organization standards and rules | Always (injected into system prompt) | No |
| `.agents/skills/*/SKILL.md` | Specialized workflows and patterns | On demand (when relevant) | Yes (Agent can create skills too) |
| `replit.md` | Project overview and preferences | Always (injected into system prompt) | Yes (Agent updates it over time) |
| `.replit` | Runtime configuration | When configuring the app | Yes |
**Key distinction**: `custom_instruction/instructions.md` is your static, authoritative source for organizational standards. `replit.md` is the living document that Agent maintains as the project evolves. Skills are on-demand reference material for specific workflows.
## Best practices
### Keep instructions focused
Write `custom_instruction/instructions.md` for the patterns that matter most. Focus on:
* Decisions that are hard to reverse (architecture, data models)
* Patterns that must be consistent (component usage, API conventions)
* Standards the builder might not know about (internal libraries, team conventions)
Avoid including changelogs, implementation details, or information that changes frequently.
### Write discoverable skill descriptions
The `description` field in `SKILL.md` frontmatter is what Agent uses to decide when to load a skill. Write descriptions that match the tasks where the skill is relevant:
```yaml theme={null}
# Good — describes when to use it
description: Use when building forms or handling user input. Provides validation patterns, error display conventions, and accessible form layouts.
# Less effective — too vague
description: Form utilities and helpers.
```
### Organize skills by workflow
Group skills around workflows rather than technical categories:
| Approach | Example |
| --------------------- | -------------------------------------------- |
| **By workflow** | `build-a-form`, `connect-to-api`, `add-auth` |
| **By technical area** | `react-utils`, `api-helpers`, `auth-config` |
The workflow approach helps Agent discover skills at the right moment.
### Iterate on your template
Templates improve with use. After your team starts building with a template:
1. Watch for patterns Agent gets wrong and add them to `instructions.md`
2. Create new skills when Agent solves a problem well — capture the solution
3. Update base dependencies and configurations as your stack evolves
4. Test changes by creating a new app from the template to verify the experience
### Template updates and existing apps
Changes to the template app are reflected in **new** apps created from it. Existing apps that were previously forked from the template are independent copies and do not receive updates.
## Related resources
* [Agent Skills](/features/agent/skills) — Learn how skills work and how to create them
* [Use a skill](/build/use-agent-skills) — Hands-on guide to using and building skills
* [replit.md](/features/project-setup/replit-dot-md) — Customize Agent's behavior with project-level context
* [Design Systems](/teams/custom-design-system) — Set up your organization's design system for Agent
* [App configuration](/replit-app/configuration) — Configure your `.replit` file
* [Developer Frameworks](/features/project-setup/developer-frameworks) — Why language and framework starter templates were removed and how to start a project now
* [Enterprise overview](/category/teams) — Learn about Enterprise features
# Enterprise Privacy Settings
Source: https://docs.replit.com/teams/enterprise-privacy-settings
Configure organization-wide privacy, security, and source control settings to protect your team's code and deployments.
As an enterprise admin, you can configure organization-wide settings that control how team members interact with code, deployments, and external platforms. These settings help maintain security standards, protect intellectual property, and ensure compliance with enterprise policies.
## Accessing privacy settings
1. Navigate to your enterprise workspace
2. Select **Settings**
3. Select **Advanced** to view all available settings
## Privacy settings
Privacy settings control how apps are published and accessed within your organization.
Require all new apps to be published as private, restricting access to authenticated team members only
Allow team members to add password protection to their published apps
Require authentication for all app development URLs, including SSO for SAML-enabled organizations
### Private deployments
When enabled, all new apps must be published as private. Private apps are only accessible to authenticated members of your organization.
**When to use this setting:**
**When to use this setting:**
* The organization handles sensitive data or proprietary applications
* You need to ensure apps are not accidentally made public
* Compliance requirements mandate restricted access to published applications
* You need to ensure apps are not accidentally made public
* Compliance requirements mandate restricted access to published applications
This setting applies only to newly published apps. Existing published apps retain their current visibility settings.
### Password-protected deployments
Control whether team members can create password-protected deployments. When enabled, builders can add an additional layer of security by requiring a password to access their published apps.
**When to use this setting:**
* You want to allow sharing apps with external stakeholders without making them fully public
* Teams need to demo applications to clients before wider release
* You require granular access control beyond organization membership
### Require private development URLs
When enabled, all app development URLs require authentication. If your organization has enabled SAML, development URLs require SSO authentication.
**When to use this setting:**
**When to use this setting:**
* You need to prevent unauthorized access to in-progress applications
* Security policies require all development environments to be protected
* You want to ensure only authenticated team members can view development previews
* Your security policy requires all development environments to be protected
* You want to ensure only authenticated team members can view development previews
This setting applies retroactively to all existing apps in your organization.
### Ban source code export
When enabled, team members cannot export app source code as a zip file. This prevents code from being downloaded and shared outside of the Replit platform.
**When to use this setting:**
**When to use this setting:**
* You need to maintain strict control over where source code resides
* Security policies prohibit local copies of code
* You want to ensure all development happens within managed environments
* Your security policy prohibits local copies of code
* You want to ensure all development happens within your managed environment
## Security settings
Security settings help you enforce vulnerability scanning and other protective measures.
### Require security scan
Configure whether all apps must pass a security scan before publishing. Security scans detect vulnerabilities, exposed secrets, and other security issues in your code.
Available options:
| Setting | Description |
| ----------- | ---------------------------------------------------- |
| **Off** | Security scans are optional |
| **Require** | All apps must pass a security scan before publishing |
**When to use this setting:**
**When to use this setting:**
* Security compliance requirements must be met
* You want to prevent accidental exposure of API keys or secrets
* You need to ensure consistent security standards across all published apps
* You want to prevent accidental exposure of API keys or secrets
* You need to ensure consistent security standards across all published apps
This setting does not apply to apps that were published before the setting was enabled.
## Source control settings
Source control settings help you enforce version control practices and protect your organization's code repositories.
### Require Git remote
When enabled, all apps must have local changes pushed to a Git remote before publishing. This ensures that all code changes are tracked in your organization's version control system.
**When to use this setting:**
**When to use this setting:**
* All code must be backed up in Git
* You need an audit trail of all code changes
* Workflows require code review before publishing
* You need an audit trail of all code changes
* Your workflow requires code review before publishing
This setting does not apply to apps that were published before the setting was enabled.
### Private remotes
Control whether team members can use public Git repositories. When set to require private remotes, team members can only push to private repositories on platforms like GitHub.
Available options:
| Setting | Description |
| -------------------------- | ----------------------------------------------------------------- |
| **Off** | Team members can use public or private repositories |
| **Require for non-admins** | Non-admin team members must use private repositories |
| **Require for all** | All team members, including admins, must use private repositories |
**When to use this setting:**
**When to use this setting:**
* Public code repositories are prohibited
* You need to ensure proprietary code is not accidentally pushed to public repos
* Compliance requirements mandate private version control
* You need to ensure proprietary code is not accidentally pushed to public repos
* Compliance requirements mandate private version control
## Best practices
Enable **Private deployments** to ensure all new published apps are private. This helps prevent accidental exposure of sensitive applications.
Set **Require security scan** to catch vulnerabilities before apps go live. This helps maintain consistent security standards across your organization.
Enable **Require private development URLs** to ensure even in-progress work is protected. This is especially important for organizations handling sensitive data.
Combine **Ban source code export** with **Private remotes** requirements to maintain complete control over code location and access.
## Related resources
* [Information Security](/teams/information-security/overview) - Learn about Replit's security practices and compliance standards
* [SAML authentication](/teams/identity-and-access-management/saml) - Configure single sign-on for your organization
* [Groups and permissions](/teams/identity-and-access-management/groups-and-permissions) - Manage team member access with roles and groups
# Account and Workspace Admins
Source: https://docs.replit.com/teams/identity-and-access-management/account-and-workspace-admins
Account admins and workspace admins are distinct roles. Account admins manage billing and every workspace under your account, while workspace admins manage only the workspaces they belong to.
**This page applies to the Enterprise plan only.** Separate account admin and workspace admin roles exist only on Enterprise.
On the **Core** and **Pro** plans, your account has a single **account admin** (typically the account owner) and there is no separate workspace admin role. If you're on Core or Pro, see [Managing Members](/teams/identity-and-access-management/managing-members) and [Roles, Groups and Access](/teams/identity-and-access-management/groups-and-permissions) instead—the **Admin** role described there is your account admin.
On the Enterprise plan, Replit separates administrative responsibility into two distinct roles: **account admins** and **workspace admins**. Splitting these roles lets you give someone full control over a single workspace without also handing them billing and account-wide control. This page explains what each role does, how they differ, and how to configure them.
## How the two roles relate
Your Replit **account** is the billing entity that owns your subscription, seats, and one or more **workspaces** (your organizations)—Enterprise accounts can contain more than one. The two admin roles map onto these two scopes:
* **Account admins** govern the whole account. They control billing and have administrative access across every workspace under the account.
* **Workspace admins** govern only the specific workspace (or workspaces) they belong to. They have no billing access and no control over other workspaces.
Every account admin is automatically an admin in every workspace under the account, so an account admin is effectively a superset of a workspace admin. A workspace admin is not an account admin and cannot manage billing or other workspaces.
Account-wide. Manages billing, seats, security settings, and every workspace under the account.
Workspace-scoped. Manages members and resources within their own workspaces only.
## What each role can do
Both roles administer workspaces—the difference is *which* workspaces. An account admin administers every workspace under the account, while a workspace admin administers only the workspaces they belong to.
| Capability | Account admin | Workspace admin |
| ---------------------------------------------------------------- | :-----------: | :-------------: |
| Manage members in workspaces they administer | Yes | Yes |
| Manage apps, groups, and resources in workspaces they administer | Yes | Yes |
| View and edit billing, payment methods, and invoices | Yes | No |
| Edit, cancel, or restore the subscription | Yes | No |
| Add, remove, and assign seats | Yes | No |
| Set spending and usage limits | Yes | No |
| Create new workspaces | Yes | No |
| Manage other account admins | Yes | No |
| Administer every workspace under the account | Yes | No |
| Configure SAML, SCIM, audit logs, and security contacts | Yes | No |
Workspace admins hold administrative power scoped to their own workspaces, while account admins hold every administrative power across the entire account.
Billing, seat management, subscription changes, and account-wide security controls require an account admin. A workspace admin cannot perform these actions, even within their own workspace.
## Configuring account admins
Account admins are managed from the **Seats** tab in your settings. Adding an account admin grants account-wide administrative access and automatically makes that person an admin in every workspace under the account.
### Promote a member to account admin
From your settings, open the **Seats** tab. This tab lists the people in your account along with their current role.
Find the member you want to promote, open the actions menu, and select **Promote to account admin**. The change takes effect immediately.
### Demote an account admin
Demoting an account admin removes their account-wide and billing access. By default, demotion does not remove them from their workspaces—they keep workspace access independently of account admin status.
From your settings, open the **Seats** tab.
Find the account admin, open the actions menu, and select **Demote from account admin**. The change takes effect immediately.
A few rules protect your account from losing administrative access:
* You cannot demote yourself.
* You cannot remove the last account admin. Your account must always have at least one.
* You cannot demote the owner of a personal account.
### SCIM-provisioned admins
If you provision users through [SCIM](/teams/identity-and-access-management/scim), a user assigned the **Admin** role by your identity provider becomes an **account admin**. To create a workspace-scoped admin, assign the **Workspace admin** role in Replit rather than through your identity provider.
## Configuring workspace admins
Assign the workspace admin role to give someone full administrative control of a specific workspace without granting account-wide or billing access. This is useful when a team lead should run their own workspace but should not manage the subscription or other teams.
Open the workspace whose admin you want to assign, then go to its **Members** page.
Find the member, open their role selector, and choose **Workspace admin**. The member gains administrative access scoped to that workspace only.
A workspace admin's access stops at the workspaces they belong to. They cannot access billing, manage seats, or administer other workspaces—those actions require an account admin.
## Choosing the right role
* Assign **account admin** to people who own billing, manage the subscription and seats, configure security settings, or need oversight across every workspace.
* Assign **workspace admin** to people who run a single team or workspace and should manage its members and resources without touching billing or other workspaces.
## Next steps
Learn how roles and custom groups control access across your organization.
Add, remove, and assign roles to members of your organization.
Automate user provisioning and role assignment from your identity provider.
Control your billing capacity and the number of seats you pay for.
# Audit Logs
Source: https://docs.replit.com/teams/identity-and-access-management/audit-logs
Track and monitor security-relevant actions in your Replit Enterprise organization with comprehensive audit logs and SIEM integration.
## Introduction
Audit logs are available exclusively for Enterprise customers. Contact our sales team at [sales@replit.com](mailto:sales@replit.com) to enable this feature for your organization.
Audit logs provide a detailed record of security-relevant actions within your Replit organization. They allow you to track who did what, when, and where — giving your security and compliance teams the visibility they need to monitor and investigate activity.
Replit's audit log system is powered by [WorkOS](https://workos.com/), ensuring enterprise-grade reliability and security for log storage, retrieval, and streaming.
## Key Features
Monitor user lifecycle events including provisioning, deprovisioning, invitations, and role changes
Search, filter, and review audit events through a dedicated log viewer portal
Stream audit logs in real time to your existing security tools via log streaming
Only organization admins can view audit logs and configure streaming, keeping your security data protected
## Getting Started
Navigate to **Settings** > **Advanced** > **Audit Logs** and select **Enable audit logs**. You must be an organization admin to enable this feature.
If your organization already has [SCIM](/teams/identity-and-access-management/scim) configured, audit logs are enabled by default — you can skip this step and go straight to **View audit logs**. SCIM and audit logs are backed by the same WorkOS organization, so configuring SCIM turns audit logs on automatically.
Audit logs are supported for single-workspace accounts only. Enabling audit logs will disable additional workspace creation for your organization.
Once enabled, select **View audit logs** to open the audit log portal
Select **Set up SIEM integration** to configure real-time log streaming to your security tools
## Tracked Events
Audit logs capture security-relevant events across your organization, including user lifecycle actions such as provisioning, deprovisioning, and invitation management. The set of tracked events is actively expanding.
For a full list of currently tracked events, contact your Replit account representative or reach out to [sales@replit.com](mailto:sales@replit.com).
Audit log events are designed with privacy in mind. Only customer-facing identifiers like email addresses and organization slugs are recorded — internal system IDs are never exposed.
## Viewing Audit Logs
To view your organization's audit logs:
1. Go to **Settings** > **Advanced**
2. In the **Audit Logs** section, select **View audit logs**
3. The audit log portal opens, where you can search, filter, and review events
The portal provides:
* **Search** — Find specific events by keyword
* **Filters** — Narrow results by event type, date range, actor, or target
* **Export** — Download log data for offline analysis or compliance reporting
## SIEM Integration
SIEM (Security Information and Event Management) integration allows you to stream audit log events in real time to your existing security tools. This is useful for:
* Centralizing security monitoring across all your enterprise tools
* Setting up automated alerts based on audit log patterns
* Meeting compliance requirements for log retention and analysis
### Setting Up Log Streaming
1. Go to **Settings** > **Advanced**
2. In the **Audit Logs** section, select **Set up SIEM integration**
3. The log streaming configuration portal opens
4. Follow the instructions to connect your SIEM provider
Replit supports streaming to any destination compatible with WorkOS Log Streams, including:
* **Datadog**
* **Splunk**
* **Amazon S3**
* **Generic HTTP endpoint (webhook)**
Log streaming is configured through the WorkOS portal. Changes to your streaming configuration take effect immediately.
## FAQs
### Who can view audit logs?
Only organization admins can access audit logs and configure SIEM integration. Non-admin members do not have access to any audit log data.
### Do I need SCIM enabled to use audit logs?
No. SCIM is not required to use audit logs. However, if your organization has [SCIM](/teams/identity-and-access-management/scim) configured, audit logs are enabled by default — there is no separate step to turn them on. SCIM-configured organizations will also capture SCIM-related user lifecycle events such as provisioning and deprovisioning.
### What happens if an audit log event fails to record?
Audit log recording is designed to never interfere with the underlying operation. If an event fails to be recorded, the original action (such as user provisioning) still completes successfully. Failed events are logged internally for investigation.
### How long are audit logs retained?
Audit log retention is managed through WorkOS. By default, logs are retained in the audit log portal for viewing and search. For longer retention, set up SIEM integration to stream logs to your own storage.
### Can I export audit logs?
Yes. You can export audit log data directly from the audit log portal or by configuring a SIEM integration to stream events to your preferred storage destination.
## Related Resources
Set up automated user provisioning with SCIM integration
Configure single sign-on authentication for your organization
Manage user roles and access controls
Configure organization-wide privacy and security settings
# Roles, Groups and Access
Source: https://docs.replit.com/teams/identity-and-access-management/groups-and-permissions
Control member access with roles and groups. Roles provide default access levels (Admin, Member, Guest, Viewer), while custom groups—available exclusively on the Enterprise plan—offer fine-grained access control.
Manage your organization's access to resources and applications through a comprehensive system built on default roles and custom groups. This approach provides granular control over who can access what, while maintaining organizational security and structure.
## Features
Replit Enterprise provides comprehensive access control through two complementary systems that work together to manage access across your organization.
Full administrative access to organization settings and all resources
Can see all other members and create Apps and Projects
Limited access to only shared apps and resources
Read-only access to apps and deployments
Key capabilities include:
* **Default roles**: Four built-in access levels that provide baseline access control for all organization members
* **Custom groups** *(Enterprise only)*: Create specialized groups for fine-grained access control beyond default role limitations
* **Flexible access control**: Use roles and groups to grant precise access for different Apps and resources
* **Easy member management**: Add, remove, and transfer members between groups with simple administrative controls
## Usage
### Roles
Every organization member must have a role that defines their baseline access level within your organization. Admins assign roles when adding new members to ensure proper access control from day one.
The four default roles provide different levels of access:
* **Admins**: Have access to every action available in your organization, including organization settings, billing, and member management
* **Members**: Can create and edit Replit Apps and see all other organization members, but cannot perform sensitive administrative actions
* **Guests**: Have the lowest access level and can only edit apps specifically shared with them. This role is meant for external collaborators (e.g., external contractors). On Enterprise organizations with [SSO](/teams/identity-and-access-management/saml) enabled, Guests must use an email outside your SSO domains. Internal users can be added as members or admins instead
* **Viewers**: Have read-only access to apps and deployments, making them ideal for stakeholders who need visibility without editing capabilities
On Enterprise, a Guest's role is locked. You can't promote a Guest to Member or Admin, or switch them to Viewer, after they've been added—remove the Guest and re-invite them at the role you want. Guests in SCIM-managed workspaces are managed through your identity provider.
**Enterprise only:** On Enterprise, the Admin role is split into two distinct roles—**account admin** (billing and account-wide control) and **workspace admin** (scoped to the workspaces they belong to). See [Account and Workspace Admins](/teams/identity-and-access-management/account-and-workspace-admins) for the difference and how to configure each. On Core and Pro, there is a single Admin (your account admin).
### Custom groups
Custom groups are available exclusively on the **Enterprise** plan.
Custom groups provide more access control beyond default roles. Create groups to grant specific access to selected organization members while maintaining their base role access.
For information on syncing IdP groups to Replit for easier bulk user access management, see [SCIM](https://docs.replit.com/teams/identity-and-access-management/scim).
The list of groups is available via the "Groups" tab in the sidebar. Each group card shows the name of the group, an icon with its color, and the number of group members. Members will only see groups to which they have at least viewer access.
#### Creating a group
Admins can create unlimited custom groups from the groups page. Select the **Add** button in the top right corner to open the creation modal where you can:
* **Name your group**: The group name is the only required field
* **Add visual identifiers**: Choose colors and icons to distinguish groups
* **Assign members**: Add organization members to groups individually or in bulk
* **Grant access**: Groups can later receive access to specific apps through each app's **Invite** button
After creating the group, the group details view loads where you can add members and configure organizational permissions.
#### Managing groups
Select any group card to access its management interface. Group management includes member addition, removal, and permissions configuration.
**Adding members to groups:**
To add a member to a group, select the **Add** button in the top right corner. This action becomes disabled if the person you're adding is not part of the organization and there are insufficient seats available.
You can search for new members by username or email. If the new member is not part of the organization, a warning appears to confirm the action.
After adding the new member, they appear in the group member list. They immediately gain access to Replit Apps and other resources available to the group.
**Removing members from groups:**
To remove a group member, select the trash icon on the right side of the member row. You can also open the actions menu using the three-dot button and select **Remove from group**. This opens a confirmation modal.
When removing members from custom groups, they retain their base role access but lose their group-specific access.
#### Setting group permissions
Assign organizational permissions to groups to define what level of access group members must have in your organization. To set group permissions, select the created group and choose the **permissions** tab in the left navigation.
The available permissions levels are:
* **Owner**: Can perform all organization actions, including deleting the organization
* **Billing manager**: Can update the organization's payment information, add and remove seats, and set spending limits
* **Manager**: Can create and manage groups, add and remove organization members, and view billing information
* **Editor**: Can create new Apps and view usage information
* **Viewer**: Can see basic information about the organization
These group permissions are separate from app-specific access, which you manage through individual apps using the Access feature.
You can see which apps groups have access to by selecting a group. Select **permissions** in the left navigation, and then go to **Apps**.
### App access control
Control who can access and collaborate on your apps using Replit's Access feature. Assign access to roles and groups to share specific apps with the right members while maintaining security across your organization.
#### Setting app access
From any app, select **Invite** in the upper right corner (to the left of **Publish**) to open the Access panel.
The Access panel displays all available roles and allows you to search for custom groups:
* **Default roles**: Admin, Members, Guests, and Viewers appear automatically in the Access panel
* **Custom groups**: Use the search functionality to find and grant app access to specific custom groups
#### Access levels
You can assign different access levels to each role and group for fine-grained control:
* **Owner**: Full access including app deletion and administrative control
* **Publisher**: Can edit code, republish apps, and manage app resources, and settings
* **Editor**: Can edit code and view app resources without publishing capabilities
* **Viewer**: Read-only access to code with the ability to fork apps for their own use
* **None**: No access to search, view, or edit the app
Select the appropriate access level for each role or group based on collaboration requirements and security needs.
# Managing Members
Source: https://docs.replit.com/teams/identity-and-access-management/managing-members
You can manage members on your Replit team to control access, collaboration, and permissions across your organization's apps and projects.
Managing members is one of the most important functions of a Replit organization, allowing you to add collaborators to your organization and control who has access to your team's resources.
## Features
The **Members** tab displays a list of current organization members, showing their default group and recent activity. From this view, you can manage your team through several key capabilities:
* **Add Members**: Invite new collaborators to join your organization and assign them appropriate permissions
* **Remove Members**: Remove people from your organization when they no longer need access
* **Assign Roles**: Set member permissions with Admin, Member, Guest, or Viewer roles
* **Manage Invitations**: Send email invitations to non-Replit users and track invitation status
* **Seat Management**: Control billing capacity and monitor available seats
Add team members so you can share apps and ideas.
Remove members or change who's on your team.
## Usage
### Adding members
For automated user management and bulk operations, see [SCIM](/teams/identity-and-access-management/scim) instead.
*Note: SCIM is available for enterprise customers only.*
Selecting the **Add** button in the corner of the Members page opens a modal with a search input. The **Add** button may become disabled if there are not enough seats available or if you don't have permissions to add new organization members.
You can find existing Replit members via username or email, while you can add non-Replit members by email. After selecting someone or entering an email address, you can set the member's group with the following options:
* **Admin**: Admins have full administrative access to organization settings and all resources.
* **Member**: Members can see all other members, and can create Apps and Projects.
* **Guest**: Guests can only edit and access apps shared with them.
* **Viewer**: Viewers have read-only access to apps and deployments in your organization.
**Enterprise Guests:** A Guest's role is fixed. You can't promote a Guest to Member or Admin, or change them to Viewer, in place. To give a Guest a different role, remove them and re-invite them at the new role. In SCIM-managed workspaces, manage Guest roles through your identity provider.
**Enterprise only:** On the Enterprise plan, the Admin role is split into **account admin** and **workspace admin**. See [Account and Workspace Admins](/teams/identity-and-access-management/account-and-workspace-admins) for what each role can do and how to assign them. On Core and Pro, there is a single Admin.
Existing members join immediately, and the seat becomes active immediately. Non-Replit members join the organization after creating an account. The seat won't become active until this happens. The invitation sent via email expires after seven days.
**Enterprise Guests must be external.** If your organization uses SSO, you can only invite Guests whose email is outside your SSO email domains. Someone whose email matches your SSO domain is treated as an internal user and can be added as a member or admin through your identity provider instead.
Additional documentation:
* [SCIM](/teams/identity-and-access-management/scim)
* [SAML](/teams/identity-and-access-management/saml)
* [Viewer Seats](/teams/identity-and-access-management/viewer-seats)
### Inviting external guests
On the Enterprise plan, you can invite an outside collaborator, such as a contractor, agency, partner, or candidate, into your workspace as a Guest. The guest gets access to only the apps you share with them, and nothing else in your workspace.
This is the one supported way to add someone without going through your identity provider. Everyone else still joins through your identity provider, so your provider stays the source of truth for your own team.
Guests must be **external**. A guest's email has to be outside your SSO email domains. If you enter someone whose email matches your domain, Replit asks you to add them as a member through your identity provider instead.
You can invite a guest from two places:
Open the app you want to share and select **Share**. Enter the external person's email and send the invite. They join as a Guest with access to only that app.
Open the **Members** page and select **Add**. Enter the external email and choose the **Guest** role.
Guests join after they create a Replit account, and the email invitation expires after seven days.
#### Manage and remove guests
Guests are easy to spot and manage:
* Guests show an **External** badge wherever members are listed, so you can tell them apart from your team.
* A dedicated **Guests** table lists each guest's email and the apps they can reach.
* To remove a guest's access, select **Revoke** next to their entry in the Guests table.
A guest's role is fixed at Guest. To give a guest a different level of access, remove them and re-invite them.
### Removing members
Eligible members can remove people from the organization using the trash can icon. You can also use the context menu opened from the triple dot to the right of each member row.
Removing someone from the organization requires a confirmation step. After you remove them, a seat becomes available immediately and you can use it to invite a new organization member.
### Managing seats
Managing seats is different from managing members. While member management involves adding or removing people from your team, seat management controls your billing capacity—how many seats you're paying for.
For detailed information on adding seats and removing seats, see [Managing Seats](/billing/teams-billing/managing-seats).
# Access Management
Source: https://docs.replit.com/teams/identity-and-access-management/repl-access-management
Learn how to control access and visibility settings for Replit Apps through the Project Editor interface, including group permissions and user roles.
Replit App access may be managed either from the [group permissions interface](/teams/identity-and-access-management/groups-and-permissions#repl-permissions), or from the Project Editor using the "Invite" button in the header. Users with edit access can change the role for existing groups or individuals, or add roles to new groups or users. All users with access to the Project Editor are able to see who has access to the Replit App, even if they can't manage it.
To grant access to a group or member, use the search to locate them by name or username.
After selecting the result, a dropdown for the role selection will appear. After choosing the role, the group or user will be added to the "Groups with access" or "People with access" sections below.
This popover controls who in your organization can see and work on the Replit App, including the **internal** (organization-only) audience when that option is available. App source code is not available as a platform-wide **public to Replit** listing; only users and groups you grant access can see that the app exists and open it, according to your org rules.
# SAML
Source: https://docs.replit.com/teams/identity-and-access-management/saml
Set up SAML single sign-on for your Replit Enterprise Organization directly from your workspace settings, including IdP configuration and email domain claims.
## Introduction
Only organizations with an Enterprise plan are able to use SAML SSO. You can [purchase the Enterprise plan directly from the pricing page](https://replit.com/pricing) or [contact us](https://replit.com/teams#inlineForm) for a guided walkthrough.
[SAML](https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language) SSO lets you use your Identity Provider (IdP) to authenticate users logging into replit.com. Users in your Organization are redirected to your IdP to authenticate, and your IdP returns a response to Replit that verifies the user's identity and signs them in.
Enterprise admins can configure SAML SSO directly from **Enterprise settings → Authentication** without contacting Replit. The wizard generates your Service Provider (SP) values, accepts your IdP credentials, and provisions SSO automatically. The same self-serve flow is used at sign-up when you purchase the Enterprise plan online, so you'll be guided through SSO setup as part of onboarding.
## Set up SAML SSO
The setup wizard takes you through five steps. You'll need admin access to both your Replit Organization and your Identity Provider.
Open the workspace switcher, choose your Enterprise workspace, and open **Settings**. Select **Advanced**, expand the **Authentication** section, and click **Enable SSO** on the **SAML single sign-on** card.
The status pill changes to **In-progress** and the wizard reveals the values you need for your IdP.
Select your IdP under **Configure your identity provider**:
* **Microsoft Entra ID**
* **Google Workspace**
* **Okta**
* **Other provider**
Each option tailors the field labels and provides a deep link to your IdP's admin console so you can create the SAML application in a new tab.
In your IdP's admin console, create a new SAML application using the values shown by Replit:
| Field | Value |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| Audience URI / SP entity ID | Copy the value shown in the wizard (unique to your Organization, in the form `https://replit.com//saml/sp`) |
| SSO URL (ACS URL) | `https://replit.com/__/auth/handler` |
| Name ID format | Email Address |
| Application username | Email |
Once the SAML application is created in your IdP, copy the following values back into the **Enter the values from your provider** section in Replit:
* **IdP SSO URL** — the URL Replit redirects users to when authenticating.
* **IdP entity ID** — identifies your IdP to Replit.
* **X.509 certificate** — the IdP signing certificate in PEM or base64. `BEGIN/END` markers are optional.
* **Email domains** — comma-separated list of the domains your users sign in with (for example, `acme.com, acme.co.uk`). Include all aliases and subdomains your IdP may report.
Click **Submit credentials**. Replit synchronously validates the URL, parses the certificate (rejecting expired or not-yet-valid certificates), and verifies the claimed email domains. Each domain must match the email of at least one billing admin on your Organization, and public domains (such as `gmail.com`) cannot be claimed.
The status pill changes to **Provisioning…** while Replit creates the underlying SAML tenant. This usually takes about a minute. When it completes, the status pill becomes **Active** and your Organization can sign in with SSO.
If provisioning fails, the status pill becomes **Setup failed** and Replit automatically cleans up any partial state. Click **Try again** to restart the wizard.
## Choose your email domains
You can claim multiple email domains and subdomains for your Organization. Any user that attempts to sign up with an email domain that matches your claimed domain is required to use SAML SSO. Your claimed domains should match what your IdP reports for your users. If you use email domain aliases, include them as well to prevent users from signing up without using SSO.
For example, if your company uses email domains matching `acmeco.com`, `foo.acmeco.com`, and `acmebiz.com`, claim all three when you submit credentials.
Replit validates each claimed domain against the email addresses of your admins. To add or remove domains after activation, edit the **Email domains** field on the **Authentication** card. To claim a domain that doesn't match an existing admin's email, contact [support@replit.com](mailto:support@replit.com).
## Using SAML SSO
Signing up with SAML doesn't automatically invite users to your Organization. For automated user management and bulk operations, see [SCIM](/teams/identity-and-access-management/scim) instead.
Once SAML SSO is **Active**, your users can log in to [replit.com](https://replit.com) using the **Continue with SSO** button.
## FAQ
### What happens to users who already have accounts on replit.com before SAML SSO was set up?
Once SAML SSO is enabled for your Organization, all users with claimed SSO email domains are required to use SSO to log in. Existing users can no longer use their previous authentication methods (email or social login) if their email matches the SSO domain. They aren't automatically added to your Organization.
### Are users automatically deprovisioned in Replit when my IdP removes access?
No, SAML SSO only handles authentication. For automated user provisioning and deprovisioning, you can use [SCIM](/teams/identity-and-access-management/scim) integration, which is available for Enterprise customers. SCIM lets you sync your IdP's directory to automatically manage user roles and provisioning.
### Are Organization seats automatically consumed when users are given access in our IdP?
No, seats are only consumed once a user accepts the invitation to your Organization.
### What if SAML setup fails?
The wizard reports the failure with a **Setup failed** pill, and Replit automatically rolls back any partial provisioning. Click **Try again** to restart the wizard, double-check your IdP values, and resubmit credentials. If the error persists, contact your account manager.
### How do I disable SAML SSO?
Self-service disable isn't supported yet. Contact your account manager to turn off SSO for your Organization. You can still self-serve edits to claimed email domains from the **Authentication** card after activation.
## Related Resources
Learn about automating user management with SCIM integration
Understand how to manage user roles and access
# SCIM
Source: https://docs.replit.com/teams/identity-and-access-management/scim
Set up SCIM to automate provisioning from your identity provider, then manage how synced groups map to your Replit workspaces, roles, and account admins.
## Introduction
SCIM is available exclusively for Enterprise customers. Contact our sales team at [sales@replit.com](mailto:sales@replit.com) to enable this feature for your organization.
System for Cross-domain Identity Management ([SCIM](https://en.wikipedia.org/wiki/System_for_Cross-domain_Identity_Management)) is a standardized protocol that automates user provisioning and deprovisioning between your enterprise identity provider (IdP) and Replit.
Once SCIM is active, you manage how your synced groups and members map to your Replit workspaces and roles directly in Replit — see [Managing workspace access](#managing-workspace-access).
## Key features
Automatically provision and deprovision members based on your IdP's directory
Keep member roles and permissions in sync with your organizational structure
Efficiently manage large teams with bulk group operations
Direct integration with Microsoft Entra ID, Okta, and other leading identity providers
## Benefits
SCIM integration provides several advantages for Enterprise teams:
* **Enhanced security**: Leverage your existing identity management systems for robust access control
* **Simplified administration**: Automatically manage team members through your identity provider
* **Efficient onboarding**: Seamlessly provision large teams without manual intervention
* **Consistent access control**: Maintain uniform access policies across your organization
## Getting started
Open **Settings** > **Advanced** > **Identity & Governance** to enable SCIM for your Enterprise organization.
Access the SCIM onboarding portal directly from the Identity & Governance settings. The onboarding portal provides step-by-step instructions specific to your identity provider for synchronizing your user directory.
Verify the connection by provisioning a test user.
Begin using SCIM for automated member management, then assign your synced groups to workspaces in [SCIM workspace access](#managing-workspace-access).
## Best practices
* Document role allocations for existing Replit members before enabling SCIM.
* Set a default workspace so every synced group receives at least **Viewer** access there; without a default workspace, a member has no role until you assign their group to a workspace.
* Test your configuration by provisioning a small group of members before enabling bulk provisioning.
* After initial sync, review and configure permissions for custom groups based on your organization's access control needs.
* Dedicate role-control groups to control access levels of provisioned members, and use other push groups for categorization and bulk permission management.
* Document your SCIM configuration for future reference.
## Group synchronization
All pushed groups from your IdP are synchronized to Replit with the members your IdP provisions for that group. When you push an "Engineering" group through SCIM, Replit creates a matching group containing those provisioned members.
Group membership is automatically updated to reflect the membership in your IdP. You can use these synchronized groups for bulk editing member permissions, such as sharing an app with everyone in the "Engineering" group.
### Use flat groups with Microsoft Entra ID
Microsoft Entra ID provisions only the users who are immediate members of an explicitly assigned group. It does not expand nested groups. A user who belongs only to a subgroup is not added to the parent group in Replit. Microsoft Entra ID does not provision that user unless another assigned group lists them directly.
Use flat groups for SCIM provisioning by adding users directly to each group you assign to Replit. If you must keep nested groups in Microsoft Entra ID, assign every group that directly contains users to the Replit application. For details, see [Microsoft's guidance on assignment-based scoping](https://learn.microsoft.com/en-us/entra/identity/app-provisioning/how-provisioning-works#assignment-based-scoping).
### Creating custom groups alongside SCIM
You can create custom groups in Replit even when SCIM is enabled. Use custom groups to organize members around project work, one-off permission grants, or any structure that is not mirrored in your identity provider.
* **SCIM groups remain locked.** Groups synced from your IdP can only be edited or removed through your identity provider.
* **Custom groups are managed in Replit.** Organization admins can create, edit, and delete custom groups directly from the Groups page.
* **Members can belong to both.** A member provisioned through SCIM can also be added to custom groups without affecting their IdP-managed roles.
For detailed information about groups, see [Groups & Permissions](/teams/identity-and-access-management/groups-and-permissions).
## Managing workspace access
Once SCIM is active, use the in-product management surface to review and control how your synced groups map to workspaces and roles, and to designate the account admin group. Your IdP remains the source of truth for membership and provisioning; this surface governs how those synced groups and members map onto your Replit workspaces and roles — it does not add, remove, or re-provision members.
### Structure your workspaces
We generally recommend keeping your members in a **single workspace**, and only creating additional workspaces when there's a clear reason to separate them — for example, distinct business units that should not share members, groups, or budgets. Anyone who needs to collaborate should be in the same workspace.
You can assign your synced groups to workspaces. Within a workspace, an assigned group appears as a **custom group** that you can use for workspace-level controls such as **group budgets** — for example, a 100K budget for the Revenue team.
### Open SCIM workspace access
1. Open the workspace switcher and select your Enterprise workspace.
2. Open **Settings**, then select **Advanced**.
3. Expand the **Identity & Governance** section and find the **Automatic member provisioning (SCIM)** card.
4. When SCIM is **Active**, the management surface appears directly inside this card.
### Designate the account admin group
Set this first. The **Account admin group** block at the top shows which IdP-synced group holds the account admin role across all of your workspaces, and has access to account-level settings, including SCIM management privileges.
Select **Edit** to choose a different synced group. Designating a group is a cutover: the new group becomes the account admin group and the previous group's account admin role is revoked. Because account admins are powerful, the change requires confirmation before it takes effect.
Membership of the account admin group is managed entirely in your identity provider. To add or remove account admins, change who belongs to the designated group in your IdP — the surface reflects that membership but does not edit it.
### View and manage workspace assignments
The **Workspaces** tab lists every workspace in your organization alongside the synced groups assigned to it and each group's role.
The **default workspace** — marked with a **Default** pill — is the baseline for provisioned access: every synced group automatically receives at least **Viewer** access there, so members always have somewhere to land. A workspace becomes the default only when an admin sets it; until then, members get access solely from the group assignments you make.
* Use the search box to filter workspaces by name.
* Each row shows its **group assignments** as chips in the form *Group · Role* (for example, *Engineering · Admin*). When a workspace has more assignments than fit on one row, a **+ N more** chip indicates the remainder.
* The row's **⋮** menu lets you edit assignments or set or remove the workspace as the organization default.
### Assign groups to workspaces and set roles
Select **Edit assignments** from a workspace row's **⋮** menu to open the **Edit workspace access** dialog. Here you choose which synced groups have access to the workspace and the role each group receives:
* **Admin** — full administrative access to the workspace's settings and resources.
* **Member** — can create and edit Replit Apps.
* **Viewer** — read-only access to apps and deployments.
* **Guest** — can only access apps shared with them.
The account admin group's grant is locked (shown with a lock icon) because it is managed as part of the account admin designation rather than per workspace.
### View group members and assigned workspaces
The **User groups** tab is a table of your synced groups, with columns for the group **Name**, its **Assigned workspaces** (shown as *Workspace · Role* chips), and its **Member count**. The group designated as the account admin group is marked with an **Account admin group** chip. When you have many groups, the table is paginated — use the page controls at the bottom to move between pages.
Expand a group row to see its members in a **Name** and **Email** table. Members load on demand and are paginated, so for large groups you can page through the full membership rather than loading everyone at once.
## Limitations
* **Your IdP remains the source of truth.** Adding, removing, and provisioning members — and editing group membership — happens in your identity provider. Replit manages workspace and role *assignments* for groups that already exist in your synced directory.
* **Microsoft Entra ID does not expand nested groups.** Use flat groups or assign every group that directly contains users to the Replit application, as described in [Use flat groups with Microsoft Entra ID](#use-flat-groups-with-microsoft-entra-id).
* **The account admin group can be changed but not cleared.** You can designate a different account admin group, but there is no option to leave the organization without one.
## FAQs
### What happens to members who already have accounts on replit.com before SCIM was set up?
When SCIM is enabled, existing members are handled in two ways:
1. **Members provisioned through SCIM**:
* Their roles are updated to match those provided by your IdP.
* These members can only be added, removed, or have their roles changed through your IdP.
* To keep permissions synchronized, admins can no longer edit roles or invite new members within Replit.
2. **Members not provisioned through SCIM**:
* These members remain unchanged and are considered "legacy" members.
* Their organization membership and role is not automatically removed, to prevent accidental deprovisioning.
* Legacy members can be removed through the Replit interface by organization admins if needed.
After implementing SCIM, all members provisioned through your IdP must be managed through your identity provider to maintain synchronization. Only legacy members (those not provisioned through SCIM) can be deprovisioned directly in Replit.
### What roles can be provisioned with SCIM?
SCIM users can be assigned to four roles:
* **Admin**: Full access to organization settings and resources
* **Member**: Standard access to create and edit Replit Apps
* **Guest**: Limited access for external collaborators; can only edit apps explicitly shared with them
* **Viewer**: Read-only access to published applications
You configure the mapping between your IdP groups and Replit roles per workspace in [SCIM workspace access](#managing-workspace-access). For example, you might grant your "Engineering" group the Member role in one workspace and the Viewer role in another.
### Can I add or remove members from SCIM workspace access?
No. Membership and provisioning are managed in your identity provider. The surface manages how synced groups and members map to workspaces and roles. For day-to-day member management outside of SCIM, see [Managing Members](/teams/identity-and-access-management/managing-members).
### How are roles different from groups?
Groups are synced from your IdP. Roles (Admin, Member, Viewer, Guest) describe what a group can do in a specific workspace. The same group can hold different roles in different workspaces — for example, **Member** in one workspace and **Viewer** in another.
### Does changing the account admin group affect other roles?
Designating a new account admin group changes only the organization-wide account admin role. Other group-to-workspace assignments and their roles are unaffected. For more on how the account admin role works, see [Account and Workspace Admins](/teams/identity-and-access-management/account-and-workspace-admins).
## Related resources
Learn about SAML single sign-on integration
Understand how to manage user roles and access
Learn what account admins and workspace admins can do
Understand read-only viewer access and seats
# Transfer App to Teams
Source: https://docs.replit.com/teams/identity-and-access-management/transfer-app-to-teams
Move personal apps to team workspaces or projects between team workspaces
Transfer your personal Replit Apps to a team workspace to enable collaboration and centralized project management. This personal-to-team workflow allows you to:
* Share apps with team members instantly
* Centralize project management within your organization
* Maintain deployment uptime and URLs during transfer
## Transfer a personal app to a team workspace
App transfer moves ownership of a Replit App from your personal workspace to a team workspace. Once transferred, the app becomes accessible to team members according to workspace permissions and is managed under the team's resources and billing.
For this personal-to-team workflow, the transfer is immediate and irreversible. It maintains all deployment configurations and URLs.
## Getting started
You must be a member of the target team workspace before transferring apps. Verify your team membership by selecting your profile or workspace selector in the upper-right corner to view available teams.
For a personal-to-team transfer:
* Transferring a Replit App to a team workspace is irreversible
* Published apps experience zero downtime during transfer
* Deployment URLs remain unchanged
* You must be a member of the team you want to transfer the app to before initiating transfer
## How it works
Navigate to your personal Apps by selecting the **Apps** tab from your Replit home page.
Locate the application you want to transfer in your Apps list.
Select the **three dots (•••)** menu next to the app name.
Select **Transfer To Organization** from the dropdown menu.
Choose the target team workspace from the available organizations dialog.
Select **Transfer To Organization** to confirm the action.
You'll see a "Transfer success" notification in the bottom-right corner of the page. Refresh your Apps page to verify the app no longer appears in your personal workspace, then navigate to your team workspace to confirm the app appears there.
## Transfer between team workspaces
You can move a project from one team workspace to another in the **Projects** list. This action is irreversible. The transfer runs in the background, so the confirmation only tells you that it has started.
### Before you start
This workflow requires all of the following:
* Both the source and destination must be team workspaces in the same billing account. You can't use this workflow with a personal project or personal workspace.
* You must have the **Owner** [access level](/teams/identity-and-access-management/groups-and-permissions#access-levels) on the project.
* You must have the **Admin** or **Member** [role](/teams/identity-and-access-management/groups-and-permissions#roles) in the destination workspace.
Only eligible workspaces appear as destinations. If you don't see the destination workspace, check these requirements before you try again.
In the source workspace, open **Projects**, find the project, then select the
three-dot menu on the project card and choose **Transfer to workspace**.
In the transfer dialog, open the **Destination Organization** dropdown and choose the destination workspace.
Review the warning about linked [Account Secrets](/core-concepts/project-editor/app-setup/secrets#manage-account-secrets). Then select **Transfer to Workspace**. The project leaves its current workspace when the transfer completes.
Wait for the background transfer to finish. Switch to the destination
workspace. Then check **Projects**. Replit renames the project if the
destination workspace already contains a project with the same name.
### What transfers and what to check
* **Linked Account Secrets**: These don't transfer. Re-link them in the destination workspace. See [Account Secrets](/core-concepts/project-editor/app-setup/secrets#manage-account-secrets).
* **Custom domains**: Domains connected to the project move to the destination workspace.
* **Deployments**: Replit redeploys the current build after the transfer, and the deployment keeps its public or private visibility. If the destination workspace enforces [private deployments](/teams/enterprise-privacy-settings#private-deployments), transferring a public deployment fails. Make the deployment private or unpublish the project before you transfer it.
* **Individual collaborator access**: Replit restores individual project access only for active Admins and Members of the destination workspace. Viewers and other collaborators lose individual project access.
## Bulk transfer options
For transferring multiple applications, use CLUI commands:
* **Core to team workspace**: Use `org transfer-repls`
* **Team to team workspace**: Use `org transfer-repls-org-to-org`
## Next steps
To learn more about team collaboration and workspace management, see the following resources:
* [Workspaces](/features/collaboration/workspaces) - Understand Personal and Team Workspaces
* [Replit Pro and Enterprise overview](https://docs.replit.com/category/teams) - Learn about team workspace features
* [CLUI commands reference](https://docs.replit.com/features/workspace-tools/clui-graphical-cli) - Explore bulk transfer options
# Viewer Seats
Source: https://docs.replit.com/teams/identity-and-access-management/viewer-seats
Learn how to set up and manage viewer seats for your Replit Team.
## About viewer seats
Viewers get read-only access to your team's apps and deployments. This makes it easier to share your work with stakeholders and collaborators who don't need edit permissions or a full team license.
Viewer seats are perfect for:
* Internal tool users who are not creating applications
* Stakeholders who need to review project progress
* Teammates who are exploring capabilities of Replit
Pro organizations get 50 viewer seats included in their plan, allowing you to scale your collaboration efficiently.
If you would like to add more than 50 viewers, contact our sales team at [sales@replit.com](mailto:sales@replit.com) regarding an Enterprise plan.
## Inviting a viewer
1. Navigate to the **Members** tab in your Organization
2. Select **+ Add**
3. Choose the Viewer option
4. Enter the email addresses of viewers you would like to add in a comma-separated list
5. Select **Send invites**
Invited users without a Replit account will receive an email with instructions to create an account and join your team. Users who already have a Replit account will be added automatically.
## Viewer access
**Updated Default Access Behavior (Effective June 9, 2025)**: Apps created in organizations will now be **private by default**. Viewers will need to be explicitly granted access to new apps through the Access panel.
Viewers will need to be explicitly granted access to new apps through the Access panel. For existing apps created before this change, viewers may still have access based on previous settings.
# Information Security
Source: https://docs.replit.com/teams/information-security/overview
Learn about Replit's security practices, data protection, and compliance standards
Replit provides an AI-powered, cloud-based development environment used by millions of developers worldwide. Security is fundamental to our platform, ensuring users can confidently build, collaborate, and publish applications across multiple devices and platforms.
## Data protection
Data protection is a top priority at Replit. We implement comprehensive security measures to protect your data and ensure the integrity of our platform.
### Hosting and infrastructure
Replit hosts data primarily in Google Cloud Platform (GCP) data centers in the United States, with an optional hosting region in India for users who opt in. We leverage GCP's enterprise-grade backup and recovery tools to ensure:
Redundant systems and automated failover mechanisms protect against service interruptions and data loss
Strong logical separation prevents unauthorized access between different users and organizations
GCP is an industry-leading cloud provider, certified for compliance with **ISO 27001** and **SOC 2 Type 2**. Additionally, **Replit has achieved SOC 2 Type 2 Attestation of Compliance**, demonstrating our ongoing commitment to security best practices and controls.
Every client request must be rigorously **authenticated and authorized** before accessing any private information.
### Encryption standards
Replit implements comprehensive encryption across all data states to ensure the confidentiality, integrity, and security of your information.
Industry-standard **TLS 1.2+** encryption secures all communications between clients and our servers, protecting data as it moves across networks. This includes all API calls, web traffic, real-time collaboration data, and other communications.
Data stored in GCP is protected using [**AES-256 server-side encryption**](https://cloud.google.com/docs/security/encryption/default-encryption). This military-grade encryption standard safeguards all stored data, including code, configurations, user information, and system metadata.
We use **Google Cloud SQL** for [database encryption](https://cloud.google.com/sql/references/additional-resources/faq#encryption-manage-rest) and [secure key management](https://cloud.google.com/secret-manager), ensuring that sensitive data remains protected with automatic encryption, regular key rotation, and granular access controls.
## Infrastructure security
All data-processing components operate in Replit's **private network** within a secure cloud environment, protected by:
Intelligent traffic distribution for optimal performance and reliability
Advanced web application firewall prevents malicious traffic and sophisticated attacks
Rigorous subprocessor standards with regular security assessments and monitoring
We conduct thorough **due diligence** on all subprocessors to ensure they meet our strict security standards and compliance requirements.
## Security teams
Dedicated in-house team that continuously monitors, assesses, and strengthens our platform's security across infrastructure, product features, and operational processes
Ensures compliance with our **Terms of Service** and community guidelines, fostering a safe and respectful environment for all users
Security is a fundamental priority at the executive level, with direct oversight and engagement from company leadership.
## Legal framework
Our security and data handling practices are governed by these key documents:
For Free and Core users
For Pro and Enterprise users
For all users
## Additional resources
For more detailed information about our security policies, certifications, and best practices, visit our [**Trust Center**](http://trust.replit.com).
At Replit, we believe that security is not just a requirement—it's a core part of delivering an exceptional developer experience. By maintaining rigorous security standards, we empower individuals and teams to build with complete confidence.
If you discover a security vulnerability, please report it immediately following our [responsible disclosure policy](/legal-and-security-info/security).