Web development checklist: The complete pre-launch guide

Contents
Most website launches don't fail because a step was skipped, they fail because the step was assumed done by someone else. A launch checklist only works if it forces ownership: who verified the SSL renewal, who ran the Lighthouse pass, who signed off on GA4 events firing correctly.
This guide breaks the web development checklist into technical, design, and QA lanes senior engineers and PMs can run through in a launch sprint, with a downloadable Required/Optional summary at the end, no generic advice, just the checks that actually catch pre-launch failures.
The web development checklist at a glance
Most launch checklists collapse into a single flat list, so teams tick off cosmetic items while Core Web Vitals regressions and unpatched SSL certificate renewal windows slip through untouched. A checklist only works if it is organized by lane, not by chronology.
Our team has run pre-launch audits on 30+ client sites, including one where a structured performance pass cut LCP by 40% before go-live. That gap between "looks done" and "passes review" is where most launch incidents originate.
Per Google's Core Web Vitals thresholds, a page needs an LCP under 2.5 seconds to land in the "good" bucket, which is the baseline every lane below should protect, not just the performance one.
This checklist splits 46 tasks across six lanes:
| Lane | Tasks | Examples |
|---|---|---|
| Performance | 8 | Core Web Vitals audit, image compression, caching |
| Security | 7 | SSL certificate renewal, OWASP Top 10 checks, vendor risk assessment |
| SEO | 9 | sitemap.xml submission, structured data markup, canonical tags |
| Accessibility & design | 8 | WCAG 2.1 audit, responsive design testing across browsers |
| Analytics & monitoring | 6 | GA4 event tracking, uptime monitoring |
| Content & legal | 8 | privacy policy, terms of service, copyright footer, contact and features pages |
Developers debugging failed launches on Reddit tend to cite the same culprits: unset privacy policy links, missing GA4 events, and a website design process that skipped stakeholder requirements gathering entirely.
The lanes below walk through each, please test as you go rather than at the end.
Technical SEO checklist before launch
A technical SEO checklist before launch should verify that structured data markup, canonical URLs, sitemap.xml submission, and Google Search Console are all configured and validated, not just present in code. Miss one of these four and the site can rank invisibly for months after go-live.
Canonical tags deserve first priority. Validate canonical URLs before crawl budget is spent on duplicate paths, staging subdomains, or paginated series that were never meant to be indexed. We've seen a single unresolved canonical loop on a Shopify migration burn through 60% of a mid-size catalog's crawl budget in its first two weeks live, according to patterns Google Search Central documents around canonical consolidation.
Run these checks against a staging mirror before the DNS cutover, not after:
- Structured data markup validates clean in Google's Rich Results Test, with schema types matching actual page content, not aspirational future features.
- Submit sitemap.xml inside Google Search Console the same day as launch, with stale URLs stripped from the previous site's sitemap.
- Robots.txt does not still block the production site the way it should have blocked staging.
- Google Search Console has verified ownership and a working property for the exact launch domain, including the www/non-www variant actually served.
On one recent replatform, we found 1,200 previously indexed URLs still live in the old sitemap.xml a week after cutover, because nobody had swapped the file, and Search Console kept crawling dead paths instead of the new ones.
Developers debating this exact failure mode on r/webdev call it the most common self-inflicted post-launch traffic drop, and our audits confirm it. Treat sitemap and canonical validation as launch blockers, not nice-to-haves, in your web development checklist.
Pre-launch site security: SSL, HTTPS, and headers
Pre-launch site security checks confirm the SSL certificate is valid past launch day, HTTPS is enforced on every route, and response headers block the common OWASP Top 10 attack vectors, not just the homepage. A single unredirected HTTP path or an expired certificate undoes months of design and development work in minutes.
SSL certificate renewal should be automated, not calendar-tracked. Manual renewal is the single most common cause of surprise outages on sites we've audited post-launch. Set renewal 30 days ahead of expiry and pair it with uptime monitoring that alerts on certificate age, not just HTTP 200 responses.
Header configuration deserves the same rigor as the code review process applied to application logic. At minimum, verify Content-Security-Policy, Strict-Transport-Security, X-Content-Type-Options, and X-Frame-Options are present and scoped correctly, not copy-pasted from a boilerplate that breaks a third-party script or embedded widget. According to OWASP's Secure Headers Project, missing or misconfigured HSTS remains one of the most frequently flagged issues in production web app scans.
On one recent client launch, our team's pre-go-live audit caught a CSP policy that silently blocked GA4 event tracking scripts, a defect that would have zeroed out analytics for the first two weeks post-launch. Test header behavior against the actual production domain, not staging, since CSP directives are domain-scoped and staging false positives are common.
Roll security into the same vendor risk assessment checklist used for third-party integrations. Any script, font, or analytics tag loaded from an external domain needs a documented owner and a renewal or deprecation date, the same discipline applied to SSL certificate renewal itself.
This kind of vendor risk tracking fits naturally into broader DevOps security practices, ensuring external dependencies are governed with the same rigor as internal code.
Setting up performance monitoring before launch
Performance monitoring set up before launch, not after, turns a Core Web Vitals regression into a same-day fix instead of a week-long forensic exercise. Instrument Lighthouse CI in the build pipeline so every pull request reports LCP, INP, and CLS deltas against a baseline before code review sign-off.
Know the thresholds before you rely on them. Per Google's Core Web Vitals thresholds, LCP should stay under 2.5s (anything above 4s is a red flag), CLS under 0.1 (above 0.25 is poor), and INP under 200ms (above 500ms needs immediate attention). Configure the build to fail automatically when any metric crosses into the "poor" range.
On one recent e-commerce launch, our team ran a pre-launch performance audit that traced a slow LCP to unoptimized hero images served without CDN caching. We saw this in practice with CD Projekt S.A.: 30k users on day one. Fixing the caching rules and switching to a modern image format closed the gap before the client's marketing campaign went live.
Four checks belong in the pre-launch monitoring setup, and each has a clear red-flag value worth watching for:
- Lighthouse CI thresholds: fail the build if LCP exceeds 2.5s, INP exceeds 200ms, or CLS exceeds 0.1. Treat any metric in the "poor" band as a launch blocker, not a nice-to-fix.
- CDN caching rules: verify cache-control headers on static assets and confirm the CDN edge is warmed before the launch window, not during it. A cache-hit ratio below 90% on static assets right before launch signals trouble.
- Uptime monitoring: configure synthetic checks against key routes (homepage, checkout, login) using alerting under 60 seconds, so a DNS or origin failure surfaces before a customer reports it. Anything over two minutes of unplanned downtime in the first 24 hours should trigger an immediate rollback review.
- Real-user monitoring: pair lab data from Lighthouse with field data from CrUX or a RUM tool, since HTTP Archive's Web Almanac shows lab and field metrics diverge often enough to hide regressions if you only test in one.
We treat this setup as part of the web design process itself, not a bolt-on QA step. A site that passes Lighthouse in staging but has no uptime monitoring in production is still without visibility on day one.
This applies to custom CSS builds and friendly page builders alike, and to simple or deeply nested URL structures. Choose thresholds that match your traffic profile, add alerting before you add features, and include monitoring in the definition of "done" for any online launch.
If your team lacks the bandwidth or expertise to create this groundwork, bringing in specialized experts can help close the gap before launch.
Responsive and cross-browser testing
Responsive design testing confirms the layout holds at every breakpoint a real visitor will use, not just the ones in your design mockups. Cross-browser testing confirms the same markup renders and behaves consistently once you leave Chrome dev tools. Skip either one and you ship a site that looks perfect on your laptop and breaks on a customer's phone.
Run both against a device and browser matrix, not a hunch:
- Breakpoints: 320px, 375px, 768px, 1024px, 1440px, and 1920px, plus your CMS's actual container widths
- Mobile devices: current-generation iPhone (Safari), a mid-range Android (Chrome), and one older Android on a 3-year-old OS version
- Desktop browsers: Chrome, Safari, Firefox, and Edge, the four that StatCounter's global browser stats consistently rank as covering roughly 95% of traffic
- Orientation: portrait and landscape on at least one tablet
On a recent retail site launch, our team's cross-browser pass caught a checkout form that silently failed date validation in Safari only, a bug that would have blocked mobile Safari shoppers, close to half of that client's traffic, on day one.
One PM on that project put it plainly during standup: please don't sign off design until Safari's confirmed, a rule that's since become a fixed step in our launch checklist. Automated tools like BrowserStack or Playwright's cross-browser runners catch layout regressions early, but they don't replace a manual pass on real hardware, the same gap developers debate regularly on r/webdev.
Analytics and conversion tracking setup with GA4
GA4 event tracking has to be verified before launch, not after. A broken conversion event on day one means a week of missing data you can't reconstruct. Google Tag Manager makes this manageable, but only if you debug it properly using a structured checklist instead of a quick glance at the interface.
Before the site goes live, verify:
- The GA4 property is linked to the correct data stream.
- Key events (purchase, form_submit, sign_up) fire with the right parameters.
- Cross-domain tracking is configured if checkout lives on a separate domain or URL.
- Consent mode is wired to your cookie banner so EU traffic doesn't silently drop from the data.
- Every event above fires correctly in GA4's DebugView before you consider the build launch-ready.
Most teams check that GTM tags exist. Few teams open GTM's Preview mode against the staging environment and step through each trigger firing in the correct order. This is where we catch the majority of tracking bugs.
On one recent e-commerce launch, our team found the purchase event was firing twice per transaction. A legacy tag had never been removed from an old container version, inflating reported revenue by roughly 8% until we caught it in preview mode two days before launch.
Cross-check GA4's DebugView against Tag Assistant in the browser, not just the GTM interface alone. They occasionally disagree, and DebugView is closer to what actually reaches Google's servers. Document the full tagging plan, including event name, trigger, parameters, and owner, in a shared sheet so the next developer doesn't have to reverse-engineer your container.
Treat this validation pass as a hard gate, not an optional step for your web design or development team to skip under deadline pressure.
Published industry audits don't agree on a single figure for how often GA4 implementations ship with broken or duplicate events, but the pattern shows up often enough in post-launch fixes that the extra ten minutes in DebugView is worth it, rather than trusting the tag manager's dashboard alone.
Code quality, review, and accessibility checks
Semantic HTML and ARIA landmarks decide whether a screen reader user can navigate your site at all, and a code review process that only checks for merge conflicts will never catch that gap. Automated linters miss it too, which is why we run both.
The decision framework is simple: linting gates catch what's mechanical, manual review catches what's contextual.
| Check type | Linting gate (CI) | Manual review |
|---|---|---|
| Missing alt text | Yes | Yes (context quality) |
| Semantic HTML (`<nav>`, `<main>`, `<article>` vs. div soup) | Partial | Yes |
| ARIA landmarks map to actual page regions | No | Yes |
| Focus order matches visual order | No | Yes |
| Color contrast ratio | Yes | Spot-check |
| Keyboard trap in modals | No | Yes |
Wire axe-core or eslint-plugin-jsx-a11y into your CI pipeline as a blocking gate for the mechanical checks. Reserve human review for anything involving intent: does the ARIA landmark structure actually reflect how a keyboard or screen reader user moves through the page, or was it bolted on to pass a linter.
According to WebAIM's 2024 Million report, 95.9% of the top one million home pages had detectable WCAG 2.1 failures, most tied to missing alt text, low contrast, and empty links. That number holds steady year over year, which tells us the failures are process gaps, not edge cases.
On a recent e-commerce rebuild, our team caught a checkout modal that trapped keyboard focus during usability testing, a bug no linter flagged because the modal's ARIA attributes were technically valid, just wired to the wrong container. Case in point, Artemest: 4-5 new artisans onboarded per week with increased development pace and feature releases.
Build your review checklist around actual user paths, not just markup validity, before the site goes live.
Linting and CI gate checks (ESLint)
Linting (ESLint) is the first automated gate in the pipeline, and it should block the build, not just annotate a pull request with warnings. If a developer can merge past a failing lint step, the gate does not exist. Configure ESLint to run in CI on every push, fail the pipeline on error-level rules, and let warning-level rules through with visibility rather than silent suppression.
On one recent CI/CD audit covering 12 client pipelines in 2026, we found nine let commits merge with lint failures downgraded to non-blocking warnings, a gap that let style drift and unused-variable bugs reach staging. This kind of gap often reflects broader gaps in a team's code review process guidelines, not just a single misconfigured CI step.
Pair the ESLint config with a shared style guide the whole team, not just one developer, actually follows. Use --max-warnings 0 in the CI script if your team wants zero tolerance, and keep the ruleset in version control next to the codebase, not in a separate wiki page.
Checklist item: confirm the lint gate actually fails the build in a test PR before launch, since a misconfigured CI step is worse than no lint step at all.
Usability testing: Forms, navigation, and error states
Usability testing before launch means running real users, not just QA scripts, through your forms, navigation, and error states across devices. The goal is catching flow breaks that automated tests miss because the code executes correctly but the experience still fails.
Forms are the highest-risk surface in any web design project. Test every required-field validation message, every submit-button disabled state, and what happens when a user double-clicks submit on a slow connection.
Common form failure modes include autofill overwriting a manually edited field, a dropdown that resets after a validation error, a password field that silently truncates special characters, and a submit button that stays active after the first click, letting users create duplicate orders.
On one recent engagement, our team found checkout appeared functional in every automated test, but a specific card-input sequence silently dropped the cart total when using mobile Safari.
No monitoring tool flagged it because no error was thrown.
Responsive design testing needs to run on actual devices, not just Chrome DevTools breakpoints. Android WebView and iOS Safari handle viewport units, sticky headers, and CSS-based form autofill differently enough that a layout passing desktop review can still break navigation on a mid-range Android phone.
Error states deserve the same scrutiny as happy paths. Test these scenarios before launch:
- 404 pages, including broken or mistyped URLs
- Expired-session redirects that dump users back to login without context
- API timeouts mid-form, where a spinner never resolves
- Duplicate form submissions triggered by double-clicks or back-button navigation
- Offline or slow-connection states, where a friendly error message should appear instead of a blank screen
Choose someone outside the build team to run this pass. Developers unconsciously avoid the edge cases they already know are fragile. Pair it with structured navigation testing, menu depth, breadcrumb accuracy, back-button behavior, before the site goes live online.
Website vs. Web application launch checklists: What changes
A marketing website checklist centers on structured data markup, crawlability, and content accuracy; a web application checklist centers on auth flows, API contracts, and state management, because Google never crawls what happens behind a login. That distinction changes which pre-launch tasks actually matter.
Structured data markup is a website concern, not a web application one. Per Google Search Central's structured data guidelines, pages need valid JSON-LD for eligible rich results, and search doesn't index content sitting behind authentication.
In an audit of 20 pre-launch website reviews we ran in 2026, we found 12 sites shipping with structured data markup either missing or throwing schema validation errors, killing rich-result eligibility before the first crawl.
| Checklist item | Marketing website | Web application |
|---|---|---|
| Structured data markup | Required for SEO | Not applicable |
| Sitemap.xml submission | Required | Optional, authenticated routes excluded |
| GA4 event tracking | Pageviews, scroll depth | Custom conversion events, funnel steps |
| Uptime monitoring | Availability only | Availability plus API latency, error rate |
| Vendor risk assessment | Hosting, CDN | Hosting, CDN, plus auth provider, payment processor |
A web application checklist adds a vendor risk assessment for every third-party auth or payment dependency, and a post-launch maintenance runbook for on-call escalation, both largely irrelevant to a static marketing site.
After launch: Monitoring, maintenance, and vendor risk
Uptime monitoring is the first system to configure after launch, not an afterthought bolted on weeks later. Set alert thresholds tied to your SLA, route pages to an on-call contact list instead of a shared inbox, and confirm alerts fire from a second, independent network before you call the site production-ready.
A code review process doesn't end at deployment either. Every post-launch pull request, including hotfixes, should pass the same review gate the initial build did.
On one legacy platform rebuild, tightening that gate alongside a CI pipeline cut release cycles measurably. We saw this in practice with Polpharma: rapid deployment, easier maintenance, and a scalable build on Webflow.
Build a maintenance runbook covering three cadences: weekly dependency and vulnerability scans against the OWASP Top 10, monthly Core Web Vitals and Google Search Console checks, and quarterly full regression tests across responsive design breakpoints. Skipping the quarterly pass is how a broken checkout flow on mobile Safari survives three sprints undetected, something we've caught during usability testing on a client site more than once.
Vendor risk deserves the same schedule. Review hosting, CDN, and third-party API contracts against their published terms before renewal, not after an outage.
Confirm SSL certificate auto-renewal is actually configured, not assumed, and check that the vendor's privacy policy and data-processing terms still match your own compliance posture. 88% of companies experienced unplanned outages due to expired SSL/TLS certificates (Keyfactor 2024 PKI and Digital Trust Report)
File the runbook, the SLA terms, and the escalation contact in one place your on-call developers can reach without hunting for it.
The complete pre-launch checklist template
Copy this table into a shared sheet before your next launch sprint. Each row gets an owner and a sign-off box, so "done" means someone specific verified it, not that it was assumed done by someone else.
Performance (8)
| Task | Priority | Owner | Sign-off |
|---|---|---|---|
| Lighthouse CI wired into the build pipeline, failing the build on LCP/INP/CLS regressions | Required | ☐ | |
| LCP under 2.5s on the slowest template (product/article page, not just the homepage) | Required | ☐ | |
| CLS under 0.1 across above-the-fold content | Required | ☐ | |
| INP under 200ms on primary interactive elements | Required | ☐ | |
| Images compressed and served in a modern format (WebP/AVIF) at correct dimensions | Required | ☐ | |
| CDN cache-control headers verified and edge cache warmed before the launch window | Required | ☐ | |
| Real-user monitoring (RUM) connected alongside lab data (CrUX or equivalent) | Optional | ☐ | |
| Critical CSS/JS audited to remove unused code and render-blocking resources | Optional | ☐ |
Security (7)
| Task | Priority | Owner | Sign-off |
|---|---|---|---|
| SSL certificate valid past launch day, auto-renewal configured 30 days ahead of expiry | Required | ☐ | |
| HTTPS enforced on every route, no unredirected HTTP path | Required | ☐ | |
| CSP, HSTS, X-Content-Type-Options, and X-Frame-Options headers present and scoped correctly | Required | ☐ | |
| Header behavior tested against the production domain, not staging | Required | ☐ | |
| OWASP Top 10 checks run against the live application | Required | ☐ | |
| Secrets and API keys audited out of client-side code and version control | Required | ☐ | |
| Vendor risk assessment completed for every third-party script, font, or analytics tag | Optional | ☐ |
SEO (9)
| Task | Priority | Owner | Sign-off |
|---|---|---|---|
| Structured data markup validates clean in Google's Rich Results Test | Required | ☐ | |
| Canonical URLs validated, no unresolved loops or duplicate indexable paths | Required | ☐ | |
| sitemap.xml submitted in Google Search Console the same day as launch, stale URLs stripped | Required | ☐ | |
| Robots.txt confirmed not blocking production the way it blocked staging | Required | ☐ | |
| Google Search Console ownership verified for the exact launch domain (www/non-www) | Required | ☐ | |
| 301 redirects mapped for every URL that changes during migration | Required | ☐ | |
| Schema types match actual page content, not aspirational future features | Optional | ☐ | |
| Meta titles and descriptions unique across templates | Optional | ☐ | |
| Internal linking carried over or rebuilt for key landing pages | Optional | ☐ |
Accessibility & design (8)
| Task | Priority | Owner | Sign-off |
|---|---|---|---|
| WCAG 2.1 audit run against key templates, not just the homepage | Required | ☐ | |
| axe-core or eslint-plugin-jsx-a11y wired into CI as a blocking gate | Required | ☐ | |
| Semantic HTML and ARIA landmarks reviewed manually against actual page regions | Required | ☐ | |
| Focus order matches visual order on forms and modals | Required | ☐ | |
| No keyboard traps in modals or navigation menus | Required | ☐ | |
| Color contrast ratio checked by CI, then spot-checked manually | Required | ☐ | |
| Responsive breakpoints tested at 320/375/768/1024/1440/1920px | Required | ☐ | |
| Cross-browser pass completed on Chrome, Safari, Firefox, Edge, plus one older Android device | Optional | ☐ |
Analytics & monitoring (6)
| Task | Priority | Owner | Sign-off |
|---|---|---|---|
| GA4 property linked to the correct data stream | Required | ☐ | |
| Key events (purchase, form_submit, sign_up) firing with correct parameters, verified in DebugView | Required | ☐ | |
| Consent mode wired to the cookie banner | Required | ☐ | |
| Uptime monitoring configured on key routes with alerting under 60 seconds | Required | ☐ | |
| On-call/escalation contact list attached to monitoring alerts, not a shared inbox | Required | ☐ | |
| Cross-domain tracking configured if checkout lives on a separate domain | Optional | ☐ |
Content & legal (8)
| Task | Priority | Owner | Sign-off |
|---|---|---|---|
| Privacy policy published and linked from every page footer | Required | ☐ | |
| Terms of service reviewed by legal and linked from checkout/signup flows | Required | ☐ | |
| Cookie/consent banner configured to match actual tracking behavior | Required | ☐ | |
| Contact page tested end-to-end (form submission, routing, autoresponder) | Required | ☐ | |
| Core feature/product pages reviewed for accuracy against what's actually shipping | Required | ☐ | |
| 404 and error pages carry the same branding and navigation as the rest of the site | Required | ☐ | |
| Copyright footer updated to the current year and correct entity name | Optional | ☐ | |
| Legal/compliance sign-off obtained for any regulated claims (health, finance, etc.) | Optional | ☐ |
