You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Prebuilt node-api facade for published addons #496
Let published prebuilds record a neutral node-api library name, provided by a small prebuilt library the host embeds in the app. Addons then never name an engine, and a Hermes rename or a new engine means adding a facade rather than rebuilding addons. Deferred: the RFC in #447 doesn't need this. It depends on the stub generator in #494.
The facade has no code, table or injection step. On Apple it re-exports the Node-API symbols from Hermes, and on Android it's an empty library with a DT_NEEDED on Hermes. Details are in #493, and the spike findings are in this comment: 18 of 18 tests passed on an iOS simulator and an Android emulator, with async recording only node-api and resolving into Hermes.
Steps
Run a Release build on a physical iPhone, through signing and App Store validation. This is the main remaining risk and should come first.
Add a way for a module to tell link to keep its exact name. The spike hacks getLibraryName.
Add a prebuilt facade per backend, built with cmake-rn against a stub of the engine, with a generated re-export list on Apple.
Make link choose which facade to embed.
Open questions
Can weak-node-api be built under the node-api name as an alternative backend, so one addon binary works with either?
Should in-app and from-source addons use the same path, so there's only one to maintain?
node-api becomes a stable ABI contract once prebuilds ship, so settle the name before publishing any.
Activity