---
# System prepended metadata

title: Q1 - Q2 Peer Review

---

Q1 - Q2 Peer Review
===

:dart: Feature
---
- RGM widget
- Super sale label
- Item page speed
- Header refactor

### RGM widget
- RGM widget component and tracking
- A/B testing
    - `Solve Maxymiser not able to apply campaign on QA issue`

### Item page speed
- Remove unused code (method and library)
- Server side view template and CSS clean up
    - `Remove 3500+ lines of import-mall.css (from 12696 to 9074)`
- Client side CSS restructure
- Image lazyload
    - `Reduce the number of HTTP requests`
- Validate item page html structure with W3C velidator

### Header refactor
- New search box component (:running:ongoing...)

:books: Technical enhancement
---
- ESlint from v3.4.0 to v6.1.0
    - `Able to lint react-hooks`
- Bable from v6.5.2 to v7.9.0
    - `Speed?`
    - `JSX Fragment (replace <Frangment> with <>)`
    - `Able to support for TypeScript` :tada: 
    - `TC39 Proposals (e.g. Optional Chaining, Nullish Coalescing...)` :tada: 
- StyleLint from v6.5.2 to v7.9.0
    - `No more annoying style order rule`
- Replace uglifyjs-webpack-plugin with terser-webpack-plugin
    - `Uglify is not support ES6`
    - `Terser seems to speed it up by 3x`
    - `Webpack@5 will use terser plugin by default`
- Introducing react-hot-loader
    - `Hot reload for developing` :tada: 
- Dynamic import with @loadable/component
    - `Code splitting` :tada:
- Webpack from v6.5.2 to v7.9.0
- Webpack-bundle-analyzer from v6.5.2 to v7.9.0
- Webpack-cli from v6.5.2 to v7.9.0
- Webpack-dev-server from v6.5.2 to v7.9.0
- Webpack-merge from v6.5.2 to v7.9.0

TODO
---
- [ ] Recompose library migration
- [ ] CSS design patterns
- [ ] Upgrade to Webpack 5
- [ ] Remove fake server 
- [ ] Implement image resolution
- [ ] Lodash V4.17.10 to V4.17.15 (Security issue on 4.17.11) 
- [ ] Formik warning
