i did some testing and here is what i found:
a) when i use autosizing cells with collection view i can't just change the constraint of a particular cell (e.g. increase cell's width by one pixel) and have collection view to notice the change - nothing changes, nor visually on the screen nor via testing what layoutAttributesForItem returns.
b) in order to change my cell width (in my case via the cell's width constraint) in addition to changing the constraint i have to call performBatchUpdates on the table.
c) it can be either an "empty" performBatchUpdates done after changing the constraint, or i can put constraint changing inside performBatchUpdates's block - the end result is the same in both cases.
d) there is some internal constraints at play (one is named "UIView-Encapsulated-Layout-Width")
e) when i change my constraint i can see a warning in the console for "Unable to simultaneously satisfy constraints" followed by "Will attempt to recover by breaking constraint" for MY constraint. despite of this - at the end of the day my constraint wins as the end result is a cell with changed width (and other cells moved accordingly, see below for more *).
f) i wasn't able getting rid of that warning other than by reducing my constraint's priority to less than required. the hypothesis is that with those two constraints at play the system's one is required and mine is not required (e.g. defaultHigh) so the console warning is not shown; but by the end of performBatchUpdates the system finally notices the change and update's it's constraint to match the new reality, so it works (*)
(*) it all kind of works... but see how weird it actually works: http shorturl.at/glqMY
here i am increasing the very first cell width by one point along with calling performBatchUpdates (as otherwise the change is ignored).
notice how the bottom cell suddenly moves (why?!).
also note how the first cell bounces
and once the first line overflows notice how the entire list redraws weirdly
obviously this behaviour is unacceptable and i need to find a better way of changing cells. the three other obvious candidates are "reloadItems at index paths", "diffable data source apply" (on iOS 13+), and ditching autosizing cells and instead of this changing the attributes of the item in question via invalidating the item's attributes (how?) and returning the new attributes via "layoutAttributesForItem".