Solid rundown. One that bit me recently on a Next.js content+app site: don't use robots.txt to deindex pages, use noindex. I was disallowing app routes that already redirected or carried noindex, and Google ended up indexing the bare URLs as "Indexed, though blocked by robots.txt" because it couldn't crawl them to see the signal. Also worth flagging the App Router canonical gotcha: a canonical set in the root layout silently inherits to every page and created duplicates for me until I moved it per-page. Did you hit the canonical inheritance issue? :)