Deploying a Vite React app on Vercel is straightforward, but many developers face a common issue: navigating to another page and refreshing results in a 404 error. This happens because Vercel serves only index.html and doesn't recognize client-side routing handled by React Router.
The Problem
When using React Router, routes are managed on the client-side. However, Vercel doesn’t know how to handle these routes after a refresh, leading to a 404 error.
The Solution: Configure vercel.json
To fix this, create a vercel.json file inside your frontend root directory (same level as index.html) and add the following:
{
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}
Explanation of vercel.json
-
rewrites: Defines URL rewriting rules. -
source:"/(.*)"captures all routes. -
destination: Redirects all requests toindex.html, allowing React Router to handle routing.
Deploy Again
After adding vercel.json, redeploy your Vite app using:
vercel --prod
Now, navigating and refreshing pages will work without 404 errors. 🎉
This simple fix ensures your Vite React app works smoothly with React Router on Vercel. Happy coding! 🚀
Top comments (0)