diff --git a/.changeset/little-wombats-visit.md b/.changeset/little-wombats-visit.md
new file mode 100644
index 000000000..4755a0314
--- /dev/null
+++ b/.changeset/little-wombats-visit.md
@@ -0,0 +1,5 @@
+---
+'@gitbook/react-openapi': patch
+---
+
+Safe parse OpenAPI JSON schema
diff --git a/packages/react-openapi/src/OpenAPISchema.tsx b/packages/react-openapi/src/OpenAPISchema.tsx
index 298f1d82b..65ee7c546 100644
--- a/packages/react-openapi/src/OpenAPISchema.tsx
+++ b/packages/react-openapi/src/OpenAPISchema.tsx
@@ -122,7 +122,7 @@ export function OpenAPISchemaPropertiesFromServer(props: {
return (
);
@@ -172,12 +172,7 @@ export function OpenAPIRootSchemaFromServer(props: {
schema: string;
context: OpenAPIClientContext;
}) {
- return (
-
- );
+ return ;
}
/**
@@ -465,3 +460,19 @@ function getDisclosureLabel(schema: OpenAPIV3.SchemaObject): string {
return schema.title || 'child attributes';
}
+
+/**
+ * Safely parse a JSON string using retrocycle.
+ * If parsing fails, it falls back to standard JSON.parse.
+ */
+function safeJSONParse(jsonString: string) {
+ try {
+ return JSON.parse(jsonString, retrocycle());
+ } catch {
+ try {
+ return JSON.parse(jsonString);
+ } catch (fallbackError) {
+ throw new Error(`Failed to parse JSON string: ${fallbackError}`);
+ }
+ }
+}