Web Performance

Expo uses react-native-web which is a highly optimized framework that removes any unused modules during the production build. Tools like Expo CLI, babel-preset-expo, and @expo/webpack-config are used to optimize your app even further.
There are a number of performance tools at your disposal that will not only optimize your web app, but also improve the performance of your native app!

You can reduce the size of your assets with the Expo CLI command optimize. Learn more about it here: Image Compression with Expo CLI.

To inspect bundle sizes, we use a Webpack plugin called Webpack Bundle Analyzer A plugin that will help you visualize the size of your static bundles. You can use this to identify abnormally large things that you may not need (like this description).
By default this is disabled because it will add noticeably more time to your builds and reloads.
    "expo": {
        "web": {
            "build": {
                // To use the defaults set:
                "report": true,

                // For more complex functionality:
                "report": {
                    // Any of the following: https://github.com/webpack-contrib/webpack-bundle-analyzer#options-for-plugin
                    "statsFilename": "stats.json",
                    "reportFilename": "report.html"
                    // "server", "static", "disabled"
                    "analyzerMode": 'static',
                    // Host that will be used in server mode to start HTTP server.
                    "analyzerHost": '',
                    // Port that will be used in server mode to start HTTP server.
                    "analyzerPort": 8888,
                    // stat, parsed, gzip
                    "defaultSizes": 'gzip',
                    // Automatically open report in default browser.
                    "openAnalyzer": false,
                    // If true, webpack stats JSON file will be generated in bundle output directory.
                    "generateStatsFile": true,
                    // null or {Object}
                    "statsOptions": null,
                    // {null|pattern|pattern[]} where pattern equals to {String|RegExp|function}
                    "excludeAssets": null,
                    // Overrides logLevel
                    "verbose": false,
                    // The output path for the report.
                    "path": "web-report",

Lighthouse is a great way to see how fast, accessible, and performant your website is. You can test your project with the Audit tab in Chrome, or with the Lighthouse CLI.
After creating a production build with expo build:web and serving it somewhere, run Lighthouse with the URL your site is hosted at.
lighthouse  --view