diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/minmaxlength.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/minmaxlength.schema/default/TopLevel.ts
index efb94ee..6faae36 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/minmaxlength.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/minmaxlength.schema/default/TopLevel.ts
@@ -2,12 +2,12 @@ import * as S from "effect/Schema";
 
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "intersection": S.String.pipe(S.minLength(4)).pipe(S.maxLength(5)),
-    "inUnion": S.Union(S.Number, S.String.pipe(S.minLength(3)).pipe(S.maxLength(5))),
-    "maxlength": S.String.pipe(S.maxLength(5)),
-    "minlength": S.String.pipe(S.minLength(3)),
-    "minMaxIntersection": S.String.pipe(S.minLength(3)).pipe(S.maxLength(5)),
-    "minmaxlength": S.String.pipe(S.minLength(3)).pipe(S.maxLength(5)),
+    "intersection": S.String.pipe(S.filter(value => Array.from(value).length >= 4)).pipe(S.filter(value => Array.from(value).length <= 5)),
+    "inUnion": S.Union(S.Number, S.String.pipe(S.filter(value => Array.from(value).length >= 3)).pipe(S.filter(value => Array.from(value).length <= 5))),
+    "maxlength": S.String.pipe(S.filter(value => Array.from(value).length <= 5)),
+    "minlength": S.String.pipe(S.filter(value => Array.from(value).length >= 3)),
+    "minMaxIntersection": S.String.pipe(S.filter(value => Array.from(value).length >= 3)).pipe(S.filter(value => Array.from(value).length <= 5)),
+    "minmaxlength": S.String.pipe(S.filter(value => Array.from(value).length >= 3)).pipe(S.filter(value => Array.from(value).length <= 5)),
     "minMaxUnion": S.String,
-    "union": S.String.pipe(S.minLength(3)).pipe(S.maxLength(6)),
+    "union": S.String.pipe(S.filter(value => Array.from(value).length >= 3)).pipe(S.filter(value => Array.from(value).length <= 6)),
 }) {}
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/optional-const-ref.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/optional-const-ref.schema/default/TopLevel.ts
index f45038e..c8b647c 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/optional-const-ref.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/optional-const-ref.schema/default/TopLevel.ts
@@ -9,9 +9,9 @@ export class Coordinate extends S.Class<Coordinate>("Coordinate")({
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "coordinates": S.optional(S.NullOr(S.Array(Coordinate))),
     "count": S.optional(S.NullOr(S.Int.pipe(S.greaterThanOrEqualTo(1)).pipe(S.lessThanOrEqualTo(100)))),
-    "label": S.optional(S.NullOr(S.String.pipe(S.minLength(2)).pipe(S.maxLength(16)))),
+    "label": S.optional(S.NullOr(S.String.pipe(S.filter(value => Array.from(value).length >= 2)).pipe(S.filter(value => Array.from(value).length <= 16)))),
     "requiredCoordinates": S.Array(Coordinate),
     "requiredCount": S.Int.pipe(S.greaterThanOrEqualTo(1)).pipe(S.lessThanOrEqualTo(100)),
-    "requiredLabel": S.String.pipe(S.minLength(2)).pipe(S.maxLength(16)),
+    "requiredLabel": S.String.pipe(S.filter(value => Array.from(value).length >= 2)).pipe(S.filter(value => Array.from(value).length <= 16)),
     "weight": S.optional(S.NullOr(S.Number.pipe(S.greaterThanOrEqualTo(0.5)).pipe(S.lessThanOrEqualTo(99.5)))),
 }) {}
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/optional-constraints.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/optional-constraints.schema/default/TopLevel.ts
index 4c5c8ea..725ba7f 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/optional-constraints.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/optional-constraints.schema/default/TopLevel.ts
@@ -5,6 +5,6 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "optDouble": S.optional(S.NullOr(S.Number.pipe(S.greaterThanOrEqualTo(0.5)).pipe(S.lessThanOrEqualTo(99.5)))),
     "optInt": S.optional(S.NullOr(S.Int.pipe(S.greaterThanOrEqualTo(0)).pipe(S.lessThanOrEqualTo(100)))),
     "optPattern": S.optional(S.NullOr(S.String.pipe(S.pattern(new RegExp("^[a-z]+$"))))),
