Skip to main content


An optional effect that may be used instead of syncEffect() for URL Persistence in order to specify additional options, such as if state changes should replace the URL or push a new entry in the browser history stack.

function urlSyncEffect<T>(options: {
history?: 'replace' | 'push',
}): AtomEffect<T>
  • history -
    • replace (default) - Replace the current browser URL with the updated state.
    • push - Push a URL with the updated state onto the browser history stack.

If a transaction contains mutations from some atoms that replace and some atoms that push state changes, then the URL will first replace with the items to replace and then push a new URL on the stack with the full changes from the batched transaction.