production · 27 minute study
Measure the experience and prove the offline boundary
Saving progress locally does not guarantee lessons work offline. Similarly, a fast development machine does not establish a performance budget for a learner's phone.
Useful preparation · 2 prerequisites
Use this as a map, not a lock. If these ideas are familiar, continue.
- Deploy the artifact you actually verified — A green development screen is not a deployed product. A release connects a known source revision to a tested artifact and an observable destination.
- A cache key is a claim that two answers are interchangeable — Caching the wrong scope can serve stale or foreign-user data quickly. Correct caching begins with the meaning and authority of the cached answer.
First, build a mental model
Offline support is a contract about which required resources are available without a network. Observability is evidence that helps explain actual behavior within a defined environment.
- localStorage can retain small local state, but it does not cache HTML, JavaScript or media. A manifest describes installation metadata; it does not independently implement an offline application.
- A service worker can intercept requests and manage caches within its scope. Its installation, activation and update lifecycle must be designed; secure contexts are required, with local development exceptions.
- Test both a previously visited route and a cold route after disconnecting. A lazily loaded runtime that was never cached can fail offline even when the home page works.
- Measure load duration, interaction latency, frame time, errors and resource failures with a known device/network scenario. Collect the minimum useful diagnostics and avoid leaking personal data, tokens or private payloads.
export async function measureLoad(load) {
const started = performance.now();
try {
const value = await load();
return { ok: true, durationMs: performance.now() - started, value };
} catch {
return { ok: false, durationMs: performance.now() - started };
}
}
// Does not log the loaded value or private error details.- Scenario
Name the route, device, connection and cache state before measuring.
- Observation
The wrapper records real elapsed time and whether the operation resolved. It does not assume a rejected operation succeeded.
- Boundary
A single timing is not a Core Web Vitals assessment, offline guarantee or diagnosis of every cause.
Production thinking
Take this beyond the example.
Keep core learning lightweight and load heavy runtimes only when needed. Provide useful failure/retry states and tested backup/restore for local progress. Document offline coverage honestly instead of equating local storage with a PWA.
Sources and further reading
Your evidence
unseen is a local learning signal, not a credential or proof of production competence.
Explain the mental model, then explicitly acknowledge it. Opening a page is not evidence.
Supported retries can complete this lesson. Independent evidence and delayed review determine the skill stage.