<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://jacky-dev.com/zh-TW</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW" />
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://jacky-dev.com/en</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW" />
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://jacky-dev.com/zh-TW/post</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post" />
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://jacky-dev.com/en/post</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post" />
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://jacky-dev.com/zh-TW/post/playwright-screenshot-test-legacy</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/playwright-screenshot-test-legacy" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/playwright-screenshot-test-legacy" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/playwright-screenshot-test-legacy" />
<image:image>
<image:loc>https://jacky-dev.com/images/banners/testing-flow.svg</image:loc>
</image:image>
<lastmod>2026-06-23T09:19:41.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/en/post/playwright-screenshot-test-legacy</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/playwright-screenshot-test-legacy" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/playwright-screenshot-test-legacy" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/playwright-screenshot-test-legacy" />
<image:image>
<image:loc>https://jacky-dev.com/images/banners/testing-flow.svg</image:loc>
</image:image>
<lastmod>2026-06-23T09:19:41.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/zh-TW/post/ai</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/ai" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/ai" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/ai" />
<image:image>
<image:loc>https://jacky-dev.com/images/banners/ai-topics.svg</image:loc>
</image:image>
<lastmod>2026-06-19T14:23:57.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/en/post/ai</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/ai" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/ai" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/ai" />
<image:image>
<image:loc>https://jacky-dev.com/images/banners/ai-topics.svg</image:loc>
</image:image>
<lastmod>2026-06-19T14:23:57.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/zh-TW/post/useeffect-cny-key</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/useeffect-cny-key" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/useeffect-cny-key" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/useeffect-cny-key" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/5ea47025ba2847f4cccc54501c4279c45f3b5050-2750x1536.webp</image:loc>
</image:image>
<lastmod>2026-04-06T08:33:42.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/en/post/useeffect-cny-key</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/useeffect-cny-key" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/useeffect-cny-key" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/useeffect-cny-key" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/5ea47025ba2847f4cccc54501c4279c45f3b5050-2750x1536.webp</image:loc>
</image:image>
<lastmod>2026-04-06T08:33:42.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/zh-TW/post/next-js-16-react-19-useeffect</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/next-js-16-react-19-useeffect" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/next-js-16-react-19-useeffect" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/next-js-16-react-19-useeffect" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/5ea47025ba2847f4cccc54501c4279c45f3b5050-2750x1536.webp</image:loc>
</image:image>
<lastmod>2026-04-06T07:47:05.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/en/post/next-js-16-react-19-useeffect</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/next-js-16-react-19-useeffect" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/next-js-16-react-19-useeffect" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/next-js-16-react-19-useeffect" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/5ea47025ba2847f4cccc54501c4279c45f3b5050-2750x1536.webp</image:loc>
</image:image>
<lastmod>2026-04-06T07:47:05.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/zh-TW/post/useshallow-zustand-selector</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/useshallow-zustand-selector" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/useshallow-zustand-selector" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/useshallow-zustand-selector" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/c7a0791aedecce9686fa51fd95cd7647ebc51fe6-2848x1504.webp</image:loc>
</image:image>
<lastmod>2026-04-06T07:42:26.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/en/post/useshallow-zustand-selector</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/useshallow-zustand-selector" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/useshallow-zustand-selector" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/useshallow-zustand-selector" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/c7a0791aedecce9686fa51fd95cd7647ebc51fe6-2848x1504.webp</image:loc>
</image:image>
<lastmod>2026-04-06T07:42:26.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/zh-TW/post/react-custom-hook-cny</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/react-custom-hook-cny" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/react-custom-hook-cny" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/react-custom-hook-cny" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/0bde6ad7065f86c7ab57712037361fb6f14c642a-1408x768.jpg</image:loc>
</image:image>
<lastmod>2026-03-18T16:23:38.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/en/post/react-custom-hook-cny</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/react-custom-hook-cny" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/react-custom-hook-cny" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/react-custom-hook-cny" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/0bde6ad7065f86c7ab57712037361fb6f14c642a-1408x768.jpg</image:loc>
</image:image>
<lastmod>2026-03-18T16:23:38.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/zh-TW/post/sanity-x-next-js-revalidate-tag-post-isr</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/sanity-x-next-js-revalidate-tag-post-isr" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/sanity-x-next-js-revalidate-tag-post-isr" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/sanity-x-next-js-revalidate-tag-post-isr" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/83763c4ecaa20799f27311fa8b2a97c35db7d60e-675x532.png</image:loc>
</image:image>
<lastmod>2025-09-09T02:47:51.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/en/post/sanity-x-next-js-revalidate-tag-post-isr</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/sanity-x-next-js-revalidate-tag-post-isr" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/sanity-x-next-js-revalidate-tag-post-isr" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/sanity-x-next-js-revalidate-tag-post-isr" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/83763c4ecaa20799f27311fa8b2a97c35db7d60e-675x532.png</image:loc>
</image:image>
<lastmod>2025-09-09T02:47:51.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/zh-TW/post/react-zustand-context-store</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/react-zustand-context-store" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/react-zustand-context-store" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/react-zustand-context-store" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/c7a0791aedecce9686fa51fd95cd7647ebc51fe6-2848x1504.webp</image:loc>
</image:image>
<lastmod>2026-04-23T15:34:58.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/en/post/react-zustand-context-store</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/react-zustand-context-store" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/react-zustand-context-store" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/react-zustand-context-store" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/c7a0791aedecce9686fa51fd95cd7647ebc51fe6-2848x1504.webp</image:loc>
</image:image>
<lastmod>2026-04-23T15:34:58.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/zh-TW/post/sanity-x-nextjs</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/sanity-x-nextjs" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/sanity-x-nextjs" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/sanity-x-nextjs" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/777cef4c68a40acc9f7c163a71b7d9fc41ed9a9c-1210x207.png</image:loc>
</image:image>
<lastmod>2025-09-09T01:59:59.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jacky-dev.com/en/post/sanity-x-nextjs</loc>
<xhtml:link rel="alternate" hreflang="zh-TW" href="https://jacky-dev.com/zh-TW/post/sanity-x-nextjs" />
<xhtml:link rel="alternate" hreflang="en" href="https://jacky-dev.com/en/post/sanity-x-nextjs" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://jacky-dev.com/zh-TW/post/sanity-x-nextjs" />
<image:image>
<image:loc>https://cdn.sanity.io/images/m6hs58oa/production/777cef4c68a40acc9f7c163a71b7d9fc41ed9a9c-1210x207.png</image:loc>
</image:image>
<lastmod>2025-09-09T01:59:59.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
</urlset>
