diff --git a/DEPS b/DEPS
index 4fa7e3a..698d910 100644
--- a/DEPS
+++ b/DEPS
@@ -167,7 +167,7 @@
     'condition': 'dawn_node',
   },
   'third_party/gpuweb': {
-    'url': '{github_git}/gpuweb/gpuweb.git@881403b5fda2d9ac9ffc5daa24e34738205bf155',
+    'url': '{github_git}/gpuweb/gpuweb.git@16df823c91c9045b7cdf9bd0f2c0ef6d43ac95e7',
     'condition': 'dawn_node',
   },
   'third_party/gpuweb-cts': {
diff --git a/src/dawn/node/binding/Converter.cpp b/src/dawn/node/binding/Converter.cpp
index 2d1ae29..65c59a5 100644
--- a/src/dawn/node/binding/Converter.cpp
+++ b/src/dawn/node/binding/Converter.cpp
@@ -1184,6 +1184,20 @@
     return false;
 }
 
+bool Converter::Convert(wgpu::FilterMode& out, const interop::GPUMipmapFilterMode& in) {
+    out = wgpu::FilterMode::Nearest;
+    switch (in) {
+        case interop::GPUMipmapFilterMode::kNearest:
+            out = wgpu::FilterMode::Nearest;
+            return true;
+        case interop::GPUMipmapFilterMode::kLinear:
+            out = wgpu::FilterMode::Linear;
+            return true;
+    }
+    Napi::Error::New(env, "invalid value for GPUFilterMode").ThrowAsJavaScriptException();
+    return false;
+}
+
 bool Converter::Convert(wgpu::ComputePipelineDescriptor& out,
                         const interop::GPUComputePipelineDescriptor& in) {
     return Convert(out.label, in.label) &&    //
diff --git a/src/dawn/node/binding/Converter.h b/src/dawn/node/binding/Converter.h
index 2e46f0d..fb94598 100644
--- a/src/dawn/node/binding/Converter.h
+++ b/src/dawn/node/binding/Converter.h
@@ -235,6 +235,8 @@
 
     [[nodiscard]] bool Convert(wgpu::FilterMode& out, const interop::GPUFilterMode& in);
 
+    [[nodiscard]] bool Convert(wgpu::FilterMode& out, const interop::GPUMipmapFilterMode& in);
+
     [[nodiscard]] bool Convert(wgpu::ComputePipelineDescriptor& out,
                                const interop::GPUComputePipelineDescriptor& in);
 
diff --git a/src/dawn/node/binding/GPUBindGroup.cpp b/src/dawn/node/binding/GPUBindGroup.cpp
index 7b379b6..eef344f 100644
--- a/src/dawn/node/binding/GPUBindGroup.cpp
+++ b/src/dawn/node/binding/GPUBindGroup.cpp
@@ -25,11 +25,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 GPUBindGroup::GPUBindGroup(wgpu::BindGroup group) : group_(std::move(group)) {}
 
-std::variant<std::string, interop::UndefinedType> GPUBindGroup::getLabel(Napi::Env) {
+std::string GPUBindGroup::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUBindGroup::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUBindGroup::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUBindGroup.h b/src/dawn/node/binding/GPUBindGroup.h
index a8e4c0f..92d9ed7 100644
--- a/src/dawn/node/binding/GPUBindGroup.h
+++ b/src/dawn/node/binding/GPUBindGroup.h
@@ -33,8 +33,8 @@
     inline operator const wgpu::BindGroup&() const { return group_; }
 
     // interop::GPUBindGroup interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::BindGroup group_;
diff --git a/src/dawn/node/binding/GPUBindGroupLayout.cpp b/src/dawn/node/binding/GPUBindGroupLayout.cpp
index 84c519a..9538737 100644
--- a/src/dawn/node/binding/GPUBindGroupLayout.cpp
+++ b/src/dawn/node/binding/GPUBindGroupLayout.cpp
@@ -25,12 +25,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 GPUBindGroupLayout::GPUBindGroupLayout(wgpu::BindGroupLayout layout) : layout_(std::move(layout)) {}
 
-std::variant<std::string, interop::UndefinedType> GPUBindGroupLayout::getLabel(Napi::Env) {
+std::string GPUBindGroupLayout::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUBindGroupLayout::setLabel(Napi::Env,
-                                  std::variant<std::string, interop::UndefinedType> value) {
+void GPUBindGroupLayout::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUBindGroupLayout.h b/src/dawn/node/binding/GPUBindGroupLayout.h
index 484b1bd..919acd1 100644
--- a/src/dawn/node/binding/GPUBindGroupLayout.h
+++ b/src/dawn/node/binding/GPUBindGroupLayout.h
@@ -34,8 +34,8 @@
     inline operator const wgpu::BindGroupLayout&() const { return layout_; }
 
     // interop::GPUBindGroupLayout interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::BindGroupLayout layout_;
diff --git a/src/dawn/node/binding/GPUBuffer.cpp b/src/dawn/node/binding/GPUBuffer.cpp
index d9054a5..4c2a90e 100644
--- a/src/dawn/node/binding/GPUBuffer.cpp
+++ b/src/dawn/node/binding/GPUBuffer.cpp
@@ -169,11 +169,11 @@
     mapped_.clear();
 }
 
-std::variant<std::string, interop::UndefinedType> GPUBuffer::getLabel(Napi::Env) {
+std::string GPUBuffer::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUBuffer::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUBuffer::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUBuffer.h b/src/dawn/node/binding/GPUBuffer.h
index 7f96eeb..f4e1b30 100644
--- a/src/dawn/node/binding/GPUBuffer.h
+++ b/src/dawn/node/binding/GPUBuffer.h
@@ -51,8 +51,8 @@
                                         std::optional<interop::GPUSize64> size) override;
     void unmap(Napi::Env) override;
     void destroy(Napi::Env) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     void DetachMappings();
diff --git a/src/dawn/node/binding/GPUCommandBuffer.cpp b/src/dawn/node/binding/GPUCommandBuffer.cpp
index 7aa58bd..4e7794e 100644
--- a/src/dawn/node/binding/GPUCommandBuffer.cpp
+++ b/src/dawn/node/binding/GPUCommandBuffer.cpp
@@ -26,12 +26,11 @@
 
 GPUCommandBuffer::GPUCommandBuffer(wgpu::CommandBuffer cmd_buf) : cmd_buf_(std::move(cmd_buf)) {}
 
-std::variant<std::string, interop::UndefinedType> GPUCommandBuffer::getLabel(Napi::Env) {
+std::string GPUCommandBuffer::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUCommandBuffer::setLabel(Napi::Env,
-                                std::variant<std::string, interop::UndefinedType> value) {
+void GPUCommandBuffer::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUCommandBuffer.h b/src/dawn/node/binding/GPUCommandBuffer.h
index febb2af..b8ab08e 100644
--- a/src/dawn/node/binding/GPUCommandBuffer.h
+++ b/src/dawn/node/binding/GPUCommandBuffer.h
@@ -34,8 +34,8 @@
     inline operator const wgpu::CommandBuffer&() const { return cmd_buf_; }
 
     // interop::GPUCommandBuffer interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::CommandBuffer cmd_buf_;
diff --git a/src/dawn/node/binding/GPUCommandEncoder.cpp b/src/dawn/node/binding/GPUCommandEncoder.cpp
index 6d403bc..99ea8e0 100644
--- a/src/dawn/node/binding/GPUCommandEncoder.cpp
+++ b/src/dawn/node/binding/GPUCommandEncoder.cpp
@@ -205,12 +205,11 @@
     return interop::GPUCommandBuffer::Create<GPUCommandBuffer>(env, enc_.Finish(&desc));
 }
 
-std::variant<std::string, interop::UndefinedType> GPUCommandEncoder::getLabel(Napi::Env) {
+std::string GPUCommandEncoder::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUCommandEncoder::setLabel(Napi::Env,
-                                 std::variant<std::string, interop::UndefinedType> value) {
+void GPUCommandEncoder::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUCommandEncoder.h b/src/dawn/node/binding/GPUCommandEncoder.h
index d33882e..a3878c6 100644
--- a/src/dawn/node/binding/GPUCommandEncoder.h
+++ b/src/dawn/node/binding/GPUCommandEncoder.h
@@ -74,8 +74,8 @@
     interop::Interface<interop::GPUCommandBuffer> finish(
         Napi::Env env,
         interop::GPUCommandBufferDescriptor descriptor) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::CommandEncoder enc_;
diff --git a/src/dawn/node/binding/GPUComputePassEncoder.cpp b/src/dawn/node/binding/GPUComputePassEncoder.cpp
index b8ce0f5..0fc30ae 100644
--- a/src/dawn/node/binding/GPUComputePassEncoder.cpp
+++ b/src/dawn/node/binding/GPUComputePassEncoder.cpp
@@ -35,17 +35,18 @@
     enc_.SetPipeline(*pipeline.As<GPUComputePipeline>());
 }
 
-void GPUComputePassEncoder::dispatch(Napi::Env,
-                                     interop::GPUSize32 workgroupCountX,
-                                     interop::GPUSize32 workgroupCountY,
-                                     interop::GPUSize32 workgroupCountZ) {
-    enc_.Dispatch(workgroupCountX, workgroupCountY, workgroupCountZ);
+void GPUComputePassEncoder::dispatchWorkgroups(Napi::Env,
+                                               interop::GPUSize32 workgroupCountX,
+                                               interop::GPUSize32 workgroupCountY,
+                                               interop::GPUSize32 workgroupCountZ) {
+    enc_.DispatchWorkgroups(workgroupCountX, workgroupCountY, workgroupCountZ);
 }
 
-void GPUComputePassEncoder::dispatchIndirect(Napi::Env,
-                                             interop::Interface<interop::GPUBuffer> indirectBuffer,
-                                             interop::GPUSize64 indirectOffset) {
-    enc_.DispatchIndirect(*indirectBuffer.As<GPUBuffer>(), indirectOffset);
+void GPUComputePassEncoder::dispatchWorkgroupsIndirect(
+    Napi::Env,
+    interop::Interface<interop::GPUBuffer> indirectBuffer,
+    interop::GPUSize64 indirectOffset) {
+    enc_.DispatchWorkgroupsIndirect(*indirectBuffer.As<GPUBuffer>(), indirectOffset);
 }
 
 void GPUComputePassEncoder::end(Napi::Env) {
@@ -112,12 +113,11 @@
     enc_.InsertDebugMarker(markerLabel.c_str());
 }
 
-std::variant<std::string, interop::UndefinedType> GPUComputePassEncoder::getLabel(Napi::Env) {
+std::string GPUComputePassEncoder::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUComputePassEncoder::setLabel(Napi::Env,
-                                     std::variant<std::string, interop::UndefinedType> value) {
+void GPUComputePassEncoder::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUComputePassEncoder.h b/src/dawn/node/binding/GPUComputePassEncoder.h
index ab9a9e5..6f82a46 100644
--- a/src/dawn/node/binding/GPUComputePassEncoder.h
+++ b/src/dawn/node/binding/GPUComputePassEncoder.h
@@ -36,13 +36,13 @@
 
     // interop::GPUComputePassEncoder interface compliance
     void setPipeline(Napi::Env, interop::Interface<interop::GPUComputePipeline> pipeline) override;
-    void dispatch(Napi::Env,
-                  interop::GPUSize32 workgroupCountX,
-                  interop::GPUSize32 workgroupCountY,
-                  interop::GPUSize32 workgroupCountZ) override;
-    void dispatchIndirect(Napi::Env,
-                          interop::Interface<interop::GPUBuffer> indirectBuffer,
-                          interop::GPUSize64 indirectOffset) override;
+    void dispatchWorkgroups(Napi::Env,
+                            interop::GPUSize32 workgroupCountX,
+                            interop::GPUSize32 workgroupCountY,
+                            interop::GPUSize32 workgroupCountZ) override;
+    void dispatchWorkgroupsIndirect(Napi::Env,
+                                    interop::Interface<interop::GPUBuffer> indirectBuffer,
+                                    interop::GPUSize64 indirectOffset) override;
     void end(Napi::Env) override;
     void setBindGroup(Napi::Env,
                       interop::GPUIndex32 index,
@@ -57,8 +57,8 @@
     void pushDebugGroup(Napi::Env, std::string groupLabel) override;
     void popDebugGroup(Napi::Env) override;
     void insertDebugMarker(Napi::Env, std::string markerLabel) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::ComputePassEncoder enc_;
diff --git a/src/dawn/node/binding/GPUComputePipeline.cpp b/src/dawn/node/binding/GPUComputePipeline.cpp
index 8883aba..c2bfedf 100644
--- a/src/dawn/node/binding/GPUComputePipeline.cpp
+++ b/src/dawn/node/binding/GPUComputePipeline.cpp
@@ -35,12 +35,11 @@
         env, pipeline_.GetBindGroupLayout(index));
 }
 
-std::variant<std::string, interop::UndefinedType> GPUComputePipeline::getLabel(Napi::Env) {
+std::string GPUComputePipeline::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUComputePipeline::setLabel(Napi::Env,
-                                  std::variant<std::string, interop::UndefinedType> value) {
+void GPUComputePipeline::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUComputePipeline.h b/src/dawn/node/binding/GPUComputePipeline.h
index 0afb1ac..45af9f7 100644
--- a/src/dawn/node/binding/GPUComputePipeline.h
+++ b/src/dawn/node/binding/GPUComputePipeline.h
@@ -36,8 +36,8 @@
     // interop::GPUComputePipeline interface compliance
     interop::Interface<interop::GPUBindGroupLayout> getBindGroupLayout(Napi::Env,
                                                                        uint32_t index) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::ComputePipeline pipeline_;
diff --git a/src/dawn/node/binding/GPUDevice.cpp b/src/dawn/node/binding/GPUDevice.cpp
index c1aba64..163acd8 100644
--- a/src/dawn/node/binding/GPUDevice.cpp
+++ b/src/dawn/node/binding/GPUDevice.cpp
@@ -474,11 +474,11 @@
     return promise;
 }
 
-std::variant<std::string, interop::UndefinedType> GPUDevice::getLabel(Napi::Env) {
+std::string GPUDevice::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUDevice::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUDevice::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUDevice.h b/src/dawn/node/binding/GPUDevice.h
index 3e04855..57a4c2c 100644
--- a/src/dawn/node/binding/GPUDevice.h
+++ b/src/dawn/node/binding/GPUDevice.h
@@ -84,8 +84,8 @@
         Napi::Env env) override;
     void pushErrorScope(Napi::Env, interop::GPUErrorFilter filter) override;
     interop::Promise<std::optional<interop::GPUError>> popErrorScope(Napi::Env env) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
     interop::Interface<interop::EventHandler> getOnuncapturederror(Napi::Env) override;
     void setOnuncapturederror(Napi::Env, interop::Interface<interop::EventHandler> value) override;
     void addEventListener(
diff --git a/src/dawn/node/binding/GPUPipelineLayout.cpp b/src/dawn/node/binding/GPUPipelineLayout.cpp
index 4d6027c..e6f1c1a 100644
--- a/src/dawn/node/binding/GPUPipelineLayout.cpp
+++ b/src/dawn/node/binding/GPUPipelineLayout.cpp
@@ -25,12 +25,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 GPUPipelineLayout::GPUPipelineLayout(wgpu::PipelineLayout layout) : layout_(std::move(layout)) {}
 
-std::variant<std::string, interop::UndefinedType> GPUPipelineLayout::getLabel(Napi::Env) {
+std::string GPUPipelineLayout::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUPipelineLayout::setLabel(Napi::Env,
-                                 std::variant<std::string, interop::UndefinedType> value) {
+void GPUPipelineLayout::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUPipelineLayout.h b/src/dawn/node/binding/GPUPipelineLayout.h
index acdd404..f432e7a 100644
--- a/src/dawn/node/binding/GPUPipelineLayout.h
+++ b/src/dawn/node/binding/GPUPipelineLayout.h
@@ -34,8 +34,8 @@
     inline operator const wgpu::PipelineLayout&() const { return layout_; }
 
     // interop::GPUPipelineLayout interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::PipelineLayout layout_;
diff --git a/src/dawn/node/binding/GPUQuerySet.cpp b/src/dawn/node/binding/GPUQuerySet.cpp
index 8f1e935..3197d98 100644
--- a/src/dawn/node/binding/GPUQuerySet.cpp
+++ b/src/dawn/node/binding/GPUQuerySet.cpp
@@ -29,11 +29,11 @@
     query_set_.Destroy();
 }
 
-std::variant<std::string, interop::UndefinedType> GPUQuerySet::getLabel(Napi::Env) {
+std::string GPUQuerySet::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUQuerySet::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUQuerySet::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUQuerySet.h b/src/dawn/node/binding/GPUQuerySet.h
index 27944d1..7c0e9dd 100644
--- a/src/dawn/node/binding/GPUQuerySet.h
+++ b/src/dawn/node/binding/GPUQuerySet.h
@@ -34,8 +34,8 @@
 
     // interop::GPUQuerySet interface compliance
     void destroy(Napi::Env) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::QuerySet query_set_;
diff --git a/src/dawn/node/binding/GPUQueue.cpp b/src/dawn/node/binding/GPUQueue.cpp
index 7650f72..d2ab912 100644
--- a/src/dawn/node/binding/GPUQueue.cpp
+++ b/src/dawn/node/binding/GPUQueue.cpp
@@ -148,11 +148,11 @@
     UNIMPLEMENTED();
 }
 
-std::variant<std::string, interop::UndefinedType> GPUQueue::getLabel(Napi::Env) {
+std::string GPUQueue::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUQueue::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUQueue::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUQueue.h b/src/dawn/node/binding/GPUQueue.h
index cffb491..58e5209 100644
--- a/src/dawn/node/binding/GPUQueue.h
+++ b/src/dawn/node/binding/GPUQueue.h
@@ -51,8 +51,8 @@
                                     interop::GPUImageCopyExternalImage source,
                                     interop::GPUImageCopyTextureTagged destination,
                                     interop::GPUExtent3D copySize) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::Queue queue_;
diff --git a/src/dawn/node/binding/GPURenderBundle.cpp b/src/dawn/node/binding/GPURenderBundle.cpp
index ef3a0da..5c0ff2e 100644
--- a/src/dawn/node/binding/GPURenderBundle.cpp
+++ b/src/dawn/node/binding/GPURenderBundle.cpp
@@ -28,11 +28,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 GPURenderBundle::GPURenderBundle(wgpu::RenderBundle bundle) : bundle_(std::move(bundle)) {}
 
-std::variant<std::string, interop::UndefinedType> GPURenderBundle::getLabel(Napi::Env) {
+std::string GPURenderBundle::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPURenderBundle::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPURenderBundle::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPURenderBundle.h b/src/dawn/node/binding/GPURenderBundle.h
index bd31f6b..23d0ad2 100644
--- a/src/dawn/node/binding/GPURenderBundle.h
+++ b/src/dawn/node/binding/GPURenderBundle.h
@@ -34,8 +34,8 @@
     inline operator const wgpu::RenderBundle&() const { return bundle_; }
 
     // interop::GPURenderBundle interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::RenderBundle bundle_;
diff --git a/src/dawn/node/binding/GPURenderBundleEncoder.cpp b/src/dawn/node/binding/GPURenderBundleEncoder.cpp
index f07db2f..801eaa2 100644
--- a/src/dawn/node/binding/GPURenderBundleEncoder.cpp
+++ b/src/dawn/node/binding/GPURenderBundleEncoder.cpp
@@ -181,12 +181,11 @@
     enc_.DrawIndexedIndirect(b, o);
 }
 
-std::variant<std::string, interop::UndefinedType> GPURenderBundleEncoder::getLabel(Napi::Env) {
+std::string GPURenderBundleEncoder::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPURenderBundleEncoder::setLabel(Napi::Env,
-                                      std::variant<std::string, interop::UndefinedType> value) {
+void GPURenderBundleEncoder::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPURenderBundleEncoder.h b/src/dawn/node/binding/GPURenderBundleEncoder.h
index c65e60a..130a5bd 100644
--- a/src/dawn/node/binding/GPURenderBundleEncoder.h
+++ b/src/dawn/node/binding/GPURenderBundleEncoder.h
@@ -76,8 +76,8 @@
     void drawIndexedIndirect(Napi::Env,
                              interop::Interface<interop::GPUBuffer> indirectBuffer,
                              interop::GPUSize64 indirectOffset) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::RenderBundleEncoder enc_;
diff --git a/src/dawn/node/binding/GPURenderPassEncoder.cpp b/src/dawn/node/binding/GPURenderPassEncoder.cpp
index 46997dc..ec686bc 100644
--- a/src/dawn/node/binding/GPURenderPassEncoder.cpp
+++ b/src/dawn/node/binding/GPURenderPassEncoder.cpp
@@ -241,12 +241,11 @@
     enc_.DrawIndexedIndirect(b, o);
 }
 
-std::variant<std::string, interop::UndefinedType> GPURenderPassEncoder::getLabel(Napi::Env) {
+std::string GPURenderPassEncoder::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPURenderPassEncoder::setLabel(Napi::Env,
-                                    std::variant<std::string, interop::UndefinedType> value) {
+void GPURenderPassEncoder::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPURenderPassEncoder.h b/src/dawn/node/binding/GPURenderPassEncoder.h
index 7fed340..a7cfb8e 100644
--- a/src/dawn/node/binding/GPURenderPassEncoder.h
+++ b/src/dawn/node/binding/GPURenderPassEncoder.h
@@ -95,8 +95,8 @@
     void drawIndexedIndirect(Napi::Env,
                              interop::Interface<interop::GPUBuffer> indirectBuffer,
                              interop::GPUSize64 indirectOffset) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::RenderPassEncoder enc_;
diff --git a/src/dawn/node/binding/GPURenderPipeline.cpp b/src/dawn/node/binding/GPURenderPipeline.cpp
index d45386e..cd236c0 100644
--- a/src/dawn/node/binding/GPURenderPipeline.cpp
+++ b/src/dawn/node/binding/GPURenderPipeline.cpp
@@ -35,12 +35,11 @@
         env, pipeline_.GetBindGroupLayout(index));
 }
 
-std::variant<std::string, interop::UndefinedType> GPURenderPipeline::getLabel(Napi::Env) {
+std::string GPURenderPipeline::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPURenderPipeline::setLabel(Napi::Env,
-                                 std::variant<std::string, interop::UndefinedType> value) {
+void GPURenderPipeline::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPURenderPipeline.h b/src/dawn/node/binding/GPURenderPipeline.h
index b37f435..26f8ad6 100644
--- a/src/dawn/node/binding/GPURenderPipeline.h
+++ b/src/dawn/node/binding/GPURenderPipeline.h
@@ -36,8 +36,8 @@
     // interop::GPURenderPipeline interface compliance
     interop::Interface<interop::GPUBindGroupLayout> getBindGroupLayout(Napi::Env,
                                                                        uint32_t index) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::RenderPipeline pipeline_;
diff --git a/src/dawn/node/binding/GPUSampler.cpp b/src/dawn/node/binding/GPUSampler.cpp
index a2f95b7..77f395d 100644
--- a/src/dawn/node/binding/GPUSampler.cpp
+++ b/src/dawn/node/binding/GPUSampler.cpp
@@ -26,11 +26,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 GPUSampler::GPUSampler(wgpu::Sampler sampler) : sampler_(std::move(sampler)) {}
 
-std::variant<std::string, interop::UndefinedType> GPUSampler::getLabel(Napi::Env) {
+std::string GPUSampler::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUSampler::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUSampler::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUSampler.h b/src/dawn/node/binding/GPUSampler.h
index a15897c..578469d 100644
--- a/src/dawn/node/binding/GPUSampler.h
+++ b/src/dawn/node/binding/GPUSampler.h
@@ -32,8 +32,8 @@
     inline operator const wgpu::Sampler&() const { return sampler_; }
 
     // interop::GPUSampler interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::Sampler sampler_;
diff --git a/src/dawn/node/binding/GPUShaderModule.cpp b/src/dawn/node/binding/GPUShaderModule.cpp
index 8f44982..610f6c8 100644
--- a/src/dawn/node/binding/GPUShaderModule.cpp
+++ b/src/dawn/node/binding/GPUShaderModule.cpp
@@ -104,11 +104,11 @@
     return promise;
 }
 
-std::variant<std::string, interop::UndefinedType> GPUShaderModule::getLabel(Napi::Env) {
+std::string GPUShaderModule::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUShaderModule::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUShaderModule::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUShaderModule.h b/src/dawn/node/binding/GPUShaderModule.h
index de4c258..ccaf65c 100644
--- a/src/dawn/node/binding/GPUShaderModule.h
+++ b/src/dawn/node/binding/GPUShaderModule.h
@@ -38,8 +38,8 @@
     // interop::GPUShaderModule interface compliance
     interop::Promise<interop::Interface<interop::GPUCompilationInfo>> compilationInfo(
         Napi::Env) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::ShaderModule shader_;
diff --git a/src/dawn/node/binding/GPUTexture.cpp b/src/dawn/node/binding/GPUTexture.cpp
index 26f354a..61ca716 100644
--- a/src/dawn/node/binding/GPUTexture.cpp
+++ b/src/dawn/node/binding/GPUTexture.cpp
@@ -54,11 +54,11 @@
     texture_.Destroy();
 }
 
-std::variant<std::string, interop::UndefinedType> GPUTexture::getLabel(Napi::Env) {
+std::string GPUTexture::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUTexture::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUTexture::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUTexture.h b/src/dawn/node/binding/GPUTexture.h
index 95d2a1d..edc96d1 100644
--- a/src/dawn/node/binding/GPUTexture.h
+++ b/src/dawn/node/binding/GPUTexture.h
@@ -37,8 +37,8 @@
         Napi::Env,
         interop::GPUTextureViewDescriptor descriptor) override;
     void destroy(Napi::Env) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::Texture texture_;
diff --git a/src/dawn/node/binding/GPUTextureView.cpp b/src/dawn/node/binding/GPUTextureView.cpp
index df7514a..98ce3a0 100644
--- a/src/dawn/node/binding/GPUTextureView.cpp
+++ b/src/dawn/node/binding/GPUTextureView.cpp
@@ -25,11 +25,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 GPUTextureView::GPUTextureView(wgpu::TextureView view) : view_(std::move(view)) {}
 
-std::variant<std::string, interop::UndefinedType> GPUTextureView::getLabel(Napi::Env) {
+std::string GPUTextureView::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUTextureView::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUTextureView::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUTextureView.h b/src/dawn/node/binding/GPUTextureView.h
index 93917bc..494c307 100644
--- a/src/dawn/node/binding/GPUTextureView.h
+++ b/src/dawn/node/binding/GPUTextureView.h
@@ -34,8 +34,8 @@
     inline operator const wgpu::TextureView&() const { return view_; }
 
     // interop::GPUTextureView interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::TextureView view_;
