Shinhan Securities Vietnam website renewal
Assessment and proposal for rebuilding a legacy PHP site with Next.js — from PageSpeed 19 and a 7.2MB payload to contractual metric guarantees



Context
The Shinhan Securities Vietnam website renewal rebuilds a legacy site scoring 19 on mobile PageSpeed with a 7.2MB payload as a 3-language (VI·KO·EN) Next.js site, with PageSpeed ≥65 and LCP under 2.5s guaranteed as contractual metrics. Shinhan Securities Vietnam operates an official website for Vietnamese investors, supporting 3 languages: VI·KO·EN. It must comply with the financial institution's brand guidelines and guarantee security, performance, and SEO through contractual metrics.
Problem
The existing site's legacy PHP and custom CMS architecture resulted in a 7.2MB payload and a mobile PageSpeed score of just 19. Search and AI search (GEO) visibility and mobile account-opening conversion rates were also unmeasured, making it difficult to assess the current state.
What we did
- Quantified the current state through a gap analysis across 6 axes (IA · i18n · color · typography · layout · UX).
- Redesigned the architecture with Next.js 16 (App Router, SSR+ISR) + Sanity CMS + Cloudflare WAF.
- Guaranteed performance, security, and SEO through contractual metrics (mobile PageSpeed ≥65, LCP <2.5s, CLS <0.10, INP <200ms, OWASP Top 10 Critical/High 0 findings).
- Added a structure for AI search citations using 6 Schema.org types (FinancialService · FinancialProduct · BreadcrumbList · FAQPage · Article+Author, among others).
- First built an HTML demo package of 12 pages so the client could review the screens.
Results
| Metric | Value | Notes |
|---|---|---|
| Current-state assessment | Mobile PageSpeed 19 · payload 7.2MB | Measured |
| Gap analysis | Phase 1 design alignment 40% → 85% | Analysis across 6 axes |
| Demo package | HTML completed for 12 pages | |
| Guaranteed metrics (contract) | PageSpeed ≥65 · LCP <2.5s · OWASP Critical/High 0 | |
| Schedule | 8 weeks, 12 months of free maintenance | |
| Languages | 3 (VI default · KO · EN) |
Timeline · Scale · Stack
- Timeline: Gap analysis in 2026-05 → demo package in 2026-06 → quotation finalized in 2026-07. Main development has not started
- Scale: 12 pages, 3 languages
- Stack: Next.js 16 · TypeScript · TailwindCSS · Sanity CMS · Cloudflare Pro WAF · Schema.org
What this case shows
For a financial institution's website, contracts are based on metrics more than design. We measure the current state before starting and use the same measures again at completion.
Project details
June 27, 2026
2 min read