macOS Rework Umbrella
Author: iccirCreated Aug 7, 2026Updated Sep 17, 2026
LabelsOS: AppleGUI: MacOSX
This is an umbrella issue to keep track of the macOS Rework PRs and outstanding issues.
Pull Requests
Each phase depends on the previous phase's pull requests.
Phase 1
| Pull Request | Description |
|---|---|
| #32161 - Initial | Closes #31770 Closes #31813 Closes #31875 Closes #31933 |
Phase 2
| Pull Request | Description |
|---|---|
| #32361 - App Icon | Closes #31895 |
| #32362 - Button Release | Closes #31899 |
| #32363 - Event Loop | Closes #30419 |
| #32364 - Subplot Tool | Native subplot tool. Closes #27592 |
| Pending - Timer | Mimic QTimer. Helps with #29029 and #29062 |
| #32365 - Toolbar | Cosmetic changes to toolbar buttons. |
Phase 3
| Pull Request | Description |
|---|---|
| Pending - Threading | Closes #31968. Fixes issues on free-threaded build. |
Remaining Issues (no PR planned yet)
#32041 - This involves a simple compatibility shim, deprecation warning, and notifying other projects. Likely not applicable if we keep "macosx" in 3.12 and deprecate the whole backend.
Remaining work without issues or PRs:
- Research IPython and the mapping between
"macosx"/"macos"/"osx"in_fix_ipython_backend2gui. - "test_backend_macosx.py" should probably become "test_backend_macos.py", and a new "test_backend_macosx.py" goes in to test deprecation notices and/or the compatibility shim.
- Only install
PyOS_InputHookwhen we also install our app delegate (see #32314). Add API to manually install our input hook, if desired. Adjust app delegate instantiation - should it only occur if we enter_macos__initwith noNSApp? - Documentation changes / API Notes / Release Notes
- Change "GUI: MacOSX" label to "GUI: macOS". Update labeler.yml
- Actual switchover from
macosxtomacosas default
Source: matplotlib/matplotlib