Repository navigation
Add CHANGELOG and 3.0 migration guide - #103
Conversation
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
radimvaculik
left a comment
There was a problem hiding this comment.
Checked the docs against the 2.3.0...3.0.0 diff — everything listed is accurate and all points from #102 are covered. Good call keeping the explicit any change under Changed rather than Breaking, since it's source-compatible for consumers. A few minor suggestions inline, none blocking.
|
|
||
| | Removed | Replacement | | ||
| |---|---| | ||
| | `Nibable` | `UINib(nibName: MyView.nibName, bundle: nil).instantiate(withOwner: nil).first as! MyView` | |
There was a problem hiding this comment.
.first as! MyView crashes when the XIB has more than one top-level object (e.g. a gesture recognizer) and the view isn't first. The original Nibable picked the first object of the matching type, so this would be a closer equivalent:
UINib(nibName: MyView.nibName, bundle: nil).instantiate(withOwner: nil).lazy.compactMap { $0 as? MyView }.first!| | `FuntastyKitIBInspectable` | Remove the package product; set `layer` properties in code | | ||
|
|
||
| > [!WARNING] | ||
| > The compiler doesn't catch removals used from Interface Builder. Search your `.xib` and `.storyboard` files for `HairlineLayoutConstraint`, `KeyboardHeightConstraint` and the runtime attributes `borderWidth`, `borderColor` and `shadow…`. Leftover attributes crash when the view loads; leftover constraints silently become plain `NSLayoutConstraint`s. |
There was a problem hiding this comment.
cornerRadius was part of the same IBInspectable extension but isn't listed here — intentional? If it's left out because it doesn't crash, it might still be worth mentioning that it silently stops being applied.
There was a problem hiding this comment.
cornerRadius is left out of the warning on purpose: the warning covers IB only, and UIView handles the cornerRadius runtime attribute natively, so it still applies and doesn't crash (checked on simulator). While checking, I found the other attributes don't crash either; UIKit just logs and skips them. I've updated the warning.
|
|
||
| ## Coordinators are `@MainActor` | ||
|
|
||
| `Coordinator` and all its sub-protocols, `CoordinatorDelegate` and `Deselectable` are now `@MainActor`. Nothing to do if your target uses default `MainActor` isolation; otherwise annotate code that creates or calls coordinators with `@MainActor`, or reach them with `await` / `Task { @MainActor in … }`. |
There was a problem hiding this comment.
Might be worth a sentence on inference: a class that conforms to Coordinator / CoordinatorDelegate in its primary declaration becomes @MainActor as a whole (including its init). That's what propagates into view models that create or hold coordinators, and is likely where most upgrade errors come from.
|
|
||
| All notable changes to this project are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||
|
|
||
| ## [3.0.0] - 2026-03-17 |
There was a problem hiding this comment.
Nit: Keep a Changelog recommends an ## [Unreleased] section at the top so future changes have a place to land.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Adds
CHANGELOG.mdand a short 2.x → 3.0 migration guide covering only the changes that need action. Linked from the README.Closes #102