← All @molecule/* packages · App templates
@molecule/app-diff-viewer-reactFeature · diff-viewer · App (browser) · v1.0.1 · Apache-2.0
Side-by-side or unified text/code diff display
npm install @molecule/app-diff-viewer-react@molecule/app-diff-viewer-react is a ready-made diff-viewer feature for the app (browser) side. It composes the core interfaces it needs, so it works with whichever providers your app has bonded.
import { DiffViewer } from '@molecule/app-diff-viewer-react'
;<DiffViewer
before={'const x = 1\nconsole.log(x)'}
after={'const x = 2\nconsole.log(x)'}
filename="src/config.ts"
mode="unified"
showLineNumbers={true}
/>Works with: @molecule/app-react, @molecule/app-ui, @molecule/app-ui-react
Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit
src/index.tsJSDoc, not this file.
Text/code diff viewer.
Exports <DiffViewer> (unified or split mode). Pure JS line diff (LCS,
no external library) with add/remove row highlighting, optional line
numbers, and an optional filename header.
import { DiffViewer } from '@molecule/app-diff-viewer-react'
;<DiffViewer
before={'const x = 1\nconsole.log(x)'}
after={'const x = 2\nconsole.log(x)'}
filename="src/config.ts"
mode="unified"
showLineNumbers={true}
/>
feature
npm install @molecule/app-diff-viewer-react @molecule/app-react @molecule/app-ui @molecule/app-ui-react react
npm install -D @types/react
DiffViewerPropsProps for {@link DiffViewer}.
interface DiffViewerProps {
/** Original text. */
before: string
/** New text. */
after: string
/** Display mode. Defaults to `'unified'`. */
mode?: 'unified' | 'split'
/** Show line numbers. Defaults to true. */
showLineNumbers?: boolean
/** Optional filename / context label. */
filename?: string
/** Extra classes. */
className?: string
}
DiffViewer(props)Text diff viewer — unified or split layout with line-by-line add/remove highlighting. Pure JS (no library) so apps don't pull in megabytes for simple diffs.
For large diffs (10k+ lines), wrap with virtualization upstream.
function DiffViewer({
before,
after,
mode = 'unified',
showLineNumbers = true,
filename,
className,
}: DiffViewerProps): JSX.Element
props — Component props (see {@link DiffViewerProps}).Peer dependencies:
@molecule/app-react ^1.0.1@molecule/app-ui ^1.0.1@molecule/app-ui-react ^1.0.1react ^18.0.0 || ^19.0.0@molecule/app-react
@molecule/app-ui
@molecule/app-ui-react
react
Pass before/after as JS string expressions (curly braces) as above.
A quoted JSX attribute (before="a\nb") does NOT interpret \n — you
would diff one line containing a literal backslash-n.
The diff is an O(n*m) dynamic program — fine for typical UI diffs; for very large inputs (10k+ lines) chunk or virtualize upstream.
Highlight colors are fixed translucent green/red (rgba) rather than theme tokens; they read on light and dark surfaces but are not themeable via ClassMap.
No user-facing text of its own (only +/- glyphs), so no locale bond is
needed. Styling resolves through getClassMap() — requires a wired
ClassMap bond (standard molecule app setup).