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
undefinedas a value with$persist. Whilst debugging I found a recent PR #4091, which attempts to prevent a similar issue when retrieving anundefinedvalue from storage.However it seems users can still unintentionally persist an
undefinedvalue, which confusingly gets stringified to remainundefinedbefore then being saved as a string regardless by localStoragesetItem.This PR prevents committing
undefinedto storage by swapping it out withnull, which is valid JSON and can therefore be stringified. Future checks withstorageHaswill 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!