-    "optString": S.optional(S.NullOr(S.String.pipe(S.minLength(3)).pipe(S.maxLength(10)))),
+    "optString": S.optional(S.NullOr(S.String.pipe(S.filter(value => Array.from(value).length >= 3)).pipe(S.filter(value => Array.from(value).length <= 10)))),
     "reqZeroMin": S.Int.pipe(S.greaterThanOrEqualTo(0)).pipe(S.lessThanOrEqualTo(100)),
 }) {}
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/renaming-bug.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/renaming-bug.schema/default/TopLevel.ts
index a0c3b07..2437c9f 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/renaming-bug.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/renaming-bug.schema/default/TopLevel.ts
@@ -42,7 +42,7 @@ export class Speed extends S.Class<Speed>("Speed")({
 
 export class Vehicle extends S.Class<Vehicle>("Vehicle")({
     "brand": S.optional(S.NullOr(S.String)),
-    "id": S.optional(S.NullOr(S.String.pipe(S.minLength(1)))),
+    "id": S.optional(S.NullOr(S.String.pipe(S.filter(value => Array.from(value).length >= 1)))),
     "speed": S.optional(S.NullOr(Speed)),
     "subModule": S.optional(S.NullOr(S.Boolean)),
     "type": S.optional(S.NullOr(VehicleType)),
@@ -83,7 +83,7 @@ export class Color extends S.Class<Color>("Color")({
 
 export class Berry extends S.Class<Berry>("Berry")({
     "color": S.optional(S.NullOr(Color)),
-    "name": S.optional(S.NullOr(S.String.pipe(S.minLength(1)))),
+    "name": S.optional(S.NullOr(S.String.pipe(S.filter(value => Array.from(value).length >= 1)))),
     "shapes": S.optional(S.NullOr(S.Array(Shape))),
 }) {}
 
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/schema-constraints.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/schema-constraints.schema/default/TopLevel.ts
index 3e74d87..e9864b8 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/schema-constraints.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/schema-constraints.schema/default/TopLevel.ts
@@ -2,6 +2,6 @@ import * as S from "effect/Schema";
 
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "minMaxLength": S.String.pipe(S.minLength(5)).pipe(S.maxLength(5)),
+    "minMaxLength": S.String.pipe(S.filter(value => Array.from(value).length >= 5)).pipe(S.filter(value => Array.from(value).length <= 5)),
     "percent": S.Number.pipe(S.greaterThanOrEqualTo(0)).pipe(S.lessThanOrEqualTo(1)),
 }) {}
diff --git a/head/schema-typescript-effect-schema/test/inputs/typescript-effect-schema/unicode-codepoint-length.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/typescript-effect-schema/unicode-codepoint-length.schema/default/TopLevel.ts
new file mode 100644
index 0000000..9730f77
--- /dev/null
+++ b/head/schema-typescript-effect-schema/test/inputs/typescript-effect-schema/unicode-codepoint-length.schema/default/TopLevel.ts
@@ -0,0 +1,8 @@
+import * as S from "effect/Schema";
+
+
+export class TopLevel extends S.Class<TopLevel>("TopLevel")({
+    "exact": S.String.pipe(S.filter(value => Array.from(value).length >= 2)).pipe(S.filter(value => Array.from(value).length <= 2)).pipe(S.pattern(new RegExp("^[^!]+$"))),
+    "maximum": S.String.pipe(S.filter(value => Array.from(value).length <= 1)),
+    "minimum": S.String.pipe(S.filter(value => Array.from(value).length >= 2)),
+}) {}
