Files
gelectron/ELECTRON_API_STATUS.md
T

12 KiB

Gelectron — Electron API Compatibility Status

Every Electron module tracked. Status: full / partial / stub / missing

full = API surface complete, behavior matches Electron for common use cases partial = Core methods work, some methods are no-ops or return defaults stub = API surface exists but does nothing real missing = Not implemented at all


Browser (Main Process) Modules

# Module File webview-bundle index.js Status Notes
1 app YES YES YES full All methods, properties, events, quit lifecycle, dock, badge, GPU, about panel, secure keyboard, window tracking
2 autoUpdater YES YES YES stub API surface for electron-updater compat, no actual updates
3 BaseWindow NO NO NO missing Parent class for BrowserWindow, not implemented
4 BrowserView NO NO NO missing Deprecated in favor of WebContentsView
5 BrowserWindow YES YES YES partial create/show/hide/focus/min/max/close/destroy/setTitle/setSize/loadURL/loadFile. Missing: DevTools, navigation, capturePage, print, printToPDF
6 clipboard YES inline YES full readText/writeText/readHTML/writeHTML/readRTF/writeRTF/readImage/writeImage/readBookmark/writeBookmark/readFindText/writeFindText/clear/availableFormats/has. Sync via Unix FIFO channel (macOS/Linux) or async bridge (Windows). RTF/bookmark/find-text/formats via NSPasteboard on macOS
7 contentTracing NO NO NO missing Tracing/recording profiling data
8 crashReporter NO NO NO missing Crash upload to server
9 desktopCapturer NO NO NO missing Screen/window capture source enumeration
10 dialog YES YES YES partial showOpenDialog/showSaveDialog/showMessageBox/showErrorBox. Native dialogs wired via rfd (Rust)
11 globalShortcut NO inline YES stub register() always returns true, does nothing
12 ipcMain YES YES YES full handle/handleOnce/on/once/removeHandler, full EventEmitter
13 ImageView NO NO NO missing New in Electron 33+, image display view
14 inAppPurchase NO NO NO missing macOS App Store in-app purchases
15 Menu YES YES YES partial buildFromTemplate/append/insert/getMenuItemById, native setApplicationMenu via muda, _serialize. Missing: click events from native menu, role-based predefined items
16 MenuItem YES YES YES partial All properties present (id/label/type/role/accelerator/enabled/visible/checked/submenu/click). Missing: role auto-behavior
17 MessageChannelMain NO NO NO missing MessagePort-based IPC between main/renderer
18 nativeImage YES YES YES partial createFromPath/Buffer/DataURL, toDataURL, getSize. Missing: resize/crop pixel transform, proper toPNG/toJPEG
19 nativeTheme YES inline YES partial NativeTheme class: shouldUseDarkColors (getter + method), themeSource (getter/setter), shouldSystemUseDarkColors, queries Rust for system theme. systemPreferences.isDarkMode() linked
20 net NO inline YES partial fetch delegates to globalThis.fetch. Missing: net.request(), ClientRequest API
21 netLog NO NO NO missing Network log capture
22 Notification YES YES YES full Full Electron API (title/subtitle/body/silent/icon/urgency/timeoutType/actions/hasReply/replyPlaceholder/sound/closeButtonText/toastXml). Native OS integration via notify-rust (macOS Notification Center, Windows Toasts, Linux D-Bus). Events: show/click/action/reply/close/failed
23 powerMonitor NO inline YES stub getSystemIdleState returns 'active', no real monitoring
24 powerSaveBlocker NO NO NO missing Prevent system sleep
25 protocol NO inline (session) NO missing Custom protocol registration (standalone module). Session stubs exist
26 pushNotifications NO NO NO missing macOS push notification registration
27 safeStorage YES YES YES stub Base64 encoding, not real encryption
28 screen YES inline YES partial Screen class: getPrimaryDisplay/getAllDisplays/getDisplayMatching/getCursorScreenPoint/getMenuBarHeight, fetches real monitor info from Rust via bridge
29 ServiceWorkerMain NO NO NO missing Service worker management in main process
30 session NO inline YES stub defaultSession + fromPartition stubs, all no-ops
31 sharedTexture NO NO NO missing Shared texture between processes
32 ShareMenu NO NO NO missing macOS share sheet
33 shell YES YES YES partial openExternal/openPath (open crate), showItemInFolder (platform commands), moveItemToTrash (trash/fallback), beep. Shortcut stubs
34 systemPreferences NO inline YES stub isDarkMode() linked to nativeTheme. Most other methods are no-ops
35 TouchBar NO NO NO missing macOS Touch Bar. Sub-classes: TouchBarButton, TouchBarColorPicker, TouchBarGroup, TouchBarLabel, TouchBarOtherItemsProxy, TouchBarPopover, TouchBarScrubber, TouchBarSegmentedControl, TouchBarSlider, TouchBarSpacer
36 Tray YES YES YES stub API surface present, no native system tray
37 utilityProcess NO NO NO missing Fork utility child processes
38 View NO NO NO missing Base View class for embedding
39 webContents YES YES YES partial loadURL/loadFile/send/executeJavaScript/reload, session stub. Missing: navigation history, DevTools CDP, zoom, print, capturePage
40 WebContentsView NO NO NO missing View-based content embedding
41 webFrameMain NO NO NO missing Main-process webFrame for frame control

Renderer Process Modules

