Prevent unwanted persistence of 'undefined' in storage #4128
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I noticed an issue in Filament which caused Alpine to crash due to a component inadvertently setting
undefined
as a value with$persist
. Whilst debugging I found a recent PR #4091, which attempts to prevent a similar issue when retrieving anundefined
value from storage.However it seems users can still unintentionally persist an
undefined
value, which confusingly gets stringified to remainundefined
before then being saved as a string regardless by localStoragesetItem
.This PR prevents committing
undefined
to storage by swapping it out withnull
, which is valid JSON and can therefore be stringified. Future checks withstorageHas
will return false (as expected), falling back to the initial value. It might be worth raising a warning but I'll take any feedback on this approach first. Thanks!