Skip to content

Commit e2a24ec

Browse files
committed
chore(deps): update react-markdown to version 10.1.0 and enhance MemoizedReactMarkdown component
- Upgraded `react-markdown` from version 9.1.0 to 10.1.0 in both `bun.lock` and `package.json`. - Improved the `MemoizedReactMarkdown` component by adding additional props checks for `components`, `remarkPlugins`, and `rehypePlugins` to optimize rendering. This update ensures compatibility with the latest version of `react-markdown` and enhances performance by reducing unnecessary re-renders.
1 parent 3f069fd commit e2a24ec

File tree

5 files changed

+50
-31
lines changed

5 files changed

+50
-31
lines changed

apps/app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
"react-hook-form": "^7.61.1",
7777
"react-hotkeys-hook": "^5.1.0",
7878
"react-intersection-observer": "^9.16.0",
79-
"react-markdown": "^9.1.0",
79+
"react-markdown": "10.1.0",
8080
"react-textarea-autosize": "^8.5.9",
8181
"react-use-draggable-scroll": "^0.4.7",
8282
"react-wrap-balancer": "^1.1.1",

apps/app/src/components/ai/markdown.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,8 @@ import ReactMarkdown, { type Options } from 'react-markdown';
44
export const MemoizedReactMarkdown: FC<Options> = memo(
55
ReactMarkdown,
66
(prevProps, nextProps) =>
7-
prevProps.children === nextProps.children && prevProps.className === nextProps.className,
7+
prevProps.children === nextProps.children &&
8+
prevProps.components === nextProps.components &&
9+
prevProps.remarkPlugins === nextProps.remarkPlugins &&
10+
prevProps.rehypePlugins === nextProps.rehypePlugins,
811
);

apps/app/src/components/ai/message.tsx

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -112,25 +112,26 @@ const StreamableMarkdown = memo(({ text }: { text: string | StreamableValue<stri
112112
const streamedText = useStreamableText(text);
113113

114114
return (
115-
<MemoizedReactMarkdown
116-
className="prose text-xs prose-p:my-1 prose-ul:my-1 prose-ol:my-1 prose-li:my-0"
117-
components={{
118-
p({ children }) {
119-
return <p className="my-1 last:mb-0">{children}</p>;
120-
},
121-
ol({ children }) {
122-
return <ol className="list-decimal list-inside space-y-0.5 my-1">{children}</ol>;
123-
},
124-
ul({ children }) {
125-
return <ul className="list-disc list-inside space-y-0.5 my-1">{children}</ul>;
126-
},
127-
li({ children }) {
128-
return <li className="leading-tight my-0">{children}</li>;
129-
},
130-
}}
131-
>
132-
{streamedText}
133-
</MemoizedReactMarkdown>
115+
<div className="prose text-xs prose-p:my-1 prose-ul:my-1 prose-ol:my-1 prose-li:my-0">
116+
<MemoizedReactMarkdown
117+
components={{
118+
p({ children }) {
119+
return <p className="my-1 last:mb-0">{children}</p>;
120+
},
121+
ol({ children }) {
122+
return <ol className="list-decimal list-inside space-y-0.5 my-1">{children}</ol>;
123+
},
124+
ul({ children }) {
125+
return <ul className="list-disc list-inside space-y-0.5 my-1">{children}</ul>;
126+
},
127+
li({ children }) {
128+
return <li className="leading-tight my-0">{children}</li>;
129+
},
130+
}}
131+
>
132+
{streamedText}
133+
</MemoizedReactMarkdown>
134+
</div>
134135
);
135136
});
136137

apps/app/src/components/markdown.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,8 @@ import ReactMarkdown, { type Options } from 'react-markdown';
44
export const MemoizedReactMarkdown: FC<Options> = memo(
55
ReactMarkdown,
66
(prevProps, nextProps) =>
7-
prevProps.children === nextProps.children && prevProps.className === nextProps.className,
7+
prevProps.children === nextProps.children &&
8+
prevProps.components === nextProps.components &&
9+
prevProps.remarkPlugins === nextProps.remarkPlugins &&
10+
prevProps.rehypePlugins === nextProps.rehypePlugins,
811
);

0 commit comments

Comments
 (0)