The generated code has nonsense class names like Frame137Wrapper and no error ever appeared. What went wrong?
The silent failure of design-to-code: unnamed layer inheritance. The server serializes whatever the design file contains — and if the designers never named their layers, the agent receives a tree of Frame 137 and Group 4 nodes and faithfully generates matching identifiers. No tool in the chain errors because every layer did its job; the input was semantically empty. The engineering fix: run a layer-naming pass in Figma before conversion (or use Figma's AI rename), enforce auto-layout on frames targeted for code generation, and treat component naming as API design — because for this pipeline, that is exactly what it is.
How does it compare to Figma's official Dev Mode MCP server?
Figma's official server requires a Dev seat and lives inside the Figma desktop app. Framelink's server works with any personal access token, runs anywhere, and offers download tooling for assets. Teams with Dev seats should evaluate the official one first; everyone else lands here.
Why does it matter that the file uses auto-layout?
Auto-layout constraints map deterministically to flexbox and grid. Absolutely-positioned layers map to absolutely-positioned CSS — technically accurate, practically unmaintainable. The server exposes the truth of the file; whether that truth is responsive is the designer's decision, made months before your prompt.
Can it download images and assets, or only metadata?
Both — it exposes image and SVG download tooling alongside the structured data. Use asset downloads for icons and illustrations, structured data for layout and styling; mixing them up is how you end up with a hero section rendered as one giant PNG.