Calculate your UVs in Geometry Nodes too, based on the object’s dimensions.
(Keep in mind that geonodes-based UV editing is currently bugged. If you output your 2d vector into “UVMap” attribute, the program converts it from normal UVs into “generic attribute” which is no longer visible for shaders and UV editor. So your shader must use Attribute node with “UVMap” name specified in it in place of texture coordinates)
SteppedTransform-InstanceUVScale (1).blend (1.1 MB)
So the math behind calculating UVs is called “modulo operation”. It returns the fractional part of dividing value A to value B, such as 1.5 % 1 = 0.5. If you calculate modulos of x,y,z components of vertex coordinates, and put them back to vector form, this will be equivalent of tiling texture in Object space. Your example required some tweaking though, because even after I used Realize Instances (needed to gave access to instances’ vertex coordinates), they still were treated as having non-uniform scale and I had to look for a way to correct it. Finally, to use this new UV attribute, the output Vector have to be created and the results connected to it
Order of operations matters. The UV calculation is based on vertex coordinates, and Instances do not have them, so rotating on Instance stage is going to break the UVs. Rotation should be performed on the mesh. That means it goes after both Realize Instances (converts instances to mesh) and Capture Attribute node which was used to capture Position input for purposes of UV calculation (it will store positions as generic attribute of vertices, meaning it wont be recalculated by transformation)