Skip to content

Add CHANGELOG.md and a 2.3.0 → 3.0.0 migration guide #102

Description

@radimvaculik

3.0.0 is the first release in four years and it is a major version with a fair amount of breaking changes, but the only thing describing it is the auto-generated release note pointing at #101 ("Update to support Swift 6 / Remove obsolete code"). To find out what actually changed and what it means for an app, you have to read a 24-file diff.

It would help a lot if the repo had:

1. CHANGELOG.md

A hand-written, human-readable changelog (Keep a Changelog style is fine), with Added / Changed / Removed / Breaking sections per version. The auto-generated "What's Changed" list of PR titles doesn't convey the impact of a major bump.

2. Migration / upgrade guide for 2.3.0 → 3.0.0

Either a section in the README or a Documentation/Migration-3.0.md. From reading the diff, these are the things an app upgrading from 2.3.0 runs into:

  • CocoaPods support dropped — FuntastyKit.podspec (and Gemfile) removed, SPM only. Worth stating explicitly, including what CocoaPods users should do.
  • Umbrella/transitive imports gone — with SPM every file that names a UI* type now needs its own import UIKit.
  • @MainActor added across the coordinator API (Coordinator, DefaultCoordinator, ShowCoordinator, PushCoordinator, ModalCoordinator, TabBarItemCoordinator, alert helpers). This propagates into every app-side coordinator/view model and is the single biggest source of compile errors.
  • ErrorAction.ErrorHandler is now @MainActor @Sendable () -> Void, and ErrorAction / ErrorAction.Style / AlertCoordinator.Source / AlertCoordinator.Style are Sendable.
  • Existential any required — CoordinatorDelegate → any CoordinatorDelegate, Error → any Error, Deselectable → any Deselectable in public signatures.
  • Types removed — Nibable, StoryboardType / StoryboardReference, HairlineLayoutConstraint, KeyboardHeightConstraint, and the whole FuntastyKitIBInspectable target. A one-line "use X instead" (or "no replacement, copy it into your app") for each would save a lot of guesswork.
  • Minimum toolchain / deployment target — which Swift and Xcode version 3.0.0 requires, and whether the minimum iOS target moved.

Even a short bullet list per item ("what changed → what to do in your app") would make the upgrade a mechanical task instead of a diff-reading exercise. Happy to open a PR with a first draft of the migration notes based on what we hit while upgrading, if that's useful.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions