Chaos engineering for React applications. Inject controlled failures into hooks, components, and async operations during development and testing.
| Package | Description |
|---|---|
@react-volatile/core |
Core chaos engine (framework-agnostic) |
@react-volatile/react |
React hooks, provider, and devtools |
@react-volatile/babel-plugin |
Automatic hook transformation |
npm install @react-volatile/reactyarn add @react-volatile/reactpnpm add @react-volatile/reactThe @react-volatile/core package is included as a dependency. For the babel plugin:
npm install -D @react-volatile/babel-pluginimport { VolatileProvider, useVolatileState, ChaosPanel } from '@react-volatile/react';
function App() {
return (
<VolatileProvider config={{ chaos: { defaultProbability: 0.3 } }}>
<Counter />
<ChaosPanel />
</VolatileProvider>
);
}
function Counter() {
const [count, setCount] = useVolatileState(0, {
name: 'count',
component: 'Counter',
failures: ['delay', 'error', 'corrupt'],
});
return <button onClick={() => setCount(c => c + 1)}>{count}</button>;
}useVolatileState- wrapsuseStateuseVolatileEffect/useVolatileLayoutEffect- wrapsuseEffect/useLayoutEffectuseVolatileReducer- wrapsuseReduceruseVolatileMemo- wrapsuseMemouseVolatileCallback- wrapsuseCallbackuseVolatileAsync- wraps async functions with loading/error stateuseChaosTrigger- manual chaos control
Automatically transform React hooks to volatile equivalents:
{
"plugins": [["@react-volatile/babel-plugin", { "mode": "all" }]]
}MIT