3 of 6 standards met
Description Since the Next.js 16 update in cb2643e, the blog page of solutions/blog example has been broken during local development. From Next.js 15+, is now a Promise that must be awaited. In the current implementation, is accessed synchronously, which throws a runtime error. Type of Change [ ] New Example [x] Example updates (Bug fixes, new features, etc.) [ ] Other (changes to the codebase, but not to examples)
Summary Improves the api-proxy-rewrite README based on review against Vercel style guidelines and other CDN template READMEs. Fixes demoUrl: Updated to actual deployment URL () useCase: Changed from (invalid) to (valid Contentful enum) Cache purge API: Fixed from to correct Deploy URLs: Added consistent UTM params vs **: Standardized to across all examples Improvements Tighter intro β removed "fictional product site" language Added explanation of why source uses but destination uses in project routes Explicit vs comparison Added resilience note (CDN serves cached responses during API downtime) Removed verbose sections (Prerequisites, Customization, When to use each approach, Next steps) to match style of other CDN template READMEs Trimmed from 205 lines to ~160 lines
Repository: vercel/examples. Description: Enjoy our curated collection of examples and solutions. Use these patterns to build your own robust and scalable applications. Stars: 4970, Forks: 1694. Primary language: TypeScript. Languages: TypeScript (74.4%), JavaScript (11.3%), Python (3.8%), CSS (3.6%), HTML (2.5%). License: MIT. Topics: examples, nextjs, vercel. Latest release: @vercel/examples-ui@2.0.4 (2mo ago). Open PRs: 100, open issues: 120. Last activity: 22h ago. Community health: 62%. Top contributors: lfades, steven-tey, goncy, leerob, dferber90, erikareads, anthonyshew, dominiksipowicz, GuiBibeau, okbel and others.
TypeScript
Last 12 weeks Β· 46 commits
YARONTIII MAIN CHARACTER ERA body { margin:0; font-family: 'Poppins', sans-serif; background: linear-gradient(-45deg, #ff4e91, #ff8fb1, #ffc3a0, #ff4e91); background-size: 400% 400%; animation: gradient 8s ease infinite; color: white; text-align:center; display:flex; justify-content:center; align-items:center; height:100vh; overflow:hidden; } @keyframes gradient { 0% {background-position: 0% 50%;} 50% {background-position: 100% 50%;} 100% {background-position: 0% 50%;} } .container { max-width:700px; padding:20px; animation: fadeIn 2s ease-in-out; } h1 { font-size:3rem; animation: pop 1s ease-in-out infinite alternate; } @keyframes pop { from { transform: scale(1);} to { transform: scale(1.08);} } p { font-size:1.3rem; margin-top:20px; } button { margin-top:25px; padding:15px 30px; font-size:1.1rem; border:none; border-radius:40px; background:white; color:#ff4e91; cursor:pointer; transition:0.3s; } button:hover { transform: scale(1.15) rotate(-2deg); } .hidden { display:none; } .horse { font-size:4rem; margin-top:20px; animation: bounce 1s infinite; } @keyframes bounce { 0%,100% {transform: translateY(0);} 50% {transform: translateY(-15px);} } @keyframes fadeIn { from {opacity:0; transform: translateY(30px);} to {opacity:1; transform: translateY(0);} } HAPPY BIRTHDAY YARONTIII ππ BESTIE. I love you so much and I miss you more than dramatic movie scenes miss background music. I am SO proud of you. And I am the luckiest human alive to have you in my life. UNLOCK CHAOS π GET READY πβ¨ Your main character fun day is loadingβ¦ Full of things you LOVE. Laughing until we canβt breathe. Chaos. Memories. Happiness. π Saddle up queen. This is your era. function chaos() { document.getElementById("secret").classList.remove("hidden"); var duration = 3 * 1000; var end = Date.now() + duration; (function frame() { confetti({ particleCount: 7, angle: 60, spread: 70, origin: { x: 0 } }); confetti({ particleCount: 7, angle: 120, spread: 70, origin: { x: 1 } }); if (Date.now()
Summary Fixes the rewrite destination URL in the api-proxy-rewrite CDN template. Project routes need (regex back-reference) in the destination, not (path-to-regexp named parameter). Problem The destination was sent as a literal string to JSONPlaceholder, which returned (empty object) because is not a valid API endpoint. Fix Changed the destination to in: : Dashboard destination, CLI flag, pre-filled deep link : pre-filled deep link Not changed (correct as-is) : uses helper which handles path-to-regexp compilation internally example: uses modern format with / where is correct
Summary Replaces (merged in #1408) with . The Cal.com booking page had rendering issues when proxied (blank page due to SPA asset loading). The new template proxies a JSON API instead, which works reliably. What changed Renamed -> New page β client component that fetches from : Loading: skeleton card placeholders Error / no route: onboarding UI with setup steps and pre-filled deep link Success: renders blog post cards from JSONPlaceholder data API proxy instead of HTML proxy β rewrites to Uses to avoid conflicting with Next.js API routes Shorter cache TTL (1 min fresh, 1 hr stale) appropriate for API data Updated with / helpers per the vercel.ts docs Why the change External services (Cal.com, Substack, Statuspage, Linktree, etc.) don't proxy cleanly behind CDN rewrites due to root-relative links, CSP headers, or SPA asset loading. JSON API proxying avoids all these issues and is a very common real-world use case (frontend on Vercel, backend API elsewhere). What it showcases Project-level routing β template ships without , guides users to set up via Dashboard or CLI Pre-filled route creation β "Add Route" deep link using pattern CDN-Cache-Control β CDN-only caching for API responses Vercel-Cache-Tag β granular cache purging β code-based alternative with helpers TODO before merging [ ] Deploy and set up the project route to verify the blog page works [ ] Update in README with actual deployment URL [ ] Verify the deep link pre-fill works end-to-end Files