Embed a contact form in React, Vue, or Angular
Web components are part of the DOM. Drop the tag straight into JSX, Vue templates, or Angular components — no wrapper needed.
<script src="https://cdn.toimii.io/components/your-code.js" async></script>
<toimii-your-code></toimii-your-code>
Step by step
Gotchas
Frequently asked
Do I need a React/Vue/Angular wrapper component?
No. The script defines the element in the browser, so your framework only renders the tag — and nothing in your build changes when we ship a new version.
How do I tell TypeScript about the custom element?
Declare it in JSX's IntrinsicElements, with the tag your own component uses. React 19 moved that namespace and the correct form depends on your tsconfig's jsx setting, so take the current one from React's upgrade guide. The form works without it.
How do I pass props or config?
There's nothing to pass. What the form asks and where it delivers are set in Toimii and baked into the bundle the script loads — which is why the tag carries no attributes.
Does it work with Next.js or another React framework?
Yes. In Next.js, load it with next/script from the root layout — the documented place for a script the whole site needs. A "use client" boundary is required only if you attach a load or error handler; the tag itself needs none.
What about server-side rendering?
The custom element renders client-side, like any web component. SSR emits the tag, the browser registers the element when the script loads, then the form appears. There's a brief flash of empty space — usually unnoticeable.
Embedding on a different platform?
Same two lines of code, picked apart for each platform.
Ready to try it?
30-day free trial. No credit card. Set up in minutes.
No credit card required. Set up in 2 minutes.