ExtRoot issues

can give you better compression ratios and include the packages you're always going to need into the sysupgrade image already, so you have them at your disposal from the start - it does not automate extroot handling in any way, shape or form. extroot is a crutch, it works - but complicates stuff quite a bit.

Specifically referencing:
https://openwrt.org/docs/guide-developer/imagebuilder_frontends#openwrt-auto-extroot

+1 to everything @slh has said here... I also want to emphasize this:

I use extroot on my devices because I don't have enough internal flash memory. But, sysupgrade becomes much less straightforward. My approach simplifies it is much as possible, though (and some of it is scripted):

  • make a backup
  • remove my extroot media (sd card)
  • sysupgrade (I just use the standard sysupgrade image)
  • install critical packages to enable extroot (this could be pre-installed if I built my own images, but I don't really mind the extra step here)
  • insert media, erase the sd card extroot partition, pivot to extroot
  • install packages
  • restore config backup (or configure manually if needed).

I also agree that your content/media should be on another partition entirely relative to OpenWrt extroot -- it means that unrelated data is safe during the upgrade process since it is on a separate partition and thus not subject to being erased/rewritten the way that the extroot partition will be.