Let me investigate the Tawk.to chat integration to find why it isn't loading.
Let me examine the floating action button's chat handler and check the Tawk environment variable to understand the full integration.
I found the likely issue. There's a NEXT_PUBLIC_TAWK_PROPERTY_ID environment variable configured for this project, but the TawkChat component ignores it and hardcodes a property ID in the script URL instead. If that hardcoded ID is stale or doesn't match the active Tawk property, the widget won't load. Let me fix the component to use the environment variable and add proper load/error handling.
I updated components/tawk-chat.tsx to read the property ID from your NEXT_PUBLIC_TAWK_PROPERTY_ID environment variable (falling back to the previously hardcoded ID), and added an error listener plus a debug log so a failed load now reports clearly in the console instead of failing silently.
A couple of things to verify on your end, since the most common cause of Tawk not loading is a mismatched property ID:
NEXT_PUBLIC_TAWK_PROPERTY_ID in your project's Vars settings matches the Property ID in your Tawk.to dashboard (Admin → Property Settings → Property ID). The code currently has a fallback of 683cdfc18b6539190b345d30 — if your actual property differs, the env var will now override it correctly.[v0] Tawk.to script failed to load message, the ID is wrong; if there's no error but the widget is invisible, it may be a Tawk dashboard visibility setting (Admin → Chat Widget → make sure it's enabled and not restricted to specific domains that exclude your preview/production URL).Can you confirm what the console shows after refreshing, and whether your Tawk widget is restricted to specific domains? That'll tell me whether this is a code issue or a dashboard configuration issue.
The script-tag error persists. Let me find every <script> tag rendered in JSX and verify which component renders on the client.
Let me examine each <script> tag's context to determine which is problematic.
The two layout.tsx scripts are in <head> of a server component — those are valid. The suspect is app/faqs/page.tsx line 194, which renders a <script> in the body. Let me confirm whether this file is a client component.
The two scripts in app/layout.tsx are inside <head> of a server component, which is valid. The problem is app/faqs/page.tsx line 194 — it renders a raw <script> tag in the body. When you client-navigate to that page, React re-renders it on the client and hits the script tag, which is what triggers the warning. The robust fix is to use Next.js's Script component, which is purpose-built to inject scripts safely. Let me apply it.
Actually, beforeInteractive is only allowed in the root layout — using it in a page would cause another warning. Let me correct the strategy to the default afterInteractive, which is appropriate for JSON-LD in a page.
I replaced the raw <script> tag in app/faqs/page.tsx with Next.js's <Script> component, which safely injects the FAQ JSON-LD structured data without triggering React's client-render script warning. The two remaining <script> tags in app/layout.tsx are valid because they live in the <head> of a server component, so no changes were needed there. Your FAQ rich-results schema stays fully intact and the runtime error is resolved.
v329 was created by restoring v324