diff --git a/React/Base/RCTDisplayLink.m b/React/Base/RCTDisplayLink.m index 6c42e3241c8..4aed812ed7e 100644 --- a/React/Base/RCTDisplayLink.m +++ b/React/Base/RCTDisplayLink.m @@ -95,6 +95,13 @@ - (void)invalidate { + // ensure observer callbacks do not hold a reference to weak self via pauseCallback + for (RCTModuleData *moduleData in _frameUpdateObservers) { + id observer = (id)moduleData.instance; + [observer setPauseCallback:nil]; + } + [_frameUpdateObservers removeAllObjects]; // just to be explicit + [_jsDisplayLink invalidate]; }