diff --git a/Common/cpp/Tools/RuntimeDecorator.cpp b/Common/cpp/Tools/RuntimeDecorator.cpp index 51613980e87..6dc1fdcbf46 100644 --- a/Common/cpp/Tools/RuntimeDecorator.cpp +++ b/Common/cpp/Tools/RuntimeDecorator.cpp @@ -1,4 +1,5 @@ #include "RuntimeDecorator.h" +#include #include #include #include "LayoutAnimationsProxy.h" @@ -83,6 +84,22 @@ void RuntimeDecorator::decorateRuntime( jsi::PropNameID::forAscii(rt, "_setGlobalConsole"), 1, setGlobalConsole)); + + rt.global().setProperty( + rt, + "_chronoNow", + jsi::Function::createFromHostFunction( + rt, + jsi::PropNameID::forAscii(rt, "_chronoNow"), + 0, + [](jsi::Runtime &rt, + const jsi::Value &thisValue, + const jsi::Value *args, + size_t count) -> jsi::Value { + double now = std::chrono::system_clock::now().time_since_epoch() / + std::chrono::milliseconds(1); + return jsi::Value(now); + })); } void RuntimeDecorator::decorateUIRuntime( diff --git a/src/reanimated2/core.ts b/src/reanimated2/core.ts index 3a8b9aa72cb..9bbd3888883 100644 --- a/src/reanimated2/core.ts +++ b/src/reanimated2/core.ts @@ -383,6 +383,9 @@ if (!NativeReanimatedModule.useOnlyV1) { info: runOnJS(capturableConsole.info), }; _setGlobalConsole(console); + global.performance = { + now: global._chronoNow, + }; })(); }