These subtasks are supposed to drastically increase initial loading performance and application's overall performance e.g. avoid unnecessary re-renders, reduce memory usage and the loading of useless code. They will also more the repository flexible to implement new features and reusable since some of them make the structure more clear and organized, fix development time errors and delays, and remove a bunch of legacy code.
[ ] get rid of SSR and client-side rendering mismatches which block HTML rehydration and cause re-rendering;
[ ] get rid of babel related boilerplate code put through each source file to reduce output code size;
[ ] get rid of multiple instances of ApiClient and ActionsTrigger; centralize their instantiation, reduce current boilerplate code complexity;
[ ] remove components with incorrect shouldComponentUpdate() in favor of React.PureComponent or recompose.pure usage: research the trade-offs after babel polyfills optimization.
[ ] implement code splitting by routes or particular heavy components;
[ ] support preloading of application's rest content after initial load with minimal sources;
[ ] get rid of the most of PropTypes related errors that disturb development experience;
[ ] make data fetch utility functions more flexible to support prefetching with non-routes components (e.g. contextual)?
[ ] fully refactor or even throw .less away to drastically reduce code size (to behave well with code splitting technique) and improve development expericence (flexibility, reusability of components, simplicity of implementing new functionality): consider CSS in JS approach, explore existing solutions (try to find the most feature-rich and fast one: let tuchk4/rockey to be a starting point; callstack/linaria), figure out trade-offs.
[ ] as soon as optimized LoadableRiver will be implemented: research the possibility to perform the migration of existing feeds to use new LoadableRiver which requires inner items to be margin-less and to have fully predictable height:
These subtasks are supposed to drastically increase initial loading performance and application's overall performance e.g. avoid unnecessary re-renders, reduce memory usage and the loading of useless code. They will also more the repository flexible to implement new features and reusable since some of them make the structure more clear and organized, fix development time errors and delays, and remove a bunch of legacy code.
react
,react-router
,immutable
etc.: https://github.com/Lokiedu/libertysoil-site/pull/920babel
related boilerplate code put through each source file to reduce output code size;ApiClient
andActionsTrigger
; centralize their instantiation, reduce current boilerplate code complexity;shouldComponentUpdate()
in favor ofReact.PureComponent
orrecompose.pure
usage: research the trade-offs afterbabel
polyfills optimization.PropTypes
related errors that disturb development experience;.less
away to drastically reduce code size (to behave well with code splitting technique) and improve development expericence (flexibility, reusability of components, simplicity of implementing new functionality): consider CSS in JS approach, explore existing solutions (try to find the most feature-rich and fast one: lettuchk4/rockey
to be a starting point;callstack/linaria
), figure out trade-offs.LoadableRiver
will be implemented: research the possibility to perform the migration of existing feeds to use newLoadableRiver
which requires inner items to be margin-less and to have fully predictable height: