React5 min read
React with Web Workers
Offload heavy computations to Web Workers.
Sarah Johnson
December 20, 2025
0.0k0
Use Web Workers for heavy computations.
Create Worker
// worker.js
self.addEventListener('message', (e) => {
const result = heavyComputation(e.data);
self.postMessage(result);
});
function heavyComputation(data) {
// Complex calculations
return processedData;
}
Use in React
import { useState, useEffect } from 'react';
function App() {
const [result, setResult] = useState(null);
useEffect(() => {
const worker = new Worker(new URL('./worker.js', import.meta.url));
worker.postMessage(largeData);
worker.onmessage = (e) => {
setResult(e.data);
};
return () => worker.terminate();
}, []);
return <div>{result}</div>;
}
Custom Hook
function useWorker(workerFunction) {
const [result, setResult] = useState(null);
const [error, setError] = useState(null);
const runWorker = useCallback((data) => {
const worker = new Worker(workerFunction);
worker.postMessage(data);
worker.onmessage = (e) => setResult(e.data);
worker.onerror = (e) => setError(e.message);
return () => worker.terminate();
}, [workerFunction]);
return { result, error, runWorker };
}
Remember
- Offload heavy computations
- Don't block main thread
- Workers can't access DOM
- Terminate when done
Next: Learn PWA features!
#React#Web Workers#Performance#Advanced