You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Feature] An opt-out for the provider metadata blocks on GET /api/roms #5227
Is your feature request related to a problem? Please describe.
A companion app that mirrors a RomM library onto a device walks the whole library through GET /api/roms?platform_ids=…&limit=500&offset=… on its first sync and on every forced resync. It needs about 25 fields per ROM: the ids, names, fs_size_bytes, platform, regions, languages, revision, tags, rom_user, the two cover paths and five sub-fields of metadatum. Every item nevertheless carries the full provider metadata, and that is where the bytes are.
Measured on RomM 5.3.1, one page of 500 with with_char_index=false&with_filter_values=false:
The existing opt-outs do not reach this: with_rom_id_index=false saves 25 KB per page (0.3 %), with_total=false nothing measurable, and a page of 100 takes ~0.16 s against ~0.9 s for 500, so the cost is per item rather than per request. Over a whole library that is roughly five bytes serialized on the server and parsed on the client for every one the client reads.
Describe the solution you'd like
One more opt-out in the family GET /api/roms already has (with_char_index, with_filter_values, with_rom_id_index, with_total): with_metadata=false (name yours), default true, which leaves the provider blocks off each item — the thirteen *_metadata objects, merged_ra_metadata, merged_screenshots and alternative_names — and, under the same switch or a second one, sibling_roms. metadatum and every flat field stay. Nothing changes for a caller that does not pass the flag, the v2 gallery included. #3781 and #4062 added opt-outs of the same shape for the id index and the count.
Describe alternatives you've considered
A fields= sparse-fieldset parameter: more general, but a different shape from the opt-outs the endpoint has, and harder to keep in step with the schema.
GET /api/roms/{id}/simple per ROM: the same SimpleRomSchema, so the same blobs, times the library.
Smaller pages or fewer requests on the client: measured, no effect, since the cost is per item.
Activity
perf(roms): let a list fetch leave the provider metadata off each item
andest01 commentedon Oct 12, 2026
@danielcopper see #5206 for additional ideas.
perf(roms): let a list fetch leave the provider metadata off each item