Skip to content

Conversation

peaklabs-dev
Copy link
Contributor

@peaklabs-dev peaklabs-dev commented Aug 23, 2025

Changes

  • feat: allow adding type to state restore

Example

I want to use the state to restore form values which need to be typed for my forms to work properly (I use TanStack form).

type FormState = {
  username: string
  notifications_enabled: boolean
}

const FORM_STATE_KEY = 'TEST'
const restoredState = router.restore<FormState>(FORM_STATE_KEY)

@pascalbaljet
Copy link
Member

pascalbaljet commented Aug 27, 2025

Where does 'TEST' come from in this context? I would expect it to behave like this (open for discussion, though!):

type RememberedState = {
  name: string
  isAdmin: boolean
}

const key = 'isAdmin'

router.restore('id') // no generic, should always work
router.restore<RememberedState>('name') // should be string | undefined
router.restore<RememberedState>('email') // ts-expect-error, email doesn't exist on RememberedState
router.restore<RememberedState>(key) // should be boolean | undefined

@pascalbaljet pascalbaljet added the needs more info/work Needs more info from the author or additional work to get merged label Aug 27, 2025
@peaklabs-dev
Copy link
Contributor Author

@pascalbaljet Oh, the FORM_STATE_KEY is just the key for where the data is stored, nothing more. I remember the form data via a listener like this:

        listeners: {
            onChange: ({ formApi }) => {
                router.remember(formApi.state.values, FORM_STATE_KEY);
            },
        },

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs more info/work Needs more info from the author or additional work to get merged
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants