Uv_layers null after evaluated

dg = context.evaluated_depsgraph_get()
bm = bmesh.new()

for ob in obs:
    if use_mesh_modifiers:
        ob_eval = ob.evaluated_get(dg)
        me = ob_eval.to_mesh(preserve_all_data_layers=True, depsgraph=dg)
    else:
        ob_eval = ob
        me = ob_eval.to_mesh()

    me.transform(ob.matrix_world)
    uv_names = [uvlayer.name for uvlayer in me.uv_layers]
    print(uv_names) 
    color_names = [color.name for color in me.color_attributes]
    print(color_names) 
    bm.from_mesh(me)
    ob_eval.to_mesh_clear()

When i use origin mesh, the layers printed normally:
[‘UVMap’, ‘uv’]
[‘TestBlue’, ‘Col.001’, ‘Color’, ‘TestRed’, ‘Col’, ‘Mask’]

When I use geometry node to modify vert and faces, i can get vert and index correctly, but cannot get my output color layers, and color_attributes & uv_layers is null, so what’s wrong with my code and operation?

It’s probably a variant of the problem that GN only knows about general purpose attributes and converts everything to that. I’m not really proficient with the python side of things, but maybe try to access them via me.attributes .

Eventually all this data should be turned into attributes to start with. So then we will get rid of this distinction.

Thx for ur suggestion,you are right,I finally get my loop uv and color layer by following:

uv_lay = bm.loops.layers.float_vector.get("uv") 
col_lay = bm.loops.layers.float_color.get("Col")

which previously code get null:

uv_lay = bm.loops.layers.uv.get("uv") 
col_lay = bm.loops.layers.color.get("Col")