Skip to content

Commit 56922cf

Browse files
authored
[react-native-renderer] Delete Paper (legacy) renderer (#36285)
## Summary The Paper renderer is no longer used in React Native. This commit removes all remaining Paper source code, tests, build system references, and Paper backward-compatibility branches in shared code. Deleted Paper-only source files: - ReactNativeRenderer.js, ReactNativeInjection.js, ReactFiberConfigNative.js - ReactNativeComponentTree.js, ReactNativeEventEmitter.js - ReactNativeFiberHostComponent.js, ReactNativeGlobalResponderHandler.js - ReactNativeAttributePayload.js, NativeMethodsMixinUtils.js - ReactFiberConfig.native.js (reconciler fork) - index.js (Paper entry point) Cleaned up shared files: - ReactNativePublicCompat.js: removed _nativeTag checks, UIManager/ legacySendAccessibilityEvent Paper fallbacks - ReactNativeFiberInspector.js: removed getInspectorDataForViewTag, UIManager.measure fallback, Paper branch in getInspectorDataForViewAtPoint - ReactFiberConfigFabric.js: removed _nativeTag backward compat in getPublicInstance, removed getInspectorDataForViewTag from devtools config - ReactNativeTypes.js: removed ReactNativeType (Paper API type) Cleaned up build system: - inlinedHostConfigs.js: removed shortName 'native' config - forks.js: removed dead 'react-native-renderer' case - Deleted ReactNative.js shim and Paper-only test mocks ## How did you test this change? Manually synced the renderer to RN and passed all Fantom tests. Manually verified the differences in the generated `ReactFabric-dev.js` file. Only Paper compat logic has been removed. <details> <summary>diff</summary> ```diff --- /tmp/react-fabric-baseline/ReactFabric-dev.js 2026-04-16 16:42:42 +++ build/react-native/implementations/ReactFabric-dev.js 2026-04-16 18:08:43 @@ -30,43 +30,19 @@ : emptyObject; } function createHierarchy(fiberHierarchy) { - return fiberHierarchy.map(function (fiber$jscomp$0) { + return fiberHierarchy.map(function (fiber) { return { - name: getComponentNameFromType(fiber$jscomp$0.type), + name: getComponentNameFromType(fiber.type), getInspectorData: function () { return { - props: getHostProps(fiber$jscomp$0), + props: getHostProps(fiber), measure: function (callback) { - var hostFiber = findCurrentHostFiber(fiber$jscomp$0); - if ( - (hostFiber = - null != hostFiber && - null !== hostFiber.stateNode && - hostFiber.stateNode.node) - ) + var hostFiber = findCurrentHostFiber(fiber); + (hostFiber = + null != hostFiber && + null !== hostFiber.stateNode && + hostFiber.stateNode.node) && nativeFabricUIManager.measure(hostFiber, callback); - else { - hostFiber = ReactNativePrivateInterface.UIManager; - var JSCompiler_temp_const = hostFiber.measure, - JSCompiler_inline_result; - a: { - for (var fiber = fiber$jscomp$0; fiber; ) { - null !== fiber.stateNode && - 5 === fiber.tag && - (JSCompiler_inline_result = findNodeHandle( - fiber.stateNode - )); - if (JSCompiler_inline_result) break a; - fiber = fiber.child; - } - JSCompiler_inline_result = null; - } - return JSCompiler_temp_const.call( - hostFiber, - JSCompiler_inline_result, - callback - ); - } } }; } @@ -1805,18 +1781,6 @@ } return null; } - function doesFiberContain(parentFiber, childFiber) { - for ( - var parentFiberAlternate = parentFiber.alternate; - null !== childFiber; - - ) { - if (childFiber === parentFiber || childFiber === parentFiberAlternate) - return !0; - childFiber = childFiber.return; - } - return !1; - } function traverseVisibleHostChildren( child, searchWithinHosts, @@ -16986,44 +16950,6 @@ function getCurrentFiberForDevTools() { return current; } - function findNodeHandle(componentOrHandle) { - var owner = current; - null !== owner && - isRendering && - null !== owner.stateNode && - (owner.stateNode._warnedAboutRefsInRender || - console.error( - "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", - getComponentNameFromType(owner.type) || "A component" - ), - (owner.stateNode._warnedAboutRefsInRender = !0)); - if (null == componentOrHandle) return null; - if ("number" === typeof componentOrHandle) return componentOrHandle; - if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag; - if ( - null != componentOrHandle.canonical && - null != componentOrHandle.canonical.nativeTag - ) - return componentOrHandle.canonical.nativeTag; - if ( - (owner = - ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - )) - ) - return owner; - componentOrHandle = findHostInstanceWithWarning( - componentOrHandle, - "findNodeHandle" - ); - return null == componentOrHandle - ? componentOrHandle - : null != componentOrHandle._nativeTag - ? componentOrHandle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - ); - } function getNodeFromInternalInstanceHandle(internalInstanceHandle) { return ( internalInstanceHandle && @@ -17134,12 +17060,9 @@ } return instance.canonical.publicInstance; } - return null != instance.containerInfo && - null != instance.containerInfo.publicInstance + return null != instance.containerInfo ? instance.containerInfo.publicInstance - : null != instance._nativeTag - ? instance - : null; + : null; } function getPublicInstanceFromHostFiber(fiber) { fiber = getPublicInstance(fiber.stateNode); @@ -18017,7 +17940,6 @@ DefaultEventPriority = 32, IdleEventPriority = 268435456, searchTarget = null, - instanceCache = new Map(), bind = Function.prototype.bind, valueStack = []; var fiberStack = []; @@ -20041,24 +19963,19 @@ _nativeFabricUIManage.unstable_getCurrentEventPriority, extraDevToolsConfig = { getInspectorDataForInstance: getInspectorDataForInstance, - getInspectorDataForViewTag: function (viewTag) { - viewTag = instanceCache.get(viewTag) || null; - return getInspectorDataForInstance(viewTag); - }, getInspectorDataForViewAtPoint: function ( inspectedView, locationX, locationY, callback ) { - var closestInstance = null, - fabricNode = - ReactNativePrivateInterface.getNodeFromPublicInstance( - inspectedView - ); - fabricNode + var closestInstance = null; + (inspectedView = + ReactNativePrivateInterface.getNodeFromPublicInstance( + inspectedView + )) ? nativeFabricUIManager.findNodeAtPoint( - fabricNode, + inspectedView, locationX, locationY, function (internalInstanceHandle) { @@ -20109,32 +20026,9 @@ } } ) - : null != inspectedView._internalFiberInstanceHandleDEV - ? ReactNativePrivateInterface.UIManager.findSubviewIn( - findNodeHandle(inspectedView), - [locationX, locationY], - function (nativeViewTag, left, top, width, height) { - var inspectorData = getInspectorDataForInstance( - instanceCache.get(nativeViewTag) || null - ); - callback( - assign({}, inspectorData, { - pointerY: locationY, - frame: { - left: left, - top: top, - width: width, - height: height - }, - touchedViewTag: nativeViewTag, - closestPublicInstance: nativeViewTag - }) - ); - } - ) - : console.error( - "getInspectorDataForViewAtPoint expects to receive a host component" - ); + : console.error( + "getInspectorDataForViewAtPoint expects to receive a host component" + ); } }, getViewConfigForType = @@ -20368,23 +20262,12 @@ ); }; exports.dispatchCommand = function (handle, command, args) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.dispatchCommand(handle, command, args) + : console.error( "dispatchCommand was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.dispatchCommand(handle, command, args) - : ReactNativePrivateInterface.UIManager.dispatchViewManagerCommand( - nativeTag, - command, - args - )); + ); }; exports.findHostInstance_DEPRECATED = function (componentOrHandle) { var owner = current; @@ -20402,14 +20285,46 @@ : componentOrHandle.canonical && componentOrHandle.canonical.publicInstance ? componentOrHandle.canonical.publicInstance - : componentOrHandle._nativeTag - ? componentOrHandle - : findHostInstanceWithWarning( - componentOrHandle, - "findHostInstance_DEPRECATED" - ); + : findHostInstanceWithWarning( + componentOrHandle, + "findHostInstance_DEPRECATED" + ); }; - exports.findNodeHandle = findNodeHandle; + exports.findNodeHandle = function (componentOrHandle) { + var owner = current; + null !== owner && + isRendering && + null !== owner.stateNode && + (owner.stateNode._warnedAboutRefsInRender || + console.error( + "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", + getComponentNameFromType(owner.type) || "A component" + ), + (owner.stateNode._warnedAboutRefsInRender = !0)); + if (null == componentOrHandle) return null; + if ("number" === typeof componentOrHandle) return componentOrHandle; + if ( + null != componentOrHandle.canonical && + null != componentOrHandle.canonical.nativeTag + ) + return componentOrHandle.canonical.nativeTag; + if ( + (owner = + ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + )) + ) + return owner; + componentOrHandle = findHostInstanceWithWarning( + componentOrHandle, + "findNodeHandle" + ); + return null == componentOrHandle + ? componentOrHandle + : ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + ); + }; exports.getNodeFromInternalInstanceHandle = getNodeFromInternalInstanceHandle; exports.getPublicInstanceFromInternalInstanceHandle = function ( @@ -20433,14 +20348,6 @@ : null; }; exports.isChildPublicInstance = function (parentInstance, childInstance) { - if ( - parentInstance._internalFiberInstanceHandleDEV && - childInstance._internalFiberInstanceHandleDEV - ) - return doesFiberContain( - parentInstance._internalFiberInstanceHandleDEV, - childInstance._internalFiberInstanceHandleDEV - ); parentInstance = ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( parentInstance @@ -20449,9 +20356,27 @@ ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( childInstance ); - return null != parentInstance && null != childInstance - ? doesFiberContain(parentInstance, childInstance) - : !1; + if (null != parentInstance && null != childInstance) { + a: { + for ( + var parentFiberAlternate = parentInstance.alternate; + null !== childInstance; + + ) { + if ( + childInstance === parentInstance || + childInstance === parentFiberAlternate + ) { + parentInstance = !0; + break a; + } + childInstance = childInstance.return; + } + parentInstance = !1; + } + return parentInstance; + } + return !1; }; exports.render = function ( element, @@ -20521,22 +20446,12 @@ return element; }; exports.sendAccessibilityEvent = function (handle, eventType) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) + : console.error( "sendAccessibilityEvent was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) - : ReactNativePrivateInterface.legacySendAccessibilityEvent( - nativeTag, - eventType - )); + ); }; exports.stopSurface = function (containerTag) { var root = roots.get(containerTag); ``` </details>
1 parent 00f063c commit 56922cf

35 files changed

Lines changed: 16 additions & 4703 deletions

‎packages/react-native-renderer/index.js‎

Lines changed: 0 additions & 16 deletions
This file was deleted.

‎packages/react-native-renderer/src/NativeMethodsMixinUtils.js‎

Lines changed: 0 additions & 64 deletions
This file was deleted.

‎packages/react-native-renderer/src/ReactFiberConfigFabric.js‎

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ import {getClosestInstanceFromNode} from './ReactFabricComponentTree';
6666
import{compareDocumentPositionForEmptyFragment}from'shared/ReactDOMFragmentRefShared';
6767

6868
import{
69-
getInspectorDataForViewTag,
7069
getInspectorDataForViewAtPoint,
7170
getInspectorDataForInstance,
7271
}from'./ReactNativeFiberInspector';
@@ -79,7 +78,6 @@ export {default as rendererVersion} from 'shared/ReactVersion'; // TODO: Conside
7978
exportconstrendererPackageName='react-native-renderer';
8079
exportconstextraDevToolsConfig={
8180
getInspectorDataForInstance,
82-
getInspectorDataForViewTag,
8381
getInspectorDataForViewAtPoint,
8482
};
8583

@@ -142,8 +140,6 @@ export type TransitionStatus = mixed;
142140

143141
exporttypeRendererInspectionConfig=$ReadOnly<{
144142
getInspectorDataForInstance?: (instance: Fiber|null)=>InspectorData,
145-
// Deprecated. Replaced with getInspectorDataForViewAtPoint.
146-
getInspectorDataForViewTag?: (tag: number)=>Object,
147143
getInspectorDataForViewAtPoint?: (
148144
inspectedView: Object,
149145
locationX: number,
@@ -313,17 +309,7 @@ export function getPublicInstance(instance: Instance): null | PublicInstance {
313309

314310
// Handle root containers
315311
if(instance.containerInfo!=null){
316-
if(instance.containerInfo.publicInstance!=null){
317-
returninstance.containerInfo.publicInstance;
318-
}
319-
}
320-
321-
// For compatibility with the legacy renderer, in case it's used with Fabric
322-
// in the same app.
323-
// $FlowExpectedError[prop-missing]
324-
if(instance._nativeTag!=null){
325-
// $FlowExpectedError[incompatible-return]
326-
returninstance;
312+
returninstance.containerInfo.publicInstance;
327313
}
328314

329315
returnnull;

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
[react-native-renderer] Delete Paper (legacy) renderer (#36285) · react/react@56922cf · GitHub
Skip to content

Commit 56922cf

Browse files
authored
[react-native-renderer] Delete Paper (legacy) renderer (#36285)
## Summary The Paper renderer is no longer used in React Native. This commit removes all remaining Paper source code, tests, build system references, and Paper backward-compatibility branches in shared code. Deleted Paper-only source files: - ReactNativeRenderer.js, ReactNativeInjection.js, ReactFiberConfigNative.js - ReactNativeComponentTree.js, ReactNativeEventEmitter.js - ReactNativeFiberHostComponent.js, ReactNativeGlobalResponderHandler.js - ReactNativeAttributePayload.js, NativeMethodsMixinUtils.js - ReactFiberConfig.native.js (reconciler fork) - index.js (Paper entry point) Cleaned up shared files: - ReactNativePublicCompat.js: removed _nativeTag checks, UIManager/ legacySendAccessibilityEvent Paper fallbacks - ReactNativeFiberInspector.js: removed getInspectorDataForViewTag, UIManager.measure fallback, Paper branch in getInspectorDataForViewAtPoint - ReactFiberConfigFabric.js: removed _nativeTag backward compat in getPublicInstance, removed getInspectorDataForViewTag from devtools config - ReactNativeTypes.js: removed ReactNativeType (Paper API type) Cleaned up build system: - inlinedHostConfigs.js: removed shortName 'native' config - forks.js: removed dead 'react-native-renderer' case - Deleted ReactNative.js shim and Paper-only test mocks ## How did you test this change? Manually synced the renderer to RN and passed all Fantom tests. Manually verified the differences in the generated `ReactFabric-dev.js` file. Only Paper compat logic has been removed. <details> <summary>diff</summary> ```diff --- /tmp/react-fabric-baseline/ReactFabric-dev.js 2026-04-16 16:42:42 +++ build/react-native/implementations/ReactFabric-dev.js 2026-04-16 18:08:43 @@ -30,43 +30,19 @@ : emptyObject; } function createHierarchy(fiberHierarchy) { - return fiberHierarchy.map(function (fiber$jscomp$0) { + return fiberHierarchy.map(function (fiber) { return { - name: getComponentNameFromType(fiber$jscomp$0.type), + name: getComponentNameFromType(fiber.type), getInspectorData: function () { return { - props: getHostProps(fiber$jscomp$0), + props: getHostProps(fiber), measure: function (callback) { - var hostFiber = findCurrentHostFiber(fiber$jscomp$0); - if ( - (hostFiber = - null != hostFiber && - null !== hostFiber.stateNode && - hostFiber.stateNode.node) - ) + var hostFiber = findCurrentHostFiber(fiber); + (hostFiber = + null != hostFiber && + null !== hostFiber.stateNode && + hostFiber.stateNode.node) && nativeFabricUIManager.measure(hostFiber, callback); - else { - hostFiber = ReactNativePrivateInterface.UIManager; - var JSCompiler_temp_const = hostFiber.measure, - JSCompiler_inline_result; - a: { - for (var fiber = fiber$jscomp$0; fiber; ) { - null !== fiber.stateNode && - 5 === fiber.tag && - (JSCompiler_inline_result = findNodeHandle( - fiber.stateNode - )); - if (JSCompiler_inline_result) break a; - fiber = fiber.child; - } - JSCompiler_inline_result = null; - } - return JSCompiler_temp_const.call( - hostFiber, - JSCompiler_inline_result, - callback - ); - } } }; } @@ -1805,18 +1781,6 @@ } return null; } - function doesFiberContain(parentFiber, childFiber) { - for ( - var parentFiberAlternate = parentFiber.alternate; - null !== childFiber; - - ) { - if (childFiber === parentFiber || childFiber === parentFiberAlternate) - return !0; - childFiber = childFiber.return; - } - return !1; - } function traverseVisibleHostChildren( child, searchWithinHosts, @@ -16986,44 +16950,6 @@ function getCurrentFiberForDevTools() { return current; } - function findNodeHandle(componentOrHandle) { - var owner = current; - null !== owner && - isRendering && - null !== owner.stateNode && - (owner.stateNode._warnedAboutRefsInRender || - console.error( - "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", - getComponentNameFromType(owner.type) || "A component" - ), - (owner.stateNode._warnedAboutRefsInRender = !0)); - if (null == componentOrHandle) return null; - if ("number" === typeof componentOrHandle) return componentOrHandle; - if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag; - if ( - null != componentOrHandle.canonical && - null != componentOrHandle.canonical.nativeTag - ) - return componentOrHandle.canonical.nativeTag; - if ( - (owner = - ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - )) - ) - return owner; - componentOrHandle = findHostInstanceWithWarning( - componentOrHandle, - "findNodeHandle" - ); - return null == componentOrHandle - ? componentOrHandle - : null != componentOrHandle._nativeTag - ? componentOrHandle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - ); - } function getNodeFromInternalInstanceHandle(internalInstanceHandle) { return ( internalInstanceHandle && @@ -17134,12 +17060,9 @@ } return instance.canonical.publicInstance; } - return null != instance.containerInfo && - null != instance.containerInfo.publicInstance + return null != instance.containerInfo ? instance.containerInfo.publicInstance - : null != instance._nativeTag - ? instance - : null; + : null; } function getPublicInstanceFromHostFiber(fiber) { fiber = getPublicInstance(fiber.stateNode); @@ -18017,7 +17940,6 @@ DefaultEventPriority = 32, IdleEventPriority = 268435456, searchTarget = null, - instanceCache = new Map(), bind = Function.prototype.bind, valueStack = []; var fiberStack = []; @@ -20041,24 +19963,19 @@ _nativeFabricUIManage.unstable_getCurrentEventPriority, extraDevToolsConfig = { getInspectorDataForInstance: getInspectorDataForInstance, - getInspectorDataForViewTag: function (viewTag) { - viewTag = instanceCache.get(viewTag) || null; - return getInspectorDataForInstance(viewTag); - }, getInspectorDataForViewAtPoint: function ( inspectedView, locationX, locationY, callback ) { - var closestInstance = null, - fabricNode = - ReactNativePrivateInterface.getNodeFromPublicInstance( - inspectedView - ); - fabricNode + var closestInstance = null; + (inspectedView = + ReactNativePrivateInterface.getNodeFromPublicInstance( + inspectedView + )) ? nativeFabricUIManager.findNodeAtPoint( - fabricNode, + inspectedView, locationX, locationY, function (internalInstanceHandle) { @@ -20109,32 +20026,9 @@ } } ) - : null != inspectedView._internalFiberInstanceHandleDEV - ? ReactNativePrivateInterface.UIManager.findSubviewIn( - findNodeHandle(inspectedView), - [locationX, locationY], - function (nativeViewTag, left, top, width, height) { - var inspectorData = getInspectorDataForInstance( - instanceCache.get(nativeViewTag) || null - ); - callback( - assign({}, inspectorData, { - pointerY: locationY, - frame: { - left: left, - top: top, - width: width, - height: height - }, - touchedViewTag: nativeViewTag, - closestPublicInstance: nativeViewTag - }) - ); - } - ) - : console.error( - "getInspectorDataForViewAtPoint expects to receive a host component" - ); + : console.error( + "getInspectorDataForViewAtPoint expects to receive a host component" + ); } }, getViewConfigForType = @@ -20368,23 +20262,12 @@ ); }; exports.dispatchCommand = function (handle, command, args) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.dispatchCommand(handle, command, args) + : console.error( "dispatchCommand was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.dispatchCommand(handle, command, args) - : ReactNativePrivateInterface.UIManager.dispatchViewManagerCommand( - nativeTag, - command, - args - )); + ); }; exports.findHostInstance_DEPRECATED = function (componentOrHandle) { var owner = current; @@ -20402,14 +20285,46 @@ : componentOrHandle.canonical && componentOrHandle.canonical.publicInstance ? componentOrHandle.canonical.publicInstance - : componentOrHandle._nativeTag - ? componentOrHandle - : findHostInstanceWithWarning( - componentOrHandle, - "findHostInstance_DEPRECATED" - ); + : findHostInstanceWithWarning( + componentOrHandle, + "findHostInstance_DEPRECATED" + ); }; - exports.findNodeHandle = findNodeHandle; + exports.findNodeHandle = function (componentOrHandle) { + var owner = current; + null !== owner && + isRendering && + null !== owner.stateNode && + (owner.stateNode._warnedAboutRefsInRender || + console.error( + "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", + getComponentNameFromType(owner.type) || "A component" + ), + (owner.stateNode._warnedAboutRefsInRender = !0)); + if (null == componentOrHandle) return null; + if ("number" === typeof componentOrHandle) return componentOrHandle; + if ( + null != componentOrHandle.canonical && + null != componentOrHandle.canonical.nativeTag + ) + return componentOrHandle.canonical.nativeTag; + if ( + (owner = + ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + )) + ) + return owner; + componentOrHandle = findHostInstanceWithWarning( + componentOrHandle, + "findNodeHandle" + ); + return null == componentOrHandle + ? componentOrHandle + : ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + ); + }; exports.getNodeFromInternalInstanceHandle = getNodeFromInternalInstanceHandle; exports.getPublicInstanceFromInternalInstanceHandle = function ( @@ -20433,14 +20348,6 @@ : null; }; exports.isChildPublicInstance = function (parentInstance, childInstance) { - if ( - parentInstance._internalFiberInstanceHandleDEV && - childInstance._internalFiberInstanceHandleDEV - ) - return doesFiberContain( - parentInstance._internalFiberInstanceHandleDEV, - childInstance._internalFiberInstanceHandleDEV - ); parentInstance = ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( parentInstance @@ -20449,9 +20356,27 @@ ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( childInstance ); - return null != parentInstance && null != childInstance - ? doesFiberContain(parentInstance, childInstance) - : !1; + if (null != parentInstance && null != childInstance) { + a: { + for ( + var parentFiberAlternate = parentInstance.alternate; + null !== childInstance; + + ) { + if ( + childInstance === parentInstance || + childInstance === parentFiberAlternate + ) { + parentInstance = !0; + break a; + } + childInstance = childInstance.return; + } + parentInstance = !1; + } + return parentInstance; + } + return !1; }; exports.render = function ( element, @@ -20521,22 +20446,12 @@ return element; }; exports.sendAccessibilityEvent = function (handle, eventType) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) + : console.error( "sendAccessibilityEvent was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) - : ReactNativePrivateInterface.legacySendAccessibilityEvent( - nativeTag, - eventType - )); + ); }; exports.stopSurface = function (containerTag) { var root = roots.get(containerTag); ``` </details>
1 parent 00f063c commit 56922cf

35 files changed

Lines changed: 16 additions & 4703 deletions

‎packages/react-native-renderer/index.js‎

Lines changed: 0 additions & 16 deletions
This file was deleted.

‎packages/react-native-renderer/src/NativeMethodsMixinUtils.js‎

Lines changed: 0 additions & 64 deletions
This file was deleted.

‎packages/react-native-renderer/src/ReactFiberConfigFabric.js‎

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ import {getClosestInstanceFromNode} from './ReactFabricComponentTree';
6666
import{compareDocumentPositionForEmptyFragment}from'shared/ReactDOMFragmentRefShared';
6767

6868
import{
69-
getInspectorDataForViewTag,
7069
getInspectorDataForViewAtPoint,
7170
getInspectorDataForInstance,
7271
}from'./ReactNativeFiberInspector';
@@ -79,7 +78,6 @@ export {default as rendererVersion} from 'shared/ReactVersion'; // TODO: Conside
7978
exportconstrendererPackageName='react-native-renderer';
8079
exportconstextraDevToolsConfig={
8180
getInspectorDataForInstance,
82-
getInspectorDataForViewTag,
8381
getInspectorDataForViewAtPoint,
8482
};
8583

@@ -142,8 +140,6 @@ export type TransitionStatus = mixed;
142140

143141
exporttypeRendererInspectionConfig=$ReadOnly<{
144142
getInspectorDataForInstance?: (instance: Fiber|null)=>InspectorData,
145-
// Deprecated. Replaced with getInspectorDataForViewAtPoint.
146-
getInspectorDataForViewTag?: (tag: number)=>Object,
147143
getInspectorDataForViewAtPoint?: (
148144
inspectedView: Object,
149145
locationX: number,
@@ -313,17 +309,7 @@ export function getPublicInstance(instance: Instance): null | PublicInstance {
313309

314310
// Handle root containers
315311
if(instance.containerInfo!=null){
316-
if(instance.containerInfo.publicInstance!=null){
317-
returninstance.containerInfo.publicInstance;
318-
}
319-
}
320-
321-
// For compatibility with the legacy renderer, in case it's used with Fabric
322-
// in the same app.
323-
// $FlowExpectedError[prop-missing]
324-
if(instance._nativeTag!=null){
325-
// $FlowExpectedError[incompatible-return]
326-
returninstance;
312+
returninstance.containerInfo.publicInstance;
327313
}
328314

329315
returnnull;

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [react-native-renderer] Delete Paper (legacy) renderer (#36285) · react/react@56922cf · GitHub
Skip to content

Commit 56922cf

Browse files
authored
[react-native-renderer] Delete Paper (legacy) renderer (#36285)
## Summary The Paper renderer is no longer used in React Native. This commit removes all remaining Paper source code, tests, build system references, and Paper backward-compatibility branches in shared code. Deleted Paper-only source files: - ReactNativeRenderer.js, ReactNativeInjection.js, ReactFiberConfigNative.js - ReactNativeComponentTree.js, ReactNativeEventEmitter.js - ReactNativeFiberHostComponent.js, ReactNativeGlobalResponderHandler.js - ReactNativeAttributePayload.js, NativeMethodsMixinUtils.js - ReactFiberConfig.native.js (reconciler fork) - index.js (Paper entry point) Cleaned up shared files: - ReactNativePublicCompat.js: removed _nativeTag checks, UIManager/ legacySendAccessibilityEvent Paper fallbacks - ReactNativeFiberInspector.js: removed getInspectorDataForViewTag, UIManager.measure fallback, Paper branch in getInspectorDataForViewAtPoint - ReactFiberConfigFabric.js: removed _nativeTag backward compat in getPublicInstance, removed getInspectorDataForViewTag from devtools config - ReactNativeTypes.js: removed ReactNativeType (Paper API type) Cleaned up build system: - inlinedHostConfigs.js: removed shortName 'native' config - forks.js: removed dead 'react-native-renderer' case - Deleted ReactNative.js shim and Paper-only test mocks ## How did you test this change? Manually synced the renderer to RN and passed all Fantom tests. Manually verified the differences in the generated `ReactFabric-dev.js` file. Only Paper compat logic has been removed. <details> <summary>diff</summary> ```diff --- /tmp/react-fabric-baseline/ReactFabric-dev.js 2026-04-16 16:42:42 +++ build/react-native/implementations/ReactFabric-dev.js 2026-04-16 18:08:43 @@ -30,43 +30,19 @@ : emptyObject; } function createHierarchy(fiberHierarchy) { - return fiberHierarchy.map(function (fiber$jscomp$0) { + return fiberHierarchy.map(function (fiber) { return { - name: getComponentNameFromType(fiber$jscomp$0.type), + name: getComponentNameFromType(fiber.type), getInspectorData: function () { return { - props: getHostProps(fiber$jscomp$0), + props: getHostProps(fiber), measure: function (callback) { - var hostFiber = findCurrentHostFiber(fiber$jscomp$0); - if ( - (hostFiber = - null != hostFiber && - null !== hostFiber.stateNode && - hostFiber.stateNode.node) - ) + var hostFiber = findCurrentHostFiber(fiber); + (hostFiber = + null != hostFiber && + null !== hostFiber.stateNode && + hostFiber.stateNode.node) && nativeFabricUIManager.measure(hostFiber, callback); - else { - hostFiber = ReactNativePrivateInterface.UIManager; - var JSCompiler_temp_const = hostFiber.measure, - JSCompiler_inline_result; - a: { - for (var fiber = fiber$jscomp$0; fiber; ) { - null !== fiber.stateNode && - 5 === fiber.tag && - (JSCompiler_inline_result = findNodeHandle( - fiber.stateNode - )); - if (JSCompiler_inline_result) break a; - fiber = fiber.child; - } - JSCompiler_inline_result = null; - } - return JSCompiler_temp_const.call( - hostFiber, - JSCompiler_inline_result, - callback - ); - } } }; } @@ -1805,18 +1781,6 @@ } return null; } - function doesFiberContain(parentFiber, childFiber) { - for ( - var parentFiberAlternate = parentFiber.alternate; - null !== childFiber; - - ) { - if (childFiber === parentFiber || childFiber === parentFiberAlternate) - return !0; - childFiber = childFiber.return; - } - return !1; - } function traverseVisibleHostChildren( child, searchWithinHosts, @@ -16986,44 +16950,6 @@ function getCurrentFiberForDevTools() { return current; } - function findNodeHandle(componentOrHandle) { - var owner = current; - null !== owner && - isRendering && - null !== owner.stateNode && - (owner.stateNode._warnedAboutRefsInRender || - console.error( - "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", - getComponentNameFromType(owner.type) || "A component" - ), - (owner.stateNode._warnedAboutRefsInRender = !0)); - if (null == componentOrHandle) return null; - if ("number" === typeof componentOrHandle) return componentOrHandle; - if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag; - if ( - null != componentOrHandle.canonical && - null != componentOrHandle.canonical.nativeTag - ) - return componentOrHandle.canonical.nativeTag; - if ( - (owner = - ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - )) - ) - return owner; - componentOrHandle = findHostInstanceWithWarning( - componentOrHandle, - "findNodeHandle" - ); - return null == componentOrHandle - ? componentOrHandle - : null != componentOrHandle._nativeTag - ? componentOrHandle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - ); - } function getNodeFromInternalInstanceHandle(internalInstanceHandle) { return ( internalInstanceHandle && @@ -17134,12 +17060,9 @@ } return instance.canonical.publicInstance; } - return null != instance.containerInfo && - null != instance.containerInfo.publicInstance + return null != instance.containerInfo ? instance.containerInfo.publicInstance - : null != instance._nativeTag - ? instance - : null; + : null; } function getPublicInstanceFromHostFiber(fiber) { fiber = getPublicInstance(fiber.stateNode); @@ -18017,7 +17940,6 @@ DefaultEventPriority = 32, IdleEventPriority = 268435456, searchTarget = null, - instanceCache = new Map(), bind = Function.prototype.bind, valueStack = []; var fiberStack = []; @@ -20041,24 +19963,19 @@ _nativeFabricUIManage.unstable_getCurrentEventPriority, extraDevToolsConfig = { getInspectorDataForInstance: getInspectorDataForInstance, - getInspectorDataForViewTag: function (viewTag) { - viewTag = instanceCache.get(viewTag) || null; - return getInspectorDataForInstance(viewTag); - }, getInspectorDataForViewAtPoint: function ( inspectedView, locationX, locationY, callback ) { - var closestInstance = null, - fabricNode = - ReactNativePrivateInterface.getNodeFromPublicInstance( - inspectedView - ); - fabricNode + var closestInstance = null; + (inspectedView = + ReactNativePrivateInterface.getNodeFromPublicInstance( + inspectedView + )) ? nativeFabricUIManager.findNodeAtPoint( - fabricNode, + inspectedView, locationX, locationY, function (internalInstanceHandle) { @@ -20109,32 +20026,9 @@ } } ) - : null != inspectedView._internalFiberInstanceHandleDEV - ? ReactNativePrivateInterface.UIManager.findSubviewIn( - findNodeHandle(inspectedView), - [locationX, locationY], - function (nativeViewTag, left, top, width, height) { - var inspectorData = getInspectorDataForInstance( - instanceCache.get(nativeViewTag) || null - ); - callback( - assign({}, inspectorData, { - pointerY: locationY, - frame: { - left: left, - top: top, - width: width, - height: height - }, - touchedViewTag: nativeViewTag, - closestPublicInstance: nativeViewTag - }) - ); - } - ) - : console.error( - "getInspectorDataForViewAtPoint expects to receive a host component" - ); + : console.error( + "getInspectorDataForViewAtPoint expects to receive a host component" + ); } }, getViewConfigForType = @@ -20368,23 +20262,12 @@ ); }; exports.dispatchCommand = function (handle, command, args) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.dispatchCommand(handle, command, args) + : console.error( "dispatchCommand was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.dispatchCommand(handle, command, args) - : ReactNativePrivateInterface.UIManager.dispatchViewManagerCommand( - nativeTag, - command, - args - )); + ); }; exports.findHostInstance_DEPRECATED = function (componentOrHandle) { var owner = current; @@ -20402,14 +20285,46 @@ : componentOrHandle.canonical && componentOrHandle.canonical.publicInstance ? componentOrHandle.canonical.publicInstance - : componentOrHandle._nativeTag - ? componentOrHandle - : findHostInstanceWithWarning( - componentOrHandle, - "findHostInstance_DEPRECATED" - ); + : findHostInstanceWithWarning( + componentOrHandle, + "findHostInstance_DEPRECATED" + ); }; - exports.findNodeHandle = findNodeHandle; + exports.findNodeHandle = function (componentOrHandle) { + var owner = current; + null !== owner && + isRendering && + null !== owner.stateNode && + (owner.stateNode._warnedAboutRefsInRender || + console.error( + "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", + getComponentNameFromType(owner.type) || "A component" + ), + (owner.stateNode._warnedAboutRefsInRender = !0)); + if (null == componentOrHandle) return null; + if ("number" === typeof componentOrHandle) return componentOrHandle; + if ( + null != componentOrHandle.canonical && + null != componentOrHandle.canonical.nativeTag + ) + return componentOrHandle.canonical.nativeTag; + if ( + (owner = + ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + )) + ) + return owner; + componentOrHandle = findHostInstanceWithWarning( + componentOrHandle, + "findNodeHandle" + ); + return null == componentOrHandle + ? componentOrHandle + : ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + ); + }; exports.getNodeFromInternalInstanceHandle = getNodeFromInternalInstanceHandle; exports.getPublicInstanceFromInternalInstanceHandle = function ( @@ -20433,14 +20348,6 @@ : null; }; exports.isChildPublicInstance = function (parentInstance, childInstance) { - if ( - parentInstance._internalFiberInstanceHandleDEV && - childInstance._internalFiberInstanceHandleDEV - ) - return doesFiberContain( - parentInstance._internalFiberInstanceHandleDEV, - childInstance._internalFiberInstanceHandleDEV - ); parentInstance = ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( parentInstance @@ -20449,9 +20356,27 @@ ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( childInstance ); - return null != parentInstance && null != childInstance - ? doesFiberContain(parentInstance, childInstance) - : !1; + if (null != parentInstance && null != childInstance) { + a: { + for ( + var parentFiberAlternate = parentInstance.alternate; + null !== childInstance; + + ) { + if ( + childInstance === parentInstance || + childInstance === parentFiberAlternate + ) { + parentInstance = !0; + break a; + } + childInstance = childInstance.return; + } + parentInstance = !1; + } + return parentInstance; + } + return !1; }; exports.render = function ( element, @@ -20521,22 +20446,12 @@ return element; }; exports.sendAccessibilityEvent = function (handle, eventType) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) + : console.error( "sendAccessibilityEvent was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) - : ReactNativePrivateInterface.legacySendAccessibilityEvent( - nativeTag, - eventType - )); + ); }; exports.stopSurface = function (containerTag) { var root = roots.get(containerTag); ``` </details>
1 parent 00f063c commit 56922cf

35 files changed

Lines changed: 16 additions & 4703 deletions

‎packages/react-native-renderer/index.js‎

Lines changed: 0 additions & 16 deletions
This file was deleted.

‎packages/react-native-renderer/src/NativeMethodsMixinUtils.js‎

Lines changed: 0 additions & 64 deletions
This file was deleted.

‎packages/react-native-renderer/src/ReactFiberConfigFabric.js‎

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ import {getClosestInstanceFromNode} from './ReactFabricComponentTree';
6666
import{compareDocumentPositionForEmptyFragment}from'shared/ReactDOMFragmentRefShared';
6767

6868
import{
69-
getInspectorDataForViewTag,
7069
getInspectorDataForViewAtPoint,
7170
getInspectorDataForInstance,
7271
}from'./ReactNativeFiberInspector';
@@ -79,7 +78,6 @@ export {default as rendererVersion} from 'shared/ReactVersion'; // TODO: Conside
7978
exportconstrendererPackageName='react-native-renderer';
8079
exportconstextraDevToolsConfig={
8180
getInspectorDataForInstance,
82-
getInspectorDataForViewTag,
8381
getInspectorDataForViewAtPoint,
8482
};
8583

@@ -142,8 +140,6 @@ export type TransitionStatus = mixed;
142140

143141
exporttypeRendererInspectionConfig=$ReadOnly<{
144142
getInspectorDataForInstance?: (instance: Fiber|null)=>InspectorData,
145-
// Deprecated. Replaced with getInspectorDataForViewAtPoint.
146-
getInspectorDataForViewTag?: (tag: number)=>Object,
147143
getInspectorDataForViewAtPoint?: (
148144
inspectedView: Object,
149145
locationX: number,
@@ -313,17 +309,7 @@ export function getPublicInstance(instance: Instance): null | PublicInstance {
313309

314310
// Handle root containers
315311
if(instance.containerInfo!=null){
316-
if(instance.containerInfo.publicInstance!=null){
317-
returninstance.containerInfo.publicInstance;
318-
}
319-
}
320-
321-
// For compatibility with the legacy renderer, in case it's used with Fabric
322-
// in the same app.
323-
// $FlowExpectedError[prop-missing]
324-
if(instance._nativeTag!=null){
325-
// $FlowExpectedError[incompatible-return]
326-
returninstance;
312+
returninstance.containerInfo.publicInstance;
327313
}
328314

329315
returnnull;

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [react-native-renderer] Delete Paper (legacy) renderer (#36285) · react/react@56922cf · GitHub
Skip to content

Commit 56922cf

Browse files
authored
[react-native-renderer] Delete Paper (legacy) renderer (#36285)
## Summary The Paper renderer is no longer used in React Native. This commit removes all remaining Paper source code, tests, build system references, and Paper backward-compatibility branches in shared code. Deleted Paper-only source files: - ReactNativeRenderer.js, ReactNativeInjection.js, ReactFiberConfigNative.js - ReactNativeComponentTree.js, ReactNativeEventEmitter.js - ReactNativeFiberHostComponent.js, ReactNativeGlobalResponderHandler.js - ReactNativeAttributePayload.js, NativeMethodsMixinUtils.js - ReactFiberConfig.native.js (reconciler fork) - index.js (Paper entry point) Cleaned up shared files: - ReactNativePublicCompat.js: removed _nativeTag checks, UIManager/ legacySendAccessibilityEvent Paper fallbacks - ReactNativeFiberInspector.js: removed getInspectorDataForViewTag, UIManager.measure fallback, Paper branch in getInspectorDataForViewAtPoint - ReactFiberConfigFabric.js: removed _nativeTag backward compat in getPublicInstance, removed getInspectorDataForViewTag from devtools config - ReactNativeTypes.js: removed ReactNativeType (Paper API type) Cleaned up build system: - inlinedHostConfigs.js: removed shortName 'native' config - forks.js: removed dead 'react-native-renderer' case - Deleted ReactNative.js shim and Paper-only test mocks ## How did you test this change? Manually synced the renderer to RN and passed all Fantom tests. Manually verified the differences in the generated `ReactFabric-dev.js` file. Only Paper compat logic has been removed. <details> <summary>diff</summary> ```diff --- /tmp/react-fabric-baseline/ReactFabric-dev.js 2026-04-16 16:42:42 +++ build/react-native/implementations/ReactFabric-dev.js 2026-04-16 18:08:43 @@ -30,43 +30,19 @@ : emptyObject; } function createHierarchy(fiberHierarchy) { - return fiberHierarchy.map(function (fiber$jscomp$0) { + return fiberHierarchy.map(function (fiber) { return { - name: getComponentNameFromType(fiber$jscomp$0.type), + name: getComponentNameFromType(fiber.type), getInspectorData: function () { return { - props: getHostProps(fiber$jscomp$0), + props: getHostProps(fiber), measure: function (callback) { - var hostFiber = findCurrentHostFiber(fiber$jscomp$0); - if ( - (hostFiber = - null != hostFiber && - null !== hostFiber.stateNode && - hostFiber.stateNode.node) - ) + var hostFiber = findCurrentHostFiber(fiber); + (hostFiber = + null != hostFiber && + null !== hostFiber.stateNode && + hostFiber.stateNode.node) && nativeFabricUIManager.measure(hostFiber, callback); - else { - hostFiber = ReactNativePrivateInterface.UIManager; - var JSCompiler_temp_const = hostFiber.measure, - JSCompiler_inline_result; - a: { - for (var fiber = fiber$jscomp$0; fiber; ) { - null !== fiber.stateNode && - 5 === fiber.tag && - (JSCompiler_inline_result = findNodeHandle( - fiber.stateNode - )); - if (JSCompiler_inline_result) break a; - fiber = fiber.child; - } - JSCompiler_inline_result = null; - } - return JSCompiler_temp_const.call( - hostFiber, - JSCompiler_inline_result, - callback - ); - } } }; } @@ -1805,18 +1781,6 @@ } return null; } - function doesFiberContain(parentFiber, childFiber) { - for ( - var parentFiberAlternate = parentFiber.alternate; - null !== childFiber; - - ) { - if (childFiber === parentFiber || childFiber === parentFiberAlternate) - return !0; - childFiber = childFiber.return; - } - return !1; - } function traverseVisibleHostChildren( child, searchWithinHosts, @@ -16986,44 +16950,6 @@ function getCurrentFiberForDevTools() { return current; } - function findNodeHandle(componentOrHandle) { - var owner = current; - null !== owner && - isRendering && - null !== owner.stateNode && - (owner.stateNode._warnedAboutRefsInRender || - console.error( - "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", - getComponentNameFromType(owner.type) || "A component" - ), - (owner.stateNode._warnedAboutRefsInRender = !0)); - if (null == componentOrHandle) return null; - if ("number" === typeof componentOrHandle) return componentOrHandle; - if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag; - if ( - null != componentOrHandle.canonical && - null != componentOrHandle.canonical.nativeTag - ) - return componentOrHandle.canonical.nativeTag; - if ( - (owner = - ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - )) - ) - return owner; - componentOrHandle = findHostInstanceWithWarning( - componentOrHandle, - "findNodeHandle" - ); - return null == componentOrHandle - ? componentOrHandle - : null != componentOrHandle._nativeTag - ? componentOrHandle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - ); - } function getNodeFromInternalInstanceHandle(internalInstanceHandle) { return ( internalInstanceHandle && @@ -17134,12 +17060,9 @@ } return instance.canonical.publicInstance; } - return null != instance.containerInfo && - null != instance.containerInfo.publicInstance + return null != instance.containerInfo ? instance.containerInfo.publicInstance - : null != instance._nativeTag - ? instance - : null; + : null; } function getPublicInstanceFromHostFiber(fiber) { fiber = getPublicInstance(fiber.stateNode); @@ -18017,7 +17940,6 @@ DefaultEventPriority = 32, IdleEventPriority = 268435456, searchTarget = null, - instanceCache = new Map(), bind = Function.prototype.bind, valueStack = []; var fiberStack = []; @@ -20041,24 +19963,19 @@ _nativeFabricUIManage.unstable_getCurrentEventPriority, extraDevToolsConfig = { getInspectorDataForInstance: getInspectorDataForInstance, - getInspectorDataForViewTag: function (viewTag) { - viewTag = instanceCache.get(viewTag) || null; - return getInspectorDataForInstance(viewTag); - }, getInspectorDataForViewAtPoint: function ( inspectedView, locationX, locationY, callback ) { - var closestInstance = null, - fabricNode = - ReactNativePrivateInterface.getNodeFromPublicInstance( - inspectedView - ); - fabricNode + var closestInstance = null; + (inspectedView = + ReactNativePrivateInterface.getNodeFromPublicInstance( + inspectedView + )) ? nativeFabricUIManager.findNodeAtPoint( - fabricNode, + inspectedView, locationX, locationY, function (internalInstanceHandle) { @@ -20109,32 +20026,9 @@ } } ) - : null != inspectedView._internalFiberInstanceHandleDEV - ? ReactNativePrivateInterface.UIManager.findSubviewIn( - findNodeHandle(inspectedView), - [locationX, locationY], - function (nativeViewTag, left, top, width, height) { - var inspectorData = getInspectorDataForInstance( - instanceCache.get(nativeViewTag) || null - ); - callback( - assign({}, inspectorData, { - pointerY: locationY, - frame: { - left: left, - top: top, - width: width, - height: height - }, - touchedViewTag: nativeViewTag, - closestPublicInstance: nativeViewTag - }) - ); - } - ) - : console.error( - "getInspectorDataForViewAtPoint expects to receive a host component" - ); + : console.error( + "getInspectorDataForViewAtPoint expects to receive a host component" + ); } }, getViewConfigForType = @@ -20368,23 +20262,12 @@ ); }; exports.dispatchCommand = function (handle, command, args) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.dispatchCommand(handle, command, args) + : console.error( "dispatchCommand was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.dispatchCommand(handle, command, args) - : ReactNativePrivateInterface.UIManager.dispatchViewManagerCommand( - nativeTag, - command, - args - )); + ); }; exports.findHostInstance_DEPRECATED = function (componentOrHandle) { var owner = current; @@ -20402,14 +20285,46 @@ : componentOrHandle.canonical && componentOrHandle.canonical.publicInstance ? componentOrHandle.canonical.publicInstance - : componentOrHandle._nativeTag - ? componentOrHandle - : findHostInstanceWithWarning( - componentOrHandle, - "findHostInstance_DEPRECATED" - ); + : findHostInstanceWithWarning( + componentOrHandle, + "findHostInstance_DEPRECATED" + ); }; - exports.findNodeHandle = findNodeHandle; + exports.findNodeHandle = function (componentOrHandle) { + var owner = current; + null !== owner && + isRendering && + null !== owner.stateNode && + (owner.stateNode._warnedAboutRefsInRender || + console.error( + "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", + getComponentNameFromType(owner.type) || "A component" + ), + (owner.stateNode._warnedAboutRefsInRender = !0)); + if (null == componentOrHandle) return null; + if ("number" === typeof componentOrHandle) return componentOrHandle; + if ( + null != componentOrHandle.canonical && + null != componentOrHandle.canonical.nativeTag + ) + return componentOrHandle.canonical.nativeTag; + if ( + (owner = + ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + )) + ) + return owner; + componentOrHandle = findHostInstanceWithWarning( + componentOrHandle, + "findNodeHandle" + ); + return null == componentOrHandle + ? componentOrHandle + : ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + ); + }; exports.getNodeFromInternalInstanceHandle = getNodeFromInternalInstanceHandle; exports.getPublicInstanceFromInternalInstanceHandle = function ( @@ -20433,14 +20348,6 @@ : null; }; exports.isChildPublicInstance = function (parentInstance, childInstance) { - if ( - parentInstance._internalFiberInstanceHandleDEV && - childInstance._internalFiberInstanceHandleDEV - ) - return doesFiberContain( - parentInstance._internalFiberInstanceHandleDEV, - childInstance._internalFiberInstanceHandleDEV - ); parentInstance = ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( parentInstance @@ -20449,9 +20356,27 @@ ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( childInstance ); - return null != parentInstance && null != childInstance - ? doesFiberContain(parentInstance, childInstance) - : !1; + if (null != parentInstance && null != childInstance) { + a: { + for ( + var parentFiberAlternate = parentInstance.alternate; + null !== childInstance; + + ) { + if ( + childInstance === parentInstance || + childInstance === parentFiberAlternate + ) { + parentInstance = !0; + break a; + } + childInstance = childInstance.return; + } + parentInstance = !1; + } + return parentInstance; + } + return !1; }; exports.render = function ( element, @@ -20521,22 +20446,12 @@ return element; }; exports.sendAccessibilityEvent = function (handle, eventType) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) + : console.error( "sendAccessibilityEvent was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) - : ReactNativePrivateInterface.legacySendAccessibilityEvent( - nativeTag, - eventType - )); + ); }; exports.stopSurface = function (containerTag) { var root = roots.get(containerTag); ``` </details>
1 parent 00f063c commit 56922cf

35 files changed

Lines changed: 16 additions & 4703 deletions

‎packages/react-native-renderer/index.js‎

Lines changed: 0 additions & 16 deletions
This file was deleted.

‎packages/react-native-renderer/src/NativeMethodsMixinUtils.js‎

Lines changed: 0 additions & 64 deletions
This file was deleted.

‎packages/react-native-renderer/src/ReactFiberConfigFabric.js‎

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ import {getClosestInstanceFromNode} from './ReactFabricComponentTree';
6666
import{compareDocumentPositionForEmptyFragment}from'shared/ReactDOMFragmentRefShared';
6767

6868
import{
69-
getInspectorDataForViewTag,
7069
getInspectorDataForViewAtPoint,
7170
getInspectorDataForInstance,
7271
}from'./ReactNativeFiberInspector';
@@ -79,7 +78,6 @@ export {default as rendererVersion} from 'shared/ReactVersion'; // TODO: Conside
7978
exportconstrendererPackageName='react-native-renderer';
8079
exportconstextraDevToolsConfig={
8180
getInspectorDataForInstance,
82-
getInspectorDataForViewTag,
8381
getInspectorDataForViewAtPoint,
8482
};
8583

@@ -142,8 +140,6 @@ export type TransitionStatus = mixed;
142140

143141
exporttypeRendererInspectionConfig=$ReadOnly<{
144142
getInspectorDataForInstance?: (instance: Fiber|null)=>InspectorData,
145-
// Deprecated. Replaced with getInspectorDataForViewAtPoint.
146-
getInspectorDataForViewTag?: (tag: number)=>Object,
147143
getInspectorDataForViewAtPoint?: (
148144
inspectedView: Object,
149145
locationX: number,
@@ -313,17 +309,7 @@ export function getPublicInstance(instance: Instance): null | PublicInstance {
313309

314310
// Handle root containers
315311
if(instance.containerInfo!=null){
316-
if(instance.containerInfo.publicInstance!=null){
317-
returninstance.containerInfo.publicInstance;
318-
}
319-
}
320-
321-
// For compatibility with the legacy renderer, in case it's used with Fabric
322-
// in the same app.
323-
// $FlowExpectedError[prop-missing]
324-
if(instance._nativeTag!=null){
325-
// $FlowExpectedError[incompatible-return]
326-
returninstance;
312+
returninstance.containerInfo.publicInstance;
327313
}
328314

329315
returnnull;

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' [react-native-renderer] Delete Paper (legacy) renderer (#36285) · react/react@56922cf · GitHub
Skip to content

Commit 56922cf

Browse files
authored
[react-native-renderer] Delete Paper (legacy) renderer (#36285)
## Summary The Paper renderer is no longer used in React Native. This commit removes all remaining Paper source code, tests, build system references, and Paper backward-compatibility branches in shared code. Deleted Paper-only source files: - ReactNativeRenderer.js, ReactNativeInjection.js, ReactFiberConfigNative.js - ReactNativeComponentTree.js, ReactNativeEventEmitter.js - ReactNativeFiberHostComponent.js, ReactNativeGlobalResponderHandler.js - ReactNativeAttributePayload.js, NativeMethodsMixinUtils.js - ReactFiberConfig.native.js (reconciler fork) - index.js (Paper entry point) Cleaned up shared files: - ReactNativePublicCompat.js: removed _nativeTag checks, UIManager/ legacySendAccessibilityEvent Paper fallbacks - ReactNativeFiberInspector.js: removed getInspectorDataForViewTag, UIManager.measure fallback, Paper branch in getInspectorDataForViewAtPoint - ReactFiberConfigFabric.js: removed _nativeTag backward compat in getPublicInstance, removed getInspectorDataForViewTag from devtools config - ReactNativeTypes.js: removed ReactNativeType (Paper API type) Cleaned up build system: - inlinedHostConfigs.js: removed shortName 'native' config - forks.js: removed dead 'react-native-renderer' case - Deleted ReactNative.js shim and Paper-only test mocks ## How did you test this change? Manually synced the renderer to RN and passed all Fantom tests. Manually verified the differences in the generated `ReactFabric-dev.js` file. Only Paper compat logic has been removed. <details> <summary>diff</summary> ```diff --- /tmp/react-fabric-baseline/ReactFabric-dev.js 2026-04-16 16:42:42 +++ build/react-native/implementations/ReactFabric-dev.js 2026-04-16 18:08:43 @@ -30,43 +30,19 @@ : emptyObject; } function createHierarchy(fiberHierarchy) { - return fiberHierarchy.map(function (fiber$jscomp$0) { + return fiberHierarchy.map(function (fiber) { return { - name: getComponentNameFromType(fiber$jscomp$0.type), + name: getComponentNameFromType(fiber.type), getInspectorData: function () { return { - props: getHostProps(fiber$jscomp$0), + props: getHostProps(fiber), measure: function (callback) { - var hostFiber = findCurrentHostFiber(fiber$jscomp$0); - if ( - (hostFiber = - null != hostFiber && - null !== hostFiber.stateNode && - hostFiber.stateNode.node) - ) + var hostFiber = findCurrentHostFiber(fiber); + (hostFiber = + null != hostFiber && + null !== hostFiber.stateNode && + hostFiber.stateNode.node) && nativeFabricUIManager.measure(hostFiber, callback); - else { - hostFiber = ReactNativePrivateInterface.UIManager; - var JSCompiler_temp_const = hostFiber.measure, - JSCompiler_inline_result; - a: { - for (var fiber = fiber$jscomp$0; fiber; ) { - null !== fiber.stateNode && - 5 === fiber.tag && - (JSCompiler_inline_result = findNodeHandle( - fiber.stateNode - )); - if (JSCompiler_inline_result) break a; - fiber = fiber.child; - } - JSCompiler_inline_result = null; - } - return JSCompiler_temp_const.call( - hostFiber, - JSCompiler_inline_result, - callback - ); - } } }; } @@ -1805,18 +1781,6 @@ } return null; } - function doesFiberContain(parentFiber, childFiber) { - for ( - var parentFiberAlternate = parentFiber.alternate; - null !== childFiber; - - ) { - if (childFiber === parentFiber || childFiber === parentFiberAlternate) - return !0; - childFiber = childFiber.return; - } - return !1; - } function traverseVisibleHostChildren( child, searchWithinHosts, @@ -16986,44 +16950,6 @@ function getCurrentFiberForDevTools() { return current; } - function findNodeHandle(componentOrHandle) { - var owner = current; - null !== owner && - isRendering && - null !== owner.stateNode && - (owner.stateNode._warnedAboutRefsInRender || - console.error( - "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", - getComponentNameFromType(owner.type) || "A component" - ), - (owner.stateNode._warnedAboutRefsInRender = !0)); - if (null == componentOrHandle) return null; - if ("number" === typeof componentOrHandle) return componentOrHandle; - if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag; - if ( - null != componentOrHandle.canonical && - null != componentOrHandle.canonical.nativeTag - ) - return componentOrHandle.canonical.nativeTag; - if ( - (owner = - ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - )) - ) - return owner; - componentOrHandle = findHostInstanceWithWarning( - componentOrHandle, - "findNodeHandle" - ); - return null == componentOrHandle - ? componentOrHandle - : null != componentOrHandle._nativeTag - ? componentOrHandle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - ); - } function getNodeFromInternalInstanceHandle(internalInstanceHandle) { return ( internalInstanceHandle && @@ -17134,12 +17060,9 @@ } return instance.canonical.publicInstance; } - return null != instance.containerInfo && - null != instance.containerInfo.publicInstance + return null != instance.containerInfo ? instance.containerInfo.publicInstance - : null != instance._nativeTag - ? instance - : null; + : null; } function getPublicInstanceFromHostFiber(fiber) { fiber = getPublicInstance(fiber.stateNode); @@ -18017,7 +17940,6 @@ DefaultEventPriority = 32, IdleEventPriority = 268435456, searchTarget = null, - instanceCache = new Map(), bind = Function.prototype.bind, valueStack = []; var fiberStack = []; @@ -20041,24 +19963,19 @@ _nativeFabricUIManage.unstable_getCurrentEventPriority, extraDevToolsConfig = { getInspectorDataForInstance: getInspectorDataForInstance, - getInspectorDataForViewTag: function (viewTag) { - viewTag = instanceCache.get(viewTag) || null; - return getInspectorDataForInstance(viewTag); - }, getInspectorDataForViewAtPoint: function ( inspectedView, locationX, locationY, callback ) { - var closestInstance = null, - fabricNode = - ReactNativePrivateInterface.getNodeFromPublicInstance( - inspectedView - ); - fabricNode + var closestInstance = null; + (inspectedView = + ReactNativePrivateInterface.getNodeFromPublicInstance( + inspectedView + )) ? nativeFabricUIManager.findNodeAtPoint( - fabricNode, + inspectedView, locationX, locationY, function (internalInstanceHandle) { @@ -20109,32 +20026,9 @@ } } ) - : null != inspectedView._internalFiberInstanceHandleDEV - ? ReactNativePrivateInterface.UIManager.findSubviewIn( - findNodeHandle(inspectedView), - [locationX, locationY], - function (nativeViewTag, left, top, width, height) { - var inspectorData = getInspectorDataForInstance( - instanceCache.get(nativeViewTag) || null - ); - callback( - assign({}, inspectorData, { - pointerY: locationY, - frame: { - left: left, - top: top, - width: width, - height: height - }, - touchedViewTag: nativeViewTag, - closestPublicInstance: nativeViewTag - }) - ); - } - ) - : console.error( - "getInspectorDataForViewAtPoint expects to receive a host component" - ); + : console.error( + "getInspectorDataForViewAtPoint expects to receive a host component" + ); } }, getViewConfigForType = @@ -20368,23 +20262,12 @@ ); }; exports.dispatchCommand = function (handle, command, args) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.dispatchCommand(handle, command, args) + : console.error( "dispatchCommand was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.dispatchCommand(handle, command, args) - : ReactNativePrivateInterface.UIManager.dispatchViewManagerCommand( - nativeTag, - command, - args - )); + ); }; exports.findHostInstance_DEPRECATED = function (componentOrHandle) { var owner = current; @@ -20402,14 +20285,46 @@ : componentOrHandle.canonical && componentOrHandle.canonical.publicInstance ? componentOrHandle.canonical.publicInstance - : componentOrHandle._nativeTag - ? componentOrHandle - : findHostInstanceWithWarning( - componentOrHandle, - "findHostInstance_DEPRECATED" - ); + : findHostInstanceWithWarning( + componentOrHandle, + "findHostInstance_DEPRECATED" + ); }; - exports.findNodeHandle = findNodeHandle; + exports.findNodeHandle = function (componentOrHandle) { + var owner = current; + null !== owner && + isRendering && + null !== owner.stateNode && + (owner.stateNode._warnedAboutRefsInRender || + console.error( + "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", + getComponentNameFromType(owner.type) || "A component" + ), + (owner.stateNode._warnedAboutRefsInRender = !0)); + if (null == componentOrHandle) return null; + if ("number" === typeof componentOrHandle) return componentOrHandle; + if ( + null != componentOrHandle.canonical && + null != componentOrHandle.canonical.nativeTag + ) + return componentOrHandle.canonical.nativeTag; + if ( + (owner = + ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + )) + ) + return owner; + componentOrHandle = findHostInstanceWithWarning( + componentOrHandle, + "findNodeHandle" + ); + return null == componentOrHandle + ? componentOrHandle + : ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + ); + }; exports.getNodeFromInternalInstanceHandle = getNodeFromInternalInstanceHandle; exports.getPublicInstanceFromInternalInstanceHandle = function ( @@ -20433,14 +20348,6 @@ : null; }; exports.isChildPublicInstance = function (parentInstance, childInstance) { - if ( - parentInstance._internalFiberInstanceHandleDEV && - childInstance._internalFiberInstanceHandleDEV - ) - return doesFiberContain( - parentInstance._internalFiberInstanceHandleDEV, - childInstance._internalFiberInstanceHandleDEV - ); parentInstance = ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( parentInstance @@ -20449,9 +20356,27 @@ ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( childInstance ); - return null != parentInstance && null != childInstance - ? doesFiberContain(parentInstance, childInstance) - : !1; + if (null != parentInstance && null != childInstance) { + a: { + for ( + var parentFiberAlternate = parentInstance.alternate; + null !== childInstance; + + ) { + if ( + childInstance === parentInstance || + childInstance === parentFiberAlternate + ) { + parentInstance = !0; + break a; + } + childInstance = childInstance.return; + } + parentInstance = !1; + } + return parentInstance; + } + return !1; }; exports.render = function ( element, @@ -20521,22 +20446,12 @@ return element; }; exports.sendAccessibilityEvent = function (handle, eventType) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) + : console.error( "sendAccessibilityEvent was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) - : ReactNativePrivateInterface.legacySendAccessibilityEvent( - nativeTag, - eventType - )); + ); }; exports.stopSurface = function (containerTag) { var root = roots.get(containerTag); ``` </details>
1 parent 00f063c commit 56922cf

35 files changed

Lines changed: 16 additions & 4703 deletions

‎packages/react-native-renderer/index.js‎

Lines changed: 0 additions & 16 deletions
This file was deleted.

‎packages/react-native-renderer/src/NativeMethodsMixinUtils.js‎

Lines changed: 0 additions & 64 deletions
This file was deleted.

‎packages/react-native-renderer/src/ReactFiberConfigFabric.js‎

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ import {getClosestInstanceFromNode} from './ReactFabricComponentTree';
6666
import{compareDocumentPositionForEmptyFragment}from'shared/ReactDOMFragmentRefShared';
6767

6868
import{
69-
getInspectorDataForViewTag,
7069
getInspectorDataForViewAtPoint,
7170
getInspectorDataForInstance,
7271
}from'./ReactNativeFiberInspector';
@@ -79,7 +78,6 @@ export {default as rendererVersion} from 'shared/ReactVersion'; // TODO: Conside
7978
exportconstrendererPackageName='react-native-renderer';
8079
exportconstextraDevToolsConfig={
8180
getInspectorDataForInstance,
82-
getInspectorDataForViewTag,
8381
getInspectorDataForViewAtPoint,
8482
};
8583

@@ -142,8 +140,6 @@ export type TransitionStatus = mixed;
142140

143141
exporttypeRendererInspectionConfig=$ReadOnly<{
144142
getInspectorDataForInstance?: (instance: Fiber|null)=>InspectorData,
145-
// Deprecated. Replaced with getInspectorDataForViewAtPoint.
146-
getInspectorDataForViewTag?: (tag: number)=>Object,
147143
getInspectorDataForViewAtPoint?: (
148144
inspectedView: Object,
149145
locationX: number,
@@ -313,17 +309,7 @@ export function getPublicInstance(instance: Instance): null | PublicInstance {
313309

314310
// Handle root containers
315311
if(instance.containerInfo!=null){
316-
if(instance.containerInfo.publicInstance!=null){
317-
returninstance.containerInfo.publicInstance;
318-
}
319-
}
320-
321-
// For compatibility with the legacy renderer, in case it's used with Fabric
322-
// in the same app.
323-
// $FlowExpectedError[prop-missing]
324-
if(instance._nativeTag!=null){
325-
// $FlowExpectedError[incompatible-return]
326-
returninstance;
312+
returninstance.containerInfo.publicInstance;
327313
}
328314

329315
returnnull;

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [react-native-renderer] Delete Paper (legacy) renderer (#36285) · react/react@56922cf · GitHub
Skip to content

Commit 56922cf

Browse files
authored
[react-native-renderer] Delete Paper (legacy) renderer (#36285)
## Summary The Paper renderer is no longer used in React Native. This commit removes all remaining Paper source code, tests, build system references, and Paper backward-compatibility branches in shared code. Deleted Paper-only source files: - ReactNativeRenderer.js, ReactNativeInjection.js, ReactFiberConfigNative.js - ReactNativeComponentTree.js, ReactNativeEventEmitter.js - ReactNativeFiberHostComponent.js, ReactNativeGlobalResponderHandler.js - ReactNativeAttributePayload.js, NativeMethodsMixinUtils.js - ReactFiberConfig.native.js (reconciler fork) - index.js (Paper entry point) Cleaned up shared files: - ReactNativePublicCompat.js: removed _nativeTag checks, UIManager/ legacySendAccessibilityEvent Paper fallbacks - ReactNativeFiberInspector.js: removed getInspectorDataForViewTag, UIManager.measure fallback, Paper branch in getInspectorDataForViewAtPoint - ReactFiberConfigFabric.js: removed _nativeTag backward compat in getPublicInstance, removed getInspectorDataForViewTag from devtools config - ReactNativeTypes.js: removed ReactNativeType (Paper API type) Cleaned up build system: - inlinedHostConfigs.js: removed shortName 'native' config - forks.js: removed dead 'react-native-renderer' case - Deleted ReactNative.js shim and Paper-only test mocks ## How did you test this change? Manually synced the renderer to RN and passed all Fantom tests. Manually verified the differences in the generated `ReactFabric-dev.js` file. Only Paper compat logic has been removed. <details> <summary>diff</summary> ```diff --- /tmp/react-fabric-baseline/ReactFabric-dev.js 2026-04-16 16:42:42 +++ build/react-native/implementations/ReactFabric-dev.js 2026-04-16 18:08:43 @@ -30,43 +30,19 @@ : emptyObject; } function createHierarchy(fiberHierarchy) { - return fiberHierarchy.map(function (fiber$jscomp$0) { + return fiberHierarchy.map(function (fiber) { return { - name: getComponentNameFromType(fiber$jscomp$0.type), + name: getComponentNameFromType(fiber.type), getInspectorData: function () { return { - props: getHostProps(fiber$jscomp$0), + props: getHostProps(fiber), measure: function (callback) { - var hostFiber = findCurrentHostFiber(fiber$jscomp$0); - if ( - (hostFiber = - null != hostFiber && - null !== hostFiber.stateNode && - hostFiber.stateNode.node) - ) + var hostFiber = findCurrentHostFiber(fiber); + (hostFiber = + null != hostFiber && + null !== hostFiber.stateNode && + hostFiber.stateNode.node) && nativeFabricUIManager.measure(hostFiber, callback); - else { - hostFiber = ReactNativePrivateInterface.UIManager; - var JSCompiler_temp_const = hostFiber.measure, - JSCompiler_inline_result; - a: { - for (var fiber = fiber$jscomp$0; fiber; ) { - null !== fiber.stateNode && - 5 === fiber.tag && - (JSCompiler_inline_result = findNodeHandle( - fiber.stateNode - )); - if (JSCompiler_inline_result) break a; - fiber = fiber.child; - } - JSCompiler_inline_result = null; - } - return JSCompiler_temp_const.call( - hostFiber, - JSCompiler_inline_result, - callback - ); - } } }; } @@ -1805,18 +1781,6 @@ } return null; } - function doesFiberContain(parentFiber, childFiber) { - for ( - var parentFiberAlternate = parentFiber.alternate; - null !== childFiber; - - ) { - if (childFiber === parentFiber || childFiber === parentFiberAlternate) - return !0; - childFiber = childFiber.return; - } - return !1; - } function traverseVisibleHostChildren( child, searchWithinHosts, @@ -16986,44 +16950,6 @@ function getCurrentFiberForDevTools() { return current; } - function findNodeHandle(componentOrHandle) { - var owner = current; - null !== owner && - isRendering && - null !== owner.stateNode && - (owner.stateNode._warnedAboutRefsInRender || - console.error( - "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", - getComponentNameFromType(owner.type) || "A component" - ), - (owner.stateNode._warnedAboutRefsInRender = !0)); - if (null == componentOrHandle) return null; - if ("number" === typeof componentOrHandle) return componentOrHandle; - if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag; - if ( - null != componentOrHandle.canonical && - null != componentOrHandle.canonical.nativeTag - ) - return componentOrHandle.canonical.nativeTag; - if ( - (owner = - ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - )) - ) - return owner; - componentOrHandle = findHostInstanceWithWarning( - componentOrHandle, - "findNodeHandle" - ); - return null == componentOrHandle - ? componentOrHandle - : null != componentOrHandle._nativeTag - ? componentOrHandle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - ); - } function getNodeFromInternalInstanceHandle(internalInstanceHandle) { return ( internalInstanceHandle && @@ -17134,12 +17060,9 @@ } return instance.canonical.publicInstance; } - return null != instance.containerInfo && - null != instance.containerInfo.publicInstance + return null != instance.containerInfo ? instance.containerInfo.publicInstance - : null != instance._nativeTag - ? instance - : null; + : null; } function getPublicInstanceFromHostFiber(fiber) { fiber = getPublicInstance(fiber.stateNode); @@ -18017,7 +17940,6 @@ DefaultEventPriority = 32, IdleEventPriority = 268435456, searchTarget = null, - instanceCache = new Map(), bind = Function.prototype.bind, valueStack = []; var fiberStack = []; @@ -20041,24 +19963,19 @@ _nativeFabricUIManage.unstable_getCurrentEventPriority, extraDevToolsConfig = { getInspectorDataForInstance: getInspectorDataForInstance, - getInspectorDataForViewTag: function (viewTag) { - viewTag = instanceCache.get(viewTag) || null; - return getInspectorDataForInstance(viewTag); - }, getInspectorDataForViewAtPoint: function ( inspectedView, locationX, locationY, callback ) { - var closestInstance = null, - fabricNode = - ReactNativePrivateInterface.getNodeFromPublicInstance( - inspectedView - ); - fabricNode + var closestInstance = null; + (inspectedView = + ReactNativePrivateInterface.getNodeFromPublicInstance( + inspectedView + )) ? nativeFabricUIManager.findNodeAtPoint( - fabricNode, + inspectedView, locationX, locationY, function (internalInstanceHandle) { @@ -20109,32 +20026,9 @@ } } ) - : null != inspectedView._internalFiberInstanceHandleDEV - ? ReactNativePrivateInterface.UIManager.findSubviewIn( - findNodeHandle(inspectedView), - [locationX, locationY], - function (nativeViewTag, left, top, width, height) { - var inspectorData = getInspectorDataForInstance( - instanceCache.get(nativeViewTag) || null - ); - callback( - assign({}, inspectorData, { - pointerY: locationY, - frame: { - left: left, - top: top, - width: width, - height: height - }, - touchedViewTag: nativeViewTag, - closestPublicInstance: nativeViewTag - }) - ); - } - ) - : console.error( - "getInspectorDataForViewAtPoint expects to receive a host component" - ); + : console.error( + "getInspectorDataForViewAtPoint expects to receive a host component" + ); } }, getViewConfigForType = @@ -20368,23 +20262,12 @@ ); }; exports.dispatchCommand = function (handle, command, args) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.dispatchCommand(handle, command, args) + : console.error( "dispatchCommand was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.dispatchCommand(handle, command, args) - : ReactNativePrivateInterface.UIManager.dispatchViewManagerCommand( - nativeTag, - command, - args - )); + ); }; exports.findHostInstance_DEPRECATED = function (componentOrHandle) { var owner = current; @@ -20402,14 +20285,46 @@ : componentOrHandle.canonical && componentOrHandle.canonical.publicInstance ? componentOrHandle.canonical.publicInstance - : componentOrHandle._nativeTag - ? componentOrHandle - : findHostInstanceWithWarning( - componentOrHandle, - "findHostInstance_DEPRECATED" - ); + : findHostInstanceWithWarning( + componentOrHandle, + "findHostInstance_DEPRECATED" + ); }; - exports.findNodeHandle = findNodeHandle; + exports.findNodeHandle = function (componentOrHandle) { + var owner = current; + null !== owner && + isRendering && + null !== owner.stateNode && + (owner.stateNode._warnedAboutRefsInRender || + console.error( + "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", + getComponentNameFromType(owner.type) || "A component" + ), + (owner.stateNode._warnedAboutRefsInRender = !0)); + if (null == componentOrHandle) return null; + if ("number" === typeof componentOrHandle) return componentOrHandle; + if ( + null != componentOrHandle.canonical && + null != componentOrHandle.canonical.nativeTag + ) + return componentOrHandle.canonical.nativeTag; + if ( + (owner = + ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + )) + ) + return owner; + componentOrHandle = findHostInstanceWithWarning( + componentOrHandle, + "findNodeHandle" + ); + return null == componentOrHandle + ? componentOrHandle + : ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + ); + }; exports.getNodeFromInternalInstanceHandle = getNodeFromInternalInstanceHandle; exports.getPublicInstanceFromInternalInstanceHandle = function ( @@ -20433,14 +20348,6 @@ : null; }; exports.isChildPublicInstance = function (parentInstance, childInstance) { - if ( - parentInstance._internalFiberInstanceHandleDEV && - childInstance._internalFiberInstanceHandleDEV - ) - return doesFiberContain( - parentInstance._internalFiberInstanceHandleDEV, - childInstance._internalFiberInstanceHandleDEV - ); parentInstance = ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( parentInstance @@ -20449,9 +20356,27 @@ ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( childInstance ); - return null != parentInstance && null != childInstance - ? doesFiberContain(parentInstance, childInstance) - : !1; + if (null != parentInstance && null != childInstance) { + a: { + for ( + var parentFiberAlternate = parentInstance.alternate; + null !== childInstance; + + ) { + if ( + childInstance === parentInstance || + childInstance === parentFiberAlternate + ) { + parentInstance = !0; + break a; + } + childInstance = childInstance.return; + } + parentInstance = !1; + } + return parentInstance; + } + return !1; }; exports.render = function ( element, @@ -20521,22 +20446,12 @@ return element; }; exports.sendAccessibilityEvent = function (handle, eventType) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) + : console.error( "sendAccessibilityEvent was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) - : ReactNativePrivateInterface.legacySendAccessibilityEvent( - nativeTag, - eventType - )); + ); }; exports.stopSurface = function (containerTag) { var root = roots.get(containerTag); ``` </details>
1 parent 00f063c commit 56922cf

35 files changed

Lines changed: 16 additions & 4703 deletions

‎packages/react-native-renderer/index.js‎

Lines changed: 0 additions & 16 deletions
This file was deleted.

‎packages/react-native-renderer/src/NativeMethodsMixinUtils.js‎

Lines changed: 0 additions & 64 deletions
This file was deleted.

‎packages/react-native-renderer/src/ReactFiberConfigFabric.js‎

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ import {getClosestInstanceFromNode} from './ReactFabricComponentTree';
6666
import{compareDocumentPositionForEmptyFragment}from'shared/ReactDOMFragmentRefShared';
6767

6868
import{
69-
getInspectorDataForViewTag,
7069
getInspectorDataForViewAtPoint,
7170
getInspectorDataForInstance,
7271
}from'./ReactNativeFiberInspector';
@@ -79,7 +78,6 @@ export {default as rendererVersion} from 'shared/ReactVersion'; // TODO: Conside
7978
exportconstrendererPackageName='react-native-renderer';
8079
exportconstextraDevToolsConfig={
8180
getInspectorDataForInstance,
82-
getInspectorDataForViewTag,
8381
getInspectorDataForViewAtPoint,
8482
};
8583

@@ -142,8 +140,6 @@ export type TransitionStatus = mixed;
142140

143141
exporttypeRendererInspectionConfig=$ReadOnly<{
144142
getInspectorDataForInstance?: (instance: Fiber|null)=>InspectorData,
145-
// Deprecated. Replaced with getInspectorDataForViewAtPoint.
146-
getInspectorDataForViewTag?: (tag: number)=>Object,
147143
getInspectorDataForViewAtPoint?: (
148144
inspectedView: Object,
149145
locationX: number,
@@ -313,17 +309,7 @@ export function getPublicInstance(instance: Instance): null | PublicInstance {
313309

314310
// Handle root containers
315311
if(instance.containerInfo!=null){
316-
if(instance.containerInfo.publicInstance!=null){
317-
returninstance.containerInfo.publicInstance;
318-
}
319-
}
320-
321-
// For compatibility with the legacy renderer, in case it's used with Fabric
322-
// in the same app.
323-
// $FlowExpectedError[prop-missing]
324-
if(instance._nativeTag!=null){
325-
// $FlowExpectedError[incompatible-return]
326-
returninstance;
312+
returninstance.containerInfo.publicInstance;
327313
}
328314

329315
returnnull;

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [react-native-renderer] Delete Paper (legacy) renderer (#36285) · react/react@56922cf · GitHub
Skip to content

Commit 56922cf

Browse files
authored
[react-native-renderer] Delete Paper (legacy) renderer (#36285)
## Summary The Paper renderer is no longer used in React Native. This commit removes all remaining Paper source code, tests, build system references, and Paper backward-compatibility branches in shared code. Deleted Paper-only source files: - ReactNativeRenderer.js, ReactNativeInjection.js, ReactFiberConfigNative.js - ReactNativeComponentTree.js, ReactNativeEventEmitter.js - ReactNativeFiberHostComponent.js, ReactNativeGlobalResponderHandler.js - ReactNativeAttributePayload.js, NativeMethodsMixinUtils.js - ReactFiberConfig.native.js (reconciler fork) - index.js (Paper entry point) Cleaned up shared files: - ReactNativePublicCompat.js: removed _nativeTag checks, UIManager/ legacySendAccessibilityEvent Paper fallbacks - ReactNativeFiberInspector.js: removed getInspectorDataForViewTag, UIManager.measure fallback, Paper branch in getInspectorDataForViewAtPoint - ReactFiberConfigFabric.js: removed _nativeTag backward compat in getPublicInstance, removed getInspectorDataForViewTag from devtools config - ReactNativeTypes.js: removed ReactNativeType (Paper API type) Cleaned up build system: - inlinedHostConfigs.js: removed shortName 'native' config - forks.js: removed dead 'react-native-renderer' case - Deleted ReactNative.js shim and Paper-only test mocks ## How did you test this change? Manually synced the renderer to RN and passed all Fantom tests. Manually verified the differences in the generated `ReactFabric-dev.js` file. Only Paper compat logic has been removed. <details> <summary>diff</summary> ```diff --- /tmp/react-fabric-baseline/ReactFabric-dev.js 2026-04-16 16:42:42 +++ build/react-native/implementations/ReactFabric-dev.js 2026-04-16 18:08:43 @@ -30,43 +30,19 @@ : emptyObject; } function createHierarchy(fiberHierarchy) { - return fiberHierarchy.map(function (fiber$jscomp$0) { + return fiberHierarchy.map(function (fiber) { return { - name: getComponentNameFromType(fiber$jscomp$0.type), + name: getComponentNameFromType(fiber.type), getInspectorData: function () { return { - props: getHostProps(fiber$jscomp$0), + props: getHostProps(fiber), measure: function (callback) { - var hostFiber = findCurrentHostFiber(fiber$jscomp$0); - if ( - (hostFiber = - null != hostFiber && - null !== hostFiber.stateNode && - hostFiber.stateNode.node) - ) + var hostFiber = findCurrentHostFiber(fiber); + (hostFiber = + null != hostFiber && + null !== hostFiber.stateNode && + hostFiber.stateNode.node) && nativeFabricUIManager.measure(hostFiber, callback); - else { - hostFiber = ReactNativePrivateInterface.UIManager; - var JSCompiler_temp_const = hostFiber.measure, - JSCompiler_inline_result; - a: { - for (var fiber = fiber$jscomp$0; fiber; ) { - null !== fiber.stateNode && - 5 === fiber.tag && - (JSCompiler_inline_result = findNodeHandle( - fiber.stateNode - )); - if (JSCompiler_inline_result) break a; - fiber = fiber.child; - } - JSCompiler_inline_result = null; - } - return JSCompiler_temp_const.call( - hostFiber, - JSCompiler_inline_result, - callback - ); - } } }; } @@ -1805,18 +1781,6 @@ } return null; } - function doesFiberContain(parentFiber, childFiber) { - for ( - var parentFiberAlternate = parentFiber.alternate; - null !== childFiber; - - ) { - if (childFiber === parentFiber || childFiber === parentFiberAlternate) - return !0; - childFiber = childFiber.return; - } - return !1; - } function traverseVisibleHostChildren( child, searchWithinHosts, @@ -16986,44 +16950,6 @@ function getCurrentFiberForDevTools() { return current; } - function findNodeHandle(componentOrHandle) { - var owner = current; - null !== owner && - isRendering && - null !== owner.stateNode && - (owner.stateNode._warnedAboutRefsInRender || - console.error( - "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", - getComponentNameFromType(owner.type) || "A component" - ), - (owner.stateNode._warnedAboutRefsInRender = !0)); - if (null == componentOrHandle) return null; - if ("number" === typeof componentOrHandle) return componentOrHandle; - if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag; - if ( - null != componentOrHandle.canonical && - null != componentOrHandle.canonical.nativeTag - ) - return componentOrHandle.canonical.nativeTag; - if ( - (owner = - ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - )) - ) - return owner; - componentOrHandle = findHostInstanceWithWarning( - componentOrHandle, - "findNodeHandle" - ); - return null == componentOrHandle - ? componentOrHandle - : null != componentOrHandle._nativeTag - ? componentOrHandle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - ); - } function getNodeFromInternalInstanceHandle(internalInstanceHandle) { return ( internalInstanceHandle && @@ -17134,12 +17060,9 @@ } return instance.canonical.publicInstance; } - return null != instance.containerInfo && - null != instance.containerInfo.publicInstance + return null != instance.containerInfo ? instance.containerInfo.publicInstance - : null != instance._nativeTag - ? instance - : null; + : null; } function getPublicInstanceFromHostFiber(fiber) { fiber = getPublicInstance(fiber.stateNode); @@ -18017,7 +17940,6 @@ DefaultEventPriority = 32, IdleEventPriority = 268435456, searchTarget = null, - instanceCache = new Map(), bind = Function.prototype.bind, valueStack = []; var fiberStack = []; @@ -20041,24 +19963,19 @@ _nativeFabricUIManage.unstable_getCurrentEventPriority, extraDevToolsConfig = { getInspectorDataForInstance: getInspectorDataForInstance, - getInspectorDataForViewTag: function (viewTag) { - viewTag = instanceCache.get(viewTag) || null; - return getInspectorDataForInstance(viewTag); - }, getInspectorDataForViewAtPoint: function ( inspectedView, locationX, locationY, callback ) { - var closestInstance = null, - fabricNode = - ReactNativePrivateInterface.getNodeFromPublicInstance( - inspectedView - ); - fabricNode + var closestInstance = null; + (inspectedView = + ReactNativePrivateInterface.getNodeFromPublicInstance( + inspectedView + )) ? nativeFabricUIManager.findNodeAtPoint( - fabricNode, + inspectedView, locationX, locationY, function (internalInstanceHandle) { @@ -20109,32 +20026,9 @@ } } ) - : null != inspectedView._internalFiberInstanceHandleDEV - ? ReactNativePrivateInterface.UIManager.findSubviewIn( - findNodeHandle(inspectedView), - [locationX, locationY], - function (nativeViewTag, left, top, width, height) { - var inspectorData = getInspectorDataForInstance( - instanceCache.get(nativeViewTag) || null - ); - callback( - assign({}, inspectorData, { - pointerY: locationY, - frame: { - left: left, - top: top, - width: width, - height: height - }, - touchedViewTag: nativeViewTag, - closestPublicInstance: nativeViewTag - }) - ); - } - ) - : console.error( - "getInspectorDataForViewAtPoint expects to receive a host component" - ); + : console.error( + "getInspectorDataForViewAtPoint expects to receive a host component" + ); } }, getViewConfigForType = @@ -20368,23 +20262,12 @@ ); }; exports.dispatchCommand = function (handle, command, args) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.dispatchCommand(handle, command, args) + : console.error( "dispatchCommand was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.dispatchCommand(handle, command, args) - : ReactNativePrivateInterface.UIManager.dispatchViewManagerCommand( - nativeTag, - command, - args - )); + ); }; exports.findHostInstance_DEPRECATED = function (componentOrHandle) { var owner = current; @@ -20402,14 +20285,46 @@ : componentOrHandle.canonical && componentOrHandle.canonical.publicInstance ? componentOrHandle.canonical.publicInstance - : componentOrHandle._nativeTag - ? componentOrHandle - : findHostInstanceWithWarning( - componentOrHandle, - "findHostInstance_DEPRECATED" - ); + : findHostInstanceWithWarning( + componentOrHandle, + "findHostInstance_DEPRECATED" + ); }; - exports.findNodeHandle = findNodeHandle; + exports.findNodeHandle = function (componentOrHandle) { + var owner = current; + null !== owner && + isRendering && + null !== owner.stateNode && + (owner.stateNode._warnedAboutRefsInRender || + console.error( + "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", + getComponentNameFromType(owner.type) || "A component" + ), + (owner.stateNode._warnedAboutRefsInRender = !0)); + if (null == componentOrHandle) return null; + if ("number" === typeof componentOrHandle) return componentOrHandle; + if ( + null != componentOrHandle.canonical && + null != componentOrHandle.canonical.nativeTag + ) + return componentOrHandle.canonical.nativeTag; + if ( + (owner = + ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + )) + ) + return owner; + componentOrHandle = findHostInstanceWithWarning( + componentOrHandle, + "findNodeHandle" + ); + return null == componentOrHandle + ? componentOrHandle + : ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + ); + }; exports.getNodeFromInternalInstanceHandle = getNodeFromInternalInstanceHandle; exports.getPublicInstanceFromInternalInstanceHandle = function ( @@ -20433,14 +20348,6 @@ : null; }; exports.isChildPublicInstance = function (parentInstance, childInstance) { - if ( - parentInstance._internalFiberInstanceHandleDEV && - childInstance._internalFiberInstanceHandleDEV - ) - return doesFiberContain( - parentInstance._internalFiberInstanceHandleDEV, - childInstance._internalFiberInstanceHandleDEV - ); parentInstance = ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( parentInstance @@ -20449,9 +20356,27 @@ ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( childInstance ); - return null != parentInstance && null != childInstance - ? doesFiberContain(parentInstance, childInstance) - : !1; + if (null != parentInstance && null != childInstance) { + a: { + for ( + var parentFiberAlternate = parentInstance.alternate; + null !== childInstance; + + ) { + if ( + childInstance === parentInstance || + childInstance === parentFiberAlternate + ) { + parentInstance = !0; + break a; + } + childInstance = childInstance.return; + } + parentInstance = !1; + } + return parentInstance; + } + return !1; }; exports.render = function ( element, @@ -20521,22 +20446,12 @@ return element; }; exports.sendAccessibilityEvent = function (handle, eventType) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) + : console.error( "sendAccessibilityEvent was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) - : ReactNativePrivateInterface.legacySendAccessibilityEvent( - nativeTag, - eventType - )); + ); }; exports.stopSurface = function (containerTag) { var root = roots.get(containerTag); ``` </details>
1 parent 00f063c commit 56922cf

35 files changed

Lines changed: 16 additions & 4703 deletions

‎packages/react-native-renderer/index.js‎

Lines changed: 0 additions & 16 deletions
This file was deleted.

‎packages/react-native-renderer/src/NativeMethodsMixinUtils.js‎

Lines changed: 0 additions & 64 deletions
This file was deleted.

‎packages/react-native-renderer/src/ReactFiberConfigFabric.js‎

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ import {getClosestInstanceFromNode} from './ReactFabricComponentTree';
6666
import{compareDocumentPositionForEmptyFragment}from'shared/ReactDOMFragmentRefShared';
6767

6868
import{
69-
getInspectorDataForViewTag,
7069
getInspectorDataForViewAtPoint,
7170
getInspectorDataForInstance,
7271
}from'./ReactNativeFiberInspector';
@@ -79,7 +78,6 @@ export {default as rendererVersion} from 'shared/ReactVersion'; // TODO: Conside
7978
exportconstrendererPackageName='react-native-renderer';
8079
exportconstextraDevToolsConfig={
8180
getInspectorDataForInstance,
82-
getInspectorDataForViewTag,
8381
getInspectorDataForViewAtPoint,
8482
};
8583

@@ -142,8 +140,6 @@ export type TransitionStatus = mixed;
142140

143141
exporttypeRendererInspectionConfig=$ReadOnly<{
144142
getInspectorDataForInstance?: (instance: Fiber|null)=>InspectorData,
145-
// Deprecated. Replaced with getInspectorDataForViewAtPoint.
146-
getInspectorDataForViewTag?: (tag: number)=>Object,
147143
getInspectorDataForViewAtPoint?: (
148144
inspectedView: Object,
149145
locationX: number,
@@ -313,17 +309,7 @@ export function getPublicInstance(instance: Instance): null | PublicInstance {
313309

314310
// Handle root containers
315311
if(instance.containerInfo!=null){
316-
if(instance.containerInfo.publicInstance!=null){
317-
returninstance.containerInfo.publicInstance;
318-
}
319-
}
320-
321-
// For compatibility with the legacy renderer, in case it's used with Fabric
322-
// in the same app.
323-
// $FlowExpectedError[prop-missing]
324-
if(instance._nativeTag!=null){
325-
// $FlowExpectedError[incompatible-return]
326-
returninstance;
312+
returninstance.containerInfo.publicInstance;
327313
}
328314

329315
returnnull;

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); [react-native-renderer] Delete Paper (legacy) renderer (#36285) · react/react@56922cf · GitHub
Skip to content

Commit 56922cf

Browse files
authored
[react-native-renderer] Delete Paper (legacy) renderer (#36285)
## Summary The Paper renderer is no longer used in React Native. This commit removes all remaining Paper source code, tests, build system references, and Paper backward-compatibility branches in shared code. Deleted Paper-only source files: - ReactNativeRenderer.js, ReactNativeInjection.js, ReactFiberConfigNative.js - ReactNativeComponentTree.js, ReactNativeEventEmitter.js - ReactNativeFiberHostComponent.js, ReactNativeGlobalResponderHandler.js - ReactNativeAttributePayload.js, NativeMethodsMixinUtils.js - ReactFiberConfig.native.js (reconciler fork) - index.js (Paper entry point) Cleaned up shared files: - ReactNativePublicCompat.js: removed _nativeTag checks, UIManager/ legacySendAccessibilityEvent Paper fallbacks - ReactNativeFiberInspector.js: removed getInspectorDataForViewTag, UIManager.measure fallback, Paper branch in getInspectorDataForViewAtPoint - ReactFiberConfigFabric.js: removed _nativeTag backward compat in getPublicInstance, removed getInspectorDataForViewTag from devtools config - ReactNativeTypes.js: removed ReactNativeType (Paper API type) Cleaned up build system: - inlinedHostConfigs.js: removed shortName 'native' config - forks.js: removed dead 'react-native-renderer' case - Deleted ReactNative.js shim and Paper-only test mocks ## How did you test this change? Manually synced the renderer to RN and passed all Fantom tests. Manually verified the differences in the generated `ReactFabric-dev.js` file. Only Paper compat logic has been removed. <details> <summary>diff</summary> ```diff --- /tmp/react-fabric-baseline/ReactFabric-dev.js 2026-04-16 16:42:42 +++ build/react-native/implementations/ReactFabric-dev.js 2026-04-16 18:08:43 @@ -30,43 +30,19 @@ : emptyObject; } function createHierarchy(fiberHierarchy) { - return fiberHierarchy.map(function (fiber$jscomp$0) { + return fiberHierarchy.map(function (fiber) { return { - name: getComponentNameFromType(fiber$jscomp$0.type), + name: getComponentNameFromType(fiber.type), getInspectorData: function () { return { - props: getHostProps(fiber$jscomp$0), + props: getHostProps(fiber), measure: function (callback) { - var hostFiber = findCurrentHostFiber(fiber$jscomp$0); - if ( - (hostFiber = - null != hostFiber && - null !== hostFiber.stateNode && - hostFiber.stateNode.node) - ) + var hostFiber = findCurrentHostFiber(fiber); + (hostFiber = + null != hostFiber && + null !== hostFiber.stateNode && + hostFiber.stateNode.node) && nativeFabricUIManager.measure(hostFiber, callback); - else { - hostFiber = ReactNativePrivateInterface.UIManager; - var JSCompiler_temp_const = hostFiber.measure, - JSCompiler_inline_result; - a: { - for (var fiber = fiber$jscomp$0; fiber; ) { - null !== fiber.stateNode && - 5 === fiber.tag && - (JSCompiler_inline_result = findNodeHandle( - fiber.stateNode - )); - if (JSCompiler_inline_result) break a; - fiber = fiber.child; - } - JSCompiler_inline_result = null; - } - return JSCompiler_temp_const.call( - hostFiber, - JSCompiler_inline_result, - callback - ); - } } }; } @@ -1805,18 +1781,6 @@ } return null; } - function doesFiberContain(parentFiber, childFiber) { - for ( - var parentFiberAlternate = parentFiber.alternate; - null !== childFiber; - - ) { - if (childFiber === parentFiber || childFiber === parentFiberAlternate) - return !0; - childFiber = childFiber.return; - } - return !1; - } function traverseVisibleHostChildren( child, searchWithinHosts, @@ -16986,44 +16950,6 @@ function getCurrentFiberForDevTools() { return current; } - function findNodeHandle(componentOrHandle) { - var owner = current; - null !== owner && - isRendering && - null !== owner.stateNode && - (owner.stateNode._warnedAboutRefsInRender || - console.error( - "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", - getComponentNameFromType(owner.type) || "A component" - ), - (owner.stateNode._warnedAboutRefsInRender = !0)); - if (null == componentOrHandle) return null; - if ("number" === typeof componentOrHandle) return componentOrHandle; - if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag; - if ( - null != componentOrHandle.canonical && - null != componentOrHandle.canonical.nativeTag - ) - return componentOrHandle.canonical.nativeTag; - if ( - (owner = - ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - )) - ) - return owner; - componentOrHandle = findHostInstanceWithWarning( - componentOrHandle, - "findNodeHandle" - ); - return null == componentOrHandle - ? componentOrHandle - : null != componentOrHandle._nativeTag - ? componentOrHandle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance( - componentOrHandle - ); - } function getNodeFromInternalInstanceHandle(internalInstanceHandle) { return ( internalInstanceHandle && @@ -17134,12 +17060,9 @@ } return instance.canonical.publicInstance; } - return null != instance.containerInfo && - null != instance.containerInfo.publicInstance + return null != instance.containerInfo ? instance.containerInfo.publicInstance - : null != instance._nativeTag - ? instance - : null; + : null; } function getPublicInstanceFromHostFiber(fiber) { fiber = getPublicInstance(fiber.stateNode); @@ -18017,7 +17940,6 @@ DefaultEventPriority = 32, IdleEventPriority = 268435456, searchTarget = null, - instanceCache = new Map(), bind = Function.prototype.bind, valueStack = []; var fiberStack = []; @@ -20041,24 +19963,19 @@ _nativeFabricUIManage.unstable_getCurrentEventPriority, extraDevToolsConfig = { getInspectorDataForInstance: getInspectorDataForInstance, - getInspectorDataForViewTag: function (viewTag) { - viewTag = instanceCache.get(viewTag) || null; - return getInspectorDataForInstance(viewTag); - }, getInspectorDataForViewAtPoint: function ( inspectedView, locationX, locationY, callback ) { - var closestInstance = null, - fabricNode = - ReactNativePrivateInterface.getNodeFromPublicInstance( - inspectedView - ); - fabricNode + var closestInstance = null; + (inspectedView = + ReactNativePrivateInterface.getNodeFromPublicInstance( + inspectedView + )) ? nativeFabricUIManager.findNodeAtPoint( - fabricNode, + inspectedView, locationX, locationY, function (internalInstanceHandle) { @@ -20109,32 +20026,9 @@ } } ) - : null != inspectedView._internalFiberInstanceHandleDEV - ? ReactNativePrivateInterface.UIManager.findSubviewIn( - findNodeHandle(inspectedView), - [locationX, locationY], - function (nativeViewTag, left, top, width, height) { - var inspectorData = getInspectorDataForInstance( - instanceCache.get(nativeViewTag) || null - ); - callback( - assign({}, inspectorData, { - pointerY: locationY, - frame: { - left: left, - top: top, - width: width, - height: height - }, - touchedViewTag: nativeViewTag, - closestPublicInstance: nativeViewTag - }) - ); - } - ) - : console.error( - "getInspectorDataForViewAtPoint expects to receive a host component" - ); + : console.error( + "getInspectorDataForViewAtPoint expects to receive a host component" + ); } }, getViewConfigForType = @@ -20368,23 +20262,12 @@ ); }; exports.dispatchCommand = function (handle, command, args) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.dispatchCommand(handle, command, args) + : console.error( "dispatchCommand was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.dispatchCommand(handle, command, args) - : ReactNativePrivateInterface.UIManager.dispatchViewManagerCommand( - nativeTag, - command, - args - )); + ); }; exports.findHostInstance_DEPRECATED = function (componentOrHandle) { var owner = current; @@ -20402,14 +20285,46 @@ : componentOrHandle.canonical && componentOrHandle.canonical.publicInstance ? componentOrHandle.canonical.publicInstance - : componentOrHandle._nativeTag - ? componentOrHandle - : findHostInstanceWithWarning( - componentOrHandle, - "findHostInstance_DEPRECATED" - ); + : findHostInstanceWithWarning( + componentOrHandle, + "findHostInstance_DEPRECATED" + ); }; - exports.findNodeHandle = findNodeHandle; + exports.findNodeHandle = function (componentOrHandle) { + var owner = current; + null !== owner && + isRendering && + null !== owner.stateNode && + (owner.stateNode._warnedAboutRefsInRender || + console.error( + "%s is accessing findNodeHandle inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", + getComponentNameFromType(owner.type) || "A component" + ), + (owner.stateNode._warnedAboutRefsInRender = !0)); + if (null == componentOrHandle) return null; + if ("number" === typeof componentOrHandle) return componentOrHandle; + if ( + null != componentOrHandle.canonical && + null != componentOrHandle.canonical.nativeTag + ) + return componentOrHandle.canonical.nativeTag; + if ( + (owner = + ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + )) + ) + return owner; + componentOrHandle = findHostInstanceWithWarning( + componentOrHandle, + "findNodeHandle" + ); + return null == componentOrHandle + ? componentOrHandle + : ReactNativePrivateInterface.getNativeTagFromPublicInstance( + componentOrHandle + ); + }; exports.getNodeFromInternalInstanceHandle = getNodeFromInternalInstanceHandle; exports.getPublicInstanceFromInternalInstanceHandle = function ( @@ -20433,14 +20348,6 @@ : null; }; exports.isChildPublicInstance = function (parentInstance, childInstance) { - if ( - parentInstance._internalFiberInstanceHandleDEV && - childInstance._internalFiberInstanceHandleDEV - ) - return doesFiberContain( - parentInstance._internalFiberInstanceHandleDEV, - childInstance._internalFiberInstanceHandleDEV - ); parentInstance = ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( parentInstance @@ -20449,9 +20356,27 @@ ReactNativePrivateInterface.getInternalInstanceHandleFromPublicInstance( childInstance ); - return null != parentInstance && null != childInstance - ? doesFiberContain(parentInstance, childInstance) - : !1; + if (null != parentInstance && null != childInstance) { + a: { + for ( + var parentFiberAlternate = parentInstance.alternate; + null !== childInstance; + + ) { + if ( + childInstance === parentInstance || + childInstance === parentFiberAlternate + ) { + parentInstance = !0; + break a; + } + childInstance = childInstance.return; + } + parentInstance = !1; + } + return parentInstance; + } + return !1; }; exports.render = function ( element, @@ -20521,22 +20446,12 @@ return element; }; exports.sendAccessibilityEvent = function (handle, eventType) { - var nativeTag = - null != handle._nativeTag - ? handle._nativeTag - : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle); - null == nativeTag - ? console.error( + handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle); + null != handle + ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) + : console.error( "sendAccessibilityEvent was called with a ref that isn't a native component. Use React.forwardRef to get access to the underlying native component" - ) - : ((handle = - ReactNativePrivateInterface.getNodeFromPublicInstance(handle)), - null != handle - ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType) - : ReactNativePrivateInterface.legacySendAccessibilityEvent( - nativeTag, - eventType - )); + ); }; exports.stopSurface = function (containerTag) { var root = roots.get(containerTag); ``` </details>
1 parent 00f063c commit 56922cf

35 files changed

Lines changed: 16 additions & 4703 deletions

‎packages/react-native-renderer/index.js‎

Lines changed: 0 additions & 16 deletions
This file was deleted.

‎packages/react-native-renderer/src/NativeMethodsMixinUtils.js‎

Lines changed: 0 additions & 64 deletions
This file was deleted.

‎packages/react-native-renderer/src/ReactFiberConfigFabric.js‎

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ import {getClosestInstanceFromNode} from './ReactFabricComponentTree';
6666
import{compareDocumentPositionForEmptyFragment}from'shared/ReactDOMFragmentRefShared';
6767

6868
import{
69-
getInspectorDataForViewTag,
7069
getInspectorDataForViewAtPoint,
7170
getInspectorDataForInstance,
7271
}from'./ReactNativeFiberInspector';
@@ -79,7 +78,6 @@ export {default as rendererVersion} from 'shared/ReactVersion'; // TODO: Conside
7978
exportconstrendererPackageName='react-native-renderer';
8079
exportconstextraDevToolsConfig={
8180
getInspectorDataForInstance,
82-
getInspectorDataForViewTag,
8381
getInspectorDataForViewAtPoint,
8482
};
8583

@@ -142,8 +140,6 @@ export type TransitionStatus = mixed;
142140

143141
exporttypeRendererInspectionConfig=$ReadOnly<{
144142
getInspectorDataForInstance?: (instance: Fiber|null)=>InspectorData,
145-
// Deprecated. Replaced with getInspectorDataForViewAtPoint.
146-
getInspectorDataForViewTag?: (tag: number)=>Object,
147143
getInspectorDataForViewAtPoint?: (
148144
inspectedView: Object,
149145
locationX: number,
@@ -313,17 +309,7 @@ export function getPublicInstance(instance: Instance): null | PublicInstance {
313309

314310
// Handle root containers
315311
if(instance.containerInfo!=null){
316-
if(instance.containerInfo.publicInstance!=null){
317-
returninstance.containerInfo.publicInstance;
318-
}
319-
}
320-
321-
// For compatibility with the legacy renderer, in case it's used with Fabric
322-
// in the same app.
323-
// $FlowExpectedError[prop-missing]
324-
if(instance._nativeTag!=null){
325-
// $FlowExpectedError[incompatible-return]
326-
returninstance;
312+
returninstance.containerInfo.publicInstance;
327313
}
328314

329315
returnnull;

0 commit comments

Comments
 (0)