<?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">
  <url>
    <loc>https://blogs.mobilebytesensei.com/</loc>
    <lastmod>2026-09-14</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/</loc>
    <lastmod>2026-09-14</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/state-holders-pattern/</loc>
    <lastmod>2026-09-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/state-holders-pattern/hero.png</image:loc>
      <image:title>Not every state holder is a ViewModel</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/architectural-layering/</loc>
    <lastmod>2026-09-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/architectural-layering/hero.png</image:loc>
      <image:title>The UI layer has two halves, and merging them is why screens become untestable</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/compositionlocal/</loc>
    <lastmod>2026-09-12</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/compositionlocal/hero.png</image:loc>
      <image:title>CompositionLocal is not dependency injection, and using it that way hurts later</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/saving-ui-state/</loc>
    <lastmod>2026-09-11</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/saving-ui-state/hero.png</image:loc>
      <image:title>rememberSaveable survives what remember doesn&apos;t — and it isn&apos;t a bigger remember</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/state-hoisting-pitfalls/</loc>
    <lastmod>2026-09-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/state-hoisting-pitfalls/hero.png</image:loc>
      <image:title>Six parameters deep and none of them are used here</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/state-hoisting-in-viewmodel/</loc>
    <lastmod>2026-09-09</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/state-hoisting-in-viewmodel/hero.png</image:loc>
      <image:title>The ViewModel is not the default place for state. It&apos;s the place for state that outlives the screen.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/state-hoisting-basics/</loc>
    <lastmod>2026-09-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/state-hoisting-basics/hero.png</image:loc>
      <image:title>State hoisting is one question: who else needs to know?</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/three-phases/</loc>
    <lastmod>2026-09-07</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/three-phases/hero.png</image:loc>
      <image:title>Composition, layout, drawing — and why reading a value in the wrong one costs frames</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/side-effects-intro/</loc>
    <lastmod>2026-09-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/side-effects-intro/hero.png</image:loc>
      <image:title>Your composable ran four times. So did your network call.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/lifecycle-of-composables/</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/lifecycle-of-composables/hero.png</image:loc>
      <image:title>A composable&apos;s lifecycle is three events, and none of them is onDestroy</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/recomposition/</loc>
    <lastmod>2026-09-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/recomposition/hero.png</image:loc>
      <image:title>Recomposition doesn&apos;t re-run your screen. It re-runs the scopes that read what changed.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/first-composable/</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/first-composable/hero.png</image:loc>
      <image:title>What @Composable actually does to your function</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/thinking-in-compose/</loc>
    <lastmod>2026-09-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/thinking-in-compose/hero.png</image:loc>
      <image:title>Thinking in Compose: you can&apos;t reach into the UI any more, and that&apos;s the point</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/setup-and-bom/</loc>
    <lastmod>2026-09-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/setup-and-bom/hero.png</image:loc>
      <image:title>Compose has two version problems, and the BOM only solves one</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/blog/adb-install-r-stale-screenshot/</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://blogs.mobilebytesensei.com/posts/adb-install-r-stale-screenshot/stale-composition.png</image:loc>
      <image:title>adb install -r doesn&apos;t kill your app, so your screenshot is a lie</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/company</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/contact</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/privacy</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/terms</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/refund</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://blogs.mobilebytesensei.com/support</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
