Workflow is a web app for reviewing design work. Designers push their Figma files in, and the team leaves feedback, tracks tasks and signs off in one place. I worked on the Figma plugin, which gets a designer's file out of Figma and into the app.
To upload a file the plugin needs the file's share link, and Figma gives plugins no direct way to read it. Getting that link into the plugin was the hard part.
The manual version
The first plugin told the user what to do. A looping walkthrough showed them how to open Figma's Share menu, copy the file link, and paste it into a field by hand.
It worked but was slow and easy to get lost in. This screen was where we lost the most users.
Reading the clipboard automatically
Then we found a shortcut. Figma's ⌘L copies a link to the current selection straight to your clipboard. So instead of walking the user through the Share menu, we could ask for one keystroke and grab the link ourselves.
The plugin used the browser's navigator.clipboard API (since deprecated) to poll the clipboard, watch for a string that looked like a Figma URL, and save it the moment it appeared. One shortcut, no pasting, no menus.
In the demo, L stands in for ⌘L, since ⌘Lfocuses the browser's address bar.
Adding a paste step
Then Figma stopped plugins reading the clipboard. The seamless version stopped working, so we added a paste back into the flow. Pressing ⌘V dropped the link into a hidden input the plugin could read.
That created a problem. Before, the plugin could confirm the user had run ⌘L, because it saw the Figma URL land in the clipboard. Now it was blind to the clipboard, so it had no way to know the link had been copied.
There was a second issue. Because of how Figma routes keyboard events, once you hold ⌘ the plugin stops receiving the keys pressed after it, including the L. So it couldn't listen for ⌘L directly.
The fix was to guide the order. The plugin asks the user to hold L first, which it can see, then press the modifier. That lets it validate each key, confirm the shortcut ran, and know the user is ready for the final ⌘V.
In the demo, stands in for ⌘ on the middle step, and the final paste is a real ⌘V.