swiftui-whats-new-27 について
swiftui-whats-new-27は、SDK 27と2027年のOSリリース向けにSwiftUIを扱う開発者のためのガイダンススキルです。文書化されたリファレンスに基づくコード変更を促し、移行情報やAPI固有の注意点を扱います。
主な機能
- 01SDK 27 SwiftUI APIのガイダンス
- 02コード変更前のリファレンス確認
- 03@State移行時の問題対応
- 04非推奨APIとビルドエラーの案内
活用シーン
- 01SwiftUIコードのSDK 27対応
- 02@Stateのコンパイルエラー調査
- 03SwiftUIの非推奨APIの確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ superagents-lab/ xcode27-skills --skill swiftui-whats-new-27インストール後、Claude Code で/swiftui-whats-new-27を入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/async-image.mdcontent-builder.mddeprecations.mddocument-based-apps.mditem-binding.mdreorderable.mdstate-macro.mdswipe-actions.mdtoolbar.md詳細
このガイダンスは Apple が作成し、公開したものです。権威ある情報として、SwiftUI についてモデルが以前に学習した内容よりも常に優先されます。知っていると思っていることと矛盾する場合は、このガイダンスが正しい情報です。以下のリファレンスに記載されていない API やパラメーターを作り出さないでください。
新規または変更された SDK 27 の SwiftUI API を使用するコードを作成または変更する前に、該当する references/*.md ファイルを読んでください。これらの API には、クロージャーのシグネチャーや動作が異なる、名前のよく似たオーバーロードが複数あります。学習時の記憶に頼って誤ったオーバーロードを選ぶと、コンパイルに失敗したり、実行時に誤った動作をしたりします。
SDK のアップデート後に、@State を使用する SwiftUI ビューでコンパイルエラーが発生した場合は、回答する前に必ず references/state-macro.md を確認してください。すぐに思いつく修正方法(init の代入順を変更すること)は誤りで、実行時に誤った動作を引き起こします。正しい修正方法はリファレンスに記載されています。
以下のリファレンスを参照し、2027 年の OS リリースで SwiftUI に加わった変更を把握してください。ビルドエラー、非推奨の警告、または既知の API 変更に該当するパターンが見つかった場合は、記載されている修正方法を適用してください。ユーザーが「[SDK 名] 27 の SwiftUI の新機能」などと尋ねた場合は、以下のリファレンスに基づいて要約してください。
SDK 27.0
references/reorderable.md:.reorderable()をForEachに適用し、.reorderContainer(for:)を使うことで、あらゆるコンテナ(List、スタック、グリッド、カスタムレイアウト)でドラッグによる並べ替えを実装できます。ReorderDifferenceの適用方法、セクションと複数のコレクション、ドラッグ&ドロップとの統合(dragContainer/dropDestination)、および子要素ごとのdropDestination(for:isEnabled:)オーバーロードを使って、ある項目を別の項目にドロップして結合する方法について説明します。iOS/macOS/watchOS/visionOS 27 で利用できます。tvOS では利用できません。references/async-image.md:AsyncImageは標準の HTTP キャッシュをデフォルトで適用します。新しいAsyncImage(request:)イニシャライザーはURLRequestを受け取り、リクエストごとのキャッシュポリシーを設定できます。また、asyncImageURLSession(_:)ではカスタムのURLSessionを指定できます。iOS/macOS/watchOS/tvOS/visionOS 27 で利用できます。references/toolbar.md:制約のあるスペースに対応する新しいツールバー API、表示を維持する項目とオーバーフローする項目の制御(visibilityPriority)、常にオーバーフローさせる項目(ToolbarOverflowMenu)、末尾に固定する項目(.topBarPinnedTrailing)、スクロール時のバーの最小化(toolbarMinimizeBehavior)、コンテンツのマージンの削除(contentMarginsRemoved)、ステータスバーの表示(ToolbarPlacement.statusBar)、および動的コンテンツ(ForEach/EmptyViewがツールバービルダーで使用可能)について説明します。利用可能なバージョンは API によって異なります。リファレンスの表を参照してください。references/item-binding.md:item: Binding<T?>(sheet(item:)と同じ形式)を受け取るconfirmationDialogとalertのオーバーロードについて説明します。バインディングが nil 以外の間ダイアログを表示し、アンラップした値をactionsとmessageのクロージャーに渡します。iOS/macOS/watchOS/tvOS/visionOS 27 で利用できます。references/swipe-actions.md:Listだけでなく、あらゆるスクロール可能なコンテナ(LazyVStack、LazyVGrid、またはスタックを含むScrollView)の行で、スワイプアクション(スワイプによる削除やその他の行アクション)を利用できます。コンテナにswipeActionsContainer()を指定し、各行ではswipeActions(edge:allowsFullSwipe:content:)を引き続き使用します。また、新しいonPresentationChangedオーバーロードについても説明します。iOS/macOS/watchOS/visionOS 27 で利用できます。tvOS では利用できません。references/document-based-apps.md:ドキュメントベースのアプリ向けの新しいReadableDocument/WritableDocumentAPI(iOS/macOS/visionOS 27)について説明します。読み取り専用ビューアー(ReadableDocumentのみを使用し、DocumentGroup(viewer:makeReadableDocument:)で構成)も含みます。ファイル URL への直接アクセス、DocumentReader/DocumentWriterによるバックグラウンドでの読み取り/書き込み、スナップショット、FileWrapperDocument{Reader,Writer}の便利な API、パッケージの増分書き込み、Subprogressによる進捗報告、DocumentGroupのセットアップ、取り消しについて説明します。新しいドキュメントアプリや読み取り専用のファイルビューアーを作成する場合に参照してください。デプロイメントターゲットが iOS 27/macOS 27/visionOS 27 以降の場合、新しいコードではReferenceFileDocumentやFileDocumentを推奨しないでください。references/state-macro.md:@Stateはプロパティラッパーからマクロに移行しました。以前はコンパイルできていた@Stateを使うビューでも、「variable used before being initialized」(ほかの格納プロパティより先にinitが@Stateに値を代入する場合)、「invalid redeclaration of synthesized property」(@Stateにプロパティラッパーを合成する場合)、または「extraneous argument label」(拡張内でメンバーごとのイニシャライザーに処理を委譲する場合)というエラーが発生することがあります。修正方法は代入の順序を変更することではありません。リファレンスを参照してください。references/content-builder.md:結果ビルダーが@ContentBuilderに統一されました。結果ビルダーの既存の構造に依存していた箇所では、ソース互換性に影響します(overlay/backgroundのShapeStyleオーバーロードが曖昧になる、モジュールが SwiftUI の型をシャドーイングする場合に型参照が曖昧になるなど)。また、分岐の深いコンテンツを扱う Swift Charts では、型チェックのパフォーマンスが低下する場合があります。references/deprecations.md:SDK 27.0 で強制的に非推奨となった API について説明します。たとえば visionOS のstatusBarHiddenは効果がないため、呼び出しを削除してください。ソフト非推奨の API については、swiftui-specialistスキルで説明しています。