List view
Update out monorepo infrastructure to: 1. Install with PNPM 2. Run tasks with Wireit/nps 3. Publish with changesets
No due date•8/10 issues closedVictory Turbo is our name for our Victory component re-write. In this re-write, we will be re-writing the top-level victory components (VictoryChart, VictoryBar, VictoryLine, etc.) to use hooks-based architecture and shared state. The primary goals of this re-write are: 1. Make Victory more readable. Add type safety, and remove layers of abstraction and "magic" to make it more apparent where data is coming from and how it is being rendered. 2. Improve performance bottlenecks caused by expensive calculations and React rendering. 3. Improve test coverage and documentation 4. Modernize the most confusing parts of the user-facing API, including events, transitions, and styling.
No due date•3/5 issues closed- No due date•6/6 issues closed
We can further reduce Victory's bundle size by continuing to remove default object exports to make Victory more tree-shakeable, and can work towards replacing lodash functions with equivalent ES6 functions in order to remove the dependency on lodash.
No due date•4/5 issues closedWhen one component extends another, it is making two assumptions. 1. The base component is a Javascript class, and not a function 2. The base component has specific methods that can be overridden This can make it really difficult to refactor these base classes, as we might be unknowingly breaking another class that extends it, both inside Victory and in victory-native. This is why there are currently a lot of comments like "this is overridden in victory-native" to avoid this problem. This also happens in several places inside Victory, such as in the container components that extend `VictoryContainer` and override functionality with mixins. Some of these problems might be better solved by composition. For example, rather than extending a component, we could render the base component and pass in different props. This way, we would be free to refactor the internal workings of a component, and a breaking change would only occur if the external-facing props change. ```jsx const ReactNativeVictoryLine = (props) => { return <VictoryLine {...props} shouldAnimate={false} /> } ``` For more information: [https://reactjs.org/docs/composition-vs-inheritance.html](https://reactjs.org/docs/composition-vs-inheritance.html)
No due date•1/2 issues closed