<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>JavaScript on Codeslog</title>
    <link>https://www.codeslog.com/en/tags/javascript/</link>
    <description>Recent content in JavaScript on Codeslog</description>
    <image>
      <title>Codeslog</title>
      <url>https://www.codeslog.com/images/default-cover.png?v=20260114T1436</url>
      <link>https://www.codeslog.com/images/default-cover.png?v=20260114T1436</link>
    </image>
    <generator>Hugo -- 0.168.0</generator>
    <language>en-US</language>
    <lastBuildDate>Tue, 15 Sep 2026 11:31:00 +0900</lastBuildDate>
    <atom:link href="https://www.codeslog.com/en/tags/javascript/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Form Validation Timing: From Blur to aria-invalid</title>
      <link>https://www.codeslog.com/en/posts/form-ux-validation/</link>
      <pubDate>Tue, 15 Sep 2026 11:31:00 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/form-ux-validation/</guid>
      <description>Forms that flash errors on focus, or stay silent until submit, fail users. Get validation timing, aria-invalid, and aria-describedby right for accessible forms.</description>
    </item>
    <item>
      <title>Safari 27 Fixed top-level await — Retested, and Loading Doubled</title>
      <link>https://www.codeslog.com/en/posts/safari-top-level-await-fix/</link>
      <pubDate>Thu, 03 Sep 2026 11:25:33 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/safari-top-level-await-fix/</guid>
      <description>Reran WebKit&amp;#39;s top-level await repro on Safari 26.6 and iOS 26.5. Past the ReferenceError, modules declared after a TLA one wait for it — loading doubled.</description>
    </item>
    <item>
      <title>?? vs ||: Why Your Zero Keeps Disappearing</title>
      <link>https://www.codeslog.com/en/posts/javascript-nullish-coalescing/</link>
      <pubDate>Tue, 14 Jul 2026 23:52:00 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/javascript-nullish-coalescing/</guid>
      <description>The decisive difference between the nullish coalescing operator (??) and || — it&amp;#39;s why 0 and empty strings get swallowed by defaults. Falsy traps, ??= assignment, optional chaining combos, and why mixing the two throws a SyntaxError.</description>
    </item>
    <item>
      <title>Promise.all vs Promise.allSettled: The Difference That Matters</title>
      <link>https://www.codeslog.com/en/posts/javascript-promise-methods/</link>
      <pubDate>Wed, 08 Apr 2026 01:00:00 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/javascript-promise-methods/</guid>
      <description>One failing Promise can take down your entire dashboard. Compare Promise.all and Promise.allSettled with real-world examples, and learn when to use which.</description>
    </item>
    <item>
      <title>Function Declarations vs Expressions: Hoisting Explained</title>
      <link>https://www.codeslog.com/en/posts/javascript-function-hoisting/</link>
      <pubDate>Sat, 04 Apr 2026 02:30:00 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/javascript-function-hoisting/</guid>
      <description>Learn the difference between function declarations and expressions, how hoisting works under the hood, and when to use arrow functions in practice.</description>
    </item>
    <item>
      <title>Improving Multilingual Blog UX: Building a Smart Language Suggestion Banner</title>
      <link>https://www.codeslog.com/en/posts/language-switcher-banner/</link>
      <pubDate>Fri, 23 Jan 2026 08:00:00 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/language-switcher-banner/</guid>
      <description>Built a banner that detects browser language via navigator.language and auto-suggests the right version of a Hugo blog, with WCAG 2.2 AA keyboard navigation and screen reader support built in.</description>
    </item>
    <item>
      <title>Building a Dynamic Comment System on a Static Site: Giscus &#43; GraphQL API</title>
      <link>https://www.codeslog.com/en/posts/blog-comment-visibility-features/</link>
      <pubDate>Fri, 16 Jan 2026 18:00:00 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/blog-comment-visibility-features/</guid>
      <description>Adding Giscus comment counts, a recent-comments list, and an all-comments page to a Hugo static blog: the GitHub GraphQL API, token and Cloudflare Pages setup, localStorage caching, and accessibility.</description>
    </item>
    <item>
      <title>Code Block Accessibility Improvement: Line Numbers That Screen Reader Users Can Choose</title>
      <link>https://www.codeslog.com/en/posts/code-block-accessibility-improvement/</link>
      <pubDate>Fri, 09 Jan 2026 20:00:00 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/code-block-accessibility-improvement/</guid>
      <description>A record of improving code blocks on a Hugo PaperMod blog. We replaced table-based line numbers with CSS counters so screen reader users can read code without the noise of table markup — a more semantic, accessible approach.</description>
    </item>
  </channel>
</rss>
