When a Figma prototype is enough
A Figma prototype is better when the question is about the layout, the navigation, or the words on the screen, and every participant can see the same content. It's quicker to change between test sessions, and your whole team can comment on it.
When you need a coded prototype
You need a coded prototype when the flow depends on something the person brings with them: their own data, a search, a form with real validation, or an AI feature. A demo is a simulated environment. No matter how much you try to simulate, you choose the input, and you know the expected outcome based on the inputs you created. On the other hand, real users paste in messy data and take answers at face value, thinking it's the correct one.
That's why the prototypes I build use seeded or real data, and live AI calls where the flow needs them.
When a working version settles the argument
There's a third reason to build it, and it has nothing to do with users. Sometimes a team has been going back and forth on a design for weeks. A working version can settle the question faster than going through round after round of reviews, because everyone can try it instead of imagining it.
What a coded prototype isn't
It's important to be clear about this up front. A coded prototype is one core flow that people can click through and test on a live URL. It's not the product, and it's not meant to be the start of the codebase, even though it usually tells you a lot about how the real one should be built.
How I'd decide
Start with the question you need to answer, not with the tool. If the answer depends on real input, build it. If it doesn't, prototype it in Figma and save the time. If you need a coded one, I can build one in a four-week prototype sprint: one core flow of about 5 to 8 screens, on a live URL, with a repository handoff and a decision log.
Gideon Awolesi