Skip to content

fix: harden Anniversaries widget against non-JSON API responses#18117

Draft
posthog[bot] wants to merge 1 commit into
masterfrom
posthog-code/harden-anniversaries-fetch
Draft

fix: harden Anniversaries widget against non-JSON API responses#18117
posthog[bot] wants to merge 1 commit into
masterfrom
posthog-code/harden-anniversaries-fetch

Conversation

@posthog

@posthog posthog Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Changes

Hardens the Anniversaries widget on the community page against non-JSON API responses.

The useEffect that fetches team profiles from the Squeak API called res.json() with no res.ok check and no .catch(). When the endpoint returned HTML instead of JSON (an error/proxy <!DOCTYPE ...> page, or an undefined GATSBY_SQUEAK_API_HOST resolving the fetch against the site itself), the parse threw an uncaught SyntaxError: Unexpected token '<'. The failure path also never cleared loading, so the affected user watched the skeleton spin forever.

Now the response is checked for res.ok and a JSON content type before parsing, and a .catch() logs the failure and sets loading to false with an empty team list so the component degrades gracefully instead of throwing and hanging.

Why: A team member hit this uncaught SyntaxError on the community page from a one-off non-JSON API response. Low-impact hardening — one file, no core flow affected.

Checklist

  • I've read the docs and/or content style guides.
  • Words are spelled using American English
  • Use relative URLs for internal links
  • I've checked the pages added or changed in the Vercel preview build
  • If I moved a page, I added a redirect in vercel.json

Created with PostHog Code from an inbox report.

Guard the Squeak profiles fetch in the Anniversaries widget: verify res.ok and a JSON content type before parsing, and add a .catch() that logs the failure and clears the loading state with an empty team list.

Previously a non-JSON response (an HTML error/proxy page, or an undefined GATSBY_SQUEAK_API_HOST resolving against the site itself) threw an uncaught SyntaxError in res.json(), and the failure path never cleared loading — leaving the skeleton spinning forever.

Generated-By: PostHog Code
Task-Id: f6ec1a29-dc6c-4f5a-8691-9fcf4ea7f334
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Deploy preview

Status Details Updated (UTC)
🟢 Ready View preview Jul 02, 2026 01:19AM

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Bundle report

Total JS (gzip)

6.29 MiB (+0.1 KiB / +0.0%)

Eager graph (static-import closure per entrypoint)

Entrypoint Eager size Budget Modules
app 24.21 MiB (no change) report-only 5516
Largest modules in the app closure
Module Size
css ./node_modules/.pnpm/css-loader@5.2.7_webpack@5.101.3/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[8].oneOf[1].use[1]!./node_modules/.pnpm/postcss-loader@4.3.0_postcss@8.5.6_webpack@5.101.3/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[8].oneOf[1].use[2]!./src/styles/global.css 708.0 KiB
./src/components/Stickers/Stickers.tsx 696.4 KiB
./.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/31a094f140f119e73085d847ae81b99b.js + 2 modules 579.3 KiB
./node_modules/.pnpm/@radix-ui+react-icons@1.3.2_react@18.3.1/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js 481.4 KiB
./node_modules/.pnpm/@codemirror+view@6.38.2/node_modules/@codemirror/view/dist/index.js 458.1 KiB
./node_modules/.pnpm/rehype-raw@7.0.0/node_modules/rehype-raw/lib/index.js + 29 modules 395.1 KiB
./node_modules/.pnpm/@posthog+icons@0.36.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.cjs.js 364.8 KiB
./node_modules/.pnpm/@posthog+icons@0.36.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js 354.8 KiB
./src/hooks/useCustomers.tsx + 54 modules 353.9 KiB
./node_modules/.pnpm/react-markdown@8.0.7_@types+react@16.14.66_react@18.3.1/node_modules/react-markdown/lib/react-markdown.js + 88 modules 351.4 KiB
./node_modules/.pnpm/cloudinary-core@2.14.0_lodash@4.17.21/node_modules/cloudinary-core/cloudinary-core.js 281.9 KiB
./src/components/ProductComparisonTable/index.tsx + 116 modules 267.6 KiB
./node_modules/.pnpm/@codesandbox+sandpack-react@2.20.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@codesandbox/sandpack-react/dist/index.mjs 266.6 KiB
./node_modules/.pnpm/d3@7.9.0/node_modules/d3/src/index.js + 208 modules 247.4 KiB
./src/components/Pricing/PricingSlider/Slider.tsx + 87 modules 239.9 KiB

Eager-graph budgets are report-only until a baseline is established. Sizes are gzip of public/**/*.js; eager size is webpack module source bytes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants