Previews
Builds on Common Methodology
Times from launching a Vite development server inside a sandbox until its public preview URL returns the HTTP 200 response to the job host, split into Server and URL Reachable.
App-building agents and interactive web IDEs start a development server inside a sandbox and hand the user a public preview URL to view the live app and receive Hot Module Replacement (HMR) updates over a WebSocket.
The Previews benchmark launches a pinned Vite 8.3.4 development server on port 5173 and measures how long the sandbox's public preview URL takes to return its first valid HTTP 200 response (URL ready), splitting that wait into the server's in-sandbox startup time (Server Listening) and the remaining process-launch and routing time (URL Reachable).
Once the preview URL is live, the benchmark measures the Time to First Byte (TTFB) of 100 sequential HTTP GET requests over a kept-alive connection and tests whether a WebSocket upgrade (vite-hmr) succeeds through the preview proxy.
View the Procedure View Previews Results Download Raw Data View the Parameters
Metrics
Previews is the duration from launching the Vite development server inside the sandbox until its public HTTPS preview URL returns its first valid 200 OK response (ok) on /ping.txt.
| Timed Part | Starts | Ends |
| Start server | The process start request is dispatched. | The process start call returns. |
| Server Listening | The sandbox clock reading immediately before server launch. | The first successful localhost response, measured by the sandbox's own clock. |
| Preview URL ready | First GET sent just before server start. | First GET returning HTTP 200 with body ok. |
Measurement
Each trial uses a sandbox created from BoxRouter's pinned standard image with port 5173 exposed as a public preview URL, running a pre-bundled Vite 8.3.4 archive (previews-app.tar, verified by SHA-256).
- Create sandbox with a port 5173 preview.
- Upload and verify Vite archive.
- Open the preview URL (timed, not charted).
- Preview Ready Time Poll the preview URL. Timed The job host starts polling the public preview URL every 0.01 s while simultaneously launching
node node_modules/vite/bin/vite.js inside the sandbox and polling 127.0.0.1:5173/ping.txt inside the guest every 0.01 s. - While launching Vite (start-server). Timed
- Polling
127.0.0.1:5173 (server-listening). Timed - Send 100 sequential
GET /ping.txt requests on a kept-alive connection (request). - Test a vite-hmr WebSocket upgrade (websocket). The harness times a WebSocket upgrade with subprotocol
vite-hmr and verifies its connected message. - Destroy the sandbox.
Scope Limits and Caveats
- Only providers that expose the previews capability through BoxRouter are measured (others show Not Supported); URL Reachable includes both
process.start dispatch and the provider's edge routing proxy. - Both url-poll and server-listening sleep 0.01 s between attempts, so both readiness durations carry up to that much polling quantization plus any request in flight when Vite begins listening.
- The request GET calls reuse the connection from url-poll, so DNS lookup, TCP connect and TLS handshake time is excluded from request TTFB while distance to the provider's preview ingress is included.
- Vite runs with
allowedHosts: true and skipWebSocketTokenCheck: true so the benchmark script can test HTTP and WebSocket routing directly without a headless browser.
Failures and Exclusions
Outcome classifications, top-up rounds, and outlier rules follow Common Methodology; the first failed step ends the trial without in-trial retries.
Providers that do not support public preview URLs through BoxRouter are shown as Not Supported. A trial succeeds only when Vite binds locally, the public preview URL returns HTTP 200 with body ok, all 100 GET requests succeed, and the sandbox is confirmed destroyed.
| Step | Time Limit |
| Create | 5 min |
| Upload app | 5 min |
| Open preview | 60 s |
| Start server | 60 s |
| Server Listening | 2 min |
| Preview URL ready | 2 min |
| Requests through preview | 30 s |
| WebSocket upgrade | 10 s |
| Destroy | 5 min |
Statistics
- Based On
-
Common Methodology
Per-unit percentiles, bootstrap confidence intervals, and tail rules follow Common Methodology.
A provider is ranked once it has at least 20 successful trials.
Sandbox and Trials
- Image Digest
-
sha256
- Image Version
-
0.3.11
- Image Registry Page
-
View on the Registry
- Pull the Image
-
docker pull ghcr.io/boxrouter/standard-image@sha256:89d4c97048dbdfb8b6d85ad91833962ff38d1c334a5f47e6de80a9762310191b Copy
- Lifetime
-
15.0 min
- Access
-
Public
- Ports
-
5173
- Idle Connection Time
-
5.0 min
From Common Methodology
- Idle Connection Exceptions
-
| Provider | Rule | File Transfer Idle Time |
| Daytona | The SDK has no idle-timeout setting. Its command channel keeps its connection open, and its file-transfer channel reconnects after 5 s of idle time. | 5.0 s |
From Common Methodology
- Network Path Attempts
-
10
From Common Methodology
- Mode
-
Single
- Sandboxes per Trial
-
1
- Parallel Trials
-
10
- Concurrent Sandboxes
-
1
Provider Requirements
- Required
-
Previews
At a Glance
- Metrics
-
- Preview Ready Time Time · Milliseconds (ms) · Lower Is Better
- Server Listening Time Time · Milliseconds (ms) · Lower Is Better
- URL Reachable Time Time · Milliseconds (ms) · Lower Is Better
- Request Time to First Byte Time · Milliseconds (ms) · Lower Is Better
- WebSocket Connection Success Count · Count · Higher Is Better
- Statistic
-
Median
- Clock
-
Job-host clock
- Machine Size
-
2 vCPU / 4 GiB
- Trials
-
60
- Variants
-
Vite 8.3.4 development server on port 5173