<?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>http://localhost:3002/en</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi" />
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog" />
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://localhost:3002/en/series</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series" />
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://localhost:3002/en/roadmap</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/roadmap" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/roadmap" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/roadmap" />
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://localhost:3002/en/roadmap/react</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/roadmap/react" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/roadmap/react" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/roadmap/react" />
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/roadmap/nestjs</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/roadmap/nestjs" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/roadmap/nestjs" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/roadmap/nestjs" />
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/guides</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/guides" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/guides" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/guides" />
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://localhost:3002/en/tools</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools" />
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/tools/cidr-calculator</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/cidr-calculator" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/cidr-calculator" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/cidr-calculator" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/en/tools/jwt-decoder</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/jwt-decoder" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/jwt-decoder" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/jwt-decoder" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/en/tools/base64</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/base64" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/base64" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/base64" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/en/tools/uuid-generator</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/uuid-generator" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/uuid-generator" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/uuid-generator" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/en/tools/cron-parser</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/cron-parser" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/cron-parser" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/cron-parser" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/en/tools/k8s-resources</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/k8s-resources" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/k8s-resources" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/k8s-resources" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/en/tools/yaml-json-formatter</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/yaml-json-formatter" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/yaml-json-formatter" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/yaml-json-formatter" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/en/tools/timestamp-converter</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/timestamp-converter" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/timestamp-converter" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/timestamp-converter" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/en/tools/hash-generator</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/hash-generator" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/hash-generator" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/hash-generator" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/vi</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi" />
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog" />
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://localhost:3002/vi/series</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series" />
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://localhost:3002/vi/roadmap</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/roadmap" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/roadmap" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/roadmap" />
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://localhost:3002/vi/roadmap/react</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/roadmap/react" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/roadmap/react" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/roadmap/react" />
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/roadmap/nestjs</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/roadmap/nestjs" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/roadmap/nestjs" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/roadmap/nestjs" />
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/guides</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/guides" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/guides" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/guides" />
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://localhost:3002/vi/tools</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools" />
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/tools/cidr-calculator</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/cidr-calculator" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/cidr-calculator" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/cidr-calculator" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/vi/tools/jwt-decoder</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/jwt-decoder" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/jwt-decoder" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/jwt-decoder" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/vi/tools/base64</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/base64" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/base64" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/base64" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/vi/tools/uuid-generator</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/uuid-generator" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/uuid-generator" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/uuid-generator" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/vi/tools/cron-parser</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/cron-parser" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/cron-parser" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/cron-parser" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/vi/tools/k8s-resources</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/k8s-resources" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/k8s-resources" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/k8s-resources" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/vi/tools/yaml-json-formatter</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/yaml-json-formatter" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/yaml-json-formatter" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/yaml-json-formatter" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/vi/tools/timestamp-converter</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/timestamp-converter" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/timestamp-converter" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/timestamp-converter" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/vi/tools/hash-generator</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/tools/hash-generator" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/tools/hash-generator" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/tools/hash-generator" />
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3002/en/series/ai-engineering</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series/ai-engineering" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series/ai-engineering" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series/ai-engineering" />
<lastmod>2026-10-24T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/series/nestjs-production</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series/nestjs-production" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series/nestjs-production" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series/nestjs-production" />
<lastmod>2026-09-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/series/web-performance</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series/web-performance" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series/web-performance" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series/web-performance" />
<lastmod>2026-04-26T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/series/modern-css</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series/modern-css" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series/modern-css" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series/modern-css" />
<lastmod>2026-09-21T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/series/frontend-architecture</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series/frontend-architecture" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series/frontend-architecture" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series/frontend-architecture" />
<lastmod>2026-01-17T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/series/engineering-craft</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series/engineering-craft" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series/engineering-craft" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series/engineering-craft" />
<lastmod>2026-02-19T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/series/ai-engineering</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series/ai-engineering" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series/ai-engineering" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series/ai-engineering" />
<lastmod>2026-10-24T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/series/nestjs-production</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series/nestjs-production" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series/nestjs-production" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series/nestjs-production" />
<lastmod>2026-09-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/series/web-performance</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series/web-performance" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series/web-performance" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series/web-performance" />
<lastmod>2026-04-26T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/series/modern-css</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series/modern-css" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series/modern-css" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series/modern-css" />
<lastmod>2026-09-21T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/series/frontend-architecture</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series/frontend-architecture" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series/frontend-architecture" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series/frontend-architecture" />
<lastmod>2026-01-17T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/series/engineering-craft</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/series/engineering-craft" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/series/engineering-craft" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/series/engineering-craft" />
<lastmod>2026-02-19T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/bundle-analysis-and-tree-shaking</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/bundle-analysis-and-tree-shaking" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/bundle-analysis-and-tree-shaking" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/bundle-analysis-and-tree-shaking" />
<lastmod>2026-10-27T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/llm-app-security-prompt-injection</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/llm-app-security-prompt-injection" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/llm-app-security-prompt-injection" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/llm-app-security-prompt-injection" />
<lastmod>2026-10-24T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/micro-frontends-tradeoffs</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/micro-frontends-tradeoffs" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/micro-frontends-tradeoffs" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/micro-frontends-tradeoffs" />
<lastmod>2026-10-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/mcp-server-typescript</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/mcp-server-typescript" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/mcp-server-typescript" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/mcp-server-typescript" />
<lastmod>2026-10-08T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/on-device-ai-in-the-browser</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/on-device-ai-in-the-browser" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/on-device-ai-in-the-browser" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/on-device-ai-in-the-browser" />
<lastmod>2026-09-28T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/modern-css-platform-ui</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/modern-css-platform-ui" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/modern-css-platform-ui" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/modern-css-platform-ui" />
<lastmod>2026-09-21T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/nestjs-auth-passkeys-sessions</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/nestjs-auth-passkeys-sessions" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/nestjs-auth-passkeys-sessions" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/nestjs-auth-passkeys-sessions" />
<lastmod>2026-09-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/llm-cost-and-latency-in-production</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/llm-cost-and-latency-in-production" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/llm-cost-and-latency-in-production" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/llm-cost-and-latency-in-production" />
<lastmod>2026-09-03T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/streaming-ssr-and-suspense</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/streaming-ssr-and-suspense" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/streaming-ssr-and-suspense" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/streaming-ssr-and-suspense" />
<lastmod>2026-08-31T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/nestjs-background-jobs-bullmq</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/nestjs-background-jobs-bullmq" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/nestjs-background-jobs-bullmq" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/nestjs-background-jobs-bullmq" />
<lastmod>2026-08-19T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/ai-assisted-frontend-workflow</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/ai-assisted-frontend-workflow" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/ai-assisted-frontend-workflow" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/ai-assisted-frontend-workflow" />
<lastmod>2026-08-17T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/headless-component-patterns</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/headless-component-patterns" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/headless-component-patterns" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/headless-component-patterns" />
<lastmod>2026-08-03T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/nestjs-request-lifecycle-architecture</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/nestjs-request-lifecycle-architecture" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/nestjs-request-lifecycle-architecture" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/nestjs-request-lifecycle-architecture" />
<lastmod>2026-08-03T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/evaluating-llm-features</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/evaluating-llm-features" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/evaluating-llm-features" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/evaluating-llm-features" />
<lastmod>2026-07-27T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/nextjs-16-cache-components</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/nextjs-16-cache-components" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/nextjs-16-cache-components" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/nextjs-16-cache-components" />
<lastmod>2026-07-17T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/frontend-observability-with-opentelemetry</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/frontend-observability-with-opentelemetry" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/frontend-observability-with-opentelemetry" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/frontend-observability-with-opentelemetry" />
<lastmod>2026-07-09T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/npm-supply-chain-security</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/npm-supply-chain-security" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/npm-supply-chain-security" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/npm-supply-chain-security" />
<lastmod>2026-07-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/llm-tool-calling-and-generative-ui</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/llm-tool-calling-and-generative-ui" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/llm-tool-calling-and-generative-ui" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/llm-tool-calling-and-generative-ui" />
<lastmod>2026-06-29T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/view-transitions-api</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/view-transitions-api" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/view-transitions-api" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/view-transitions-api" />
<lastmod>2026-06-15T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/rag-pipeline-in-practice</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/rag-pipeline-in-practice" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/rag-pipeline-in-practice" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/rag-pipeline-in-practice" />
<lastmod>2026-06-14T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/streaming-ai-chat-ui</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/streaming-ai-chat-ui" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/streaming-ai-chat-ui" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/streaming-ai-chat-ui" />
<lastmod>2026-05-29T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/web-workers-off-main-thread</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/web-workers-off-main-thread" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/web-workers-off-main-thread" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/web-workers-off-main-thread" />
<lastmod>2026-05-18T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/autocomplete-system-design</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/autocomplete-system-design" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/autocomplete-system-design" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/autocomplete-system-design" />
<lastmod>2026-05-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/ux-patterns-for-ai-features</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/ux-patterns-for-ai-features" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/ux-patterns-for-ai-features" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/ux-patterns-for-ai-features" />
<lastmod>2026-05-04T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/core-web-vitals</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/core-web-vitals" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/core-web-vitals" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/core-web-vitals" />
<lastmod>2026-04-26T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/multimodal-input-for-llm-features</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/multimodal-input-for-llm-features" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/multimodal-input-for-llm-features" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/multimodal-input-for-llm-features" />
<lastmod>2026-04-23T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/react-server-components-mental-model</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/react-server-components-mental-model" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/react-server-components-mental-model" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/react-server-components-mental-model" />
<lastmod>2026-04-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/event-loop-and-rendering</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/event-loop-and-rendering" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/event-loop-and-rendering" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/event-loop-and-rendering" />
<lastmod>2026-04-09T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/frontend-security-in-practice</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/frontend-security-in-practice" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/frontend-security-in-practice" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/frontend-security-in-practice" />
<lastmod>2026-03-24T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/url-as-state</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/url-as-state" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/url-as-state" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/url-as-state" />
<lastmod>2026-03-09T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/list-virtualization</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/list-virtualization" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/list-virtualization" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/list-virtualization" />
<lastmod>2026-03-07T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/structured-outputs-for-llm-features</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/structured-outputs-for-llm-features" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/structured-outputs-for-llm-features" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/structured-outputs-for-llm-features" />
<lastmod>2026-03-02T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/react-compiler-in-practice</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/react-compiler-in-practice" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/react-compiler-in-practice" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/react-compiler-in-practice" />
<lastmod>2026-02-26T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/writing-notes-as-an-engineer</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/writing-notes-as-an-engineer" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/writing-notes-as-an-engineer" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/writing-notes-as-an-engineer" />
<lastmod>2026-02-19T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/css-cascade-layers-and-scope</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/css-cascade-layers-and-scope" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/css-cascade-layers-and-scope" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/css-cascade-layers-and-scope" />
<lastmod>2026-02-02T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/design-tokens-and-theming</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/design-tokens-and-theming" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/design-tokens-and-theming" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/design-tokens-and-theming" />
<lastmod>2026-02-02T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/signals-and-fine-grained-reactivity</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/signals-and-fine-grained-reactivity" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/signals-and-fine-grained-reactivity" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/signals-and-fine-grained-reactivity" />
<lastmod>2026-01-19T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/thinking-in-systems-not-screens</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/thinking-in-systems-not-screens" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/thinking-in-systems-not-screens" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/thinking-in-systems-not-screens" />
<lastmod>2026-01-17T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/web-fonts-done-right</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/web-fonts-done-right" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/web-fonts-done-right" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/web-fonts-done-right" />
<lastmod>2025-12-31T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/offline-first-optimistic-ui</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/offline-first-optimistic-ui" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/offline-first-optimistic-ui" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/offline-first-optimistic-ui" />
<lastmod>2025-12-15T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/ci-for-frontend-monorepo</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/ci-for-frontend-monorepo" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/ci-for-frontend-monorepo" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/ci-for-frontend-monorepo" />
<lastmod>2025-11-29T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/estimating-frontend-work</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/estimating-frontend-work" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/estimating-frontend-work" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/estimating-frontend-work" />
<lastmod>2025-11-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/monorepo-lessons-bun-turborepo</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/monorepo-lessons-bun-turborepo" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/monorepo-lessons-bun-turborepo" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/monorepo-lessons-bun-turborepo" />
<lastmod>2025-10-27T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/devtools-debugging-tricks</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/devtools-debugging-tricks" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/devtools-debugging-tricks" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/devtools-debugging-tricks" />
<lastmod>2025-10-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/caching-for-frontend-developers</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/caching-for-frontend-developers" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/caching-for-frontend-developers" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/caching-for-frontend-developers" />
<lastmod>2025-09-24T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/accessible-modal-dialogs</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/accessible-modal-dialogs" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/accessible-modal-dialogs" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/accessible-modal-dialogs" />
<lastmod>2025-09-07T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/frontend-testing-strategy</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/frontend-testing-strategy" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/frontend-testing-strategy" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/frontend-testing-strategy" />
<lastmod>2025-08-22T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/frontend-feature-flags</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/frontend-feature-flags" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/frontend-feature-flags" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/frontend-feature-flags" />
<lastmod>2025-08-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/code-splitting-and-lazy-loading-react</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/code-splitting-and-lazy-loading-react" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/code-splitting-and-lazy-loading-react" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/code-splitting-and-lazy-loading-react" />
<lastmod>2025-07-20T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/mid-to-senior-frontend</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/mid-to-senior-frontend" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/mid-to-senior-frontend" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/mid-to-senior-frontend" />
<lastmod>2025-07-03T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/react-19-forms-and-actions</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/react-19-forms-and-actions" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/react-19-forms-and-actions" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/react-19-forms-and-actions" />
<lastmod>2025-06-17T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/react-rendering-performance</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/react-rendering-performance" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/react-rendering-performance" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/react-rendering-performance" />
<lastmod>2025-05-31T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/container-queries-modern-responsive</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/container-queries-modern-responsive" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/container-queries-modern-responsive" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/container-queries-modern-responsive" />
<lastmod>2025-05-15T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/frontend-error-handling-strategy</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/frontend-error-handling-strategy" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/frontend-error-handling-strategy" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/frontend-error-handling-strategy" />
<lastmod>2025-04-28T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/code-review-giving-and-receiving</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/code-review-giving-and-receiving" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/code-review-giving-and-receiving" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/code-review-giving-and-receiving" />
<lastmod>2025-04-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/image-optimization-end-to-end</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/image-optimization-end-to-end" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/image-optimization-end-to-end" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/image-optimization-end-to-end" />
<lastmod>2025-03-26T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/css-layout-mental-model</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/css-layout-mental-model" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/css-layout-mental-model" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/css-layout-mental-model" />
<lastmod>2025-03-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/state-machines-for-ui</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/state-machines-for-ui" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/state-machines-for-ui" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/state-machines-for-ui" />
<lastmod>2025-02-21T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/typescript-patterns-that-pay-off</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/typescript-patterns-that-pay-off" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/typescript-patterns-that-pay-off" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/typescript-patterns-that-pay-off" />
<lastmod>2025-02-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/why-we-chose-bun</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/why-we-chose-bun" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/why-we-chose-bun" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/why-we-chose-bun" />
<lastmod>2025-01-19T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/en/blog/building-with-shadcn-ui</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/building-with-shadcn-ui" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/building-with-shadcn-ui" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/building-with-shadcn-ui" />
<lastmod>2025-01-03T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/bundle-analysis-and-tree-shaking</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/bundle-analysis-and-tree-shaking" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/bundle-analysis-and-tree-shaking" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/bundle-analysis-and-tree-shaking" />
<lastmod>2026-10-27T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/llm-app-security-prompt-injection</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/llm-app-security-prompt-injection" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/llm-app-security-prompt-injection" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/llm-app-security-prompt-injection" />
<lastmod>2026-10-24T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/micro-frontends-tradeoffs</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/micro-frontends-tradeoffs" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/micro-frontends-tradeoffs" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/micro-frontends-tradeoffs" />
<lastmod>2026-10-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/mcp-server-typescript</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/mcp-server-typescript" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/mcp-server-typescript" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/mcp-server-typescript" />
<lastmod>2026-10-08T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/on-device-ai-in-the-browser</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/on-device-ai-in-the-browser" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/on-device-ai-in-the-browser" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/on-device-ai-in-the-browser" />
<lastmod>2026-09-28T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/modern-css-platform-ui</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/modern-css-platform-ui" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/modern-css-platform-ui" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/modern-css-platform-ui" />
<lastmod>2026-09-21T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/nestjs-auth-passkeys-sessions</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/nestjs-auth-passkeys-sessions" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/nestjs-auth-passkeys-sessions" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/nestjs-auth-passkeys-sessions" />
<lastmod>2026-09-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/llm-cost-and-latency-in-production</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/llm-cost-and-latency-in-production" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/llm-cost-and-latency-in-production" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/llm-cost-and-latency-in-production" />
<lastmod>2026-09-03T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/streaming-ssr-and-suspense</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/streaming-ssr-and-suspense" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/streaming-ssr-and-suspense" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/streaming-ssr-and-suspense" />
<lastmod>2026-08-31T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/nestjs-background-jobs-bullmq</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/nestjs-background-jobs-bullmq" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/nestjs-background-jobs-bullmq" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/nestjs-background-jobs-bullmq" />
<lastmod>2026-08-19T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/ai-assisted-frontend-workflow</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/ai-assisted-frontend-workflow" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/ai-assisted-frontend-workflow" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/ai-assisted-frontend-workflow" />
<lastmod>2026-08-17T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/headless-component-patterns</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/headless-component-patterns" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/headless-component-patterns" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/headless-component-patterns" />
<lastmod>2026-08-03T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/nestjs-request-lifecycle-architecture</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/nestjs-request-lifecycle-architecture" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/nestjs-request-lifecycle-architecture" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/nestjs-request-lifecycle-architecture" />
<lastmod>2026-08-03T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/evaluating-llm-features</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/evaluating-llm-features" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/evaluating-llm-features" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/evaluating-llm-features" />
<lastmod>2026-07-27T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/nextjs-16-cache-components</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/nextjs-16-cache-components" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/nextjs-16-cache-components" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/nextjs-16-cache-components" />
<lastmod>2026-07-17T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/frontend-observability-with-opentelemetry</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/frontend-observability-with-opentelemetry" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/frontend-observability-with-opentelemetry" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/frontend-observability-with-opentelemetry" />
<lastmod>2026-07-09T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/npm-supply-chain-security</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/npm-supply-chain-security" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/npm-supply-chain-security" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/npm-supply-chain-security" />
<lastmod>2026-07-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/llm-tool-calling-and-generative-ui</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/llm-tool-calling-and-generative-ui" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/llm-tool-calling-and-generative-ui" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/llm-tool-calling-and-generative-ui" />
<lastmod>2026-06-29T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/view-transitions-api</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/view-transitions-api" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/view-transitions-api" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/view-transitions-api" />
<lastmod>2026-06-15T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/rag-pipeline-in-practice</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/rag-pipeline-in-practice" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/rag-pipeline-in-practice" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/rag-pipeline-in-practice" />
<lastmod>2026-06-14T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/streaming-ai-chat-ui</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/streaming-ai-chat-ui" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/streaming-ai-chat-ui" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/streaming-ai-chat-ui" />
<lastmod>2026-05-29T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/web-workers-off-main-thread</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/web-workers-off-main-thread" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/web-workers-off-main-thread" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/web-workers-off-main-thread" />
<lastmod>2026-05-18T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/autocomplete-system-design</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/autocomplete-system-design" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/autocomplete-system-design" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/autocomplete-system-design" />
<lastmod>2026-05-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/ux-patterns-for-ai-features</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/ux-patterns-for-ai-features" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/ux-patterns-for-ai-features" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/ux-patterns-for-ai-features" />
<lastmod>2026-05-04T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/core-web-vitals</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/core-web-vitals" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/core-web-vitals" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/core-web-vitals" />
<lastmod>2026-04-26T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/multimodal-input-for-llm-features</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/multimodal-input-for-llm-features" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/multimodal-input-for-llm-features" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/multimodal-input-for-llm-features" />
<lastmod>2026-04-23T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/react-server-components-mental-model</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/react-server-components-mental-model" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/react-server-components-mental-model" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/react-server-components-mental-model" />
<lastmod>2026-04-13T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/event-loop-and-rendering</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/event-loop-and-rendering" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/event-loop-and-rendering" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/event-loop-and-rendering" />
<lastmod>2026-04-09T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/frontend-security-in-practice</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/frontend-security-in-practice" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/frontend-security-in-practice" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/frontend-security-in-practice" />
<lastmod>2026-03-24T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/url-as-state</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/url-as-state" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/url-as-state" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/url-as-state" />
<lastmod>2026-03-09T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/list-virtualization</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/list-virtualization" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/list-virtualization" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/list-virtualization" />
<lastmod>2026-03-07T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/structured-outputs-for-llm-features</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/structured-outputs-for-llm-features" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/structured-outputs-for-llm-features" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/structured-outputs-for-llm-features" />
<lastmod>2026-03-02T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/react-compiler-in-practice</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/react-compiler-in-practice" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/react-compiler-in-practice" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/react-compiler-in-practice" />
<lastmod>2026-02-26T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/writing-notes-as-an-engineer</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/writing-notes-as-an-engineer" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/writing-notes-as-an-engineer" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/writing-notes-as-an-engineer" />
<lastmod>2026-02-19T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/css-cascade-layers-and-scope</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/css-cascade-layers-and-scope" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/css-cascade-layers-and-scope" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/css-cascade-layers-and-scope" />
<lastmod>2026-02-02T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/design-tokens-and-theming</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/design-tokens-and-theming" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/design-tokens-and-theming" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/design-tokens-and-theming" />
<lastmod>2026-02-02T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/signals-and-fine-grained-reactivity</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/signals-and-fine-grained-reactivity" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/signals-and-fine-grained-reactivity" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/signals-and-fine-grained-reactivity" />
<lastmod>2026-01-19T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/thinking-in-systems-not-screens</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/thinking-in-systems-not-screens" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/thinking-in-systems-not-screens" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/thinking-in-systems-not-screens" />
<lastmod>2026-01-17T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/web-fonts-done-right</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/web-fonts-done-right" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/web-fonts-done-right" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/web-fonts-done-right" />
<lastmod>2025-12-31T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/offline-first-optimistic-ui</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/offline-first-optimistic-ui" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/offline-first-optimistic-ui" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/offline-first-optimistic-ui" />
<lastmod>2025-12-15T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/ci-for-frontend-monorepo</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/ci-for-frontend-monorepo" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/ci-for-frontend-monorepo" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/ci-for-frontend-monorepo" />
<lastmod>2025-11-29T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/estimating-frontend-work</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/estimating-frontend-work" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/estimating-frontend-work" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/estimating-frontend-work" />
<lastmod>2025-11-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/monorepo-lessons-bun-turborepo</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/monorepo-lessons-bun-turborepo" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/monorepo-lessons-bun-turborepo" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/monorepo-lessons-bun-turborepo" />
<lastmod>2025-10-27T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/devtools-debugging-tricks</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/devtools-debugging-tricks" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/devtools-debugging-tricks" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/devtools-debugging-tricks" />
<lastmod>2025-10-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/caching-for-frontend-developers</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/caching-for-frontend-developers" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/caching-for-frontend-developers" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/caching-for-frontend-developers" />
<lastmod>2025-09-24T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/accessible-modal-dialogs</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/accessible-modal-dialogs" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/accessible-modal-dialogs" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/accessible-modal-dialogs" />
<lastmod>2025-09-07T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/frontend-testing-strategy</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/frontend-testing-strategy" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/frontend-testing-strategy" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/frontend-testing-strategy" />
<lastmod>2025-08-22T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/frontend-feature-flags</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/frontend-feature-flags" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/frontend-feature-flags" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/frontend-feature-flags" />
<lastmod>2025-08-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/code-splitting-and-lazy-loading-react</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/code-splitting-and-lazy-loading-react" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/code-splitting-and-lazy-loading-react" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/code-splitting-and-lazy-loading-react" />
<lastmod>2025-07-20T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/mid-to-senior-frontend</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/mid-to-senior-frontend" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/mid-to-senior-frontend" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/mid-to-senior-frontend" />
<lastmod>2025-07-03T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/react-19-forms-and-actions</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/react-19-forms-and-actions" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/react-19-forms-and-actions" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/react-19-forms-and-actions" />
<lastmod>2025-06-17T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/react-rendering-performance</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/react-rendering-performance" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/react-rendering-performance" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/react-rendering-performance" />
<lastmod>2025-05-31T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/container-queries-modern-responsive</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/container-queries-modern-responsive" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/container-queries-modern-responsive" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/container-queries-modern-responsive" />
<lastmod>2025-05-15T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/frontend-error-handling-strategy</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/frontend-error-handling-strategy" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/frontend-error-handling-strategy" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/frontend-error-handling-strategy" />
<lastmod>2025-04-28T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/code-review-giving-and-receiving</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/code-review-giving-and-receiving" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/code-review-giving-and-receiving" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/code-review-giving-and-receiving" />
<lastmod>2025-04-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/image-optimization-end-to-end</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/image-optimization-end-to-end" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/image-optimization-end-to-end" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/image-optimization-end-to-end" />
<lastmod>2025-03-26T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/css-layout-mental-model</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/css-layout-mental-model" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/css-layout-mental-model" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/css-layout-mental-model" />
<lastmod>2025-03-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/state-machines-for-ui</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/state-machines-for-ui" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/state-machines-for-ui" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/state-machines-for-ui" />
<lastmod>2025-02-21T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/typescript-patterns-that-pay-off</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/typescript-patterns-that-pay-off" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/typescript-patterns-that-pay-off" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/typescript-patterns-that-pay-off" />
<lastmod>2025-02-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/why-we-chose-bun</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/why-we-chose-bun" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/why-we-chose-bun" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/why-we-chose-bun" />
<lastmod>2025-01-19T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3002/vi/blog/building-with-shadcn-ui</loc>
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3002/en/blog/building-with-shadcn-ui" />
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3002/vi/blog/building-with-shadcn-ui" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://localhost:3002/vi/blog/building-with-shadcn-ui" />
<lastmod>2025-01-03T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
</urlset>
