Team Meeting: Jul 21, 2026

2026-07-21 · Ben · digest

Week of Jul 14 → Jul 20. Receipts, not lessons. The headline is a full framework upgrade; the rest is money-path hardening + SEO recovery. Every item cites the commit/tag it shipped under.

Headline

We upgraded the entire build stack — Astro 5 → 7 and Tailwind 3 → 4 — and it's live on prod (prod-2026-07-18-001) with zero regressions. This was the big one and it took the time it did because we did it right: staging-first, measured pixel-parity, and 3 latent-bug fixes caught before any user hit them. Alongside it: the domain-broker lead form got real abuse protection, a broken Hide.me affiliate link got fixed, and ~1,600 orphaned translated URLs are being recovered from 404s.


🚀 MAIN ITEM — Astro 7 + Tailwind 4 migration

WHAT

Upgraded the whole front-end toolchain in one controlled run:

WHY

Positive impact moving forward

Technical honesty for the room: the "why did this take a while" is the validation rigor, not thrashing. TW4's Preflight changed several defaults out from under us (border-color → currentColor, the @layer cascade order, button{cursor:pointer} dropped). Each is a silent, site-wide regression invisible to the build — only a rendered diff + a11y audit catches them. We found and fixed all three (border-color compat, cascade order, cursor) before promote. That's the work.

(Commits 297c78ad33b1fc48; deploy prod-2026-07-18-001. Full log: ops/astro-7-tailwind-4-migration.md.)


Shipped (rest of the week)

Provider review pages — redesigned

Domain-broker V2 lead form — launched

Domain-broker hero A/B — system hardened + live

Affiliate money-path fix

Conversion tracking + lead-capture reliability

SEO / redirects (askbowtie audit + GSC 404 recovery)


Open items / decisions needed

1. Add 5 new languages — Hebrew, Russian, Thai, Norwegian, Polish. Infrastructure is ready (scripts + preflight gate). The rollout is a multi-hour bulk-translation job (1,483 pages × 5 langs, Claude API spend) — needs a green-light to run. (Carried from the Jul 14 meeting; unchanged.)

2. English legacy-404 subset. Correcting the record: not all old English 404s are "correctly dead." A real 301-worthy subset is unhandled (/vpn/xbox/, device/router/*, gaming-vpn/* → their current /vpn/best-vpn-for-* equivalents). Worth a follow-up run — harder than the translated set (no deterministic slug-map; needs pattern-matching). Decision: prioritize it or not?

3. Redirect-worker hardening (kv.js). The worker's own single-add path (upsertRedirect) re-breaks index density on the next admin-side redirect add. Low-effort guard, worth scheduling before the next manual redirect edit.

4. Migration certainty window. 2 days of clean data (speed ↑, conversions flat, no new errors) — but a true engagement/SEO read needs 7–14 days + GSC Crawl-Stats / Core-Web-Vitals. Can auto-pull at the 1-week mark.

Metrics snapshot (7-day, bowtie)

MetricValueRead
Conversions724 @ 11.7%Up wk/wk, 38% above 4-wk avg — but partly the server-side-conversion + A/B changes, not the migration. Rate holding post-migration = no regression.
Speed (post-migration)LCP p50 1.38s · crawler TTFB 249msFaster than the pre-migration baseline. ✅
ErrorsNo new signatures since 7/18Only "critical" is one pre-existing 85-second transient blip. ✅
Money pages/out 64% · /vpn/best-free-vpn 36% · /domain-broker 34%Healthy; translated free-VPN pages converting 44–57%.