Skip to content

Add CHANGELOG and 3.0 migration guide - #103

Merged
jmarek41 merged 3 commits into
mainfrom
docs/migration-guide-3.0
Oct 20, 2026
Merged

jmarek41 merged 3 commits into
mainfrom
docs/migration-guide-3.0

Conversation

@jmarek41

@jmarek41 jmarek41 commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

Adds CHANGELOG.md and a short 2.x → 3.0 migration guide covering only the changes that need action. Linked from the README.

Closes #102

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@jmarek41
jmarek41 requested a review from ssestak October 13, 2026 10:52
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

@radimvaculik radimvaculik left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread Documentation/Migration-3.0.md Outdated

| Removed | Replacement |
|---|---|
| `Nibable` | `UINib(nibName: MyView.nibName, bundle: nil).instantiate(withOwner: nil).first as! MyView` |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.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!

Comment thread Documentation/Migration-3.0.md Outdated
| `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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 … }`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread CHANGELOG.md

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>
@jmarek41
jmarek41 marked this pull request as ready for review October 13, 2026 12:59
@jmarek41
jmarek41 requested a review from radimvaculik October 13, 2026 14:39
@jmarek41
jmarek41 merged commit 8faf788 into main Oct 20, 2026
1 check passed
@jmarek41
jmarek41 deleted the docs/migration-guide-3.0 branch October 20, 2026 11:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add CHANGELOG.md and a 2.3.0 → 3.0.0 migration guide

3 participants