Why your Facebook Page posts are invisible to everyone but you
A Meta app left in Development mode can publish to a Facebook Page and the post will be visible only to people who have a role on that app. The API returns a post id, the post reads as Public, and nothing errors. Switching the app to Live mode makes existing posts visible immediately.

This is the most expensive hour we lost building Duta, and it cost that much because nothing anywhere reported a problem. The post was created. The API returned an id. Opening the Page while signed in showed the post, marked Public. Everything said it had worked.
It had not. Opening the same Page in a private browser window showed the Page, showed older posts made by hand, and did not show the new one.
What causes it
Every Meta app has a mode. In Development mode the app may only act for people who have a role on it — administrator, developer or tester. Posts it creates exist, and are visible to exactly those people. To everybody else the Page simply has fewer posts than it should.
How to confirm it in one minute
- Open a private or incognito browser window, so you are signed out of Facebook.
- Go to your Facebook Page directly, by its address.
- Look for the post you just published.
- If the Page loads, older posts appear, and the new one does not, the app is in Development mode.
The private window matters. Signed in as yourself you have a role on your own app, so you will always see the post and always conclude it worked.
How to fix it
- Open your app at developers.facebook.com.
- In the left menu, open Publish.
- Complete whatever the page lists as outstanding — for a simple app this is usually only a privacy policy URL.
- Press the button that switches the app to Live.
Posts already made become visible immediately. There is nothing to republish and nothing to delete.
If the Publish button is blocked
One thing blocks it that is not obvious: if a business portfolio owns the app, Meta requires full Business Verification before it can go Live. Verification means submitting company documents and waiting.
An app with no business portfolio attached does not need it. For a personal or single-business app, creating the app outside a portfolio avoids the requirement entirely. We confirmed this by building a second app with no portfolio: its Publish page asked only for a privacy policy URL.
Why you cannot check this with a script
We tried. Facebook returns an error to anonymous machine requests even for its own public Pages. The oEmbed endpoint that would answer the question needs App Review. The embed plugin renders with JavaScript, so fetching it returns an empty shell.
There is no reliable automated check. A human in a private browser window is the test, which is worth writing into whatever runbook you keep.