Show HN: Extracting React apps from Figma Make's undocumented binary format

Dev cracks Figma Make’s secret file, finds hidden React app — and ignites lock‑in drama

TLDR: A coder revealed Figma Make’s locked “.make” files are just renamed zip archives containing a React app, complete with scripts to extract it. Commenters split between cheering an escape from lock‑in, praising Figma’s clever engineering, and debating the curveball that AI is spitting out code instead of drawings.

Internet sleuth of the week alert: a developer poked at a Figma Make prototype that wouldn’t export and discovered the big twist — the mysterious “.make” file is basically a disguised zip with an app hiding inside. Cue the crowd cheering and booing in equal measure. The post’s salty jab at “corporate lock‑in” lit up readers, while others applauded the engineering: one commenter praised Figma’s compression chops like it was a magic trick.

The original poster dropped scripts on GitHub so anyone can try the escape act themselves: figma-make-extractor. The thread split into camps: the “stick it to lock‑in” crew celebrated the unmasking, while toolsmiths chimed in with pragmatic vibes. One dev coolly suggested using the Linux “file” command — tech’s version of “have you tried turning it off and on again” — and another casually mentioned a long‑term plan to funnel Figma into Unity. Meanwhile, a fan favorite called out the practical checklist of when you’d actually need this, from auditing AI‑generated code to migrating away from Figma Make.

The spiciest hot take? A commenter noting the AI tool basically writes the React app instead of drawing a mockup. Designers clutched pearls, devs cackled, and everyone agreed on one thing: nothing unites the internet like a good old‑fashioned “change the file extension and unzip it” plot twist.

Key Points

  • Figma Make .make files are ZIP archives with a custom extension, identified by the PK (0x504b) signature.
  • The archive contains canvas.fig, meta.json, ai_chat.json, a thumbnail, and asset folders; canvas.fig holds the actual code.
  • canvas.fig uses a “fig-makee” header and a two-chunk binary structure: a Deflate-compressed schema and a Zstandard-compressed data block.
  • Using pako (Deflate), fzstd (Zstandard), and kiwi-schema enabled decompression and decoding of the binary format.
  • Decoding the Kiwi schema revealed 534 type definitions and 159 nodes, including CODE_FILE entries with React source code such as App.tsx.

Hottest takes

"Turns out it’s a ZIP with a custom format" — albertsikkema
"I recommend using the linux "file" command" — voidUpdate
"the AI tool just writes react rather than creating a figma drawing" — dfajgljsldkjag
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.