How the macOS System has changed over 7 years

There have been great changes in macOS over the last seven years, since macOS 10.14 Mojave and 10.15 Catalina. It has gone from a single volume containing a mixture of system and user files, to two intertwined volumes, one of them a mounted snapshot, and from supporting 32- and 64-bit Intel apps to 64-bit Arm code for Apple silicon.

As I have tracked all the changes made in bundled apps and the /System/Library folder in each full release over those years, this article provides more insight into just how much has changed up to the first public release of macOS Golden Gate 27.0 four weeks ago.

In each full release, my app records the path, name, version and build number of every bundle in /System/Applications for bundled apps excluding Safari and those relegated to CoreServices, and the same information for every bundle in /System/Library. Because of the structure of most frameworks, those tend to be recorded twice, so where appropriate I’ll refer to a corrected figure of half the bundles counted in /System/Library/Frameworks and /System/Library/PrivateFrameworks.

More bundles

These bars compare the raw numbers of bundles in the more significant System folders, from a late version of Catalina 10.15.6, and Golden Gate 27.0. While changes in smaller folders such as Accessibility and CoreServices have been small, there has been a huge increase in bundles in AssetsV2, substantial growth in (kernel) Extensions and public Frameworks. The most obvious growth is in PrivateFrameworks (uncorrected), which are now three times as numerous as they were seven years ago.

This chart provides details for the first public release of each major version of macOS, and its last before going into security-only maintenance, from Mojave 10.14.5 to Golden Gate 27.0. Raw numbers of Private Frameworks are shown in purple, public Frameworks in dark blue, (kernel) Extensions in red, and all others in light blue at the top of each bar.

Cycles

Up to macOS 15.0, changes in numbers within each major version have tended to be small, with the big step going from the last release to the next major version. In macOS 13, there was almost no change between 13.0 and 13.5. Since 15.0, though, there has been almost as much growth within each cycle, as between the end of one cycle and the start of the next. Those who prefer to upgrade to the next major version when it reaches its x.3 or x.4 release may now be little better off for their delay.

This suggests that Apple may have moved to more continuous development and introduction of new features part-way through the annual cycle, rather than aiming to bring most new features to the autumn/fall upgrade.

Those observations are clear in this chart of the total numbers of bundles (uncorrected) in /System/Library over that period, as is the huge increase in macOS 27.0 last month.

Bundled apps

The number of bundled apps, excluding Safari as it’s not supplied in the /System/Applications folder, steadily increased from 40 in Catalina to 68 in Tahoe, and has remained there for over a year now.

Kernel extensions

With the removal of support for all Intel Macs in Golden Gate, a marked reduction in the number of kernel extensions was to be expected. That fell by 52 from 970 to 918. That is far less than the number added with the introduction of the first Apple silicon Macs in Big Sur, when the total rose by 253 from 535 to 788. However much kernel extensions might be deprecated for third parties, they have never been more popular within Apple.

Frameworks

The elephant in the System is the explosive growth of Frameworks, particularly those Apple keeps to itself in private. Public Frameworks have risen steadily in number, from 273 in 10.14.5 to 428 in 26.6, and more sharply to 464 in 27.0 (using corrected totals); Private Frameworks have risen even faster, from 878 to 2501 and 2754 across the same versions.

This is best seen in the chart above, showing the percentage of all Frameworks that are Private. That has risen from 76% in 10.14 to 85% from macOS 26.0 onwards. I have previously expressed my concern that more and more of macOS is being locked away from third-party developers. Although addition of 36 (corrected) new public Frameworks in macOS 27.0 is welcome, that same step brought 253 new Private Frameworks that only Apple software can use. The gap between Apple and third-parties continues to widen.

Conclusions

  • Compared with all previous versions, macOS continues to grow in 26.x and 27.0.
  • Substantial growth has been in /System/Library/AssetsV2 with increasing reliance on downloaded additions there, and in both public and Private Frameworks.
  • There are now three times as many Private Framework bundles as there were seven years ago.
  • The previous pattern of greatest growth (and change) between major versions of macOS is being replaced by more continuous growth, including mid-cycle.
  • That may remove any advantage to delaying upgrading to the next macOS mid-cycle.
  • Removal of Intel support in macOS 27.0 brought a reduction in the number of kernel extensions, as expected, although that was far less than the number added to support the first Apple silicon Macs.
  • Approximately 85% of all frameworks are now private, and that percentage continues to rise. macOS is thus an increasingly inaccessible operating system for third-party developers.