Hi Tove, sorry for the late response.
If Neon is already connected in the Vercel dashboard, I would split the issue into two checks:
First, confirm whether the dashboard is actually writing to Neon. After creating or editing an article, open the Neon console/table editor and check whether a new row appears with the title and content.
If no row appears, then the dashboard is probably still using local state, localStorage, mock data, seed data, or an in-memory array instead of writing to the database.
If the row does appear in Neon but another device still does not show it, then the issue is probably on the read/caching side. The public page may still be reading static/cached data, or it may be reading from a different source than the dashboard writes to.
For a Next.js app, I would ask v0 to make sure:
-
The dashboard writes posts to Neon through a Server Action or API/Route Handler.
-
The public article pages read posts from Neon on the server.
-
No article data is stored only in localStorage, React state, or mock arrays.
-
After creating/updating a post, the app revalidates the affected blog/article pages.
-
The production deployment is using the same Neon database/branch you are checking in the Neon dashboard.
You can try prompting v0 with something like this:
“Audit the app’s post/dashboard persistence. Neon is connected in Vercel, but dashboard edits do not sync across devices. Remove any localStorage, mock data, seed data, or in-memory arrays used for posts. Make dashboard create/update/delete actions write to Neon using server-side database code. Make public blog/article pages read from Neon. After every write, revalidate the affected blog and article routes. Add logging/error handling so I can confirm inserts and updates are actually succeeding. Also verify the production deployment is using the correct Neon environment variables/database branch.”
One more thing: since you mentioned the content is visible in the console but not on the page, also check the rendering layer. If the data is fetched correctly but not displayed, it could be a field mismatch like content vs body, a component not rendering the article body, or CSS hiding the text.