# Module File webview-bundle index.js Status Notes
42 clipboard (renderer) NO inline YES partial Same as main process: readText/writeText/readImage/writeImage/clear/has via bridge
43 contextBridge YES YES YES partial exposeInMainWorld with deep freeze. No real world isolation
44 crashReporter (renderer) NO NO NO missing Renderer-side crash reporter
45 ipcRenderer YES NO (inline) NO (via require hook) partial invoke/send/sendSync/on/once/removeListener. Bridge not always wired
46 sharedTexture (renderer) NO NO NO missing Renderer-side shared texture
47 webFrame NO NO NO missing setZoomFactor/setZoomLevel/insertCSS/executeJavaScript in frame context
48 webUtils NO NO NO missing Renderer-side utilities (process

Common Modules (Both Processes)

# Module File webview-bundle index.js Status Notes
49 nativeImage YES YES YES partial createFromPath/Buffer/DataURL, toDataURL, getSize. Missing: resize/crop transform
50 shell YES YES YES partial openExternal/openPath/showItemInFolder/moveItemToTrash/beep via bridge (open crate + platform commands)

Deprecated / Internal

# Module Status Notes
51 BrowserView missing Deprecated, replaced by WebContentsView
52 remote missing Removed in Electron 14+
53 webviewTag missing Deprecated, replaced by BrowserView/WebContentsView
54 process (polyfill) partial WebView mode polyfill: pid/argv/env/platform/versions/cwd/nextTick. Missing: memoryUsage/cpuUsage/uptime/kill
55 contextIsolation stub webPreferences.contextIsolation stored but no actual V8 isolate separation

Additional APIs from Electron Docs

# API Status Notes
56 navigation-history missing Navigation history API
57 parent-port missing UtilityProcess communication port
58 web-request missing Intercept/modify HTTP requests
59 web-socket missing WebSocket server
60 window-open missing window.open() handling
61 local-ai-handler missing Local AI model handler (new)

Summary

Status Count Modules
full 4 app, ipcMain, clipboard, Notification
partial 13 BrowserWindow, Menu, MenuItem, dialog, shell, nativeImage, contextBridge, webContents, ipcRenderer, net, process, screen, nativeTheme
stub 7 Tray, safeStorage, autoUpdater, session, systemPreferences, powerMonitor, globalShortcut
missing 36 BaseWindow, BrowserView, contentTracing, crashReporter, desktopCapturer, ImageView, inAppPurchase, MessageChannelMain, netLog, powerSaveBlocker, protocol, pushNotifications, ServiceWorkerMain, sharedTexture, ShareMenu, TouchBar (+10 sub-classes), utilityProcess, View, WebContentsView, webFrameMain, webFrame, webUtils, crashReporter (renderer), sharedTexture (renderer), remote, webviewTag, navigation-history, parent-port, web-request, web-socket, window-open, local-ai-handler
Total 60 BrowserView counted once (listed in both Main and Deprecated tables)

Rust Bridge (main.rs ToRust commands)

These commands are implemented on the Rust side and can be triggered from the WebView:

Command Status Notes
create-window YES Creates a new tao+wry window
destroy-window YES Removes window from state
load-url YES Navigates webview to URL
load-file YES Rebuilds WebView with file:// URL
set-title YES Updates window title
set-size YES Updates window inner size
show / hide / focus YES Window visibility
minimize / maximize YES Window state
close YES Closes window
eval-js YES Execute JavaScript in webview
ipc-message YES Forward IPC to renderer
quit YES Exit event loop
relaunch YES Spawn new process, exit
set-application-menu YES Set native menu via muda (macOS: init_for_nsapp)
popup-menu YES Show context menu via muda
close-popup-menu YES Close context menu
clipboard-read-text YES Read clipboard text via arboard
clipboard-write-text YES Write text to clipboard via arboard
clipboard-read-image YES Read clipboard image (base64 PNG) via arboard
clipboard-write-image YES Write image to clipboard via arboard
clipboard-read-html YES Read HTML via arboard
clipboard-write-html YES Write HTML (with optional plain-text alt) via arboard
clipboard-read-rtf YES Read RTF via NSPasteboard (macOS), empty elsewhere
clipboard-write-rtf YES Write RTF via NSPasteboard (macOS), no-op elsewhere
clipboard-read-bookmark YES Read bookmark { title, url } via NSPasteboard (macOS)
clipboard-write-bookmark YES Write bookmark via NSPasteboard (macOS)
clipboard-read-find-text YES Read find-pasteboard text (macOS), empty elsewhere
clipboard-write-find-text YES Write find-pasteboard text (macOS), no-op elsewhere
clipboard-clear YES Clear clipboard via arboard
clipboard-available-formats YES List MIME formats (NSPasteboard types on macOS, arboard probes elsewhere)
clipboard-has YES Check if a format is present
screen-get-displays YES Query monitor info via tao
native-theme-query YES Detect dark mode via platform API
dialog-open YES Show native open file dialog via rfd
dialog-save YES Show native save file dialog via rfd
dialog-message YES Show native message box via rfd
dialog-error YES Show native error box via rfd
shell-open-external YES Open URL in default browser via open crate
shell-open-path YES Open file in default app via open crate
shell-show-in-folder YES Reveal file in Finder/Explorer via platform command
shell-move-to-trash YES Move file to trash via platform API
shell-beep YES Play system beep