Use Case · Remix

Last reviewed: March 2026

Remix to Figma —
From SSR Output

Converting Remix apps to Figma is straightforward because Remix renders full pages server-side on every request, producing HTML with real data from your loaders. Run the dev server, copy the rendered HTML from your browser, paste it into html2design, and get native Figma layers with actual content — not placeholders.

What is "Remix to Figma"?

"Remix to Figma" refers to exporting a rendered Remix route — with its loader data, nested layout, and styles — into a native Figma design that designers can edit directly. Remix is a full-stack React meta-framework built on web standards. It performs server-side rendering on every request by default, meaning each page arrives in the browser as fully-formed HTML with real data from your loaders.

The html2design Figma plugin accepts the rendered HTML you copy from your browser's DevTools and converts it into native Figma frames. Remix routes use standard React rendering — so inline styles, CSS Modules, Tailwind classes, or any other styling approach is resolved to computed CSS values by the browser before the plugin reads them. The result in Figma is a pixel-accurate representation of your Remix route with real content from your database or API.

The Remix to Figma workflow

Four steps. Works with Remix v2+, React Router v7, and any styling approach — CSS Modules, Tailwind, styled-components.

Step 01

Run the Remix dev server

Start the dev server with npm run dev. Remix starts a local HTTP server that renders routes server-side with live reload. Navigate to the route you want to capture — including routes behind authentication.

If the route requires a logged-in user, simply log in to the local app in your browser first. html2design works with your browser session, not a URL crawler — so any page your browser can load is available for import.

Step 02

Copy the rendered HTML from DevTools

Open DevTools (F12) and switch to the Elements panel. Find the root element of the section you want — Remix renders a <div id="root"> that contains the fully composed route tree.

Right-click the element → Copy > Copy outerHTML. For a specific section or component, navigate to the element in the tree and copy from there. Always copy from the Elements panel (not page source) to get the hydrated React output.

Step 03

Paste into html2design and generate Figma layers

Open Figma, run the HTML to Figma plugin, paste the copied HTML, and click Generate. Remix uses standard React rendering — CSS Modules compile to unique class names, Tailwind utilities resolve to pixel values, and styled-components inline their styles. The browser resolves all of these before you copy.

You get a native Figma frame with editable text layers populated by your real loader data — actual user names, product titles, prices, and content rather than placeholder text.

Step 04

Share the Figma frame with your designer

Share the Figma frame link. Your designer gets an editable version of the exact route — not a PNG, not a wireframe — populated with real content. They can iterate on spacing, typography, and color directly in Figma without needing Remix or React experience.

When the route changes, re-import: run the dev server, navigate to the route, copy the updated outerHTML, paste into html2design. The workflow takes under two minutes.

Remix-specific tips for better Figma output

Remix has some unique patterns — nested routes, loaders, actions — here's how to work with them for the cleanest import.

Loaders populate real content — use it

Remix loaders run on the server and populate routes with real data from your database or API. When you capture the rendered HTML, the content is already real — product names, user profiles, prices. Design reviews in Figma with actual content catch layout issues that lorem ipsum masks. Seed your local database with representative data before capturing for best results.

Nested routes compose in the browser

Remix's nested routing system composes parent and child route segments into a single page layout. Navigate to the full composed URL (e.g., /dashboard/projects/123) and copy the full page outerHTML from the <body> or root element. The entire composed layout — header, sidebar, nested content — is present in the rendered DOM.

Access protected routes locally

Remix applications often have auth-protected routes that redirect unauthenticated users. Run the app locally, log in with a test account, and then navigate to the protected route. Your browser session maintains authentication — html2design copies from the rendered, authenticated DOM, so protected routes work exactly like public ones.

Capture error boundaries and loading states

Remix has built-in ErrorBoundary and HydrateFallback components. To capture these states for design review, trigger the condition in your browser (throw an error, use a slow network preset in DevTools), then copy the outerHTML when the desired state renders. This lets you design error and loading states with real layout context in Figma.

Why Remix apps work well in Figma

Remix's SSR-first architecture and standard React rendering produce clean, data-rich HTML that imports accurately into Figma.

Real data from loaders, not placeholders

Remix's server-side data loading means your Figma imports contain actual content — not lorem ipsum. Design reviews with real data reveal text overflow, wrapping, and layout edge cases that placeholder content never exposes.

Full-page SSR on every request

Remix renders complete pages on the server — no client-side data-fetching spinners or empty states to work around. Navigate to any route and the full page is immediately available to copy from DevTools.

Works with any CSS approach

Remix works with CSS Modules, Tailwind CSS, Vanilla Extract, styled-components, and plain CSS. All styling approaches resolve to computed CSS values in the browser — html2design reads those computed values, so the Figma output is accurate regardless of your styling stack.

Auth-gated pages are accessible locally

URL-based screenshot tools and web crawlers cannot access authenticated routes. html2design works with your local browser session — so dashboard pages, account settings, and any auth-protected UI are all available for Figma import during local development.

Frequently asked questions

How do I convert a Remix app to Figma?

Run npm run dev, open the route in a browser, copy the outerHTML from the DevTools Elements panel, and paste into html2design. Always copy from DevTools (not page source) to capture the fully hydrated React output.

Does Remix's loader data show up in Figma?

Yes. Loader data is server-rendered into the HTML before the browser receives it. When you copy outerHTML from DevTools, the real data (names, prices, content) is already present as HTML text and renders accurately as Figma text layers.

Can I import Remix nested routes into Figma?

Yes. Navigate to the full composed URL in your browser. Remix renders the complete route tree — parent layout, child segments, and outlets — into a single page. Copy the outerHTML of the root element to capture the entire composed layout as one Figma frame.

Does Remix v2 work the same as React Router v7?

Yes. React Router v7 (which absorbed Remix) uses the same file-based routing and SSR model. The html2design workflow — run dev server, copy outerHTML from DevTools, paste into plugin — is identical for both Remix v2 and React Router v7 projects.

Related Guides

Export your Remix app to Figma today

Install html2design from the Figma Community — free to try, works with Remix v2, React Router v7, and any CSS approach.

Install Free on Figma Community

Free to try · $12/mo to unlock all features