← Back to context

Comment by jitl

19 days ago

If the Electron app is pure JS with no native extensions it can be doable. However, many Electron apps contain platform-specific js code, since features for stuff like Dock on Mac and Taskbar icons on Windows differ. Electron apps like Notion also contain native extensions - compiled C/C++/Objective-C code that are platform specific. For example in Notion, we use sqlite via better-sqlite3 (potentially replaceable since it’s open source, but will need more work than “just” repackaging js), but we also write our own native support libraries to use OS-specific APIs for microphone recording in meeting notes feature.

Thank you for the thorough reply :)

I really like the comments on HN, they are very often really interesting and you actually often learn something new that actually matters.

I have seen many people porting such apps, like there is aur package for notion, figma

  • It's cool that arch users give porting Notion a valiant effort. But as I predicted, custom native extensions will be [a problem](https://aur.archlinux.org/packages/notion-app-electron#comme...):

    > Could it be possible to make the relatively new AI meeting notes feature to work?

    > Right now I get the following error when I click the "start transcribing" button:

        Error occurred in handler for 'notion:get-media-access-status': TypeError: s.systemPreferences.getMediaAccessStatus is not a function
            at /usr/lib/notion-app/app.asar/.webpack/main/index.js:2:631015
            at WebContents.<anonymous> (node:electron/js2c/browser_init:2:87444)
            at WebContents.emit (node:events:524:28)