saadeghi/daisyui · error · Error
Timed out waiting for ${label}${lastValue ? `: ${JSON.string
Error message
Timed out waiting for ${label}${lastValue ? `: ${JSON.stringify(lastValue)}` : ""} What it means
Thrown by waitForPageValue when its polling loop reached the deadline without the page-side expression ever returning a truthy value. The label identifies what was being waited for (e.g. "the Tailwind Play editor", "Tailwind Play to load"); lastValue, if any, is included as JSON.
Source
Thrown at packages/tailwind-play-share/index.mjs:458
response.exceptionDetails.text ??
"Unknown page evaluation error"
throw new Error(description)
}
return response.result?.value
}
async function waitForPageValue(client, expression, timeoutMs, label) {
const deadline = Date.now() + timeoutMs
let lastValue
while (Date.now() < deadline) {
lastValue = await evaluate(client, expression)
if (lastValue) return lastValue
await delay(100)
}
throw new Error(
`Timed out waiting for ${label}${lastValue ? `: ${JSON.stringify(lastValue)}` : ""}`,
)
}
const clipboardCaptureScript = String.raw`
(() => {
const remember = (value) => {
if (value !== undefined && value !== null) {
globalThis.__tailwindPlaySharedUrl = String(value);
}
};
try {
const clipboard = navigator.clipboard;
const prototype = clipboard && Object.getPrototypeOf(clipboard);
const originalWriteText = prototype?.writeText;
if (typeof originalWriteText === "function") {
Object.defineProperty(prototype, "writeText", {View on GitHub (pinned to 42b09e637e)
Solutions
- Increase --timeout (e.g. --timeout 90000) to give the page more time to load and mount its editor.
- Run with --headed locally to see whether the page is actually loading.
- Check network connectivity to https://play.tailwindcss.com/ from the host.
- Retry in CI; cold-cache loads are the usual culprit.
Example fix
// before
const url = await createTailwindPlay({ html, css, timeoutMs: 45000 })
// after
const url = await createTailwindPlay({ html, css, timeoutMs: 120000 }) Defensive patterns
Strategy: retry
Validate before calling
// Validate timeout is generous enough for a cold Tailwind Play load.
function adequateTimeout(timeoutMs) {
return Number.isFinite(timeoutMs) && timeoutMs >= 30000
} Try / catch
try {
url = await createTailwindPlay({ ...inputs, timeoutMs: 90000 })
} catch (error) {
if (error.message.startsWith("Timed out waiting for ")) {
// network/load slowness; retry with a higher timeout
}
throw error
} Prevention
- Set --timeout to >= 60000 in CI where loads are slower.
- Confirm network access to play.tailwindcss.com from the runner.
- Retry once; cold-cache loads frequently trip this.
When it happens
Trigger: Called from waitForEditor or the document.readyState/initialUrl waits inside createTailwindPlay. Each 100ms tick calls evaluate(); if no tick returns a truthy value before Date.now() exceeds deadline (now + timeoutMs), it throws.
Common situations: Slow machine or network so Tailwind Play has not finished bootstrapping Monaco within timeoutMs, Tailwind Play is blocked/down, the browser is resource-starved in CI, or timeoutMs was set too low.
Understand the failure class
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
Related errors
- --timeout must be a positive number of milliseconds
- Timed out while starting Chrome's DevTools server
- Chrome page creation failed with HTTP ${response.status}
- Chrome did not expose a page DevTools socket
- ${description}
AI-assisted analysis of saadeghi/daisyui@42b09e637e (2026-08-13).
Data as JSON: /api/errors/100f5ac89cbe1061.
Report an issue: GitHub.