Persisted widget state with automatic sync
Works like useState but persists across widget reloads. On ChatGPT: Session-scoped persistence On MCP Apps: Silent no-op (returns default, setState is ignored)
Initial state value
[state, setState] tuple
function Counter() { const [count, setCount] = useWidgetState(0); return ( <button onClick={() => setCount(c => c + 1)}> Count: {count} </button> );} Copy
function Counter() { const [count, setCount] = useWidgetState(0); return ( <button onClick={() => setCount(c => c + 1)}> Count: {count} </button> );}
Persisted widget state with automatic sync
Works like useState but persists across widget reloads. On ChatGPT: Session-scoped persistence On MCP Apps: Silent no-op (returns default, setState is ignored)