Bociek, a web app build with React Leaflet, allows users to explore average monthly climate data and day length across different locations via an intuitive choropleth map interface
Currently, the Input component uses window resize event to set isSmallScreen state. I'd be much better to use something less resource hungry like react-resize-detector.
When loading PageInfo component sometimes it takes additional 0.5-1s to show React Leaflet logo. It'd be much better to show the whole page after all dependent imgs and fonts are loaded.
Changing all layers on the map (when the month or the data type changes) is quite RAM and CPU demanding. Some optimization is needed here, especially in the Map component.
After first clicking on a layer, it takes some time to load all necessary data.
Splitting those weather data files based on the month would improve the loading time of the first popup. It would also mean that the user would have to initially wait for the data to load each time he/she changes a month.
Large json data can be saved on the user's browsers using Indexeddb. I have to serve several big files (the largest is 7.5MB) to make it all work without any backend.
It could be good idea to save those files using one of Indexeddb wrappers (localForage or react-indexed-db).