#32176·matplotlib

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_InputHook when 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__init with no NSApp?
  • Documentation changes / API Notes / Release Notes
  • Change "GUI: MacOSX" label to "GUI: macOS". Update labeler.yml
  • Actual switchover from macosx to macos as default