<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://ethanpier.com/en</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://ethanpier.com/en/blog</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/blog" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/blog" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/blog" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://ethanpier.com/en/about</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/about" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/about" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/about" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ethanpier.com/en/portfolio</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/portfolio" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/portfolio" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/portfolio" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://ethanpier.com/en/lab</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/lab" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/lab" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/lab" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ethanpier.com/zh</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://ethanpier.com/zh/blog</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/blog" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/blog" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/blog" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://ethanpier.com/zh/about</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/about" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/about" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/about" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ethanpier.com/zh/portfolio</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/portfolio" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/portfolio" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/portfolio" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://ethanpier.com/zh/lab</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/lab" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/lab" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/lab" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ethanpier.com/en/blog/building-modern-ai-interfaces</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/blog/building-modern-ai-interfaces" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/blog/building-modern-ai-interfaces" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/blog/building-modern-ai-interfaces" />
<lastmod>2026-07-30T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ethanpier.com/en/blog/frontend-performance-optimization</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/blog/frontend-performance-optimization" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/blog/frontend-performance-optimization" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/blog/frontend-performance-optimization" />
<lastmod>2026-07-31T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ethanpier.com/en/blog/nextjs-ssg-cold-start</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/blog/nextjs-ssg-cold-start" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/blog/nextjs-ssg-cold-start" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/blog/nextjs-ssg-cold-start" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ethanpier.com/en/blog/state-management-in-the-rsc-era</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/blog/state-management-in-the-rsc-era" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/blog/state-management-in-the-rsc-era" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/blog/state-management-in-the-rsc-era" />
<lastmod>2026-07-29T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ethanpier.com/en/blog/view-transitions-snapshot-timing</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/blog/view-transitions-snapshot-timing" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/blog/view-transitions-snapshot-timing" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/blog/view-transitions-snapshot-timing" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ethanpier.com/zh/blog/building-modern-ai-interfaces</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/blog/building-modern-ai-interfaces" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/blog/building-modern-ai-interfaces" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/blog/building-modern-ai-interfaces" />
<lastmod>2026-07-30T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ethanpier.com/zh/blog/frontend-performance-optimization</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/blog/frontend-performance-optimization" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/blog/frontend-performance-optimization" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/blog/frontend-performance-optimization" />
<lastmod>2026-07-31T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ethanpier.com/zh/blog/nextjs-ssg-cold-start</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/blog/nextjs-ssg-cold-start" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/blog/nextjs-ssg-cold-start" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/blog/nextjs-ssg-cold-start" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ethanpier.com/zh/blog/state-management-in-the-rsc-era</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/blog/state-management-in-the-rsc-era" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/blog/state-management-in-the-rsc-era" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/blog/state-management-in-the-rsc-era" />
<lastmod>2026-07-29T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ethanpier.com/zh/blog/view-transitions-snapshot-timing</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ethanpier.com/en/blog/view-transitions-snapshot-timing" />
<xhtml:link rel="alternate" hreflang="zh" href="https://ethanpier.com/zh/blog/view-transitions-snapshot-timing" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ethanpier.com/en/blog/view-transitions-snapshot-timing" />
<lastmod>2026-08-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
