Open
Description
🚨 Announcements 🚨
Xcode 26 was announced on June 9th 2025 at WWDC, we will be working on supporting it in the upcoming months. So stay tuned! We will be updating this issue as we make progress on it. For now we do not have Xcode 26 supported packages just yet.
✅ Checklist
Xcode 26
- Create new milestone in GitHub.
- Create a new issue with a copy of this list, assign it to the milestone.
Beta 1
- Update binding status in wiki. -> https://github.com/dotnet/macios/wiki/xcode26.0-Bindings-Status
- Create a new
xcodeX[.Y]
branch (only for the first Xcode bump) - this needs deciding where to branch from (which is outside the scope of this document). Push this branch toorigin
with no changes. -> https://github.com/dotnet/macios/tree/xcode26.0 - Create PR with an Xcode bump. -> [xcode26.0] Initial Xcode 26.0 support #23013
- Update the following values in
Make.versions
(only for the first Xcode bump):- *_NUGET_OS_VERSION
- Update the following values in
Make.config
:- XCODE_VERSION
- XCODE_URL
- XCODE_DEVELOPER_ROOT
- Update any
xcodeChannel
values in tools/devops. Change toBeta
if using an Xcode beta or release candidate, and switch back toStable
with the final (stable) Xcode release.$ cd tools/devops $ git grep -nE -e 'xcodeChannel: (Stable|Beta)' -i [...] # these are the matches that may need fixing.
- Add the new OS versions to the
builds/Version-*.plist.in
files. - Build and fix any issues.
- Run the following tests locally, and fix any issues (these are the ones that typically fail in Xcode bumps, but there may be other failing tests as well - CI will report any such failures once the PR is created):
- xtro
- monotouch-test
- introspection
- cecil
- bgen
- Update the following values in
- Update any existing API bindings PRs if needed.
- Bind APIs!
RC
- Update binding status in wiki.
- Create PR with an Xcode bump.
- Update the following values in
Make.versions
(only for the first Xcode bump):- *_NUGET_OS_VERSION
- Update the following values in
Make.config
:- XCODE_VERSION
- XCODE_URL
- XCODE_DEVELOPER_ROOT
- Update any
xcodeChannel
values in tools/devops. Change toBeta
if using an Xcode beta or release candidate, and switch back toStable
with the final (stable) Xcode release.$ cd tools/devops $ git grep -nE -e 'xcodeChannel: (Stable|Beta)' -i [...] # these are the matches that may need fixing.
- Add the new OS versions to the
builds/Version-*.plist.in
files. - Build and fix any issues.
- Run the following tests locally, and fix any issues (these are the ones that typically fail in Xcode bumps, but there may be other failing tests as well - CI will report any such failures once the PR is created):
- xtro
- monotouch-test
- introspection
- cecil
- bgen
- Update the following values in
- Update any existing API bindings PRs if needed.
- Bind APIs!
Pre-release process
This happens after the stable version of Xcode has been released and the xcodeX[.Y]
branch updated accordingly according to the previous section.
- Make sure all the PRs targeting the
xcodeX[.Y]
branch have been merged and no more changes are desired for the release. - Merge the
xcodeX[.Y]
branch intomain
. - Merge
main
into the target release branch (for instance this wasrelease/9.0.1xx
for the Xcode 16.4 release). - Review the API diff to make sure all the api changes are expected.
- Make sure the release branch created packages after the merge and pushed them to maestro.
- Create VS insertion?
Release process
- Write release notes.
- Publish NuGets to nuget.org.
- Publish release notes.
- Update https://github.com/dotnet/maui/wiki/Release-Versions
- Update API diff (the STABLE_NUGET_VERSION_* variables in
Make.config
). Can only be done after the NuGets have been published to nuget.org. - Update docs by executing
docs/sync-mobile-docs.sh
. Beware if docs were modified in the docs-mobile repository, any such changes will likely have to be copied back first. - Make sure all items in the milestone for the current release have been closed.
- Close this issue & close the milestone.
- Wonder about life as you consider the impossibility of actually reaching this point, because you can't close the milestone before all issues have been closed, and you can't close this issue until checking off all items, which you can't do until you've closed the milestone. Decide to schedule yet another viewing of Life of Brian to
copecelebrate the release 🍾.
Metadata
Metadata
Assignees
Labels
No labels