fwiw, i mainly target android, so my approach may differ from someone doing mainly ios, but…
i declare a “designed” content size of 4:3 (480x640) but then calculate the longer axis to match device aspect ratio when specifying actual content size in config.lua. (so i might end up with 480x800 or 480x854 for mdpi screens, for example)
there are very few 4:3 android devices (and none that i’m aware of that are even “more square”) so this means i’ll always “fit width, bleed tall”, (terms assume portrait orientation) aligned center/top so i don’t have to worry about letterboxed coordinates (no negative screenOriginY, for example)
when i “mock up” my screens, i target 3:2 (which is common in android, and a nice middle-ground between 4:3 and 16:9), and move things around dynamically to fit the actual content bounds i got from the device. might end up a little “tight” on those rare 4:3 devices (which are SO rare that i don’t care much) and a bit “loose” on 16:9 devices (which looks fine).
i design my backgrounds at 2:1 so they fit texture memory nicely, and easily full-bleed to 16:9 (with even a bit extra left over - as there are also a handful of devices that are just slightly taller than 16:9, aspect ~= 1.8)