Registry /
web-framework / pyobjc-framework-browserenginekit
Install & Compatibility
Where this runs
tested against v? · pip install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.940 runs
build_error
glibcpy 3.10–3.940 runs
build_error
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
BEBrowserViewController
✓ from BrowserEngineKit import BEBrowserViewController
Classes from BrowserEngineKit are typically imported directly from the 'BrowserEngineKit' package.
This example demonstrates how to instantiate a `BEBrowserViewController` within a minimal macOS GUI application using PyObjC. It creates a simple window and embeds the browser view controller's view into it. Running this code requires a macOS environment and will display an empty browser window.
import objc
from AppKit import NSApplication, NSWindow, NSMakeRect
from BrowserEngineKit import BEBrowserViewController
from PyObjCTools import AppHelper # Common for PyObjC GUI apps
class MyBrowserViewController(BEBrowserViewController):
# A minimal subclass just to demonstrate extending BEBrowserViewController
pass
class AppDelegate(objc.NSObject):
def applicationDidFinishLaunching_(self, notification):
self.mainWindow = NSWindow.alloc().initWithContentRect_styleMask_backing_defer_(
NSMakeRect(100, 100, 800, 600),
4 | 8 | 1 | 2, # Titled, Closable, Miniaturizable, Resizable
2, # NSBackingStoreBuffered
False
)
self.mainWindow.setTitle_("PyObjC BrowserEngineKit Demo")
self.browserVC = MyBrowserViewController.alloc().init()
self.mainWindow.setContentView_(self.browserVC.view())
self.mainWindow.makeKeyAndOrderFront_(None)
def main():
app = NSApplication.sharedApplication()
delegate = AppDelegate.alloc().init()
app.setDelegate_(delegate)
AppHelper.runEventLoop() # Starts the macOS event loop
if __name__ == "__main__":
main()
Debug
Known issues
breakingPython 3.9 support was dropped in PyObjC 12.0. Python 3.8 support was dropped in PyObjC 11.0. Future versions will continue to drop support for older Python versions as they reach end-of-life.fixEnsure your Python environment is 3.10 or newer (for PyObjC 12.x) and regularly update Python alongside PyObjC.
affects: 11.0, 12.0+
breakingPyObjC 11.1 introduced changes to how Objective-C Automatic Reference Counting (ARC) rules are modeled for 'init' family methods, aligning with `clang`'s documentation. This means `init` methods now correctly 'steal' a reference to `self` and return a new one, potentially affecting custom memory management or object lifecycle expectations.fixReview object lifecycle management, especially around custom Objective-C `init` methods defined in Python, to ensure correct reference counting behavior.
affects: 11.1+
breakingPyObjC 10.3 changed the interaction between Python's `__init__` and `__new__` methods. While 10.3.1 partially reverted this for user-implemented `__new__` methods, code relying on `__new__` provided by PyObjC cannot use `__init__`.fixIf implementing `__new__`, carefully manage initialization logic. For classes relying on PyObjC's `__new__`, avoid implementing `__init__`.
affects: 10.3+
gotchaPyObjC does not support Python's experimental free-threading (PEP 703) in Python 3.13, despite binary wheels being available. Running PyObjC in a free-threaded Python environment may lead to instability.fixAvoid using PyObjC in free-threaded Python 3.13 environments, or ensure Python is run in a mode that disables free-threading if using PyObjC.
affects: 10.3+ with Python 3.13
breaking`objc.classAddMethods` no longer supports passing arbitrary callable types (e.g., `functools.partial`) as method implementations. Only `MethodType` or `FunctionType` values are accepted.fixRefactor code using `objc.classAddMethods` to ensure only `MethodType` or `FunctionType` objects are passed as method implementations.
affects: 12.1+
breakingEntire frameworks that were deprecated by Apple have been removed from PyObjC bindings. For example, `IMServicePlugIn` was removed in PyObjC 10.0.fixCheck the release notes for major PyObjC versions if you receive import errors for frameworks. Migrate away from any frameworks deprecated and removed by Apple/PyObjC.
affects: 10.0+
Upgrade
Version history
12.2latest on PyPI · released May 30, 2026
Audit
Dependencies
pyobjc-corerequiredCore bridge between Python and Objective-C, required for all PyObjC framework bindings.