Bug Fixes And Performance Improvements (I Swear That's Not A Joke — But I Guess Now It Is)
LatestImportant
This release contains an important fix and significant performance improvements. I would highly recommend updating your version of Boutique, especially if you're using the chained operations syntax.
Store
When using a chained operation it was possible for not all values to be removed properly, leading to the incorrect storage of extra data.
try await self.$items
.remove(oldItems)
.insert(newItems)
.run()
More tests have been added to test all sorts of chaining scenarios to prevent this regression from occurring again.
SecurelyStoredValue
When you had a keychain value which existed but it's shape changed (such as adding or removing a property from a type), it was impossible to remove that value. Now the .remove()
function will remove a value when it cannot properly decode the old value, allowing you to overwrite values when adding/removing properties or changing the underlying type of a SecurelyStoredValue
.
StoredValue
An additional layer of caching has been added to StoredValue
so that when you access a StoredValue
it no longer has to decode JSON every time. This will still occur on an app's first load of that value, but future accesses come with significant performance improvements, especially for more complicated objects.