FAQ · Updated October 13, 2026

Can a Screenshot API render JavaScript-heavy SPAs correctly?

Yes. SnapshotFlow executes JavaScript in Chromium, including React, Vue, Angular, and Svelte applications. Choose wait_until=load, domcontentloaded, networkidle0, or networkidle2. Add wait_for_selector for an element that appears when your content is ready, and optionally delay in milliseconds, up to 10,000. Network idle alone does not prove that every component has finished rendering.

JavaScript runs before capture

SnapshotFlow renders pages in Chromium, including client-side React, Vue, Angular, and Svelte applications. A screenshot can still be taken before your application has finished loading its data, so choose a readiness condition that matches the page.

Use the supported wait parameters

Set wait_until to load, domcontentloaded, networkidle0, or networkidle2. Add wait_for_selector for an element inserted when the content is ready, and delay for an additional pause of up to 10,000 milliseconds. There is no wait_for parameter or dedicated JavaScript-expression wait option.

GET /screenshot?url=https://example.com&wait_until=networkidle2&wait_for_selector=%23ready&delay=500

Fix incomplete captures

A selector being present does not mean every image, chart, or animation has finished. Use a meaningful readiness marker on pages you control, serve web fonts, and try a short delay. If persistent network activity causes a timeout, use domcontentloaded with a specific selector. Pass the required cookies or headers when the page needs authentication.

← Back to all FAQ