Skip to content

Pull request Use default Xcode version on composed-swift/Composed


In my open source frameworks I usually use the last major Xcode (currently 11.7), latest (currently 12.3) and latest beta (soon to be 12.4), but this project has only been setup for the latest version of Xcode.

If we feel it's good to run the tests across multiple Xcode versions I have created https://github.com/JosephDuffy/update-xcode-version-action, which we can use to keep the versions in-sync with the versions available as part of GitHub actions.

For now I've removed all use a explicit Xcode versions.

Pull request Fix crash switching segmented provider's segment on composed-swift/Composed


Regression introduce in 1.1.1.

Would occur when a segmented provider was the last child of a composed provider and the selected segment changed.

This could have also been fixed in SegmentedSectionProvider but changing the _currentIndex after the delegate has been notified (which is closer to what ComposedSectionProvider does) but we have nothing in the API contract stating this must be done, so really it's an issue with the caching in ComposedSectionProvider.

Pull request Cache `sections` and `numberOfSection` on composed-swift/Composed


These properties are accessed quite frequently and can be cached with a little extra processing.

This is another finding from screens that have a large number of composed sections.

This and https://github.com/composed-swift/ComposedUI/pull/15 seem to be the main areas of performance issues, although that doesn't mean that once these are working and merged we won't uncover more 😅

Thanks to @bill201207 for their contributions to this change.

Pull request Add collection view batch updates on composed-swift/ComposedUI


The idea of this is that without breaking the API the collection view will batch updates.

Inserting a large number of sections is the main area of performance loss we are currently encountering, because the sections are inserted individually and not batched. This change alone has reduce the initial load time of one our screens (which has 100-150 sections added at once) from 30-45 seconds down to less than a second (at least it is not noticeable).

I had created https://github.com/composed-swift/Composed/pull/17 to try and address this, which has the advantage that it would apply to other view types (e.g. UITableView), but I believe does not offer the same performance improvements and it is restricted to a single ComposedSectionProvider.

This is a draft to collect feedback; as you can see there are some TODOs but I think there's enough implemented to provide an overview of the changes that would be required to implement this.

This does not currently work; there are situations that cause the collection NSInternalInconsistencyException', reason: 'Invalid update error. I have some failing tests that demonstrate what the result should be.

Pull request Add `performBatchUpdates(_:)` function on composed-swift/Composed


When adding a lot of sections (we have a screen which inserts 100~175 on initial load) the performance is quite poor.

Along with the improve-composed-section-provider-performance branch (which I want to fully validate before making a PR) performing these changes in batch helps a lot.

Nevis version 1.1.0


Release Notes

  • Add support for opening PKGs, including PKGs inside ZIPs and DMGs
  • Improve detection of downloaded files
  • Ensure app is brought forward when opening from status bar icon
  • Fix handling of DMGs if Nevis is force quit and reopened

Nevis version 1.0.1


Release Notes

  • Improve handling of watch folder
  • Improve notification text when an error occurs