Why it happens
Lovable’s GitHub sync and Lovable’s hosting are two separate things. The sync copies code both ways between your Lovable project and your repository. The hosting serves a snapshot of your project that only changes when you publish.
Lovable’s docs answer this exact question: “Does pushing to my repository update my live site? No. When you push commits, Lovable syncs your code and updates the preview in the editor, but it never publishes” (Lovable docs). And on publishing: “later changes are not automatically pushed live … To deploy new changes, click Publish, then Publish changes” (Lovable docs).
Owners run into it again and again: “Lovable has recognized the changes and show them on the preview page and in lovable itself. Great! BUT.. It doesn’t push the changes to my custom domain” (r/lovable, August 2025).
The fix, in order
- Open your project in Lovable and check the change you pushed is there, in the preview or the code.
- Click Publish → Publish changes. A small dot on the Publish button means there are changes newer than the live version (Lovable docs).
- Open your live address in a private window and check the change is there.
Publishing from the Publish dialog is free and works even when your credit balance is zero. Asking Lovable’s chat to publish instead is counted as build usage and costs credits (Lovable docs).
If the change is not in Lovable either
Open Project settings → Git and read the sync status card (Lovable docs):
- In sync with GitHub: both sides have the same commit. Your push arrived; publish it.
- GitHub is N commits ahead of Lovable: Lovable has not pulled your push. Lovable pulls when GitHub notifies it about a push, and if that notification never arrives it does not catch up by itself. Push any new commit to the synced branch, even an empty one, and Lovable syncs to the current state. Re-check and Reconnect do not pull anything (Lovable docs).
- Lovable and GitHub have diverged: both sides have commits the other lacks. Lovable pushes its own work to a branch called
lovable-sync, which you merge into the synced branch (Lovable docs).
Also check which branch you pushed to. Lovable edits and syncs one branch at a time, and commits on any other branch do not appear in Lovable until you merge them into it (Lovable docs).
If the change was server code
Publish puts your screens live. It does not deploy edge functions or run database changes that arrived through GitHub; Lovable does neither when your commits sync (Lovable docs). See edge functions not deployed after a push.
Two habits that prevent it
- Push, then Publish, every time. While Lovable hosts your app, Publish is the only way a change goes live.
- Never force-push or rewrite history on the synced branch. Lovable’s docs warn that “edits made only in Lovable can be lost”; to undo a change, add a commit that reverts it (Lovable docs).
Once your site is hosted somewhere else, such as Vercel, this reverses: every change that reaches the repository goes live by itself, including every change you make in the Lovable editor (Vercel docs). That is stage 4, move the hosting.
Where this fits
This is part of stage 2, bring in your agent. Other short answers: