Jsi

作者 software-mansion-labse3f00cdb3494无许可证291 个星标收录于 2026年10月8日更新于 2026年10月8日仓库10天前更新

React Native JSI (JavaScript Interface) — C++ API for interacting with the JS runtime. Use whenever the user asks about or writes C++ code that touches JSI types or patterns: jsi::Runtime, jsi::Value, jsi::Object, jsi::Function, jsi::Array, jsi::ArrayBuffer, jsi::String, jsi::Symbol, jsi::BigInt, jsi::PropNameID, jsi::HostObject, jsi::HostFunction, jsi::NativeState, jsi::WeakObject, jsi::Scope, JSIException, JSINativeException, JSError, HostFunctionType, createFromHostFunction, getHostObject, setNativeState, evaluateJavaScript, queueMicrotask, drainMicrotasks, setRuntimeData, getRuntimeData, ISerialization, rt.global(), jsi.h, jsi-inl.h, JSI binding, C++ native module, calling JS from C++, calling C++ from JS, HostObject destructor, shared_ptr, CallInvoker, invokeAsync, folly::dynamic with JSI, zero-copy ArrayBuffer, TurboModule C++ layer, Nitro Module, jsi::WithRuntimeDecorator, or any question about the boundary between C++ and the JavaScript engine in React Native.

AI 生成的概览

为编写连接原生代码与 JavaScript 引擎的 React Native JSI C++ 代码提供参考指导。

功能
该技能提供关于 React Native JavaScript 接口(JSI)的参考文档,JSI 是用于读写 JS 值、调用 JS 函数以及向 JS 暴露 C++ 对象的 C++ API。内容涵盖核心类型、类型转换与序列化、线程与安全、异步调用模式、性能、安装模板、模块方案、C++ 内存模式以及调试。它要求智能体每个问题最多加载一个参考文件,并优先选择最匹配的文件。
适用场景
当用户询问或编写涉及 JSI 类型或模式的 C++ 代码时使用,例如 jsi::Runtime、jsi::Value、HostObject、HostFunction 或 ArrayBuffer。它也适用于有关 React Native 中 C++ 与 JavaScript 边界、TurboModule 或 Nitro Module 的 C++ 层以及 JSI 崩溃或陷阱的问题。
运行要求
无脚本;仅包含说明和参考 Markdown 文件。除智能体读取随附的参考文件外,不需要任何软件包、凭据或网络访问。

React Native JSI

The JavaScript Interface (JSI) is a C++ API that lets native code interact directly with the JavaScript engine — reading and writing JS values, calling JS functions, and exposing C++ objects to JS — without going through the old async bridge.

References

Load at most one reference file per question. Prefer the most specific match.

FileLoad when question is about
overview.mdJSI architecture, why rt.global(), sync vs async model, why some methods take Runtime&, event loop absence, queueMicrotask/drainMicrotasks, setRuntimeData/getRuntimeData, evaluateJavaScript caveat, prototype manipulation
core-types.mdJSI type system: Value, PropNameID, HostFunction, HostObject, NativeState, WeakObject, Array, ArrayBuffer, BigInt, Scope — constructors, ownership, lifetimes, GC behavior
casting-and-serialization.mdThe get/as naming convention, getPropertyAsObject/getPropertyAsFunction, string encoding (createFromAscii vs createFromUtf8), zero-copy string access, C++↔JS type mapping, createFromJsonUtf8, folly::dynamic, ISerialization
threading-safety.mdSingle-thread rule, write operations from multiple threads, JSI object destruction order, Value non-copyable + shared_ptr pattern, hot reload / bundle reload pitfalls, WithRuntimeDecorator<AroundLock>
calling-js-and-async.mdInstalling HostFunction bindings, calling JS functions from C++, callWithThis, callAsConstructor (JS Set / Map / Promise), invokeAsync + CallInvoker, Promise resolve/reject patterns, JSIException hierarchy
performance.mdBatching sequential calls, caching PropNameID, zero-copy ArrayBuffer via MutableBuffer, setExternalMemoryPressure, Scope in tight loops, avoiding evaluateJavaScript for function calls
setup-and-templates.mdInstalling a JSI binding in Android (FBJNI, JSIModulePackage) and iOS (ObjC++ .mm), library scaffolding templates, JSI vs TurboModules vs Nitro Modules
module-approaches.mdChoosing between Pure JSI, TurboModules, Nitro Modules, or a pure C++ core with thin adapter — decision tree, trade-offs, boilerplate comparison
cpp-memory-patterns.mdC++ memory for JS developers: unique_ptr, shared_ptr, std::move, lambda captures, RAII, circular ownership, the GC boundary between JS heap and native heap
debugging-and-pitfalls.mdCrash traces, symbolication (c++filt, addr2line, atos, ndk-stack), ASan, common JSI crash patterns, pre-ship checklist

来源与署名

来源:software-mansion-labs/skills位于skills/react-native-best-practices/references/jsi提交e3f00cd

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架