{"record":{"id":"6475432e24b88825","repo":"jackwener/OpenCLI","slug":"facebook-feed-page-rendered-but-no-feed-rows-could","errorCode":null,"errorMessage":"facebook feed page rendered but no feed rows could be extracted","messagePattern":"facebook feed page rendered but no feed rows could be extracted","errorType":"exception","errorClass":"CommandExecutionError","httpStatus":null,"severity":"error","filePath":"clis/facebook/feed.js","lineNumber":385,"sourceCode":"  if (!payload || typeof payload !== 'object' || !Array.isArray(payload.rows)) {\n    throw new CommandExecutionError('facebook feed returned malformed extraction payload');\n  }\n\n  if (payload.status === 'auth') {\n    throw new AuthRequiredError('www.facebook.com', 'Open Chrome and log in to Facebook before retrying.');\n  }\n\n  if (payload.rows.length > 0) {\n    return payload.rows;\n  }\n\n  if (payload.status === 'empty') {\n    throw new EmptyResultError('facebook feed', 'Facebook did not show any feed posts for this account.');\n  }\n\n  const diagnostics = payload.diagnostics || {};\n  if (diagnostics.articleCount || diagnostics.actionMenuCount || diagnostics.fallbackActionCount || diagnostics.mainTextLength > 200) {\n    throw new CommandExecutionError(\n      'facebook feed page rendered but no feed rows could be extracted',\n      `Diagnostics: articles=${diagnostics.articleCount || 0}, actions=${diagnostics.fallbackActionCount || 0}, mainTextLength=${diagnostics.mainTextLength || 0}.`,\n    );\n  }\n\n  throw new EmptyResultError('facebook feed', 'No Facebook feed content was visible in the current browser session.');\n}\n\nconst command = {\n  site: 'facebook',\n  name: 'feed',\n  access: 'read',\n  description: 'Get your Facebook news feed',\n  domain: 'www.facebook.com',\n  strategy: Strategy.COOKIE,\n  browser: true,\n  navigateBefore: false,\n  args: [","sourceCodeStart":367,"sourceCodeEnd":403,"githubUrl":"https://github.com/jackwener/OpenCLI/blob/49907e53dc3ade5c223ff0c4c2c2785687cec4e6/clis/facebook/feed.js#L367-L403","documentation":"When diagnostics (articleCount, actionMenuCount, fallbackActionCount, or mainTextLength > 200) show the feed page DID render substantial content but the extraction script still returned zero rows, the library throws CommandExecutionError('facebook feed page rendered but no feed rows could be extracted') with a diagnostics summary. This signals a markup/selector mismatch rather than an empty feed.","triggerScenarios":"payload.rows is empty, status is not 'empty', and diagnostics indicate rendered feed-like DOM (articles/action menus present or long main text), meaning the extraction selectors no longer match Facebook's markup.","commonSituations":"Facebook rolled out a feed DOM change (new aria attributes or class names); A/B test put the account on a layout the script doesn't support; language/locale variant changes element structure; extension/CLI version too old for current Facebook markup.","solutions":["Update the CLI/extension to the latest version with current feed selectors.","Use the diagnostics string in the message to see which counts are non-zero and adjust extraction selectors accordingly.","Open the feed in a browser dev tools and compare DOM structure against the script's expected selectors.","Retry later if Facebook is mid-A/B rollout; pin to a locale where selectors are known-good."],"exampleFix":"// before\nconst rows = await getFacebookFeed(page, { limit: 10 });\n// after\ntry {\n  var rows = await getFacebookFeed(page, { limit: 10 });\n} catch (err) {\n  console.error('Feed extraction failed:', err.message, err.hint);\n  throw err; // update CLI/selectors; diagnostics included in message\n}","handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  const rows = await getFacebookFeed(page, { limit: 10 });\n} catch (err) {\n  if (/no feed rows could be extracted/.test(err.message)) {\n    // parse err.message diagnostics; retry later or after updating CLI/selectors\n  } else throw err;\n}","preventionTips":["Keep the CLI/extension updated for current Facebook feed selectors.","Monitor Facebook DOM rollouts; pin to a known-good locale if possible.","Use the diagnostics summary in the message to target selector fixes.","Space out retries when Facebook is mid A/B rollout."],"tags":["extraction","selectors","facebook","markup-change"],"backgroundTag":"selector-mismatch","analyzedSha":"49907e53dc3ade5c223ff0c4c2c2785687cec4e6","analyzedAt":"2026-08-29T08:14:47.543Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}