Baseline: Unleashed Potential Life Coaching (before migration)

Snapshot: commit 85ff22c (2022-03-29, “removed caching for pages”), the last commit on Prismic before the Contentful migration began (898cbc7, 2022-06-10) Live site at the time: https://www.unleashedpotentiallifecoaching.com/ Recorded: 2026-10-09

The Wayback Machine’s earliest capture of the domain is 2021-12-28, so it has no record of anything older than this Next.js + Prismic version. This is the “old site” for the comparison in MIGRATION-RESULTS.md.

Stack

LayerTech
FrameworkNext.js 12 ("next": "latest" in package.json, so the version was not pinned)
UIReact 17, TypeScript 4.5.4, Tailwind 3, styled-components 5, Framer Motion 6
CMSPrismic (prismic-javascript), queried over its GraphQL API at request time
EmailSendGrid through /api/send-email
VideoYouTube Data API, key in NEXT_PUBLIC_YT_API_KEY (shipped to the browser)
HostingVercel

Checks

CheckResult
Setup steps in the READMENone
Node version specifiedNone (no engines field)
Environment variables the code reads7: PRISMIC_REPOSITORY_NAME, PRISMIC_API_TOKEN, PRISMIC_REPOSITORY_LOCALE, SENDGRID_API_KEY, TO_EMAIL_ADDRESS, NEXT_PUBLIC_YT_API_KEY, NEXT_PUBLIC_CHANNEL_ID. None of them are documented
Dependencies in package.json13 runtime, 13 dev. 387 entries in yarn.lock
Source size67 files, 2,987 lines (pages, components, utils, contexts, hooks, layouts, types)
Routes10: /, /our-story, /services, /coach/[slug], /podcast, /reviews, /disclaimer, /sitemap.xml, /api/send-email, /404
Rendering7 of 10 routes server-rendered on every request (getServerSideProps). Only /404 and /disclaimer were static
Production cache headerscache-control: private, no-cache, no-store, max-age=0, must-revalidate and x-vercel-cache: MISS on all 5 Wayback captures from 2022-05 to 2022-10, so every visit ran the page function and a Prismic request
next buildPasses on Node 22 with NODE_OPTIONS=--openssl-legacy-provider (webpack 4-era hashing). 7.7 s
First Load JS (from the build output)86.9 kB shared. Home 149 kB, /services 149 kB, /coach/[slug] 149 kB, /our-story 144 kB, /podcast 121 kB, /reviews 121 kB
Runs as committed todayNo. Every CMS-backed page returns 500. The GraphQL query is put into the URL without encoding (?query=${query}), and Prismic now rejects that with 400. When that one request fails, the whole page fails
yarn audit (today, runtime deps)37 vulnerabilities in 129 packages: 5 critical (next ×2, @babel/traverse, loader-utils, minimist), 12 high, 18 moderate, 2 low. All deps: 142 (8 critical)
TestsNone

Measured

To measure the old site, I built 85ff22c in a scratch worktree and pointed it at the original Prismic repository, which is still publicly readable. It needed two local-only patches in utils/api.js: URL-encoding the query, and leaving out the Authorization header when no token is set. Nothing was committed. The framework and main chunk hashes from this build match the 2022-05-18 Wayback capture of production. The _app chunk differs.

Lighthouse (home page)

Lighthouse 12.8.2, mobile, simulated throttling, headless Chrome in incognito, 3 runs against next start on localhost. Medians.

CategoryScore
Performance73
Accessibility96
Best Practices100
SEO100
MetricValue
FCP2.8 s
LCP4.8 s
Speed Index5.4 s
TBT0 ms
CLS0 (one run measured 0.118)
Total transfer578 KiB, 28 requests
JavaScript transferred159 KiB
LCP elementHero banner (CSS background). Prismic’s image CDN served it as a 301 KiB AVIF (auto=compress,format)
Root document290–340 ms (the page waits for Prismic before it can respond)

Server response time

20 requests per page against next start on localhost, time to first byte:

PageMedianp90
/92 ms99 ms
/services89 ms102 ms
/reviews61 ms76 ms
/podcast59 ms63 ms
/coach/jessica-rebelo58 ms63 ms

This is a best case: a warm local server and a fast connection to Prismic. Production on Vercel added serverless cold starts on top, and the cache headers above meant no request could be answered from the CDN.

Notes

  • The Prismic content measured is the repository’s current master ref (last published 2022-10). It may differ slightly from what was live in March 2022.
  • I also ran Lighthouse on the 2022-05-18 Wayback capture (if_ mode, no toolbar). The 2022 capture was steady (11.8–12.2 s LCP), but a 2026 capture of the current site ranged from 2.8 to 21.1 s across 3 runs, depending on how quickly the archive served the banner. Timings served through the archive measure the archive, so they are not used.
  • Evidence: git show 85ff22c:package.json, curl -sI "https://web.archive.org/web/20220518224710id_/https://www.unleashedpotentiallifecoaching.com/" (archived headers appear as x-archive-orig-*), and the build output and Lighthouse JSON from the scratch worktree (not committed).