--- title: React description: Embed Documenso signing in your React application using the official SDK. --- import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ## Installation ``` npm install @documenso/embed-react ``` ``` yarn add @documenso/embed-react ``` ``` pnpm add @documenso/embed-react ``` --- ## Direct Template ```tsx import { EmbedDirectTemplate } from '@documenso/embed-react'; const SigningPage = () => { return ( console.log('Ready')} onDocumentCompleted={(data) => { console.log('Signed:', data.documentId); }} onDocumentError={() => console.error('Error')} /> ); }; ``` --- ## Signing Token ```tsx import { EmbedSignDocument } from '@documenso/embed-react'; const SigningPage = ({ token }: { token: string }) => { return ( { console.log('Signed:', data.documentId); }} /> ); }; ``` --- ## Styling (Platform Plan) ```tsx import { EmbedDirectTemplate } from '@documenso/embed-react'; const StyledEmbed = () => { return ( ); }; ``` See [CSS Variables](/docs/developers/embedding/css-variables) for all available variables. --- ## Complete Example ```tsx import { useState } from 'react'; import { EmbedDirectTemplate } from '@documenso/embed-react'; type Status = 'loading' | 'ready' | 'completed' | 'error'; const DocumentSigning = ({ token }: { token: string }) => { const [status, setStatus] = useState('loading'); if (status === 'completed') { return

Thank you for signing the document.

; } if (status === 'error') { return

An error occurred. Please try again.

; } return (
{status === 'loading' && (
Loading...
)} setStatus('ready')} onDocumentCompleted={() => setStatus('completed')} onDocumentError={() => setStatus('error')} />
); }; ``` --- ## See Also - [Embedding Overview](/docs/developers/embedding) - Props reference and concepts - [CSS Variables](/docs/developers/embedding/css-variables) - Customize appearance - [Editor](/docs/developers/embedding/editor) - Embed document creation