function useAppState<T>(name: string, defaultValue: T): [T, (value: T) => void]
Parameters
A unique identifier for the app state value. This key is used to persist and share the state across components.
The default value to use if no saved state exists for the given name. This also determines the type T for the state.
Returns
Returns a tuple similar to useState:
[0] - The current state value of type T
[1] - A setter function (value: T) => void to update the state
Support
Usage
Basic app state
const [userName, setUserName] = useAppState("userName", "")
return VStack([
Text(`Hello, ${userName || "Guest"}`),
TextField({ placeholder: "Enter your name", text: userName, setText: setUserName })
])
App settings
const [settings, setSettings] = useAppState("appSettings", {
notifications: true,
autoSave: true,
theme: "blue"
})
return VStack([
Toggle({
label: "Notifications",
isOn: settings.notifications,
setIsOn: (value) => setSettings({ ...settings, notifications: value })
}),
Toggle({
label: "Auto Save",
isOn: settings.autoSave,
setIsOn: (value) => setSettings({ ...settings, autoSave: value })
})
])
Counter with persistence
const [count, setCount] = useAppState("counter", 0)
return VStack([
Text(`Count: ${count}`),
HStack([
Button("-", () => setCount(count - 1)),
Button("+", () => setCount(count + 1)),
Button("Reset", () => setCount(0))
])
])
Notes
- App state persists across components and component renders
- Each unique
name key maintains its own independent state
- State is automatically serialized and deserialized
- Use for user preferences, settings, form data, and other app-level data
- Different from
useState which resets on component unmount