diff --git a/src/dawn_node/binding/GPUAdapter.cpp b/src/dawn_node/binding/GPUAdapter.cpp
index 82fc7b1..82378d8 100644
--- a/src/dawn_node/binding/GPUAdapter.cpp
+++ b/src/dawn_node/binding/GPUAdapter.cpp
@@ -92,7 +92,43 @@
     }
 
     interop::Interface<interop::GPUSupportedLimits> GPUAdapter::getLimits(Napi::Env env) {
-        return interop::GPUSupportedLimits::Create<GPUSupportedLimits>(env);
+        WGPUSupportedLimits limits{};
+        if (!adapter_.GetLimits(&limits)) {
+            Napi::Error::New(env, "failed to get adapter limits").ThrowAsJavaScriptException();
+        }
+
+        wgpu::SupportedLimits wgpuLimits{};
+
+#define COPY_LIMIT(LIMIT) wgpuLimits.limits.LIMIT = limits.limits.LIMIT
+        COPY_LIMIT(maxTextureDimension1D);
+        COPY_LIMIT(maxTextureDimension2D);
+        COPY_LIMIT(maxTextureDimension3D);
+        COPY_LIMIT(maxTextureArrayLayers);
+        COPY_LIMIT(maxBindGroups);
+        COPY_LIMIT(maxDynamicUniformBuffersPerPipelineLayout);
+        COPY_LIMIT(maxDynamicStorageBuffersPerPipelineLayout);
+        COPY_LIMIT(maxSampledTexturesPerShaderStage);
+        COPY_LIMIT(maxSamplersPerShaderStage);
+        COPY_LIMIT(maxStorageBuffersPerShaderStage);
+        COPY_LIMIT(maxStorageTexturesPerShaderStage);
+        COPY_LIMIT(maxUniformBuffersPerShaderStage);
+        COPY_LIMIT(maxUniformBufferBindingSize);
+        COPY_LIMIT(maxStorageBufferBindingSize);
+        COPY_LIMIT(minUniformBufferOffsetAlignment);
+        COPY_LIMIT(minStorageBufferOffsetAlignment);
+        COPY_LIMIT(maxVertexBuffers);
+        COPY_LIMIT(maxVertexAttributes);
+        COPY_LIMIT(maxVertexBufferArrayStride);
+        COPY_LIMIT(maxInterStageShaderComponents);
+        COPY_LIMIT(maxComputeWorkgroupStorageSize);
+        COPY_LIMIT(maxComputeInvocationsPerWorkgroup);
+        COPY_LIMIT(maxComputeWorkgroupSizeX);
+        COPY_LIMIT(maxComputeWorkgroupSizeY);
+        COPY_LIMIT(maxComputeWorkgroupSizeZ);
+        COPY_LIMIT(maxComputeWorkgroupsPerDimension);
+#undef COPY_LIMIT
+
+        return interop::GPUSupportedLimits::Create<GPUSupportedLimits>(env, wgpuLimits);
     }
 
     bool GPUAdapter::getIsFallbackAdapter(Napi::Env) {
diff --git a/src/dawn_node/binding/GPUDevice.cpp b/src/dawn_node/binding/GPUDevice.cpp
index 73b5e18..0870307 100644
--- a/src/dawn_node/binding/GPUDevice.cpp
+++ b/src/dawn_node/binding/GPUDevice.cpp
@@ -126,7 +126,11 @@
     }
 
     interop::Interface<interop::GPUSupportedLimits> GPUDevice::getLimits(Napi::Env env) {
-        return interop::GPUSupportedLimits::Create<GPUSupportedLimits>(env);
+        wgpu::SupportedLimits limits{};
+        if (!device_.GetLimits(&limits)) {
+            Napi::Error::New(env, "failed to get device limits").ThrowAsJavaScriptException();
+        }
+        return interop::GPUSupportedLimits::Create<GPUSupportedLimits>(env, limits);
     }
 
     interop::Interface<interop::GPUQueue> GPUDevice::getQueue(Napi::Env env) {
diff --git a/src/dawn_node/binding/GPUSupportedLimits.cpp b/src/dawn_node/binding/GPUSupportedLimits.cpp
index 8587031..4a8399b 100644
--- a/src/dawn_node/binding/GPUSupportedLimits.cpp
+++ b/src/dawn_node/binding/GPUSupportedLimits.cpp
@@ -20,112 +20,112 @@
     // wgpu::bindings::GPUSupportedLimits
     ////////////////////////////////////////////////////////////////////////////////
 
-    // Values taken from.
-    // https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/webgpu/gpu_supported_limits.h
-    // TODO(crbug.com/dawn/1131): Actually use limits reported by the device / adapter.
+    GPUSupportedLimits::GPUSupportedLimits(wgpu::SupportedLimits limits)
+        : limits_(std::move(limits)) {
+    }
 
     uint32_t GPUSupportedLimits::getMaxTextureDimension1D(Napi::Env) {
-        return 8192;
+        return limits_.limits.maxTextureDimension1D;
     }
 
     uint32_t GPUSupportedLimits::getMaxTextureDimension2D(Napi::Env) {
-        return 8192;
+        return limits_.limits.maxTextureDimension2D;
     }
 
     uint32_t GPUSupportedLimits::getMaxTextureDimension3D(Napi::Env) {
-        return 2048;
+        return limits_.limits.maxTextureDimension3D;
     }
 
     uint32_t GPUSupportedLimits::getMaxTextureArrayLayers(Napi::Env) {
-        return 2048;
+        return limits_.limits.maxTextureArrayLayers;
     }
 
     uint32_t GPUSupportedLimits::getMaxBindGroups(Napi::Env) {
-        return 4;
+        return limits_.limits.maxBindGroups;
     }
 
     uint32_t GPUSupportedLimits::getMaxDynamicUniformBuffersPerPipelineLayout(Napi::Env) {
-        return 8;
+        return limits_.limits.maxDynamicUniformBuffersPerPipelineLayout;
     }
 
     uint32_t GPUSupportedLimits::getMaxDynamicStorageBuffersPerPipelineLayout(Napi::Env) {
-        return 4;
+        return limits_.limits.maxDynamicStorageBuffersPerPipelineLayout;
     }
 
     uint32_t GPUSupportedLimits::getMaxSampledTexturesPerShaderStage(Napi::Env) {
-        return 16;
+        return limits_.limits.maxSampledTexturesPerShaderStage;
     }
 
     uint32_t GPUSupportedLimits::getMaxSamplersPerShaderStage(Napi::Env) {
-        return 16;
+        return limits_.limits.maxSamplersPerShaderStage;
     }
 
     uint32_t GPUSupportedLimits::getMaxStorageBuffersPerShaderStage(Napi::Env) {
-        return 4;
+        return limits_.limits.maxStorageBuffersPerShaderStage;
     }
 
     uint32_t GPUSupportedLimits::getMaxStorageTexturesPerShaderStage(Napi::Env) {
-        return 4;
+        return limits_.limits.maxStorageTexturesPerShaderStage;
     }
 
     uint32_t GPUSupportedLimits::getMaxUniformBuffersPerShaderStage(Napi::Env) {
-        return 12;
+        return limits_.limits.maxUniformBuffersPerShaderStage;
     }
 
     uint64_t GPUSupportedLimits::getMaxUniformBufferBindingSize(Napi::Env) {
-        return 16384;
+        return limits_.limits.maxUniformBufferBindingSize;
     }
 
     uint64_t GPUSupportedLimits::getMaxStorageBufferBindingSize(Napi::Env) {
-        return 134217728;
+        return limits_.limits.maxStorageBufferBindingSize;
     }
 
     uint32_t GPUSupportedLimits::getMinUniformBufferOffsetAlignment(Napi::Env) {
-        return 256;
+        return limits_.limits.minUniformBufferOffsetAlignment;
     }
 
     uint32_t GPUSupportedLimits::getMinStorageBufferOffsetAlignment(Napi::Env) {
-        return 256;
+        return limits_.limits.minStorageBufferOffsetAlignment;
     }
 
     uint32_t GPUSupportedLimits::getMaxVertexBuffers(Napi::Env) {
-        return 8;
+        return limits_.limits.maxVertexBuffers;
     }
 
     uint32_t GPUSupportedLimits::getMaxVertexAttributes(Napi::Env) {
-        return 16;
+        return limits_.limits.maxVertexAttributes;
     }
 
     uint32_t GPUSupportedLimits::getMaxVertexBufferArrayStride(Napi::Env) {
-        return 2048;
+        return limits_.limits.maxVertexBufferArrayStride;
     }
 
     uint32_t GPUSupportedLimits::getMaxInterStageShaderComponents(Napi::Env) {
-        return 60;
+        return limits_.limits.maxInterStageShaderComponents;
     }
 
     uint32_t GPUSupportedLimits::getMaxComputeWorkgroupStorageSize(Napi::Env) {
-        return 16352;
+        return limits_.limits.maxComputeWorkgroupStorageSize;
     }
 
     uint32_t GPUSupportedLimits::getMaxComputeInvocationsPerWorkgroup(Napi::Env) {
-        return 256;
+        return limits_.limits.maxComputeInvocationsPerWorkgroup;
     }
 
     uint32_t GPUSupportedLimits::getMaxComputeWorkgroupSizeX(Napi::Env) {
-        return 256;
+        return limits_.limits.maxComputeWorkgroupSizeX;
     }
 
     uint32_t GPUSupportedLimits::getMaxComputeWorkgroupSizeY(Napi::Env) {
-        return 256;
+        return limits_.limits.maxComputeWorkgroupSizeY;
     }
 
     uint32_t GPUSupportedLimits::getMaxComputeWorkgroupSizeZ(Napi::Env) {
-        return 64;
+        return limits_.limits.maxComputeWorkgroupSizeZ;
     }
 
     uint32_t GPUSupportedLimits::getMaxComputeWorkgroupsPerDimension(Napi::Env) {
-        return 65535;
+        return limits_.limits.maxComputeWorkgroupsPerDimension;
     }
 
 }}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUSupportedLimits.h b/src/dawn_node/binding/GPUSupportedLimits.h
index b50753d..faed813 100644
--- a/src/dawn_node/binding/GPUSupportedLimits.h
+++ b/src/dawn_node/binding/GPUSupportedLimits.h
@@ -25,6 +25,8 @@
     // GPUSupportedLimits is an implementation of interop::GPUSupportedLimits.
     class GPUSupportedLimits final : public interop::GPUSupportedLimits {
       public:
+        GPUSupportedLimits(wgpu::SupportedLimits);
+
         // interop::GPUSupportedLimits interface compliance
         uint32_t getMaxTextureDimension1D(Napi::Env) override;
         uint32_t getMaxTextureDimension2D(Napi::Env) override;
@@ -52,6 +54,9 @@
         uint32_t getMaxComputeWorkgroupSizeY(Napi::Env) override;
         uint32_t getMaxComputeWorkgroupSizeZ(Napi::Env) override;
         uint32_t getMaxComputeWorkgroupsPerDimension(Napi::Env) override;
+
+      private:
+        wgpu::SupportedLimits limits_;
     };
 
 }}  // namespace wgpu::binding
