Change to const ref for Spans.
diff --git a/dev/core_generator/lib/src/field_types/bytes_field_type.dart b/dev/core_generator/lib/src/field_types/bytes_field_type.dart
index 883ebc4..23a5d2e 100644
--- a/dev/core_generator/lib/src/field_types/bytes_field_type.dart
+++ b/dev/core_generator/lib/src/field_types/bytes_field_type.dart
@@ -5,7 +5,7 @@
       : super(
           'Bytes',
           'CoreBytesType',
-          cppName: 'Span<uint8_t>',
+          cppName: 'const Span<uint8_t>&',
           include: 'rive/span.hpp',
         );
 
diff --git a/include/rive/assets/file_asset_contents.hpp b/include/rive/assets/file_asset_contents.hpp
index 7cdfd3d..2304bb6 100644
--- a/include/rive/assets/file_asset_contents.hpp
+++ b/include/rive/assets/file_asset_contents.hpp
@@ -11,7 +11,7 @@
     public:
         const std::vector<uint8_t>& bytes() const;
         StatusCode import(ImportStack& importStack) override;
-        void decodeBytes(Span<uint8_t> value) override;
+        void decodeBytes(const Span<uint8_t>& value) override;
         void copyBytes(const FileAssetContentsBase& object) override;
     };
 } // namespace rive
diff --git a/include/rive/generated/assets/file_asset_contents_base.hpp b/include/rive/generated/assets/file_asset_contents_base.hpp
index 10456cb..268976d 100644
--- a/include/rive/generated/assets/file_asset_contents_base.hpp
+++ b/include/rive/generated/assets/file_asset_contents_base.hpp
@@ -27,7 +27,7 @@
         static const uint16_t bytesPropertyKey = 212;
 
     public:
-        virtual void decodeBytes(Span<uint8_t> value) = 0;
+        virtual void decodeBytes(const Span<uint8_t>& value) = 0;
         virtual void copyBytes(const FileAssetContentsBase& object) = 0;
 
         Core* clone() const override;
diff --git a/include/rive/generated/shapes/mesh_base.hpp b/include/rive/generated/shapes/mesh_base.hpp
index 736c86c..d9c8276 100644
--- a/include/rive/generated/shapes/mesh_base.hpp
+++ b/include/rive/generated/shapes/mesh_base.hpp
@@ -29,7 +29,7 @@
         static const uint16_t triangleIndexBytesPropertyKey = 223;
 
     public:
-        virtual void decodeTriangleIndexBytes(Span<uint8_t> value) = 0;
+        virtual void decodeTriangleIndexBytes(const Span<uint8_t>& value) = 0;
         virtual void copyTriangleIndexBytes(const MeshBase& object) = 0;
 
         Core* clone() const override;
diff --git a/include/rive/shapes/mesh.hpp b/include/rive/shapes/mesh.hpp
index 3484fe4..de6828c 100644
--- a/include/rive/shapes/mesh.hpp
+++ b/include/rive/shapes/mesh.hpp
@@ -13,7 +13,7 @@
         StatusCode onAddedDirty(CoreContext* context) override;
         void markDrawableDirty();
         void addVertex(MeshVertex* vertex);
-        void decodeTriangleIndexBytes(Span<uint8_t> value) override;
+        void decodeTriangleIndexBytes(const Span<uint8_t>& value) override;
         void copyTriangleIndexBytes(const MeshBase& object) override;
 #ifdef TESTING
         std::vector<MeshVertex*>& vertices() { return m_Vertices; }
diff --git a/src/assets/file_asset_contents.cpp b/src/assets/file_asset_contents.cpp
index 2ba8602..857f8f1 100644
--- a/src/assets/file_asset_contents.cpp
+++ b/src/assets/file_asset_contents.cpp
@@ -15,7 +15,7 @@
     return Super::import(importStack);
 }
 
-void FileAssetContents::decodeBytes(Span<uint8_t> value) {
+void FileAssetContents::decodeBytes(const Span<uint8_t>& value) {
     m_Bytes = std::vector(value.begin(), value.end());
 }
 
diff --git a/src/shapes/mesh.cpp b/src/shapes/mesh.cpp
index 76e90a0..686f60b 100644
--- a/src/shapes/mesh.cpp
+++ b/src/shapes/mesh.cpp
@@ -23,7 +23,7 @@
     return StatusCode::Ok;
 }
 
-void Mesh::decodeTriangleIndexBytes(Span<uint8_t> value) {
+void Mesh::decodeTriangleIndexBytes(const Span<uint8_t>& value) {
     // decode the triangle index bytes
 }