What is react-reconciler?
The react-reconciler package is a framework for building custom React renderers. It provides the core algorithms that React uses for reconciliation, allowing developers to create their own renderers for different target environments beyond what React supports out of the box (e.g., the web or native mobile). This package is an under-the-hood tool primarily intended for advanced use cases where you need to create a custom rendering environment.
What are react-reconciler's main functionalities?
Creating a Custom Renderer
This code sample demonstrates how to start creating a custom renderer using react-reconciler. You define methods like `createInstance` for creating instances of components and `createTextInstance` for handling text. The host config object passed to `ReactReconciler` includes a variety of methods for managing instances, updates, and more.
const MyRenderer = ReactReconciler({
now: Date.now,
createInstance: (type, props) => {
// Create instance of a component
},
createTextInstance: (text) => {
// Create text instance
},
// Other host config methods...
});
Scheduling Updates
This example shows how to schedule updates to the container using your custom renderer. The `updateContainer` method is used to apply updates to the container, which in this case is a custom object you manage. This method is part of what allows React's declarative API to work with your custom rendering logic.
const container = {}; // Your container object
MyRenderer.updateContainer(<App />, container, null, () => {
console.log('Rendered with MyRenderer');
});
Other packages similar to react-reconciler
preact
Preact is a fast 3kB alternative to React with the same modern API. While not a direct alternative to react-reconciler, it offers a different approach to building user interfaces with a smaller footprint. Preact can be used to build custom renderers, but its primary use case is as a React alternative for building web applications.
inferno
Inferno is another high-performance alternative to React that focuses on speed and performance. Similar to Preact, Inferno is not a direct alternative to react-reconciler but offers a different approach to building UIs with an emphasis on performance. Inferno includes its own mechanisms for creating custom renderers, making it a potential alternative for performance-critical applications.
react-reconciler
This is an experimental package for creating custom React renderers.
Its API is not as stable as that of React, React Native, or React DOM, and does not follow the common versioning scheme.
Use it at your own risk.
API
var Reconciler = require('react-reconciler');
var ReconcilerConfig = {
};
var MyRenderer = Reconciler(ReconcilerConfig);
var RendererPublicAPI = {
render(element, container, callback) {
}
};
module.exports = RendererPublicAPI;
Practical Examples
If these links break please file an issue and we’ll fix them. They intentionally link to the latest versions since the API is still evolving.
This third-party tutorial is relatively up-to-date and may be helpful.