As an alternative, you can get the biggest polygons using exclusively QGIS expressions. Similar to @JGH's proposal, but you don't have to create a virtual layer, but it will still adapt dynamically to changing geometries if using geometry generator. In this case, you need no additional layer. This is if you need it for to visualize or for styling only.
However, if satisfied, you can transform it to real geometries with the same expression.
This is the expression to use:
geometry_n(
order_parts(
$geometry,
'area($geometry)',
'false'
)
,1
)
You have two possibilities:
For visualization purpose only, without creating actual geometries: add a new symbol layer, set it to Geometry generator / Geometry type: line
and paste the expression (this is what you see on the screenshot).
Create actual geometries you can use for further processing: Menu Processing / Toolbar / Geoemtry by expression
, than set the multipolygon layer as input, set polygon as output type and paste the expression from above.

aggregate(@layer, 'max', $area, filter:="id"=attribute(@parent, 'id')) = $area
, it gets the max area of the layer filter by ID and returnsTrue
(or1
) if it equals the current feature area.select by expression
from the toolbox for expample):coalesce( order_parts( $geometry, area($geometry), False))
, see: gis.stackexchange.com/a/335879/88814 - no need to useMultipart to Single part