One thing I wish I knew when I started using Framer headless through the CLI.
Writing a prop control inside a secondary variant returns "Commands applied cleanly" even when the value does not change. I hit this many times on the same instances, verified through MCP each time: No changes.
That same day the command went through on all variants, verified by reading back through the CLI.
So the CLI can write these. It just does not always tell you when it did not. 🥺
One related thing I could reproduce: a long-running session did not know variant names created after the session started and rejected every write against them.
-> session new fixed it instantly.
Working rule I use now:
1. Write through the CLI.
2. Always read back
3. If the value did not land, re-run in new session and retry.
4. If it still does not land, write through MCP updateXmlForNode
A hard failure would be easier to work with than a clean success message. @Framer

One thing I wish I knew when I started using Framer headless through the CLI.
Writing a prop control inside a secondary variant returns "Commands applied cleanly" even when the value does not change. I hit this many times on the same instances, verified through MCP each time: No changes.
That same day the command went through on all variants, verified by reading back through the CLI.
So the CLI can write these. It just does not always tell you when it did not. 🥺
One related thing I could reproduce: a long-running session did not know variant names created after the session started and rejected every write against them.
-> session new fixed it instantly.
Working rule I use now:
1. Write through the CLI.
2. Always read back
3. If the value did not land, re-run in new session and retry.
4. If it still does not land, write through MCP updateXmlForNode
A hard failure would be easier to work with than a clean success message. @Framer
