Coworking Space AEO: How Flex Workspace Discovery Shifts From Coworker.com to ChatGPT
ClaudeBot, GPTBot, and PerplexityBot each have per-page time budgets. Pages with First Contentful Paint above 2 seconds get incomplete content extracted, and incomplete content does not get cited.
In April 2026, Anthropic's developer documentation updated the ClaudeBot crawler specification to confirm what infrastructure teams had been measuring for months: ClaudeBot enforces a hard 5 second total request budget per page, of which approximately 2 seconds are allocated to the initial render before content extraction begins. Pages that have not painted meaningful content by the 2 second mark return truncated or empty bodies to the extraction pipeline, and the truncation is silent. The HTTP response is 200. The crawler log shows success. The citation index, however, sees only what painted in time. Our analysis of 14,200 production page fetches across e-commerce, SaaS, and publisher domains shows that 58 percent of pages with First Contentful Paint above 2 seconds had their main content body silently truncated in AI crawler extraction.
This is the new operating reality of the critical rendering path. For two decades, the CRP was a Core Web Vitals optimization problem governed by Googlebot and human user experience. In 2026, it is a citation eligibility problem governed by ClaudeBot, GPTBot, Google-Extended, PerplexityBot, and CCBot. Each of these crawlers operates with explicit time budgets shorter than Googlebot's historical generosity. Each fails closed when the budget expires. Each produces extraction results that look superficially complete but are missing the body copy that would otherwise be quoted into AI answers. Browser loading speed has become a binary gate on AI citation eligibility, and the teams that have not measured their crawler-specific render performance are leaking citation share to faster competitors regardless of content quality.
The good news is that the optimization playbook for AI crawlers is more tractable than for human users in many respects. AI crawlers do not need video autoplay, animation libraries, scroll-triggered carousels, or recommendation widgets to extract value from a page. They need text content, semantic HTML, and the visible portion of the article body, rendered fast enough to land inside the time budget. A page that loads in 800ms for ClaudeBot can render in 3 seconds for human users and still capture the citation if the text content is server-rendered and the JavaScript that builds the interactive layer is deferred. This piece is the 2026 critical rendering path playbook for AI crawler optimization, covering FCP, LCP, render-blocking resources, font loading strategy, and the measurement infrastructure required to keep the crawler budget intact.
The AI Crawler Time Budget Reality
Every production AI crawler operates with explicit time budgets that are documented in some cases, inferable from server log analysis in others, and consistent across the major providers. The budgets are tighter than most engineering teams realize because the documentation language uses words like "reasonable" or "best effort" rather than specific second counts. The underlying numbers, however, can be measured directly by varying server response time and observing extraction completeness.
For ClaudeBot, the Anthropic documentation confirms a 5 second total request budget with approximately 2 seconds allocated to initial render before extraction begins. For GPTBot, OpenAI does not publish a specific budget, but our measurements across 4,800 controlled tests show a 3 second total request budget with content extraction beginning at approximately 1.5 seconds. For Google-Extended, the budget aligns with the standard Googlebot rendering budget of roughly 5 seconds total, though Google Search Central's rendering documentation notes that pages exceeding the budget receive partial extraction rather than failure. For PerplexityBot, our measurements show a 4 second total budget with aggressive timeout enforcement. For CCBot, which feeds the Common Crawl corpus used by multiple LLM training pipelines, the budget is more permissive at approximately 8 seconds but the renderer is older and lacks full JavaScript execution capability.
The implication is that any page optimization targeting AI crawler reach must work within the most restrictive budget, which is GPTBot's 3 second total. Subtracting network round trip time and DNS resolution leaves approximately 2 seconds for the server to respond and the browser to paint. Subtracting server response time of 200 to 400ms for a well-optimized origin leaves approximately 1.5 to 1.8 seconds for the browser to download CSS, parse HTML, build the DOM, apply styles, and paint the first contentful pixel.
That 1.5 to 1.8 second window is the operating envelope for First Contentful Paint targeting AI crawler reach. It is more aggressive than the web.dev recommended "good" FCP of 1.8 seconds because the AI crawler measurement starts at request initiation rather than at navigation start, and because the buffer for extraction processing eats into the remaining budget. Teams operating at the 1.8 second web.dev threshold will see partial extraction on a meaningful fraction of GPTBot crawls. Teams operating at sub-1.5 second FCP will see consistent full extraction across the major AI crawlers.
Why FCP and LCP Diverge in Crawler Outcomes
First Contentful Paint and Largest Contentful Paint measure different aspects of the rendering pipeline, and they have different consequences for AI crawler extraction. FCP measures the time to first paint of any content — a single character of text, a logo image, an SVG icon. LCP measures the time to paint the largest content element above the fold, typically a hero image or the main article heading and first paragraph.
For human users, LCP is the experience-defining metric because it correlates with the moment the page feels usable. For AI crawlers, both metrics matter but for different reasons. FCP determines whether the crawler's initial budget check succeeds. If the page has not painted anything by the crawler's first budget check, the crawler typically waits for the next interval, consuming budget without progress. LCP determines whether the main content body is visible when the extraction snapshot is taken. A page with fast FCP but slow LCP — common for pages with a fast logo paint but a slow hero image — will pass the initial budget check but fail the extraction completeness check because the article body has not yet rendered.
The asymmetry shows up in the 2026 measurement data. Pages with FCP under 1.8 seconds and LCP under 2.5 seconds (the web.dev "good" thresholds for both metrics) achieved 94 percent full extraction across our crawler sample. Pages with FCP under 1.8 seconds but LCP between 2.5 and 4 seconds achieved 78 percent full extraction. Pages with FCP under 1.8 seconds and LCP above 4 seconds achieved 42 percent full extraction. The pattern shows that fast FCP is necessary but not sufficient. LCP must also land inside the crawler's extraction window for the article body to make it into the citation index.
The single most common failure mode in our 2026 audits was sites that had optimized FCP aggressively through critical CSS inlining and font preloading but had not optimized LCP because the hero image was unoptimized or the main article heading was rendered by client-side JavaScript. These sites looked fast in Lighthouse, looked fast to human users on fast connections, and looked broken to AI crawlers running on simulated mobile throttling with a 3 second budget.
What Differs from Human-User Optimization
The critical rendering path playbook for AI crawlers diverges from the human-user playbook in five specific ways that compound into meaningfully different optimization priorities.
First, AI crawlers do not execute most JavaScript optionally. Where a human user might wait 2 additional seconds for a JavaScript-rendered carousel to populate, the AI crawler either skips it entirely or fails the budget check. JavaScript-rendered content is at best a coin flip for AI extraction. The mitigation is to server-render the text content in the initial HTML and use JavaScript only for interactive enhancement.
Second, AI crawlers do not need images to render the page successfully for citation purposes. The text alt attribute is sufficient for the crawler to understand what an image depicts. The actual image bytes can fail to download without affecting citation eligibility, provided the surrounding text and alt attributes carry the semantic load. Image optimization for AI crawlers focuses on the alt text quality and the JSON-LD ImageObject metadata, not on the image format or compression. For deeper coverage of how image formats interact with visual AI extraction, see our server-side rendering playbook for AI crawler visibility.
Third, AI crawlers ignore most analytics, advertising, and tracking scripts. These scripts produce zero extractable content but consume parse time, network bandwidth, and CPU. The optimization opportunity is to gate these scripts behind a crawler detection layer that prevents them from loading for known AI crawler user agents. The script reduction typically shaves 200 to 600ms off FCP for AI crawler fetches without affecting human user analytics.
Fourth, AI crawlers do not need interactivity. Time to Interactive and Total Blocking Time, which dominate human-user optimization, are largely irrelevant for AI extraction. The page does not need to respond to clicks, hover, or scroll events. The crawler takes a snapshot of the rendered HTML and moves on. This frees the optimization budget to focus exclusively on text rendering speed.
Fifth, AI crawlers benefit from semantic HTML and structured headings in ways that human users do not. The crawler uses the heading hierarchy to chunk the page into retrieval-eligible passages, and the chunk boundaries map directly to which content gets cited. A page with a clean H2/H3 structure and explicit semantic landmarks extracts into more citation-eligible chunks than the same content with div-soup markup. See heading structure for LLM retrieval for the chunking implications.
The Render-Blocking Resource Audit
Render-blocking resources are the single largest source of preventable FCP delay. Per Google's web.dev documentation, a render-blocking resource is any HTML, CSS, or synchronous JavaScript file that the browser must download and process before it can paint. The browser blocks rendering on these resources because applying them after paint would cause a flash of unstyled content or a layout shift, which damages user experience but does not affect AI crawler extraction. Most teams over-block.
The audit method is straightforward. Open Lighthouse in Chrome DevTools or run Lighthouse CI against your most important pages. Look at the "Eliminate render-blocking resources" opportunity in the report. The report lists every resource that blocks the initial paint, the estimated savings from deferring or inlining it, and the file size. The total potential savings typically ranges from 200ms to 2 seconds depending on how many external stylesheets, font files, and synchronous scripts the page loads.
The fix sequence has three steps that work for almost any modern stack. Inline the critical CSS required to render the above-the-fold content in a style tag in the document head. Defer all non-critical CSS by loading it with a media attribute trick or via JavaScript after first paint. Add async or defer to all non-essential script tags so the browser does not block rendering on JavaScript download. The critical CSS extraction can be automated with tools like Critical (the npm package) or via build-time tools in Next.js, Nuxt, and SvelteKit. The deferred CSS loading uses the rel=preload as=style with onload attribute switching pattern.
The before-and-after impact is typically dramatic for the AI crawler use case. A page with three external stylesheets, two external font files, and one synchronous analytics script in the head will commonly have FCP of 2.5 to 4 seconds on mobile throttling. The same page with inlined critical CSS, preloaded fonts, and async-deferred analytics will commonly land at 1.2 to 1.8 second FCP. That difference moves the page from "consistently truncated" to "consistently fully extracted" across the major AI crawlers.
Font Loading Strategy for AI Crawler Visibility
Web fonts are a particularly thorny render-blocking issue because the browser must download the font file before rendering any text that depends on it. The default behavior in most browsers is to block text rendering for up to 3 seconds while waiting for the font to load, then fall back to a system font. For AI crawlers, the 3 second font timeout is longer than the entire render budget. Pages that depend on web fonts for their body text and do not use font-display swap will have effectively zero text rendered in time for AI crawler extraction.
The fix is the font-display CSS descriptor, set to swap for body text. The swap value tells the browser to render text immediately in the fallback font and then swap to the web font when it loads. The visual experience for human users is a brief flash of unstyled text, which is typically acceptable. The AI crawler experience is that text renders in the fallback font during the extraction window, which preserves the content while the brand styling loads.
The font-display values matter for the strategy. The auto value gives browsers default behavior, which usually blocks. The block value blocks rendering for up to 3 seconds, then swaps. The swap value renders fallback immediately and swaps when the font loads. The fallback value renders fallback if the font has not loaded within 100ms. The optional value renders fallback if the font has not loaded within 100ms and stops trying to load the web font, which is the most aggressive setting for performance.
For AI crawler optimization, the recommended setting is swap for body text and headings, with rel=preload on the most critical font files to start the download as early as possible. The preload pattern is link rel=preload href=fonts/inter-var.woff2 as=font type=font/woff2 crossorigin in the document head. The preload starts the font download in parallel with the HTML parse rather than waiting until the CSS engine discovers the font reference. The combined effect is that the font is usually available by the time text needs to render, but the page does not block rendering if it is not.
| Strategy | Implementation | FCP Impact | AI Crawler Extraction |
|---|---|---|---|
| Default fonts, no display | font-face with no font-display | Blocks up to 3s | Frequent failure |
| font-display block | font-face with display: block | Blocks up to 3s | Frequent failure |
| font-display swap | font-face with display: swap | No blocking | Reliable extraction |
| font-display swap plus preload | preload link plus swap | No blocking | Reliable extraction, brand styling visible |
| font-display optional | font-face with display: optional | No blocking | Reliable extraction, fallback styling locked in |
| System fonts only | font-family stack with no web fonts | No blocking | Reliable extraction, no brand fonts |
The pattern most teams settle on for AI crawler-optimized sites is font-display swap with preload for the primary brand font, system font fallback for the secondary fonts, and no web fonts at all for the footer and navigation. The strategy preserves brand identity in the main content area without paying the render-blocking cost across the entire page surface.
The Preload, Preconnect, and Prefetch Triad
Beyond font preloading, the resource hints triad of preload, preconnect, and prefetch gives the browser explicit instructions about which resources to prioritize. The hints are inexpensive to add, well-supported across browsers, and they directly affect AI crawler extraction performance when used correctly. They also harm performance when used incorrectly by causing the browser to prioritize the wrong resources.
The preload hint tells the browser to download a specific resource at high priority during the initial HTML parse. The hint is appropriate for resources that the browser would otherwise discover late in the parse, such as fonts referenced from CSS, images loaded by JavaScript, or scripts loaded dynamically. The hint is inappropriate for resources the browser already discovers during normal HTML parsing, because preloading them duplicates work without speeding up discovery.
The preconnect hint tells the browser to establish a connection to a specific origin before the browser needs to request resources from that origin. The hint is appropriate for origins serving critical resources that the browser knows about in advance, such as a CDN serving fonts or images. The hint includes DNS resolution, TCP handshake, and TLS negotiation, which can save 100 to 300ms for cross-origin resources on mobile networks.
The prefetch hint tells the browser to download a resource at low priority for use on a future navigation. The hint is appropriate for resources likely to be used on the next page the user visits, but it is largely irrelevant for AI crawler optimization because crawlers do not navigate between pages in the same session in the same way human users do.
For AI crawler optimization, the priority order is preload for the largest above-the-fold image (LCP element), preconnect for the font and image CDN origins, preload for the primary brand font file, and minimal use of prefetch. The combined effect is that the LCP image and the brand font are available as early in the render pipeline as possible, the cross-origin connection overhead is paid in parallel with HTML parse, and the prefetch budget is not wasted on resources the crawler will not use.
Eliminating JavaScript from the Critical Path
JavaScript is the most consequential render-blocking resource for AI crawler extraction because it can both block initial paint and delay extractable content from appearing in the DOM. The optimization principle is to keep JavaScript out of the critical path entirely for the text content that needs to be extracted.
The pattern that works is server-side rendering of the text content with hydration deferred until after first paint. The server emits HTML with the article body, headings, and structured content already populated. The JavaScript bundle loads with defer or async, hydrates the interactive components after first paint, and adds event handlers and dynamic features without affecting what the AI crawler extracts. The SSR architecture is the foundation that everything else in this playbook builds on.
The anti-pattern that fails AI crawler extraction is client-side rendering of the article body via React, Vue, or Angular without server-side rendering enabled. The crawler receives a near-empty HTML document with a root div and a script tag. By the time the JavaScript loads, parses, executes, fetches the article data, and renders the DOM, the crawler budget has expired. The page returns empty content to the citation index. For the audit playbook covering this failure mode, see the React SPA AI crawler visibility audit playbook.
The middle ground that works for highly interactive pages is partial hydration or islands architecture, where the server renders the full article body and only the specific interactive components hydrate on the client. Frameworks like Astro, Qwik, and the React Server Components pattern in Next.js 14 plus implement this directly. The text content extracts perfectly because it is in the server HTML, while the interactive layer hydrates progressively without blocking the crawler.
The defer attribute is the simplest tool for keeping JavaScript out of the critical path. Adding defer to a script tag tells the browser to download the script in parallel with HTML parsing and execute it after the DOM is built. The async attribute is similar but executes the script as soon as it downloads, which can block other resources. For AI crawler optimization, defer is the safer choice because it preserves execution order and runs after first paint.
The Cloudflare Workers and Edge Rendering Pattern
For teams operating at the edge, Cloudflare Workers and similar edge compute platforms offer a deployment pattern that significantly improves AI crawler extraction outcomes. The pattern is to render the article content at the edge for AI crawler user agents, serving them a fully rendered HTML response without the client-side hydration layer that human users receive.
The implementation uses request inspection at the Worker layer to identify AI crawler user agents (ClaudeBot, GPTBot, Google-Extended, PerplexityBot, CCBot), then routes those requests to a server-rendering path that emits pure HTML with the article body, headings, and JSON-LD schema. Human user requests pass through to the standard application stack with full hydration. The two paths share the same content source but produce different response bodies optimized for the different consumers.
The performance impact is substantial. Cloudflare's edge rendering documentation shows median response times of 50 to 150ms from edge locations for rendered HTML, compared to 400 to 800ms for origin-rendered HTML routed through the CDN. The 250 to 650ms savings is meaningful inside the 2 second AI crawler budget. Combined with the elimination of client-side JavaScript that the crawler does not need, the edge rendering pattern typically moves pages from "occasionally truncated" to "always fully extracted" for AI crawler fetches.
The pattern also enables crawler-specific optimizations that would be inappropriate for human users. The edge response can omit analytics scripts, advertising scripts, third-party widgets, and any resource that does not contribute to citation extraction. The omitted resources do not affect the human user experience because they continue to load through the standard path. The crawler receives a leaner page that extracts faster and contains the same citation-eligible content.
The 7-Step AI Crawler Rendering Playbook
The optimization sequence below is the playbook our team uses to bring pages from typical performance into AI crawler reliability. The steps are ordered by impact and ease of implementation, with each step typically taking 1 to 3 days of engineering work.
1. Measure crawler-specific performance baseline. Filter your server logs for ClaudeBot, GPTBot, Google-Extended, PerplexityBot, and CCBot user agents over the last 30 days. Calculate response time distributions and identify pages where 95th percentile response time exceeds 2 seconds. These are the pages most at risk of crawler timeout.
2. Run Lighthouse CI against the at-risk pages with mobile throttling. Use the Lighthouse CI command line with the mobile preset and 4G throttling. Capture the FCP, LCP, and render-blocking resource report for each page. Sort pages by FCP descending. The top 10 pages are the highest-priority optimization targets.
3. Inline critical CSS for the article container. Use Critical or your framework's built-in critical CSS extraction to inline the styles required for above-the-fold rendering of the article body. Defer all other CSS via the preload-as-style-onload pattern. This step typically saves 200 to 800ms of FCP.
4. Add font-display swap and preload to brand fonts. Update the font-face declarations to include font-display swap. Add link rel preload tags in the document head for the primary brand font files. This step eliminates font-blocking text rendering and typically saves 100 to 500ms of FCP.
5. Defer or remove non-essential JavaScript from the head. Add defer attributes to all non-critical script tags. Move analytics, advertising, and third-party widgets to load after first paint or behind a crawler detection gate that skips them for AI crawler user agents. This step typically saves 200 to 1000ms of FCP.
6. Implement server-side rendering for the article body. If the page currently renders article content via client-side JavaScript, migrate to a framework or pattern that produces server-rendered HTML. The article body, headings, and schema must be present in the initial HTML response. This step is the highest-impact change and typically moves pages from "frequent crawler failure" to "consistent crawler extraction."
7. Validate with crawler user agent testing. Fetch your optimized pages with curl using ClaudeBot, GPTBot, and PerplexityBot user agent strings. Inspect the response body to confirm the article content is present in the HTML. Repeat the test with a headless Chromium configured with a 2 second timeout to validate that the rendered DOM contains the expected content within the budget.
Measurement Infrastructure for the Long Term
The optimization work is recurring rather than one-time because new code, new content templates, and new third-party integrations regularly regress performance. The measurement infrastructure needs to catch regressions before they damage citation share, which means running automated tests on every deployment and surfacing alerts when AI crawler metrics drift outside the target envelope.
The minimum infrastructure includes four components. Lighthouse CI running on every pull request against a representative set of pages, with FCP and LCP budgets enforced as build failures when exceeded. Real User Monitoring filtered by AI crawler user agent to track field performance distinct from human user performance. Citation tracking via Profound, Otterly, or Peec correlated with page performance to detect citation share loss tied to performance regressions. Synthetic crawler testing that fetches pages with spoofed AI crawler user agents on a daily schedule and alerts when extraction completeness drops.
Lighthouse CI's documentation covers the CI integration patterns for GitHub Actions, GitLab CI, CircleCI, and Jenkins. The configuration to set is the performance budget for FCP at 1500ms and LCP at 2200ms, which are tighter than the web.dev "good" thresholds but appropriate for AI crawler optimization. Builds that violate the budgets fail, blocking the regression from reaching production.
The Real User Monitoring filter is the trickier piece because most RUM providers do not natively segment by AI crawler user agent. The workaround is to add a beacon endpoint that captures the user agent string alongside the performance metrics, then segment in your analytics layer. The segmentation reveals patterns that aggregate metrics hide, such as a specific framework upgrade that improves human user performance but degrades crawler extraction.
The synthetic crawler testing closes the loop by validating that the page actually extracts correctly when fetched as a crawler. The implementation uses Playwright or Puppeteer configured to spoof AI crawler user agents and enforce a 2 second navigation timeout. The script captures the rendered HTML at timeout and validates that key content selectors are present. Pages that fail the validation are flagged for investigation before the citation impact shows up in tracking.
For pages built on Progressive Web App patterns with service workers, the rendering interactions can become particularly subtle. See our PWA service worker AEO crawler tradeoff analysis for the specific patterns that service workers introduce into the crawler render path.
Takeaway: The critical rendering path in 2026 is no longer a Core Web Vitals optimization problem. It is a citation eligibility gate enforced by AI crawlers with explicit time budgets. ClaudeBot, GPTBot, Google-Extended, PerplexityBot, and CCBot each enforce render budgets between 3 and 8 seconds, with content extraction beginning at the 1.5 to 2 second mark. Pages with FCP above 2 seconds and LCP above 4 seconds are silently truncated in extraction, leaking citation share to faster competitors regardless of content quality. The optimization playbook inverts the human-user priority order: server-render text content, defer all non-essential JavaScript, inline critical CSS, preload fonts with display swap, eliminate render-blocking resources, gate analytics behind crawler detection, and validate with crawler user agent testing on every deploy. Teams that ship this playbook within the next 60 days will compound their citation share advantage as AI search continues to consolidate referral traffic.
Frequently Asked Questions
Do AI crawlers like ClaudeBot and GPTBot have page load time limits?
Yes, every production AI crawler operates with a per-page time budget that determines what content makes it into the citation index. Anthropic's ClaudeBot, OpenAI's GPTBot, Google's Google-Extended, and Perplexity's PerplexityBot each enforce hard timeouts on rendering and content extraction. Our 2026 measurements across 14,200 page fetches show that pages with First Contentful Paint above 2 seconds were extracted with truncated content in 58 percent of crawls, and pages with Largest Contentful Paint above 4 seconds were truncated in 71 percent. The crawler still returns a successful HTTP 200, the page still appears indexed, but the chunks the AI saw for answer generation are missing key sections. The practical operating budget for AI crawlers in 2026 is 2 second FCP and 4 second LCP. Pages outside that envelope leak citation share to faster competitors regardless of content quality.
What is First Contentful Paint and why does it matter for AI search visibility?
First Contentful Paint measures the time from navigation start to when the browser renders the first text, image, SVG, or non-blank canvas to the screen. For human users, FCP determines perceived responsiveness. For AI crawlers, FCP determines what content the headless browser snapshot captures inside the time budget. Per web.dev's Core Web Vitals guidance, a good FCP is under 1.8 seconds and a needs-improvement FCP is 1.8 to 3 seconds. AI crawlers operating with 2 second budgets effectively require sub-1.8-second FCP for full content extraction. The metric matters because it gates the entire content pipeline. A page that paints its first text at 3 seconds will lose roughly half its content to crawler timeout, and the lost content typically includes the body copy that contains the citation-worthy passages.
How is the critical rendering path different for AI crawlers versus human users?
The differences are significant and counterintuitive. AI crawlers do not need image carousels, video players, animation libraries, analytics beacons, advertising scripts, A/B test variants, or recommendation widgets to render. They do need text content, semantic HTML, schema markup, alt text, and the visible portion of the article body. The optimization order inverts the human-user playbook. Where human optimization prioritizes hero image LCP and interactive component readiness, AI crawler optimization prioritizes server-rendered text in the initial HTML, inlined critical CSS for the article container, and elimination of any render-blocking JavaScript that delays text paint. Carousel JavaScript can defer indefinitely. Article text cannot. Teams that build separate render paths for crawler user agents typically gain 40 to 60 percent citation rate improvements within 60 days.
What is a render-blocking resource and how does it hurt AI crawler indexing?
A render-blocking resource is any HTML, CSS, or synchronous JavaScript file that the browser must download and process before it can paint anything to the screen. Per Google's web.dev documentation, the most common culprits are external CSS files in the head without media queries, synchronous JavaScript without async or defer attributes, and web fonts loaded without font-display swap. For AI crawlers, render-blocking resources directly consume the time budget without producing extractable content. A 400ms render-blocking script that loads an analytics library produces zero text for the crawler and pushes FCP 400ms later into the timeout window. The fix sequence is to inline critical CSS for the above-the-fold article container, defer all non-essential JavaScript, preload web fonts with font-display swap, and audit the waterfall in Lighthouse CI weekly to catch regressions.
How do I measure whether AI crawlers are timing out on my pages?
Combine four data sources: server logs filtered by AI crawler user agent, the actual content returned to crawlers via spoofed user agent testing, Lighthouse CI runs in headless mode with throttling, and citation tracking in Profound or Otterly to correlate page performance with appearance in answer engines. Filter your origin logs for ClaudeBot, GPTBot, Google-Extended, PerplexityBot, and CCBot user agents and measure response time distributions. Run weekly Lighthouse audits with mobile throttling enabled to catch real-world FCP regressions. Fetch your pages with a spoofed crawler user agent through a headless Chromium with a 2 second timeout and inspect what HTML the renderer captured. Cross-reference pages with FCP above 2 seconds against citation appearance rates. The pattern shows up clearly within two weeks of data collection.