<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://react-saas-course.pages.dev/</loc></url><url><loc>https://react-saas-course.pages.dev/001-the-javascript-value-model/1-bindings-not-boxes/</loc></url><url><loc>https://react-saas-course.pages.dev/001-the-javascript-value-model/2-what--actually-compares/</loc></url><url><loc>https://react-saas-course.pages.dev/001-the-javascript-value-model/3-store-cents-not-dollars/</loc></url><url><loc>https://react-saas-course.pages.dev/001-the-javascript-value-model/4-why-length-lies/</loc></url><url><loc>https://react-saas-course.pages.dev/001-the-javascript-value-model/5-backticks-and-tagged-templates/</loc></url><url><loc>https://react-saas-course.pages.dev/001-the-javascript-value-model/6-const-binds-it-doesnt-freeze/</loc></url><url><loc>https://react-saas-course.pages.dev/001-the-javascript-value-model/7-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/002-functions-naming-and-control-flow/1-arrow-by-default-declaration-on-demand/</loc></url><url><loc>https://react-saas-course.pages.dev/002-functions-naming-and-control-flow/2-signatures-that-stay-readable-past-two-parameters/</loc></url><url><loc>https://react-saas-course.pages.dev/002-functions-naming-and-control-flow/3-name-for-intent-not-implementation/</loc></url><url><loc>https://react-saas-course.pages.dev/002-functions-naming-and-control-flow/4-flat-control-flow---guards-ternaries-and-exhaustive-switch/</loc></url><url><loc>https://react-saas-course.pages.dev/002-functions-naming-and-control-flow/5-the-null-safe-operator-trio/</loc></url><url><loc>https://react-saas-course.pages.dev/002-functions-naming-and-control-flow/6-destructuring-as-the-api-call-shape/</loc></url><url><loc>https://react-saas-course.pages.dev/002-functions-naming-and-control-flow/7-closures---lexical-capture-by-reference/</loc></url><url><loc>https://react-saas-course.pages.dev/002-functions-naming-and-control-flow/8-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/003-picking-the-right-container/1-the-object-as-workhorse-record/</loc></url><url><loc>https://react-saas-course.pages.dev/003-picking-the-right-container/2-arrays-and-the-non-mutating-update/</loc></url><url><loc>https://react-saas-course.pages.dev/003-picking-the-right-container/3-the-array-method-surface/</loc></url><url><loc>https://react-saas-course.pages.dev/003-picking-the-right-container/4-when-set-and-map-earn-their-weight/</loc></url><url><loc>https://react-saas-course.pages.dev/003-picking-the-right-container/5-iteration-and-the-lazy-helpers/</loc></url><url><loc>https://react-saas-course.pages.dev/003-picking-the-right-container/6-regex---the-modern-flavor/</loc></url><url><loc>https://react-saas-course.pages.dev/003-picking-the-right-container/7-vs-code-as-a-team-artifact/</loc></url><url><loc>https://react-saas-course.pages.dev/003-picking-the-right-container/8-run-typescript-locally/</loc></url><url><loc>https://react-saas-course.pages.dev/003-picking-the-right-container/9-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/004-typing-values-you-know/1-primitives-literals-and-the-four-corners/</loc></url><url><loc>https://react-saas-course.pages.dev/004-typing-values-you-know/2-object-shapes---type-interface-and-field-modifiers/</loc></url><url><loc>https://react-saas-course.pages.dev/004-typing-values-you-know/3-tuples---positions-with-labels/</loc></url><url><loc>https://react-saas-course.pages.dev/004-typing-values-you-know/4-dynamic-keys---index-signatures-and-record-k-v-/</loc></url><url><loc>https://react-saas-course.pages.dev/004-typing-values-you-know/5-composing-types---unions-and-intersections/</loc></url><url><loc>https://react-saas-course.pages.dev/004-typing-values-you-know/6-narrow-dont-assert/</loc></url><url><loc>https://react-saas-course.pages.dev/004-typing-values-you-know/7-keeping-literals-narrow-with-as-const-and-satisfies/</loc></url><url><loc>https://react-saas-course.pages.dev/004-typing-values-you-know/8-annotate-the-boundaries-infer-the-inside/</loc></url><url><loc>https://react-saas-course.pages.dev/004-typing-values-you-know/9-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/005-typescript-bug-class-moves/1-impossible-states-unrepresentable/</loc></url><url><loc>https://react-saas-course.pages.dev/005-typescript-bug-class-moves/2-states-plus-transitions/</loc></url><url><loc>https://react-saas-course.pages.dev/005-typescript-bug-class-moves/3-exhaustiveness-enforced/</loc></url><url><loc>https://react-saas-course.pages.dev/005-typescript-bug-class-moves/4-branded-ids/</loc></url><url><loc>https://react-saas-course.pages.dev/005-typescript-bug-class-moves/5-derive-types-from-values/</loc></url><url><loc>https://react-saas-course.pages.dev/005-typescript-bug-class-moves/6-the-utility-type-toolbox/</loc></url><url><loc>https://react-saas-course.pages.dev/005-typescript-bug-class-moves/7-generics-with-constraints/</loc></url><url><loc>https://react-saas-course.pages.dev/005-typescript-bug-class-moves/8-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/006-modules-as-a-graph/1-the-four-import-export-shapes/</loc></url><url><loc>https://react-saas-course.pages.dev/006-modules-as-a-graph/2-walking-the-graph---evaluation-live-bindings-and-the-client-bundle/</loc></url><url><loc>https://react-saas-course.pages.dev/006-modules-as-a-graph/3-top-level-await-vs-lazy-init/</loc></url><url><loc>https://react-saas-course.pages.dev/006-modules-as-a-graph/4-augmenting-third-party-modules/</loc></url><url><loc>https://react-saas-course.pages.dev/006-modules-as-a-graph/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/007-async-semantics/1-the-event-loop-and-the-microtask-queue/</loc></url><url><loc>https://react-saas-course.pages.dev/007-async-semantics/2-promises--combinators-and-withresolvers/</loc></url><url><loc>https://react-saas-course.pages.dev/007-async-semantics/3-async-await--parallel-by-default-sequential-by-dependency/</loc></url><url><loc>https://react-saas-course.pages.dev/007-async-semantics/4-cancellation-with-abortcontroller-and-abortsignal/</loc></url><url><loc>https://react-saas-course.pages.dev/007-async-semantics/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/008-errors-as-a-first-class-concern/1-two-channels--throw-the-unexpected-return-the-expected/</loc></url><url><loc>https://react-saas-course.pages.dev/008-errors-as-a-first-class-concern/2-narrowing-the-catch-and-authoring-domain-errors/</loc></url><url><loc>https://react-saas-course.pages.dev/008-errors-as-a-first-class-concern/3-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/009-json-classes-and-the-temporal-pivot/1-json-at-the-wire-boundary/</loc></url><url><loc>https://react-saas-course.pages.dev/009-json-classes-and-the-temporal-pivot/2-classes-narrowly/</loc></url><url><loc>https://react-saas-course.pages.dev/009-json-classes-and-the-temporal-pivot/3-dates-problems-and-the-temporal-pivot/</loc></url><url><loc>https://react-saas-course.pages.dev/009-json-classes-and-the-temporal-pivot/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/010-how-a-request-becomes-a-page/1-url-bar-to-first-byte/</loc></url><url><loc>https://react-saas-course.pages.dev/010-how-a-request-becomes-a-page/2-first-byte-to-pixels/</loc></url><url><loc>https://react-saas-course.pages.dev/010-how-a-request-becomes-a-page/3-devtools--the-four-panels-that-earn-their-keep/</loc></url><url><loc>https://react-saas-course.pages.dev/010-how-a-request-becomes-a-page/4-https-on-localhost-with-mkcert/</loc></url><url><loc>https://react-saas-course.pages.dev/010-how-a-request-becomes-a-page/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/011-the-http-contract-every-endpoint-signs/1-methods-and-the-safe-to-retry-contract/</loc></url><url><loc>https://react-saas-course.pages.dev/011-the-http-contract-every-endpoint-signs/2-status-codes-and-the-problem-details-body/</loc></url><url><loc>https://react-saas-course.pages.dev/011-the-http-contract-every-endpoint-signs/3-headers-as-the-metadata-channel/</loc></url><url><loc>https://react-saas-course.pages.dev/011-the-http-contract-every-endpoint-signs/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/012-urls-origins-and-security-boundaries/1-parse-dont-concatenate/</loc></url><url><loc>https://react-saas-course.pages.dev/012-urls-origins-and-security-boundaries/2-origin-is-the-unit-of-browser-trust/</loc></url><url><loc>https://react-saas-course.pages.dev/012-urls-origins-and-security-boundaries/3-the-preflight-dance/</loc></url><url><loc>https://react-saas-course.pages.dev/012-urls-origins-and-security-boundaries/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/013-cookies-and-the-trust-model/1-set-cookie-attributes/</loc></url><url><loc>https://react-saas-course.pages.dev/013-cookies-and-the-trust-model/2-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/014-the-dom-and-event-substrate/1-the-dom-as-a-live-tree/</loc></url><url><loc>https://react-saas-course.pages.dev/014-the-dom-and-event-substrate/2-attributes-vs-properties/</loc></url><url><loc>https://react-saas-course.pages.dev/014-the-dom-and-event-substrate/3-the-event-model/</loc></url><url><loc>https://react-saas-course.pages.dev/014-the-dom-and-event-substrate/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/015-fetch-and-live-streams/1-the-universal-http-client/</loc></url><url><loc>https://react-saas-course.pages.dev/015-fetch-and-live-streams/2-streaming-and-live-channels/</loc></url><url><loc>https://react-saas-course.pages.dev/015-fetch-and-live-streams/3-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/016-browser-capability-apis/1-web-crypto--random-ids-and-hmac-signatures/</loc></url><url><loc>https://react-saas-course.pages.dev/016-browser-capability-apis/2-the-clipboard-api/</loc></url><url><loc>https://react-saas-course.pages.dev/016-browser-capability-apis/3-blob-file-and-object-urls--the-upload-primitives/</loc></url><url><loc>https://react-saas-course.pages.dev/016-browser-capability-apis/4-web-storage--where-localstorage-earns-its-weight/</loc></url><url><loc>https://react-saas-course.pages.dev/016-browser-capability-apis/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/017-jsx-and-html-semantics/1-jsx-as-property-syntax/</loc></url><url><loc>https://react-saas-course.pages.dev/017-jsx-and-html-semantics/2-the-root-layout/</loc></url><url><loc>https://react-saas-course.pages.dev/017-jsx-and-html-semantics/3-landmarks-and-headings/</loc></url><url><loc>https://react-saas-course.pages.dev/017-jsx-and-html-semantics/4-actions-navigations-and-item-sequences/</loc></url><url><loc>https://react-saas-course.pages.dev/017-jsx-and-html-semantics/5-forms-as-a-contract-with-the-server/</loc></url><url><loc>https://react-saas-course.pages.dev/017-jsx-and-html-semantics/6-data-attributes-aria-attributes-and-tables/</loc></url><url><loc>https://react-saas-course.pages.dev/017-jsx-and-html-semantics/7-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/018-tailwind-inside-the-react-component/1-utility-first-on-jsx/</loc></url><url><loc>https://react-saas-course.pages.dev/018-tailwind-inside-the-react-component/2-css-first-config-in-globalscss/</loc></url><url><loc>https://react-saas-course.pages.dev/018-tailwind-inside-the-react-component/3-composing-classes-with-cn/</loc></url><url><loc>https://react-saas-course.pages.dev/018-tailwind-inside-the-react-component/4-variants-that-read-dom-state/</loc></url><url><loc>https://react-saas-course.pages.dev/018-tailwind-inside-the-react-component/5-dark-mode-via-semantic-tokens/</loc></url><url><loc>https://react-saas-course.pages.dev/018-tailwind-inside-the-react-component/6-theme-switching-without-fouc/</loc></url><url><loc>https://react-saas-course.pages.dev/018-tailwind-inside-the-react-component/7-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/019-the-cascade-inheritance-tokens/1-how-the-browser-picks-a-winning-rule/</loc></url><url><loc>https://react-saas-course.pages.dev/019-the-cascade-inheritance-tokens/2-what-flows-down-the-dom-tree/</loc></url><url><loc>https://react-saas-course.pages.dev/019-the-cascade-inheritance-tokens/3-preflight-the-deliberately-blank-canvas/</loc></url><url><loc>https://react-saas-course.pages.dev/019-the-cascade-inheritance-tokens/4-custom-properties-and-the-three-tier-token-model/</loc></url><url><loc>https://react-saas-course.pages.dev/019-the-cascade-inheritance-tokens/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/020-layout-and-sizing/1-the-box-model-and-the-inline-block-axis/</loc></url><url><loc>https://react-saas-course.pages.dev/020-layout-and-sizing/2-display-modes-and-the-hide-decision-tree/</loc></url><url><loc>https://react-saas-course.pages.dev/020-layout-and-sizing/3-flexbox-the-1d-primitive/</loc></url><url><loc>https://react-saas-course.pages.dev/020-layout-and-sizing/4-grid-the-2d-primitive/</loc></url><url><loc>https://react-saas-course.pages.dev/020-layout-and-sizing/5-sizing-viewport-units-and-aspect-ratio/</loc></url><url><loc>https://react-saas-course.pages.dev/020-layout-and-sizing/6-gap-the-universal-spacing-default/</loc></url><url><loc>https://react-saas-course.pages.dev/020-layout-and-sizing/7-position-and-inset-utilities/</loc></url><url><loc>https://react-saas-course.pages.dev/020-layout-and-sizing/8-overflow-and-scroll-containers/</loc></url><url><loc>https://react-saas-course.pages.dev/020-layout-and-sizing/9-stacking-context-and-z-index/</loc></url><url><loc>https://react-saas-course.pages.dev/020-layout-and-sizing/10-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/021-the-visual-surface/1-type-scale-and-the-reading-surface/</loc></url><url><loc>https://react-saas-course.pages.dev/021-the-visual-surface/2-oklch-color-mix-and-the-alpha-syntax/</loc></url><url><loc>https://react-saas-course.pages.dev/021-the-visual-surface/3-borders-radius-and-the-elevation-scale/</loc></url><url><loc>https://react-saas-course.pages.dev/021-the-visual-surface/4-pseudo-classes-and-the-has-parent-selector/</loc></url><url><loc>https://react-saas-course.pages.dev/021-the-visual-surface/5-motion---transitions-keyframes-and-tw-animate-css/</loc></url><url><loc>https://react-saas-course.pages.dev/021-the-visual-surface/6-breakpoints-and-the-mobile-first-reflex/</loc></url><url><loc>https://react-saas-course.pages.dev/021-the-visual-surface/7-container-queries/</loc></url><url><loc>https://react-saas-course.pages.dev/021-the-visual-surface/8-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/022-components-and-composition/1-the-typed-props-contract/</loc></url><url><loc>https://react-saas-course.pages.dev/022-components-and-composition/2-children-and-compound-components/</loc></url><url><loc>https://react-saas-course.pages.dev/022-components-and-composition/3-polymorphism-with-slot-and-cva/</loc></url><url><loc>https://react-saas-course.pages.dev/022-components-and-composition/4-refs-as-a-regular-prop/</loc></url><url><loc>https://react-saas-course.pages.dev/022-components-and-composition/5-portals-and-the-layout-escape/</loc></url><url><loc>https://react-saas-course.pages.dev/022-components-and-composition/6-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/023-the-render-model/1-what-triggers-a-render/</loc></url><url><loc>https://react-saas-course.pages.dev/023-the-render-model/2-reconciliation-and-the-key-prop/</loc></url><url><loc>https://react-saas-course.pages.dev/023-the-render-model/3-the-purity-contract/</loc></url><url><loc>https://react-saas-course.pages.dev/023-the-render-model/4-state-is-a-snapshot/</loc></url><url><loc>https://react-saas-course.pages.dev/023-the-render-model/5-remounting-with-key/</loc></url><url><loc>https://react-saas-course.pages.dev/023-the-render-model/6-synthetic-events/</loc></url><url><loc>https://react-saas-course.pages.dev/023-the-render-model/7-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/024-hooks-for-holding-state/1-the-usestate-surface-and-lazy-initialization/</loc></url><url><loc>https://react-saas-course.pages.dev/024-hooks-for-holding-state/2-derive-in-render-do-not-mirror-into-state/</loc></url><url><loc>https://react-saas-course.pages.dev/024-hooks-for-holding-state/3-the-four-homes-for-state/</loc></url><url><loc>https://react-saas-course.pages.dev/024-hooks-for-holding-state/4-usereducer-when-transitions-multiply/</loc></url><url><loc>https://react-saas-course.pages.dev/024-hooks-for-holding-state/5-useref-as-the-non-rendering-escape-hatch/</loc></url><url><loc>https://react-saas-course.pages.dev/024-hooks-for-holding-state/6-useid-for-stable-ids-across-the-server-boundary/</loc></url><url><loc>https://react-saas-course.pages.dev/024-hooks-for-holding-state/7-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/025-effects-context-and-concurrent-hooks/1-strict-mode-is-the-messenger/</loc></url><url><loc>https://react-saas-course.pages.dev/025-effects-context-and-concurrent-hooks/2-useeffect-as-synchronization/</loc></url><url><loc>https://react-saas-course.pages.dev/025-effects-context-and-concurrent-hooks/3-useeffectevent-and-the-non-reactive-seam/</loc></url><url><loc>https://react-saas-course.pages.dev/025-effects-context-and-concurrent-hooks/4-you-probably-dont-need-an-effect/</loc></url><url><loc>https://react-saas-course.pages.dev/025-effects-context-and-concurrent-hooks/5-usecontext-without-the-re-render-storm/</loc></url><url><loc>https://react-saas-course.pages.dev/025-effects-context-and-concurrent-hooks/6-marking-updates-as-non-urgent/</loc></url><url><loc>https://react-saas-course.pages.dev/025-effects-context-and-concurrent-hooks/7-reading-promises-with-use/</loc></url><url><loc>https://react-saas-course.pages.dev/025-effects-context-and-concurrent-hooks/8-rules-of-hooks/</loc></url><url><loc>https://react-saas-course.pages.dev/025-effects-context-and-concurrent-hooks/9-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/026-custom-hooks-and-the-compiler-era-memoization-cut/1-extracting-custom-hooks/</loc></url><url><loc>https://react-saas-course.pages.dev/026-custom-hooks-and-the-compiler-era-memoization-cut/2-the-react-compiler/</loc></url><url><loc>https://react-saas-course.pages.dev/026-custom-hooks-and-the-compiler-era-memoization-cut/3-memoization-as-escape-hatch/</loc></url><url><loc>https://react-saas-course.pages.dev/026-custom-hooks-and-the-compiler-era-memoization-cut/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/027-shadcn-ui-and-the-accessibility-baseline/1-own-the-source-not-the-dependency/</loc></url><url><loc>https://react-saas-course.pages.dev/027-shadcn-ui-and-the-accessibility-baseline/2-the-four-commitments/</loc></url><url><loc>https://react-saas-course.pages.dev/027-shadcn-ui-and-the-accessibility-baseline/3-no-aria-is-better-than-bad-aria/</loc></url><url><loc>https://react-saas-course.pages.dev/027-shadcn-ui-and-the-accessibility-baseline/4-where-focus-belongs/</loc></url><url><loc>https://react-saas-course.pages.dev/027-shadcn-ui-and-the-accessibility-baseline/5-four-states-not-one/</loc></url><url><loc>https://react-saas-course.pages.dev/027-shadcn-ui-and-the-accessibility-baseline/6-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/028-project---themed-product-surface/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/028-project---themed-product-surface/2-pnpm-and-the-lockfile-contract/</loc></url><url><loc>https://react-saas-course.pages.dev/028-project---themed-product-surface/3-agentsmd-as-the-next-contributors-briefing/</loc></url><url><loc>https://react-saas-course.pages.dev/028-project---themed-product-surface/4-configuring-tsconfig/</loc></url><url><loc>https://react-saas-course.pages.dev/028-project---themed-product-surface/5-biome-the-single-binary-linter-and-formatter/</loc></url><url><loc>https://react-saas-course.pages.dev/028-project---themed-product-surface/6-site-header-with-desktop-navigation/</loc></url><url><loc>https://react-saas-course.pages.dev/028-project---themed-product-surface/7-hero-with-a-flicker-free-theme-aware-image/</loc></url><url><loc>https://react-saas-course.pages.dev/028-project---themed-product-surface/8-feature-grid-with-cva-card-variants/</loc></url><url><loc>https://react-saas-course.pages.dev/028-project---themed-product-surface/9-pricing-table-with-a-featured-tier/</loc></url><url><loc>https://react-saas-course.pages.dev/028-project---themed-product-surface/10-site-footer/</loc></url><url><loc>https://react-saas-course.pages.dev/028-project---themed-product-surface/11-flicker-free-theme-toggle/</loc></url><url><loc>https://react-saas-course.pages.dev/028-project---themed-product-surface/12-mobile-drawer-with-scroll-lock/</loc></url><url><loc>https://react-saas-course.pages.dev/029-file-system-routing-with-the-app-router/1-the-file-system-is-the-route-table/</loc></url><url><loc>https://react-saas-course.pages.dev/029-file-system-routing-with-the-app-router/2-layouts-and-route-groups/</loc></url><url><loc>https://react-saas-course.pages.dev/029-file-system-routing-with-the-app-router/3-dynamic-and-catch-all-segments/</loc></url><url><loc>https://react-saas-course.pages.dev/029-file-system-routing-with-the-app-router/4-navigation-primitives/</loc></url><url><loc>https://react-saas-course.pages.dev/029-file-system-routing-with-the-app-router/5-parallel-routes-and-slots/</loc></url><url><loc>https://react-saas-course.pages.dev/029-file-system-routing-with-the-app-router/6-intercepting-routes-and-url-backed-modals/</loc></url><url><loc>https://react-saas-course.pages.dev/029-file-system-routing-with-the-app-router/7-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/030-the-server---client-boundary/1-server-components-as-the-default/</loc></url><url><loc>https://react-saas-course.pages.dev/030-the-server---client-boundary/2-client-components-and-pushing-the-boundary-down/</loc></url><url><loc>https://react-saas-course.pages.dev/030-the-server---client-boundary/3-directives-and-server-only-enforcement/</loc></url><url><loc>https://react-saas-course.pages.dev/030-the-server---client-boundary/4-what-crosses-the-rsc-wire/</loc></url><url><loc>https://react-saas-course.pages.dev/030-the-server---client-boundary/5-hydration-and-its-mismatch-failure-modes/</loc></url><url><loc>https://react-saas-course.pages.dev/030-the-server---client-boundary/6-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/031-loading-errors-and-the-four-async-files/1-suspense-the-fallback-contract/</loc></url><url><loc>https://react-saas-course.pages.dev/031-loading-errors-and-the-four-async-files/2-streaming-a-page-in-chunks/</loc></url><url><loc>https://react-saas-course.pages.dev/031-loading-errors-and-the-four-async-files/3-the-three-segment-files/</loc></url><url><loc>https://react-saas-course.pages.dev/031-loading-errors-and-the-four-async-files/4-catching-the-root-layout/</loc></url><url><loc>https://react-saas-course.pages.dev/031-loading-errors-and-the-four-async-files/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/032-the-cache-components-rendering-model/1-dynamic-by-default/</loc></url><url><loc>https://react-saas-course.pages.dev/032-the-cache-components-rendering-model/2-shells-and-holes-with-ppr/</loc></url><url><loc>https://react-saas-course.pages.dev/032-the-cache-components-rendering-model/3-the-use-cache-directive/</loc></url><url><loc>https://react-saas-course.pages.dev/032-the-cache-components-rendering-model/4-lifetimes-and-tags/</loc></url><url><loc>https://react-saas-course.pages.dev/032-the-cache-components-rendering-model/5-per-request-memoization-with-react-cache/</loc></url><url><loc>https://react-saas-course.pages.dev/032-the-cache-components-rendering-model/6-invalidating-after-a-mutation/</loc></url><url><loc>https://react-saas-course.pages.dev/032-the-cache-components-rendering-model/7-how-a-route-declares-itself-dynamic/</loc></url><url><loc>https://react-saas-course.pages.dev/032-the-cache-components-rendering-model/8-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/033-the-request-surface/1-reading-the-request-with-cookies-and-headers/</loc></url><url><loc>https://react-saas-course.pages.dev/033-the-request-surface/2-proxyts-and-the-matcher/</loc></url><url><loc>https://react-saas-course.pages.dev/033-the-request-surface/3-rewrites-and-redirects-in-proxyts/</loc></url><url><loc>https://react-saas-course.pages.dev/033-the-request-surface/4-url-state-with-searchparams-and-route-params/</loc></url><url><loc>https://react-saas-course.pages.dev/033-the-request-surface/5-client-side-navigation-hooks/</loc></url><url><loc>https://react-saas-course.pages.dev/033-the-request-surface/6-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/034-project-config-platform-primitives-seo/1-the-typed-nextconfigts/</loc></url><url><loc>https://react-saas-course.pages.dev/034-project-config-platform-primitives-seo/2-images-with-next-image/</loc></url><url><loc>https://react-saas-course.pages.dev/034-project-config-platform-primitives-seo/3-edge-redirects-and-rewrites/</loc></url><url><loc>https://react-saas-course.pages.dev/034-project-config-platform-primitives-seo/4-self-hosted-fonts-with-next-font/</loc></url><url><loc>https://react-saas-course.pages.dev/034-project-config-platform-primitives-seo/5-third-party-scripts-with-next-script/</loc></url><url><loc>https://react-saas-course.pages.dev/034-project-config-platform-primitives-seo/6-metadata-and-dynamic-og-cards/</loc></url><url><loc>https://react-saas-course.pages.dev/034-project-config-platform-primitives-seo/7-robots-sitemaps-icons-viewport/</loc></url><url><loc>https://react-saas-course.pages.dev/034-project-config-platform-primitives-seo/8-generatestaticparams-for-static-catalogs/</loc></url><url><loc>https://react-saas-course.pages.dev/034-project-config-platform-primitives-seo/9-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/035-project---list-plus-detail-with-parallel-routes/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/035-project---list-plus-detail-with-parallel-routes/2-server-rendered-list-and-detail/</loc></url><url><loc>https://react-saas-course.pages.dev/035-project---list-plus-detail-with-parallel-routes/3-modal-with-a-real-url/</loc></url><url><loc>https://react-saas-course.pages.dev/035-project---list-plus-detail-with-parallel-routes/4-independent-streaming-per-slot/</loc></url><url><loc>https://react-saas-course.pages.dev/036-postgres-on-neon/1-tables-rows-and-3nf/</loc></url><url><loc>https://react-saas-course.pages.dev/036-postgres-on-neon/2-where-your-local-database-runs/</loc></url><url><loc>https://react-saas-course.pages.dev/036-postgres-on-neon/3-neon-branching-and-scale-to-zero/</loc></url><url><loc>https://react-saas-course.pages.dev/036-postgres-on-neon/4-the-serverless-driver-and-the-pooled-url/</loc></url><url><loc>https://react-saas-course.pages.dev/036-postgres-on-neon/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/037-schema-as-source-of-truth-with-drizzle/1-principle-2---the-schema-is-the-source-of-truth/</loc></url><url><loc>https://react-saas-course.pages.dev/037-schema-as-source-of-truth-with-drizzle/2-the-smallest-table---pgtable-and-the-snake_case-bridge/</loc></url><url><loc>https://react-saas-course.pages.dev/037-schema-as-source-of-truth-with-drizzle/3-postgres-data-types-the-2026-subset/</loc></url><url><loc>https://react-saas-course.pages.dev/037-schema-as-source-of-truth-with-drizzle/4-not-null-defaults-and-generated-columns/</loc></url><url><loc>https://react-saas-course.pages.dev/037-schema-as-source-of-truth-with-drizzle/5-primary-keys---uuidv7-and-identity-bigint/</loc></url><url><loc>https://react-saas-course.pages.dev/037-schema-as-source-of-truth-with-drizzle/6-foreign-keys-and-on-delete/</loc></url><url><loc>https://react-saas-course.pages.dev/037-schema-as-source-of-truth-with-drizzle/7-unique-and-check-constraints/</loc></url><url><loc>https://react-saas-course.pages.dev/037-schema-as-source-of-truth-with-drizzle/8-many-to-many-junction-tables/</loc></url><url><loc>https://react-saas-course.pages.dev/037-schema-as-source-of-truth-with-drizzle/9-drizzle-relations-v2/</loc></url><url><loc>https://react-saas-course.pages.dev/037-schema-as-source-of-truth-with-drizzle/10-inferselect-and-inferinsert/</loc></url><url><loc>https://react-saas-course.pages.dev/037-schema-as-source-of-truth-with-drizzle/11-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/038-querying-and-mutating/1-crud-and-the-four-chain-methods/</loc></url><url><loc>https://react-saas-course.pages.dev/038-querying-and-mutating/2-joining-tables/</loc></url><url><loc>https://react-saas-course.pages.dev/038-querying-and-mutating/3-nested-reads-with-the-relational-api/</loc></url><url><loc>https://react-saas-course.pages.dev/038-querying-and-mutating/4-aggregations-and-grouping/</loc></url><url><loc>https://react-saas-course.pages.dev/038-querying-and-mutating/5-upserts-and-returning/</loc></url><url><loc>https://react-saas-course.pages.dev/038-querying-and-mutating/6-cursor-pagination/</loc></url><url><loc>https://react-saas-course.pages.dev/038-querying-and-mutating/7-subqueries-and-ctes/</loc></url><url><loc>https://react-saas-course.pages.dev/038-querying-and-mutating/8-full-text-search-in-postgres/</loc></url><url><loc>https://react-saas-course.pages.dev/038-querying-and-mutating/9-reading-and-writing-jsonb-columns/</loc></url><url><loc>https://react-saas-course.pages.dev/038-querying-and-mutating/10-the-raw-sql-escape-hatch/</loc></url><url><loc>https://react-saas-course.pages.dev/038-querying-and-mutating/11-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/039-indexes-plans-and-transactions/1-indexes/</loc></url><url><loc>https://react-saas-course.pages.dev/039-indexes-plans-and-transactions/2-spotting-n1/</loc></url><url><loc>https://react-saas-course.pages.dev/039-indexes-plans-and-transactions/3-reading-explain-analyze/</loc></url><url><loc>https://react-saas-course.pages.dev/039-indexes-plans-and-transactions/4-transactions/</loc></url><url><loc>https://react-saas-course.pages.dev/039-indexes-plans-and-transactions/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/040-migrations-and-seeding/1-the-drizzle-kit-daily-loop/</loc></url><url><loc>https://react-saas-course.pages.dev/040-migrations-and-seeding/2-production-safe-migrations/</loc></url><url><loc>https://react-saas-course.pages.dev/040-migrations-and-seeding/3-deterministic-seeding-with-drizzle-seed/</loc></url><url><loc>https://react-saas-course.pages.dev/040-migrations-and-seeding/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/041-project---the-org-scoped-invoicing-data-layer/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/041-project---the-org-scoped-invoicing-data-layer/2-type-safe-env-vars/</loc></url><url><loc>https://react-saas-course.pages.dev/041-project---the-org-scoped-invoicing-data-layer/3-schema-and-init-migration/</loc></url><url><loc>https://react-saas-course.pages.dev/041-project---the-org-scoped-invoicing-data-layer/4-deterministic-seed/</loc></url><url><loc>https://react-saas-course.pages.dev/041-project---the-org-scoped-invoicing-data-layer/5-the-tenant-scoped-invoice-list-with-cursor-pagination/</loc></url><url><loc>https://react-saas-course.pages.dev/041-project---the-org-scoped-invoicing-data-layer/6-the-single-round-trip-invoice-detail-read/</loc></url><url><loc>https://react-saas-course.pages.dev/042-zod-4---the-validation-contract/1-the-eight-builders/</loc></url><url><loc>https://react-saas-course.pages.dev/042-zod-4---the-validation-contract/2-formats-over-regexes/</loc></url><url><loc>https://react-saas-course.pages.dev/042-zod-4---the-validation-contract/3-checks-and-transforms/</loc></url><url><loc>https://react-saas-course.pages.dev/042-zod-4---the-validation-contract/4-derive-dont-duplicate/</loc></url><url><loc>https://react-saas-course.pages.dev/042-zod-4---the-validation-contract/5-parse-safeparse-and-the-error-contract/</loc></url><url><loc>https://react-saas-course.pages.dev/042-zod-4---the-validation-contract/6-crossing-the-formdata-boundary/</loc></url><url><loc>https://react-saas-course.pages.dev/042-zod-4---the-validation-contract/7-drizzle-zod---one-source-of-truth/</loc></url><url><loc>https://react-saas-course.pages.dev/042-zod-4---the-validation-contract/8-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/043-server-actions/1-the-use-server-seam/</loc></url><url><loc>https://react-saas-course.pages.dev/043-server-actions/2-parse-on-entry-every-time/</loc></url><url><loc>https://react-saas-course.pages.dev/043-server-actions/3-result-or-throw/</loc></url><url><loc>https://react-saas-course.pages.dev/043-server-actions/4-thin-actions-pure--lib/</loc></url><url><loc>https://react-saas-course.pages.dev/043-server-actions/5-after-the-write/</loc></url><url><loc>https://react-saas-course.pages.dev/043-server-actions/6-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/044-forms-the-platform-way/1-uncontrolled-inputs-and-the-formdata-contract/</loc></url><url><loc>https://react-saas-course.pages.dev/044-forms-the-platform-way/2-wiring-the-action-prop/</loc></url><url><loc>https://react-saas-course.pages.dev/044-forms-the-platform-way/3-useactionstate---pending-state-and-the-result/</loc></url><url><loc>https://react-saas-course.pages.dev/044-forms-the-platform-way/4-useformstatus-and-the-submitbutton/</loc></url><url><loc>https://react-saas-course.pages.dev/044-forms-the-platform-way/5-instant-ui-with-useoptimistic/</loc></url><url><loc>https://react-saas-course.pages.dev/044-forms-the-platform-way/6-constraint-validation-the-cheap-layer/</loc></url><url><loc>https://react-saas-course.pages.dev/044-forms-the-platform-way/7-progressive-enhancement/</loc></url><url><loc>https://react-saas-course.pages.dev/044-forms-the-platform-way/8-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/045-react-hook-form/1-the-four-triggers-that-flip-the-choice/</loc></url><url><loc>https://react-saas-course.pages.dev/045-react-hook-form/2-the-five-primitives--useform-register-controller-handlesubmit-formstate/</loc></url><url><loc>https://react-saas-course.pages.dev/045-react-hook-form/3-zodresolver--one-schema-both-sides-of-the-wire/</loc></url><url><loc>https://react-saas-course.pages.dev/045-react-hook-form/4-usefieldarray--dynamic-lists-of-fields/</loc></url><url><loc>https://react-saas-course.pages.dev/045-react-hook-form/5-multi-step-wizards-with-formprovider/</loc></url><url><loc>https://react-saas-course.pages.dev/045-react-hook-form/6-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/046-route-handlers-and-api-contracts/1-when-to-reach-past-server-actions/</loc></url><url><loc>https://react-saas-course.pages.dev/046-route-handlers-and-api-contracts/2-wire-contracts-as-zod-schemas/</loc></url><url><loc>https://react-saas-course.pages.dev/046-route-handlers-and-api-contracts/3-methods-status-codes-and-idempotency/</loc></url><url><loc>https://react-saas-course.pages.dev/046-route-handlers-and-api-contracts/4-list-endpoints--filter-sort-search-paginate/</loc></url><url><loc>https://react-saas-course.pages.dev/046-route-handlers-and-api-contracts/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/047-project---crud-via-server-actions/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/047-project---crud-via-server-actions/2-create-an-invoice/</loc></url><url><loc>https://react-saas-course.pages.dev/047-project---crud-via-server-actions/3-edit-an-invoice/</loc></url><url><loc>https://react-saas-course.pages.dev/047-project---crud-via-server-actions/4-delete-an-invoice/</loc></url><url><loc>https://react-saas-course.pages.dev/047-project---crud-via-server-actions/5-optimistic-create/</loc></url><url><loc>https://react-saas-course.pages.dev/047-project---crud-via-server-actions/6-transactional-delete/</loc></url><url><loc>https://react-saas-course.pages.dev/048-sender-identity-and-deliverability/1-resend-and-the-first-verified-send/</loc></url><url><loc>https://react-saas-course.pages.dev/048-sender-identity-and-deliverability/2-authenticating-the-sender---spf-dkim-dmarc/</loc></url><url><loc>https://react-saas-course.pages.dev/048-sender-identity-and-deliverability/3-the-transactional-subdomain-split/</loc></url><url><loc>https://react-saas-course.pages.dev/048-sender-identity-and-deliverability/4-the-suppression-list-as-a-send-time-chokepoint/</loc></url><url><loc>https://react-saas-course.pages.dev/048-sender-identity-and-deliverability/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/049-authoring-templates/1-jsx-for-the-email-dom/</loc></url><url><loc>https://react-saas-course.pages.dev/049-authoring-templates/2-the-preview-server-loop/</loc></url><url><loc>https://react-saas-course.pages.dev/049-authoring-templates/3-readable-in-every-client/</loc></url><url><loc>https://react-saas-course.pages.dev/049-authoring-templates/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/050-project---the-welcome-email-send-path/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/050-project---the-welcome-email-send-path/2-verified-domain-ceremony/</loc></url><url><loc>https://react-saas-course.pages.dev/050-project---the-welcome-email-send-path/3-send-wrapper/</loc></url><url><loc>https://react-saas-course.pages.dev/050-project---the-welcome-email-send-path/4-the-send-path/</loc></url><url><loc>https://react-saas-course.pages.dev/051-the-auth-mental-model/1-authn-authz-and-the-401-403-split/</loc></url><url><loc>https://react-saas-course.pages.dev/051-the-auth-mental-model/2-sessions-versus-jwts-and-the-cookie-that-carries-them/</loc></url><url><loc>https://react-saas-course.pages.dev/051-the-auth-mental-model/3-oauth-21-pkce-and-the-code-for-tokens-exchange/</loc></url><url><loc>https://react-saas-course.pages.dev/051-the-auth-mental-model/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/052-better-auth-setup/1-wiring-the-auth-instance/</loc></url><url><loc>https://react-saas-course.pages.dev/052-better-auth-setup/2-schema-and-the-four-core-tables/</loc></url><url><loc>https://react-saas-course.pages.dev/052-better-auth-setup/3-session-lifetimes-and-cookie-hardening/</loc></url><url><loc>https://react-saas-course.pages.dev/052-better-auth-setup/4-reading-the-session-everywhere-with-one-call-shape/</loc></url><url><loc>https://react-saas-course.pages.dev/052-better-auth-setup/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/053-authentication-flows/1-password-sign-up/</loc></url><url><loc>https://react-saas-course.pages.dev/053-authentication-flows/2-password-sign-in/</loc></url><url><loc>https://react-saas-course.pages.dev/053-authentication-flows/3-verifying-email/</loc></url><url><loc>https://react-saas-course.pages.dev/053-authentication-flows/4-password-reset/</loc></url><url><loc>https://react-saas-course.pages.dev/053-authentication-flows/5-magic-links/</loc></url><url><loc>https://react-saas-course.pages.dev/053-authentication-flows/6-totp-and-recovery-codes/</loc></url><url><loc>https://react-saas-course.pages.dev/053-authentication-flows/7-passkeys-and-webauthn/</loc></url><url><loc>https://react-saas-course.pages.dev/053-authentication-flows/8-social-sign-in-with-oauth/</loc></url><url><loc>https://react-saas-course.pages.dev/053-authentication-flows/9-account-linking/</loc></url><url><loc>https://react-saas-course.pages.dev/053-authentication-flows/10-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/054-the-signed-in-session/1-the-two-layer-gate-in-proxyts/</loc></url><url><loc>https://react-saas-course.pages.dev/054-the-signed-in-session/2-changing-the-password-and-the-email/</loc></url><url><loc>https://react-saas-course.pages.dev/054-the-signed-in-session/3-active-sessions-and-revoke-across-devices/</loc></url><url><loc>https://react-saas-course.pages.dev/054-the-signed-in-session/4-csrf-and-xss---the-defaults-and-the-footguns/</loc></url><url><loc>https://react-saas-course.pages.dev/054-the-signed-in-session/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/055-project---emailpassword-auth-with-verification/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/055-project---emailpassword-auth-with-verification/2-sign-up-creates-the-account/</loc></url><url><loc>https://react-saas-course.pages.dev/055-project---emailpassword-auth-with-verification/3-the-email-verification-gate/</loc></url><url><loc>https://react-saas-course.pages.dev/055-project---emailpassword-auth-with-verification/4-sign-in/</loc></url><url><loc>https://react-saas-course.pages.dev/055-project---emailpassword-auth-with-verification/5-gate-the-protected-surface/</loc></url><url><loc>https://react-saas-course.pages.dev/056-organizations-as-the-tenancy-model/1-organizations-and-the-active-org/</loc></url><url><loc>https://react-saas-course.pages.dev/056-organizations-as-the-tenancy-model/2-the-tenantdb-helper/</loc></url><url><loc>https://react-saas-course.pages.dev/056-organizations-as-the-tenancy-model/3-when-rls-earns-its-cost/</loc></url><url><loc>https://react-saas-course.pages.dev/056-organizations-as-the-tenancy-model/4-wiring-rls-on-audit_logs/</loc></url><url><loc>https://react-saas-course.pages.dev/056-organizations-as-the-tenancy-model/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/057-roles-action-wrappers-and-the-audit-trail/1-owner-admin-member/</loc></url><url><loc>https://react-saas-course.pages.dev/057-roles-action-wrappers-and-the-audit-trail/2-the-authedaction-wrapper/</loc></url><url><loc>https://react-saas-course.pages.dev/057-roles-action-wrappers-and-the-audit-trail/3-the-authedroute-twin/</loc></url><url><loc>https://react-saas-course.pages.dev/057-roles-action-wrappers-and-the-audit-trail/4-the-five-member-management-flows/</loc></url><url><loc>https://react-saas-course.pages.dev/057-roles-action-wrappers-and-the-audit-trail/5-the-append-only-audit-log/</loc></url><url><loc>https://react-saas-course.pages.dev/057-roles-action-wrappers-and-the-audit-trail/6-api-keys-for-machine-callers/</loc></url><url><loc>https://react-saas-course.pages.dev/057-roles-action-wrappers-and-the-audit-trail/7-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/058-invitations-and-the-seat-handoff-lifecycle/1-the-seat-reservation-that-outlives-the-request/</loc></url><url><loc>https://react-saas-course.pages.dev/058-invitations-and-the-seat-handoff-lifecycle/2-minting-the-signed-accept-link/</loc></url><url><loc>https://react-saas-course.pages.dev/058-invitations-and-the-seat-handoff-lifecycle/3-four-arrival-shapes-on-one-accept-url/</loc></url><url><loc>https://react-saas-course.pages.dev/058-invitations-and-the-seat-handoff-lifecycle/4-the-pending-invites-surface--list-resend-revoke-collide/</loc></url><url><loc>https://react-saas-course.pages.dev/058-invitations-and-the-seat-handoff-lifecycle/5-orphans-mismatches-and-the-double-click-race/</loc></url><url><loc>https://react-saas-course.pages.dev/058-invitations-and-the-seat-handoff-lifecycle/6-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/059-project---org-rbac-and-invitations-end-to-end/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/059-project---org-rbac-and-invitations-end-to-end/2-organization-plugin-and-the-active-org-session/</loc></url><url><loc>https://react-saas-course.pages.dev/059-project---org-rbac-and-invitations-end-to-end/3-audit-log-and-rls/</loc></url><url><loc>https://react-saas-course.pages.dev/059-project---org-rbac-and-invitations-end-to-end/4-scoped-data-and-the-action-wrapper/</loc></url><url><loc>https://react-saas-course.pages.dev/059-project---org-rbac-and-invitations-end-to-end/5-send-an-invitation/</loc></url><url><loc>https://react-saas-course.pages.dev/059-project---org-rbac-and-invitations-end-to-end/6-accept-the-invitation/</loc></url><url><loc>https://react-saas-course.pages.dev/060-url-state-list-views/1-the-list-view-anatomy/</loc></url><url><loc>https://react-saas-course.pages.dev/060-url-state-list-views/2-filter-shapes-and-sort-encoding/</loc></url><url><loc>https://react-saas-course.pages.dev/060-url-state-list-views/3-typed-input-committed-url/</loc></url><url><loc>https://react-saas-course.pages.dev/060-url-state-list-views/4-cursor-by-default-offset-when-small/</loc></url><url><loc>https://react-saas-course.pages.dev/060-url-state-list-views/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/061-soft-delete-archive-and-concurrency/1-two-timestamps-three-actions/</loc></url><url><loc>https://react-saas-course.pages.dev/061-soft-delete-archive-and-concurrency/2-making-the-missing-filter-impossible/</loc></url><url><loc>https://react-saas-course.pages.dev/061-soft-delete-archive-and-concurrency/3-version-columns-and-the-honest-409/</loc></url><url><loc>https://react-saas-course.pages.dev/061-soft-delete-archive-and-concurrency/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/062-project---the-production-list-view/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/062-project---the-production-list-view/2-move-controls-to-the-url/</loc></url><url><loc>https://react-saas-course.pages.dev/062-project---the-production-list-view/3-scoped-reads-and-the-view-tabs/</loc></url><url><loc>https://react-saas-course.pages.dev/062-project---the-production-list-view/4-archive-restore-and-delete/</loc></url><url><loc>https://react-saas-course.pages.dev/062-project---the-production-list-view/5-two-tabs-one-winner/</loc></url><url><loc>https://react-saas-course.pages.dev/063-webhook-ingestion/1-verify-before-parse/</loc></url><url><loc>https://react-saas-course.pages.dev/063-webhook-ingestion/2-claim-once-mutate-once/</loc></url><url><loc>https://react-saas-course.pages.dev/063-webhook-ingestion/3-newer-wins-single-writer/</loc></url><url><loc>https://react-saas-course.pages.dev/063-webhook-ingestion/4-one-pattern-four-surfaces/</loc></url><url><loc>https://react-saas-course.pages.dev/063-webhook-ingestion/5-resend-bounces-and-complaints/</loc></url><url><loc>https://react-saas-course.pages.dev/063-webhook-ingestion/6-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/064-stripe-billing-and-plan-entitlements/1-the-stripe-object-graph/</loc></url><url><loc>https://react-saas-course.pages.dev/064-stripe-billing-and-plan-entitlements/2-starting-subscriptions-with-checkout/</loc></url><url><loc>https://react-saas-course.pages.dev/064-stripe-billing-and-plan-entitlements/3-managing-subscriptions-with-the-portal/</loc></url><url><loc>https://react-saas-course.pages.dev/064-stripe-billing-and-plan-entitlements/4-plan-entitlements-as-a-derived-view/</loc></url><url><loc>https://react-saas-course.pages.dev/064-stripe-billing-and-plan-entitlements/5-subscription-status-as-first-class-state/</loc></url><url><loc>https://react-saas-course.pages.dev/064-stripe-billing-and-plan-entitlements/6-the-thin-billing-interface/</loc></url><url><loc>https://react-saas-course.pages.dev/064-stripe-billing-and-plan-entitlements/7-when-an-sdk-adapter-earns-its-weight/</loc></url><url><loc>https://react-saas-course.pages.dev/064-stripe-billing-and-plan-entitlements/8-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/065-project---from-stripe-webhook-to-plan-entitlement/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/065-project---from-stripe-webhook-to-plan-entitlement/2-verify-before-you-parse/</loc></url><url><loc>https://react-saas-course.pages.dev/065-project---from-stripe-webhook-to-plan-entitlement/3-claim-the-event-inside-one-transaction/</loc></url><url><loc>https://react-saas-course.pages.dev/065-project---from-stripe-webhook-to-plan-entitlement/4-project-three-events-into-one-entitlement-row/</loc></url><url><loc>https://react-saas-course.pages.dev/065-project---from-stripe-webhook-to-plan-entitlement/5-ship-the-three-method-billing-interface/</loc></url><url><loc>https://react-saas-course.pages.dev/065-project---from-stripe-webhook-to-plan-entitlement/6-harden-the-webhook-against-forged-tenancy/</loc></url><url><loc>https://react-saas-course.pages.dev/066-background-work/1-inline-then-after/</loc></url><url><loc>https://react-saas-course.pages.dev/066-background-work/2-vercel-cron/</loc></url><url><loc>https://react-saas-course.pages.dev/066-background-work/3-when-triggerdev-earns-its-weight/</loc></url><url><loc>https://react-saas-course.pages.dev/066-background-work/4-defining-and-triggering-triggerdev-tasks/</loc></url><url><loc>https://react-saas-course.pages.dev/066-background-work/5-retries-waits-idempotency/</loc></url><url><loc>https://react-saas-course.pages.dev/066-background-work/6-waitpoints/</loc></url><url><loc>https://react-saas-course.pages.dev/066-background-work/7-wiring-our-app--which-workloads-go-where/</loc></url><url><loc>https://react-saas-course.pages.dev/066-background-work/8-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/067-project---durable-csv-export-with-triggerdev/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/067-project---durable-csv-export-with-triggerdev/2-the-task-boundary---schematask-and-the-per-org-queue/</loc></url><url><loc>https://react-saas-course.pages.dev/067-project---durable-csv-export-with-triggerdev/3-one-checkpoint-per-page/</loc></url><url><loc>https://react-saas-course.pages.dev/067-project---durable-csv-export-with-triggerdev/4-email-and-audit-log/</loc></url><url><loc>https://react-saas-course.pages.dev/068-object-storage/1-defending-the-no--when-object-storage-earns-its-weight/</loc></url><url><loc>https://react-saas-course.pages.dev/068-object-storage/2-standing-up-r2--buckets-scoped-tokens-and-cors/</loc></url><url><loc>https://react-saas-course.pages.dev/068-object-storage/3-presigned-urls--signing-the-upload-seam/</loc></url><url><loc>https://react-saas-course.pages.dev/068-object-storage/4-postgres-owns-identity-r2-owns-bytes/</loc></url><url><loc>https://react-saas-course.pages.dev/068-object-storage/5-wiring-r2-into-our-app--two-workloads-one-mechanism/</loc></url><url><loc>https://react-saas-course.pages.dev/068-object-storage/6-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/069-project---presigned-r2-upload/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/069-project---presigned-r2-upload/2-sign-the-put-no-db-write/</loc></url><url><loc>https://react-saas-course.pages.dev/069-project---presigned-r2-upload/3-browser-put-head-then-insert/</loc></url><url><loc>https://react-saas-course.pages.dev/069-project---presigned-r2-upload/4-fresh-per-render-gets/</loc></url><url><loc>https://react-saas-course.pages.dev/069-project---presigned-r2-upload/5-real-downloadurl-for-the-export/</loc></url><url><loc>https://react-saas-course.pages.dev/070-the-notification-dispatcher/1-one-seam-many-channels/</loc></url><url><loc>https://react-saas-course.pages.dev/070-the-notification-dispatcher/2-email-and-inbox-channels/</loc></url><url><loc>https://react-saas-course.pages.dev/070-the-notification-dispatcher/3-preferences-read-once-default-on/</loc></url><url><loc>https://react-saas-course.pages.dev/070-the-notification-dispatcher/4-dedup-the-rapid-duplicates/</loc></url><url><loc>https://react-saas-course.pages.dev/070-the-notification-dispatcher/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/071-project---notification-dispatcher/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/071-project---notification-dispatcher/2-registry-dispatcher-and-dedup/</loc></url><url><loc>https://react-saas-course.pages.dev/071-project---notification-dispatcher/3-channels-and-preferences-live/</loc></url><url><loc>https://react-saas-course.pages.dev/071-project---notification-dispatcher/4-wire-the-three-call-sites/</loc></url><url><loc>https://react-saas-course.pages.dev/072-cache-decisions-as-architecture/1-route-classes-and-the-tag-scheme/</loc></url><url><loc>https://react-saas-course.pages.dev/072-cache-decisions-as-architecture/2-picking-the-right-invalidation-call/</loc></url><url><loc>https://react-saas-course.pages.dev/072-cache-decisions-as-architecture/3-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/073-project---caching-the-invoices-list-with-tag-driven-invalidation/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/073-project---caching-the-invoices-list-with-tag-driven-invalidation/2-cache-the-reads/</loc></url><url><loc>https://react-saas-course.pages.dev/073-project---caching-the-invoices-list-with-tag-driven-invalidation/3-read-your-writes/</loc></url><url><loc>https://react-saas-course.pages.dev/073-project---caching-the-invoices-list-with-tag-driven-invalidation/4-eventual-invalidation/</loc></url><url><loc>https://react-saas-course.pages.dev/074-rate-limiting-with-upstash-redis/1-two-layers--edge-waf-and-application-limiter/</loc></url><url><loc>https://react-saas-course.pages.dev/074-rate-limiting-with-upstash-redis/2-the-ratelimit-api-surface/</loc></url><url><loc>https://react-saas-course.pages.dev/074-rate-limiting-with-upstash-redis/3-dual-keying-the-auth-endpoints/</loc></url><url><loc>https://react-saas-course.pages.dev/074-rate-limiting-with-upstash-redis/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/075-project---upstash-rate-limits-on-the-auth-surface/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/075-project---upstash-rate-limits-on-the-auth-surface/2-declare-the-limiters/</loc></url><url><loc>https://react-saas-course.pages.dev/075-project---upstash-rate-limits-on-the-auth-surface/3-gate-sign-in/</loc></url><url><loc>https://react-saas-course.pages.dev/075-project---upstash-rate-limits-on-the-auth-surface/4-gate-sign-up-per-ip/</loc></url><url><loc>https://react-saas-course.pages.dev/075-project---upstash-rate-limits-on-the-auth-surface/5-gate-reset-per-ip-and-per-email/</loc></url><url><loc>https://react-saas-course.pages.dev/076-tanstack-query/1-when-tanstack-query-earns-its-weight/</loc></url><url><loc>https://react-saas-course.pages.dev/076-tanstack-query/2-the-four-primitives-the-project-reaches-for/</loc></url><url><loc>https://react-saas-course.pages.dev/076-tanstack-query/3-wiring-tanstack-query-without-leaking-the-cache-across-requests/</loc></url><url><loc>https://react-saas-course.pages.dev/076-tanstack-query/4-the-per-invoice-comment-thread-clears-the-bar/</loc></url><url><loc>https://react-saas-course.pages.dev/076-tanstack-query/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/077-project---tanstack-query-on-optimistic-comments/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/077-project---tanstack-query-on-optimistic-comments/2-provider-and-ssr-hydration/</loc></url><url><loc>https://react-saas-course.pages.dev/077-project---tanstack-query-on-optimistic-comments/3-infinite-scroll-and-polling/</loc></url><url><loc>https://react-saas-course.pages.dev/077-project---tanstack-query-on-optimistic-comments/4-optimistic-add-and-rollback/</loc></url><url><loc>https://react-saas-course.pages.dev/078-zustand/1-when-zustand-earns-its-weight/</loc></url><url><loc>https://react-saas-course.pages.dev/078-zustand/2-primitives-and-the-per-request-provider/</loc></url><url><loc>https://react-saas-course.pages.dev/078-zustand/3-the-routed-wizard-end-to-end/</loc></url><url><loc>https://react-saas-course.pages.dev/078-zustand/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/079-project---routed-customer-wizard-with-zustand/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/079-project---routed-customer-wizard-with-zustand/2-build-the-store-skeleton/</loc></url><url><loc>https://react-saas-course.pages.dev/079-project---routed-customer-wizard-with-zustand/3-wire-the-forms-and-the-next-gate/</loc></url><url><loc>https://react-saas-course.pages.dev/079-project---routed-customer-wizard-with-zustand/4-submit-reset-and-guard/</loc></url><url><loc>https://react-saas-course.pages.dev/080-error-discipline/1-refuse-by-default/</loc></url><url><loc>https://react-saas-course.pages.dev/080-error-discipline/2-two-audiences-two-messages/</loc></url><url><loc>https://react-saas-course.pages.dev/080-error-discipline/3-walking-the-six-error-seams/</loc></url><url><loc>https://react-saas-course.pages.dev/080-error-discipline/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/081-the-security-baseline/1-security-headers/</loc></url><url><loc>https://react-saas-course.pages.dev/081-the-security-baseline/2-abusable-endpoint-matrix/</loc></url><url><loc>https://react-saas-course.pages.dev/081-the-security-baseline/3-the-audit-log-policy/</loc></url><url><loc>https://react-saas-course.pages.dev/081-the-security-baseline/4-retention-and-erasure/</loc></url><url><loc>https://react-saas-course.pages.dev/081-the-security-baseline/5-consent-gate/</loc></url><url><loc>https://react-saas-course.pages.dev/081-the-security-baseline/6-secrets-and-rotation/</loc></url><url><loc>https://react-saas-course.pages.dev/081-the-security-baseline/7-the-env-schema/</loc></url><url><loc>https://react-saas-course.pages.dev/081-the-security-baseline/8-supply-chain-defaults/</loc></url><url><loc>https://react-saas-course.pages.dev/081-the-security-baseline/9-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/082-project---the-pre-launch-audit-pass/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/082-project---the-pre-launch-audit-pass/2-finding-1---the-fail-closed-bypass/</loc></url><url><loc>https://react-saas-course.pages.dev/082-project---the-pre-launch-audit-pass/3-finding-2---the-xss-html-sink/</loc></url><url><loc>https://react-saas-course.pages.dev/082-project---the-pre-launch-audit-pass/4-finding-3---the-missing-audit-log-write/</loc></url><url><loc>https://react-saas-course.pages.dev/082-project---the-pre-launch-audit-pass/5-finding-4---the-csp-header-omission/</loc></url><url><loc>https://react-saas-course.pages.dev/082-project---the-pre-launch-audit-pass/6-finding-5---the-secret-in-next_public_/</loc></url><url><loc>https://react-saas-course.pages.dev/082-project---the-pre-launch-audit-pass/7-finding-6---the-missing-rate-limit-on-password-reset/</loc></url><url><loc>https://react-saas-course.pages.dev/082-project---the-pre-launch-audit-pass/8-finding-7---the-dep-hygiene-gap/</loc></url><url><loc>https://react-saas-course.pages.dev/082-project---the-pre-launch-audit-pass/9-finding-8---the-gdpr-deletion-gap/</loc></url><url><loc>https://react-saas-course.pages.dev/082-project---the-pre-launch-audit-pass/10-commit-and-self-grade/</loc></url><url><loc>https://react-saas-course.pages.dev/083-time-dates-and-timezones/1-storage-domain-edge/</loc></url><url><loc>https://react-saas-course.pages.dev/083-time-dates-and-timezones/2-calendar-days-not-midnight-instants/</loc></url><url><loc>https://react-saas-course.pages.dev/083-time-dates-and-timezones/3-timezone-on-the-profile/</loc></url><url><loc>https://react-saas-course.pages.dev/083-time-dates-and-timezones/4-dst-and-recurring-jobs/</loc></url><url><loc>https://react-saas-course.pages.dev/083-time-dates-and-timezones/5-arithmetic-with-temporal/</loc></url><url><loc>https://react-saas-course.pages.dev/083-time-dates-and-timezones/6-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/084-internationalization/1-keys-catalogs-and-the-no-concatenation-rule/</loc></url><url><loc>https://react-saas-course.pages.dev/084-internationalization/2-icu-messageformat--plurals-select-gendered-forms/</loc></url><url><loc>https://react-saas-course.pages.dev/084-internationalization/3-the-intl-family/</loc></url><url><loc>https://react-saas-course.pages.dev/084-internationalization/4-the-locale-resolution-chain/</loc></url><url><loc>https://react-saas-course.pages.dev/084-internationalization/5-wiring-next-intl-into-nextjs-16/</loc></url><url><loc>https://react-saas-course.pages.dev/084-internationalization/6-hreflang-per-locale-canonicals-and-seo/</loc></url><url><loc>https://react-saas-course.pages.dev/084-internationalization/7-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/085-project---tri-locale-invoices-list/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/085-project---tri-locale-invoices-list/2-wire-next-intl-and-ship-three-catalogs/</loc></url><url><loc>https://react-saas-course.pages.dev/085-project---tri-locale-invoices-list/3-dates-in-tz-currency-from-data/</loc></url><url><loc>https://react-saas-course.pages.dev/085-project---tri-locale-invoices-list/4-emit-hreflang-sitemap-alternates-and-per-locale-og/</loc></url><url><loc>https://react-saas-course.pages.dev/086-the-shape-of-a-test-suite/1-picking-vitest-and-wiring-the-runner/</loc></url><url><loc>https://react-saas-course.pages.dev/086-the-shape-of-a-test-suite/2-the-honeycomb-shape-for-a-nextjs-saas/</loc></url><url><loc>https://react-saas-course.pages.dev/086-the-shape-of-a-test-suite/3-coverage-as-a-diagnostic/</loc></url><url><loc>https://react-saas-course.pages.dev/086-the-shape-of-a-test-suite/4-arrange-act-assert-one-behavior/</loc></url><url><loc>https://react-saas-course.pages.dev/086-the-shape-of-a-test-suite/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/087-unit-tests-for-lib/1-pure-function-tests-the-daily-shape/</loc></url><url><loc>https://react-saas-course.pages.dev/087-unit-tests-for-lib/2-factories-over-shared-fixtures/</loc></url><url><loc>https://react-saas-course.pages.dev/087-unit-tests-for-lib/3-pinning-time-ids-and-randomness/</loc></url><url><loc>https://react-saas-course.pages.dev/087-unit-tests-for-lib/4-type-level-tests-with-expecttypeof/</loc></url><url><loc>https://react-saas-course.pages.dev/087-unit-tests-for-lib/5-async-tests-without-the-forgotten-await-trap/</loc></url><url><loc>https://react-saas-course.pages.dev/087-unit-tests-for-lib/6-asserting-the-unhappy-path/</loc></url><url><loc>https://react-saas-course.pages.dev/087-unit-tests-for-lib/7-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/088-integration-tests-at-the-seams/1-rollback-against-real-postgres/</loc></url><url><loc>https://react-saas-course.pages.dev/088-integration-tests-at-the-seams/2-one-database-per-worker/</loc></url><url><loc>https://react-saas-course.pages.dev/088-integration-tests-at-the-seams/3-signedinas-fixture/</loc></url><url><loc>https://react-saas-course.pages.dev/088-integration-tests-at-the-seams/4-mock-the-wire/</loc></url><url><loc>https://react-saas-course.pages.dev/088-integration-tests-at-the-seams/5-msw-mechanics/</loc></url><url><loc>https://react-saas-course.pages.dev/088-integration-tests-at-the-seams/6-webhook-receivers-under-test/</loc></url><url><loc>https://react-saas-course.pages.dev/088-integration-tests-at-the-seams/7-server-action-tests/</loc></url><url><loc>https://react-saas-course.pages.dev/088-integration-tests-at-the-seams/8-flake-is-structural/</loc></url><url><loc>https://react-saas-course.pages.dev/088-integration-tests-at-the-seams/9-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/089-component-tests-off-by-default/1-when-rtl-earns-its-weight/</loc></url><url><loc>https://react-saas-course.pages.dev/089-component-tests-off-by-default/2-the-jsdom-project-and-the-render-helper/</loc></url><url><loc>https://react-saas-course.pages.dev/089-component-tests-off-by-default/3-the-query-ladder-is-the-accessibility-audit/</loc></url><url><loc>https://react-saas-course.pages.dev/089-component-tests-off-by-default/4-the-catalog--five-components-that-earn-the-test/</loc></url><url><loc>https://react-saas-course.pages.dev/089-component-tests-off-by-default/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/090-e2e-on-money-paths-only/1-the-money-path-filter/</loc></url><url><loc>https://react-saas-course.pages.dev/090-e2e-on-money-paths-only/2-config-storagestate-and-the-trace-viewer/</loc></url><url><loc>https://react-saas-course.pages.dev/090-e2e-on-money-paths-only/3-the-four-path-catalog/</loc></url><url><loc>https://react-saas-course.pages.dev/090-e2e-on-money-paths-only/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/091-project---testing-the-stripe-webhook-and-checkout-money-path/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/091-project---testing-the-stripe-webhook-and-checkout-money-path/2-reading-the-test-harness/</loc></url><url><loc>https://react-saas-course.pages.dev/091-project---testing-the-stripe-webhook-and-checkout-money-path/3-the-happy-path-webhook-test/</loc></url><url><loc>https://react-saas-course.pages.dev/091-project---testing-the-stripe-webhook-and-checkout-money-path/4-replay-idempotency-test/</loc></url><url><loc>https://react-saas-course.pages.dev/091-project---testing-the-stripe-webhook-and-checkout-money-path/5-signature-rejection-test/</loc></url><url><loc>https://react-saas-course.pages.dev/091-project---testing-the-stripe-webhook-and-checkout-money-path/6-driving-checkout-end-to-end/</loc></url><url><loc>https://react-saas-course.pages.dev/092-error-monitoring-and-structured-logs/1-sentry-capture-releases-and-breadcrumbs/</loc></url><url><loc>https://react-saas-course.pages.dev/092-error-monitoring-and-structured-logs/2-structured-logs-with-correlation-ids/</loc></url><url><loc>https://react-saas-course.pages.dev/092-error-monitoring-and-structured-logs/3-the-3am-rule-and-pii-exclusion/</loc></url><url><loc>https://react-saas-course.pages.dev/092-error-monitoring-and-structured-logs/4-shipping-logs-with-vercel-drains/</loc></url><url><loc>https://react-saas-course.pages.dev/092-error-monitoring-and-structured-logs/5-server-side-debugging-with-the-inspector/</loc></url><url><loc>https://react-saas-course.pages.dev/092-error-monitoring-and-structured-logs/6-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/093-product-analytics/1-the-cookieless-floor--vercel-analytics-and-speed-insights/</loc></url><url><loc>https://react-saas-course.pages.dev/093-product-analytics/2-when-posthog-earns-its-weight/</loc></url><url><loc>https://react-saas-course.pages.dev/093-product-analytics/3-wiring-posthog-through-the-consent-gate/</loc></url><url><loc>https://react-saas-course.pages.dev/093-product-analytics/4-events-properties-and-the-identify-handshake/</loc></url><url><loc>https://react-saas-course.pages.dev/093-product-analytics/5-flags-rollouts-and-experiments-on-one-primitive/</loc></url><url><loc>https://react-saas-course.pages.dev/093-product-analytics/6-session-replay-with-masking-by-default/</loc></url><url><loc>https://react-saas-course.pages.dev/093-product-analytics/7-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/094-performance-vigilance/1-the-core-web-vitals/</loc></url><url><loc>https://react-saas-course.pages.dev/094-performance-vigilance/2-priority-on-the-lcp-element/</loc></url><url><loc>https://react-saas-course.pages.dev/094-performance-vigilance/3-the-barrel-export-trap/</loc></url><url><loc>https://react-saas-course.pages.dev/094-performance-vigilance/4-reading-the-bundle-treemap/</loc></url><url><loc>https://react-saas-course.pages.dev/094-performance-vigilance/5-lighthouse-as-the-pre-launch-gate/</loc></url><url><loc>https://react-saas-course.pages.dev/094-performance-vigilance/6-rsc-waterfalls-and-promiseall/</loc></url><url><loc>https://react-saas-course.pages.dev/094-performance-vigilance/7-indexes-and-n1-in-production/</loc></url><url><loc>https://react-saas-course.pages.dev/094-performance-vigilance/8-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/095-project---wire-observability-audit-performance/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/095-project---wire-observability-audit-performance/2-the-audit-method/</loc></url><url><loc>https://react-saas-course.pages.dev/095-project---wire-observability-audit-performance/3-wire-sentry/</loc></url><url><loc>https://react-saas-course.pages.dev/095-project---wire-observability-audit-performance/4-the-production-logger-seam/</loc></url><url><loc>https://react-saas-course.pages.dev/095-project---wire-observability-audit-performance/5-gate-posthog-behind-consent/</loc></url><url><loc>https://react-saas-course.pages.dev/095-project---wire-observability-audit-performance/6-document-the-performance-findings/</loc></url><url><loc>https://react-saas-course.pages.dev/095-project---wire-observability-audit-performance/7-verify-and-self-grade/</loc></url><url><loc>https://react-saas-course.pages.dev/096-git-as-shipping-discipline/1-trunk-based-git-for-teams/</loc></url><url><loc>https://react-saas-course.pages.dev/096-git-as-shipping-discipline/2-reflog-bisect--rescue/</loc></url><url><loc>https://react-saas-course.pages.dev/096-git-as-shipping-discipline/3-the-pull-request-as-designed-artifact/</loc></url><url><loc>https://react-saas-course.pages.dev/096-git-as-shipping-discipline/4-rulesets-that-enforce-the-workflow/</loc></url><url><loc>https://react-saas-course.pages.dev/096-git-as-shipping-discipline/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/097-the-ci-gate-on-github-actions/1-github-actions-primitives/</loc></url><url><loc>https://react-saas-course.pages.dev/097-the-ci-gate-on-github-actions/2-the-four-job-merge-gate/</loc></url><url><loc>https://react-saas-course.pages.dev/097-the-ci-gate-on-github-actions/3-signal-checks-and-dependency-hygiene/</loc></url><url><loc>https://react-saas-course.pages.dev/097-the-ci-gate-on-github-actions/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/098-ship-to-vercel-and-go-live/1-the-push-is-the-deploy-model/</loc></url><url><loc>https://react-saas-course.pages.dev/098-ship-to-vercel-and-go-live/2-from-repo-to-live-url/</loc></url><url><loc>https://react-saas-course.pages.dev/098-ship-to-vercel-and-go-live/3-region-runtime-and-fluid-compute/</loc></url><url><loc>https://react-saas-course.pages.dev/098-ship-to-vercel-and-go-live/4-custom-domains-and-automatic-ssl/</loc></url><url><loc>https://react-saas-course.pages.dev/098-ship-to-vercel-and-go-live/5-a-neon-branch-per-preview/</loc></url><url><loc>https://react-saas-course.pages.dev/098-ship-to-vercel-and-go-live/6-env-vars-across-dev-preview-and-prod/</loc></url><url><loc>https://react-saas-course.pages.dev/098-ship-to-vercel-and-go-live/7-two-layer-rollback-when-prod-breaks/</loc></url><url><loc>https://react-saas-course.pages.dev/098-ship-to-vercel-and-go-live/8-the-launch-checklist/</loc></url><url><loc>https://react-saas-course.pages.dev/098-ship-to-vercel-and-go-live/9-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/099-migrating-a-live-schema-without-an-outage/1-expand-migrate-contract/</loc></url><url><loc>https://react-saas-course.pages.dev/099-migrating-a-live-schema-without-an-outage/2-which-migrations-need-the-cadence/</loc></url><url><loc>https://react-saas-course.pages.dev/099-migrating-a-live-schema-without-an-outage/3-rehearsing-on-a-neon-preview-branch/</loc></url><url><loc>https://react-saas-course.pages.dev/099-migrating-a-live-schema-without-an-outage/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/100-project---ship-to-production-then-live-migrate-the-schema/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/100-project---ship-to-production-then-live-migrate-the-schema/2-from-green-repo-to-a-live-production-url/</loc></url><url><loc>https://react-saas-course.pages.dev/100-project---ship-to-production-then-live-migrate-the-schema/3-pr-1-expand---add-the-nullable-subtotal-and-tax-columns/</loc></url><url><loc>https://react-saas-course.pages.dev/100-project---ship-to-production-then-live-migrate-the-schema/4-pr-2-migrate--dual-write-backfill-dual-read/</loc></url><url><loc>https://react-saas-course.pages.dev/100-project---ship-to-production-then-live-migrate-the-schema/5-pr-3---contract/</loc></url><url><loc>https://react-saas-course.pages.dev/100-project---ship-to-production-then-live-migrate-the-schema/6-rollback-rehearsal-and-the-schema-caveat/</loc></url><url><loc>https://react-saas-course.pages.dev/101-docs-that-live-next-to-the-truth/1-the-four-jobs-of-docs/</loc></url><url><loc>https://react-saas-course.pages.dev/101-docs-that-live-next-to-the-truth/2-the-thin-readme/</loc></url><url><loc>https://react-saas-course.pages.dev/101-docs-that-live-next-to-the-truth/3-agentsmd/</loc></url><url><loc>https://react-saas-course.pages.dev/101-docs-that-live-next-to-the-truth/4-adrs---one-decision-per-file/</loc></url><url><loc>https://react-saas-course.pages.dev/101-docs-that-live-next-to-the-truth/5-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/102-docs-that-live-in-the-code/1-tsdoc-the-public-surface/</loc></url><url><loc>https://react-saas-course.pages.dev/102-docs-that-live-in-the-code/2-comment-the-why-not-the-what/</loc></url><url><loc>https://react-saas-course.pages.dev/102-docs-that-live-in-the-code/3-docs-ship-in-the-pr-or-theyre-already-wrong/</loc></url><url><loc>https://react-saas-course.pages.dev/102-docs-that-live-in-the-code/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/103-the-review-surface/1-where-the-eyes-go-first/</loc></url><url><loc>https://react-saas-course.pages.dev/103-the-review-surface/2-the-comment-that-lands/</loc></url><url><loc>https://react-saas-course.pages.dev/103-the-review-surface/3-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/104-project---review-a-pr-write-the-adr/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/104-project---review-a-pr-write-the-adr/2-the-auth-bypass/</loc></url><url><loc>https://react-saas-course.pages.dev/104-project---review-a-pr-write-the-adr/3-four-more-findings/</loc></url><url><loc>https://react-saas-course.pages.dev/104-project---review-a-pr-write-the-adr/4-adr-0007---the-cache-decision-worth-recording/</loc></url><url><loc>https://react-saas-course.pages.dev/105-when-ai-features-earn-their-weight/1-the-four-triggers-that-justify-an-llm-surface/</loc></url><url><loc>https://react-saas-course.pages.dev/105-when-ai-features-earn-their-weight/2-bounding-spend-before-the-surface-goes-public/</loc></url><url><loc>https://react-saas-course.pages.dev/105-when-ai-features-earn-their-weight/3-one-line-model-swaps-and-the-ai-gateway/</loc></url><url><loc>https://react-saas-course.pages.dev/105-when-ai-features-earn-their-weight/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/106-text-objects-and-the-chat-surface/1-streamtext-generatetext-and-the-route-handler-seam/</loc></url><url><loc>https://react-saas-course.pages.dev/106-text-objects-and-the-chat-surface/2-zod-schemas-as-the-model-contract/</loc></url><url><loc>https://react-saas-course.pages.dev/106-text-objects-and-the-chat-surface/3-usechat-useobject-and-the-parts-array/</loc></url><url><loc>https://react-saas-course.pages.dev/106-text-objects-and-the-chat-surface/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/107-tool-calling-generative-ui-and-retrieval/1-tools-and-the-agentic-loop/</loc></url><url><loc>https://react-saas-course.pages.dev/107-tool-calling-generative-ui-and-retrieval/2-generative-ui-via-tool-parts/</loc></url><url><loc>https://react-saas-course.pages.dev/107-tool-calling-generative-ui-and-retrieval/3-embeddings-and-pgvector-rag/</loc></url><url><loc>https://react-saas-course.pages.dev/107-tool-calling-generative-ui-and-retrieval/4-chapter-quiz/</loc></url><url><loc>https://react-saas-course.pages.dev/108-project---ask-your-invoices-chat-with-tool-calling/1-project-overview/</loc></url><url><loc>https://react-saas-course.pages.dev/108-project---ask-your-invoices-chat-with-tool-calling/2-streaming-route-under-auth-with-the-agentic-loop/</loc></url><url><loc>https://react-saas-course.pages.dev/108-project---ask-your-invoices-chat-with-tool-calling/3-the-org-scoped-getinvoicestats-tool/</loc></url><url><loc>https://react-saas-course.pages.dev/108-project---ask-your-invoices-chat-with-tool-calling/4-the-per-user-daily-token-quota/</loc></url><url><loc>https://react-saas-course.pages.dev/108-project---ask-your-invoices-chat-with-tool-calling/5-typed-usechat-tool-parts-and-the-usage-panel/</loc></url></urlset>