shipfix

Common errors · Lovable, Bolt, Vite + React Router on Vercel, Netlify, Railway

Lovable or Vite app: 404 on refresh or on a direct link after deploy

Cause The host looks for a file at that path and only index.html exists: single-page apps need a fallback.
Fix Add the rewrite to index.html for your host (vercel.json, public/_redirects, or a Node fallback).

404: NOT_FOUND (or Page not found) when reloading /dashboard

Have it fixed for you, 290 EURSee the fix step by step

What you receive a diff on a branch of your repository, and a correction note: root cause, change made, how to verify it. See a sample report

The home page loads, navigation inside the app works, but reloading any other page or sharing its link gives a 404. The host looks for a file called /dashboard and there is none: only index.html exists.

Where it breaks

RefreshGET /dashboardStatic hostlooks for a fileNo fileonly index.htmlFix: rewrite/* -> /index.htmlrequestpathlookupaddRefreshGET /dashboardStatic hostlooks for a fileNo fileonly index.htmlFix: rewrite/* -> /index.htmlrequestpath lookupadd
In-app links never hit the server. A refresh asks the host for a file at /dashboard, which does not exist without a fallback.

Which case is yours?

  1. A single-page app needs the host to answer every unknown path with index.html, and static hosts do not do that by default.

The fix, step by step

  1. Vercel: add vercel.json at the project root.
    { "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }] }
  2. Netlify: add public/_redirects (Vite copies public/ into dist/).
    /*  /index.html  200
  3. Railway or any Node host: serve dist with a fallback.
    npx serve -s dist -l $PORT
  4. Keep real 404s: add a catch-all route in React Router that renders a not-found page, otherwise every typo returns your home page with a 200.

How to check it is fixed

Open https://your-domain/dashboard in a private window: the page renders. curl -I on a missing asset still returns 404.

Delivery example for this error

vercel.json · on a branch of your repository- (no rewrite: /dashboard is 404)+ "rewrites": [{ "source": "/(.*)",+ "destination": "/index.html" }]
Verification checklist in the note
  • Root cause: The host looks for a file at that path and only index.html exists: single-page apps need a fallback.
  • Change made: Add the rewrite to index.html for your host (vercel.json, public/_redirects, or a Node fallback).
  • Open https://your-domain/dashboard in a private window: the page renders. curl -I on a missing asset still returns 404.

Illustrative: the real diff is written against your repository. Full sample report

Still stuck on your own code?

Send the repository and the exact error. Fix: 290 EUR all taxes included, delivered within 72 hours, refunded if not resolved.

Private repository: paste its link anyway, we reply by email within one business day with the GitHub account to invite with read access. A zip link (Google Drive, Dropbox) works too. Never send passwords or secret keys in this form.

Fix: One blocking auth, Supabase RLS or deployment problem fixed in your repository.290 EUR all taxes included · 72 hours

Secure payment by Stripe. Not resolved within 72 hours: refunded in full.

Not sure it is this error? Ask for a free written diagnosis, no card needed.