The finish() method of the GPURenderBundleEncoder interface completes recording of the current render bundle command sequence, returning a GPURenderBundle object that can be passed into a GPURenderPassEncoder.executeBundles() call to execute those commands in a specific render pass. 
 
A GPURenderBundle object instance.
 
The following criteria must be met when calling finish(), otherwise a GPUValidationError is generated and the GPURenderBundleEncoder becomes invalid:
  - The 
GPURenderBundleEncoder is open (i.e. not already ended via a finish() call).  - The debug stack for the current render pass is empty (i.e. no render pass debug group is currently open, as opened by 
pushDebugGroup()).  
 
const renderBundleEncoder = device.createRenderBundleEncoder({
  colorFormats: [presentationFormat],
});
recordRenderPass(renderBundleEncoder);
const renderBundle = renderBundleEncoder.finish();
  The above snippet is taken from the WebGPU Samples Animometer example.