> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Publish your app

> Take your app live with a public URL you can share — in four clicks.

export const YouTubeEmbed = ({videoId, title = "YouTube video", startAt}) => {
  if (!videoId) {
    return null;
  }
  let url = "https://www.youtube.com/embed/" + videoId;
  if (startAt) {
    url = url + "?start=" + startAt;
  }
  return <Frame>
      <iframe src={url} title={title} allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowFullScreen></iframe>
    </Frame>;
};

<YouTubeEmbed videoId="ski8_MUYO4M" title="Publish your app on Replit" />

Take your Replit App live at a public URL you can share. The **Publish** button does it in four clicks.

## Publish your app

<Steps>
  <Step title="Click Publish in the Project Editor">
    Open your project. In the top-right of the Project Editor, select **Publish**.

    <Frame>
      <img src="https://mintcdn.com/replit/DJAysPyGu4yUsaj3/images/publish-quickstart/01-publish-button.png?fit=max&auto=format&n=DJAysPyGu4yUsaj3&q=85&s=ef50e4f6387bf64bdc6603209c1f399b" alt="The Replit Project Editor top bar with the Publish button highlighted in the top-right corner" width="2000" height="1074" data-path="images/publish-quickstart/01-publish-button.png" />
    </Frame>
  </Step>

  <Step title="Configure your app in the Publish dialog">
    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**.

    <Frame>
      <img src="https://mintcdn.com/replit/DJAysPyGu4yUsaj3/images/publish-quickstart/02-publish-dialog.png?fit=max&auto=format&n=DJAysPyGu4yUsaj3&q=85&s=2ae9589ccad9f1a49ade6efa86ff4e6f" alt="The Publish dialog showing the Domain field with a velocity-car-rental.replit.app subdomain, the Who can access your app dropdown set to Invite only, an Engagement tools section with the feedback widget toggle, and the Publish button highlighted at the bottom-right" width="914" height="848" data-path="images/publish-quickstart/02-publish-dialog.png" />
    </Frame>
  </Step>

  <Step title="Wait for the publishing stages">
    Replit runs through **Provision → Security Scan → Build → Bundle → Promote**. This usually takes a minute or two.

    <Frame>
      <img src="https://mintcdn.com/replit/DJAysPyGu4yUsaj3/images/publish-quickstart/03-publishing-stages.png?fit=max&auto=format&n=DJAysPyGu4yUsaj3&q=85&s=b7a256d4331a68ba822b7b6d513b762a" alt="The Publishing tab showing the five-stage progress bar with Provision and Security Scan completed (green checkmarks), Build also complete, Bundle currently in progress (blue spinner), and Promote pending" width="2000" height="1151" data-path="images/publish-quickstart/03-publishing-stages.png" />
    </Frame>
  </Step>

  <Step title="Open your published app at its URL">
    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.

    <Frame>
      <img src="https://mintcdn.com/replit/DJAysPyGu4yUsaj3/images/publish-quickstart/04-app-published.png?fit=max&auto=format&n=DJAysPyGu4yUsaj3&q=85&s=0b611d7fc9249b433bc28d221350c458" width="2000" height="1159" data-path="images/publish-quickstart/04-app-published.png" />
    </Frame>
  </Step>
</Steps>

## 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

<CardGroup cols={2}>
  <Card title="Add a custom domain" icon="globe" href="/build/add-custom-domain">
    Use your own domain instead of `.replit.app`.
  </Card>

  <Card title="Deployment types" icon="server" href="/learn/projects-and-artifacts/replit-deployments">
    Compare Autoscale, Reserved VM, Static, and Scheduled deployments.
  </Card>

  <Card title="Troubleshoot publishing" icon="triangle-exclamation" href="/build/troubleshooting">
    Common publishing problems and how to fix them.
  </Card>
</CardGroup>
