Bluesky app fork with some witchin' additions 💫

fix: make significant speed improvements to build

Made changes to WebPack configuration based on settings
described here for development:
- https://webpack.js.org/configuration/devtool/
- https://webpack.js.org/configuration/cache/

The hot reload plugin has also been removed as it's
mostly dysfunctional in its current state.

Assisted-by: Claude <https://claude.ai> (Sonnet 4.5)

+91 -4
+2
.gitignore
··· 129 129 bskyweb/static/media/*.jpg 130 130 bskyweb/static/media/*.png 131 131 bskyweb/static/media/*.svg 132 + 133 + .build_cache
+2
package.json
··· 280 280 "lint-staged": "^13.2.3", 281 281 "lockfile-lint": "^4.14.0", 282 282 "prettier": "^3.6.0", 283 + "progress-webpack-plugin": "^1.0.16", 283 284 "react-native-dotenv": "^3.4.11", 284 285 "react-refresh": "^0.14.0", 286 + "speed-measure-webpack-plugin": "^1.5.0", 285 287 "svgo": "^3.3.2", 286 288 "ts-node": "^10.9.1", 287 289 "ts-plugin-sort-import-suggestions": "^1.0.4",
+15 -2
webpack.config.js
··· 4 4 const {BundleAnalyzerPlugin} = require('webpack-bundle-analyzer') 5 5 const {sentryWebpackPlugin} = require('@sentry/webpack-plugin') 6 6 const {version} = require('./package.json') 7 + const path = require('node:path') 8 + const SpeedMeasurePlugin = require('speed-measure-webpack-plugin') 9 + const ProgressPlugin = require('progress-webpack-plugin') 7 10 8 11 const GENERATE_STATS = process.env.EXPO_PUBLIC_GENERATE_STATS === '1' 9 12 const OPEN_ANALYZER = process.env.EXPO_PUBLIC_OPEN_ANALYZER === '1' 13 + const MEASURE_SPEED = process.env.EXPO_PUBLIC_OPEN_ANALYZER === '1' 10 14 11 15 const reactNativeWebWebviewConfiguration = { 12 16 test: /postMock.html$/, ··· 34 38 reactNativeWebWebviewConfiguration, 35 39 ] 36 40 if (env.mode === 'development') { 37 - config.plugins.push(new ReactRefreshWebpackPlugin()) 41 + config.devtool = 'eval' 42 + config.cache = { 43 + type: 'filesystem', 44 + cacheLocation: path.resolve(__dirname, '.build_cache'), 45 + } 46 + config.plugins.push(new ProgressPlugin(true)); 38 47 } else { 39 48 // Support static CDN for chunks 40 - config.output.publicPath = 'auto' 49 + config.output.publicPath = '/' 41 50 } 42 51 43 52 if (GENERATE_STATS || OPEN_ANALYZER) { ··· 64 73 }, 65 74 }), 66 75 ) 76 + } 77 + if (MEASURE_SPEED) { 78 + const spm = SpeedMeasurePlugin() 79 + return spm.wrap(config) 67 80 } 68 81 return config 69 82 }
+72 -2
yarn.lock
··· 8752 8752 resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" 8753 8753 integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== 8754 8754 8755 + ansi-escapes@^3.0.0: 8756 + version "3.2.0" 8757 + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" 8758 + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== 8759 + 8755 8760 ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: 8756 8761 version "4.3.2" 8757 8762 resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" ··· 8782 8787 version "0.0.9" 8783 8788 resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.9.tgz#6512d02342ae2cc68131952644a129cb734cd3f0" 8784 8789 integrity sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg== 8790 + 8791 + ansi-regex@^3.0.0: 8792 + version "3.0.1" 8793 + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" 8794 + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== 8785 8795 8786 8796 ansi-regex@^4.1.0: 8787 8797 version "4.1.1" ··· 9734 9744 resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" 9735 9745 integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== 9736 9746 9737 - chalk@^2.0.1, chalk@^2.4.2: 9747 + chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.2: 9738 9748 version "2.4.2" 9739 9749 resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 9740 9750 integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== ··· 9880 9890 dependencies: 9881 9891 del "^4.1.1" 9882 9892 9883 - cli-cursor@^2.1.0: 9893 + cli-cursor@^2.0.0, cli-cursor@^2.1.0: 9884 9894 version "2.1.0" 9885 9895 resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 9886 9896 integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== ··· 12454 12464 resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" 12455 12465 integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== 12456 12466 12467 + figures@^2.0.0: 12468 + version "2.0.0" 12469 + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 12470 + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== 12471 + dependencies: 12472 + escape-string-regexp "^1.0.5" 12473 + 12457 12474 figures@^3.0.0: 12458 12475 version "3.2.0" 12459 12476 resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" ··· 13744 13761 integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== 13745 13762 dependencies: 13746 13763 call-bound "^1.0.3" 13764 + 13765 + is-fullwidth-code-point@^2.0.0: 13766 + version "2.0.0" 13767 + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 13768 + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== 13747 13769 13748 13770 is-fullwidth-code-point@^3.0.0: 13749 13771 version "3.0.0" ··· 15194 15216 chalk "^4.1.0" 15195 15217 is-unicode-supported "^0.1.0" 15196 15218 15219 + log-update@^2.3.0: 15220 + version "2.3.0" 15221 + resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" 15222 + integrity sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== 15223 + dependencies: 15224 + ansi-escapes "^3.0.0" 15225 + cli-cursor "^2.0.0" 15226 + wrap-ansi "^3.0.1" 15227 + 15197 15228 log-update@^5.0.1: 15198 15229 version "5.0.1" 15199 15230 resolved "https://registry.yarnpkg.com/log-update/-/log-update-5.0.1.tgz#9e928bf70cb183c1f0c9e91d9e6b7115d597ce09" ··· 17090 17121 resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 17091 17122 integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== 17092 17123 17124 + progress-webpack-plugin@^1.0.16: 17125 + version "1.0.16" 17126 + resolved "https://registry.yarnpkg.com/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz#278f5c1afd21af783aad72c5ec95241520230fe5" 17127 + integrity sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA== 17128 + dependencies: 17129 + chalk "^2.1.0" 17130 + figures "^2.0.0" 17131 + log-update "^2.3.0" 17132 + 17093 17133 progress@^2.0.3: 17094 17134 version "2.0.3" 17095 17135 resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" ··· 19031 19071 select-hose "^2.0.0" 19032 19072 spdy-transport "^3.0.0" 19033 19073 19074 + speed-measure-webpack-plugin@^1.5.0: 19075 + version "1.5.0" 19076 + resolved "https://registry.yarnpkg.com/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.5.0.tgz#caf2c5bee24ab66c1c7c30e8daa7910497f7681a" 19077 + integrity sha512-Re0wX5CtM6gW7bZA64ONOfEPEhwbiSF/vz6e2GvadjuaPrQcHTQdRGsD8+BE7iUOysXH8tIenkPCQBEcspXsNg== 19078 + dependencies: 19079 + chalk "^4.1.0" 19080 + 19034 19081 split-on-first@^1.0.0: 19035 19082 version "1.1.0" 19036 19083 resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" ··· 19174 19221 emoji-regex "^8.0.0" 19175 19222 is-fullwidth-code-point "^3.0.0" 19176 19223 strip-ansi "^6.0.1" 19224 + 19225 + string-width@^2.1.1: 19226 + version "2.1.1" 19227 + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 19228 + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 19229 + dependencies: 19230 + is-fullwidth-code-point "^2.0.0" 19231 + strip-ansi "^4.0.0" 19177 19232 19178 19233 string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 19179 19234 version "4.2.3" ··· 19340 19395 integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 19341 19396 dependencies: 19342 19397 ansi-regex "^5.0.1" 19398 + 19399 + strip-ansi@^4.0.0: 19400 + version "4.0.0" 19401 + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 19402 + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== 19403 + dependencies: 19404 + ansi-regex "^3.0.0" 19343 19405 19344 19406 strip-ansi@^5.2.0: 19345 19407 version "5.2.0" ··· 20803 20865 ansi-styles "^4.0.0" 20804 20866 string-width "^4.1.0" 20805 20867 strip-ansi "^6.0.0" 20868 + 20869 + wrap-ansi@^3.0.1: 20870 + version "3.0.1" 20871 + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" 20872 + integrity sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== 20873 + dependencies: 20874 + string-width "^2.1.1" 20875 + strip-ansi "^4.0.0" 20806 20876 20807 20877 wrap-ansi@^6.2.0: 20808 20878 version "6.2.0"