Skip to content

Conversation

@Blankeos
Copy link
Owner

@Blankeos Blankeos commented Nov 3, 2025

It seamlessly works w/ dev. - Build for prod gets stuck though, but yeah it's quick.

Switching from Vite to Rolldown shows significant performance gains:

Speed improvements

  • Client builds: 393ms → 137ms (65% faster, 256ms saved)
  • SSR builds: 142ms → ??? (not working yet)

Consistently seeing a 10-20% delta in build times across runs.

All logs:

Vite (regular)
❯ bun run build
$ bunx --bun vike build
vite v7.1.11 building for production...

[vike][routegen] 🌳 Route Tree generated in (./src/route-tree.gen.ts).

✓ 175 modules transformed.
dist/client/.vite/manifest.json                                       2.53 kB │ gzip:  0.46 kB
dist/client/assets/chunks/chunk-gelYIj5u.js                           0.95 kB │ gzip:  0.55 kB
dist/client/assets/entries/src_pages_error.CY0aVy5x.js                1.69 kB │ gzip:  0.68 kB
dist/client/assets/entries/src_pages_dashboard.oFNdfii3.js            1.73 kB │ gzip:  0.62 kB
dist/client/assets/entries/src_pages_dashboard_settings.BOlPrVDO.js   1.74 kB │ gzip:  0.63 kB
dist/client/assets/entries/src_pages_index.BNT9ymZL.js                7.26 kB │ gzip:  3.03 kB
dist/client/assets/chunks/chunk-5-41uQhs.js                           9.62 kB │ gzip:  3.90 kB
dist/client/assets/chunks/chunk-H5FqD02w.js                          39.82 kB │ gzip: 13.90 kB
dist/client/assets/entries/entry-client-routing.BY-xQ5Sc.js          71.60 kB │ gzip: 22.73 kB
✓ built in 393ms
vite v7.1.11 building SSR bundle for production...

[vike][routegen] 🌳 Route Tree generated in (./src/route-tree.gen.ts).

✓ 41 modules transformed.
dist/server/package.json                               0.02 kB
dist/server/.vite/manifest.json                        2.62 kB
dist/server/bun-index.mjs                              0.14 kB
dist/server/chunks/chunk-BYE2DdRl.js                   1.11 kB
dist/server/entries/src_pages_dashboard.mjs            2.56 kB
dist/server/entries/src_pages_dashboard_settings.mjs   2.59 kB
dist/server/entries/src_pages_error.mjs                2.70 kB
dist/server/entries/src_pages_index.mjs                4.22 kB
dist/server/entry.mjs                                  6.00 kB
dist/server/chunks/chunk-D2TZ70Zx.js                  14.70 kB
dist/server/index.mjs                                 25.86 kB
✓ built in 142ms
Vite (rolldown)
❯ bun run build
$ bunx --bun vike build
rolldown-vite v7.1.20 building for production...

[vike][routegen] 🌳 Route Tree generated in (./src/route-tree.gen.ts).

✓ 175 modules transformed.
dist/client/.vite/manifest.json                                      2.44 kB │ gzip:  0.45 kB
dist/client/assets/chunks/chunk-DTEvckbq.js                          0.89 kB │ gzip:  0.49 kB
dist/client/assets/entries/src_pages_error.HYAdPAj6.js               1.62 kB │ gzip:  0.63 kB
dist/client/assets/entries/src_pages_dashboard.CGuGQHkS.js           1.66 kB │ gzip:  0.57 kB
dist/client/assets/entries/src_pages_dashboard_settings.DZOVgmkp.js  1.67 kB │ gzip:  0.58 kB
dist/client/assets/entries/src_pages_index.DrD-YAjl.js               7.12 kB │ gzip:  2.90 kB
dist/client/assets/chunks/chunk-5tVIz825.js                          17.68 kB │ gzip:  6.69 kB
dist/client/assets/chunks/chunk-DrEvt8D9.js                          42.11 kB │ gzip: 14.59 kB
dist/client/assets/entries/entry-client-routing.C6BtgGMn.js          64.40 kB │ gzip: 20.11 kB
✓ built in 137ms
rolldown-vite v7.1.20 building SSR bundle for production...

[vike][routegen] 🌳 Route Tree generated in (./src/route-tree.gen.ts).

@magne4000
Copy link

Updating to latest @photonjs/hono and vike-photon fixes the issue :)

@Blankeos
Copy link
Owner Author

Blankeos commented Dec 9, 2025

Hi @magne4000 ! Thanks as always for checking. I think it's still occurring on this mre sadly.

This is the new error I'm getting:

🚨Error
✗ Build failed in 53ms
Error during build:
164 | 	if (condition) return;
165 | 	throw new PhotonBugError();
166 | }
167 | function assertUsage(condition, message) {
168 | 	if (condition) return;
169 | 	throw new PhotonUsageError(message);
            ^
error: Build failed with 1 error:

[plugin photon:resolve-server]
PhotonUsageError: [photon][Wrong Usage] Cannot resolve src/server/server.ts to a server entry
    at assertUsage (/Users/carlo/Desktop/Projects/solid-hop/node_modules/@photonjs/core/dist/assert-BjcXT5h2.js:169:7)
    at /Users/carlo/Desktop/Projects/solid-hop/node_modules/@photonjs/core/dist/plugin.js:1760:6
    at /Users/carlo/Desktop/Projects/solid-hop/node_modules/rolldown/dist/shared/bindingify-input-options-Bk0BBr2s.mjs:493:29
    at /Users/carlo/Desktop/Projects/solid-hop/node_modules/rolldown/dist/shared/bindingify-input-options-Bk0BBr2s.mjs:1008:17
    at processTicksAndRejections (native)
      at assertUsage (/Users/carlo/Desktop/Projects/solid-hop/node_modules/@photonjs/core/dist/assert-BjcXT5h2.js:169:7)

I updated the current example that reproduces this: #3

  • I tried
    • rm -rf node_modules dist bun i bun run build
    • rm -rf node_modules dist bun.lock bun i bun run build
  • Using (the latest as of now):
       "@photonjs/hono": "^0.1.11",
       "vike-photon": "^0.1.23"

@magne4000
Copy link

diff --git a/bun.lock b/bun.lock
index fd77138..b166ffa 100644
--- a/bun.lock
+++ b/bun.lock
@@ -5,12 +5,12 @@
     "": {
       "name": "my-app",
       "dependencies": {
-        "@photonjs/hono": "^0.1.10",
+        "@photonjs/hono": "^0.1.11",
         "hono": "^4.10.7",
         "solid-js": "1.9.10",
         "vike": "^0.4.247",
         "vike-metadata-solid": "^1.0.4",
-        "vike-photon": "^0.1.22",
+        "vike-photon": "^0.1.23",
         "vike-solid": "^0.7.13",
       },
       "devDependencies": {
@@ -168,13 +168,13 @@
 
     "@oxc-project/types": ["@oxc-project/types@0.98.0", "", {}, "sha512-Vzmd6FsqVuz5HQVcRC/hrx7Ujo3WEVeQP7C2UNP5uy1hUY4SQvMB+93jxkI1KRHz9a/6cni3glPOtvteN+zpsw=="],
 
-    "@photonjs/core": ["@photonjs/core@0.1.16", "", { "dependencies": { "@brillout/vite-plugin-server-entry": "^0.7.15", "@universal-middleware/cloudflare": "^0.4.10", "@universal-middleware/compress": "^0.2.34", "@universal-middleware/core": "^0.4.13", "@universal-middleware/express": "^0.4.22", "@universal-middleware/sirv": "^0.1.23", "estree-walker": "^3.0.3", "ts-deepmerge": "^7.0.3", "zod": "^4.1.13" }, "peerDependencies": { "vite": ">=7.1" }, "optionalPeers": ["vite"] }, "sha512-YlKLFGb6UUHcIphHeKl9uvAudAueU18UhMt79XQJQbwlg6OXn5pfgJMT5+uYRFD8B1BZ6p4Up0CYMvzV+RNPAA=="],
+    "@photonjs/core": ["@photonjs/core@0.1.19", "", { "dependencies": { "@brillout/vite-plugin-server-entry": "^0.7.15", "@universal-middleware/cloudflare": "^0.4.10", "@universal-middleware/compress": "^0.2.34", "@universal-middleware/core": "^0.4.13", "@universal-middleware/express": "^0.4.22", "@universal-middleware/sirv": "^0.1.23", "estree-walker": "^3.0.3", "ts-deepmerge": "^7.0.3", "zod": "^4.1.13" }, "peerDependencies": { "vite": ">=7.1" }, "optionalPeers": ["vite"] }, "sha512-C8c9FavayGhvf/gbYNa4jm3WjvldeQDQNmXaqkFKZyVDQfs6aGbU8u5Nys0UiVKLZ9p+/KQH25K/ywPo9T0DZw=="],
 
-    "@photonjs/hono": ["@photonjs/hono@0.1.10", "", { "dependencies": { "@photonjs/core": "^0.1.16", "@universal-middleware/hono": "^0.4.17" }, "peerDependencies": { "@hono/node-server": "^1", "vite": ">=7.1" }, "optionalPeers": ["@hono/node-server", "vite"] }, "sha512-mhanSQSZ7Xnq4avAFIw+jQoIWF7hvsrR0vuFfzJkJE67T9XMsCp9XrFT+O4yixUaYQrA0mCwkffnZliSxqNWVw=="],
+    "@photonjs/hono": ["@photonjs/hono@0.1.11", "", { "dependencies": { "@photonjs/core": "^0.1.19", "@universal-middleware/hono": "^0.4.17" }, "peerDependencies": { "@hono/node-server": "^1", "vite": ">=7.1" }, "optionalPeers": ["@hono/node-server", "vite"] }, "sha512-hSZ3h/7m7Feh/OxDsBakWG2gfh7oMh3FvwbcevbLywt2ywHsxDGfoX5oxYPRcNAdxPbJomxJyzGkoIqEdrW+8g=="],
 
-    "@photonjs/runtime": ["@photonjs/runtime@0.1.13", "", { "dependencies": { "@photonjs/core": "^0.1.16", "@photonjs/srvx": "^0.1.10", "@universal-middleware/core": "^0.4.13", "@universal-middleware/sirv": "^0.1.23", "srvx": "^0.9.7", "standaloner": "^0.1.10" }, "peerDependencies": { "vite": ">=7.1" }, "optionalPeers": ["vite"] }, "sha512-fbohN2OYVRFnRGOoLCTRjNkZGYoHp8DiOn2HpRTOr70WQdkus7JMoiAFB8R1PmsP1dOnN6AdFQxKwgIBYdbL9Q=="],
+    "@photonjs/runtime": ["@photonjs/runtime@0.1.15", "", { "dependencies": { "@photonjs/core": "^0.1.19", "@photonjs/srvx": "^0.1.11", "@universal-middleware/core": "^0.4.13", "@universal-middleware/sirv": "^0.1.23", "srvx": "^0.9.7", "standaloner": "^0.1.10" }, "peerDependencies": { "vite": ">=7.1" }, "optionalPeers": ["vite"] }, "sha512-6oqPD6Ek4v1w8ljNNgPXAHPQDE6Z+dYxlerWyflO8RQykTCX4BdHGPD3QDr4XYLV5uGsMyrKvIm8iDz5gmgF8Q=="],
 
-    "@photonjs/srvx": ["@photonjs/srvx@0.1.10", "", { "dependencies": { "@photonjs/core": "^0.1.16", "@universal-middleware/srvx": "^0.1.1" }, "peerDependencies": { "vite": ">=7.1" }, "optionalPeers": ["vite"] }, "sha512-fAW6ZTY5BffguYBUsj2HcSc9K7DTwgMFVl5B6HVU96ayYgIqGEu5sIxJV9Iq5wV2eF1AkkASSxWC4GfjLCCu+A=="],
+    "@photonjs/srvx": ["@photonjs/srvx@0.1.11", "", { "dependencies": { "@photonjs/core": "^0.1.19", "@universal-middleware/srvx": "^0.1.1" }, "peerDependencies": { "vite": ">=7.1" }, "optionalPeers": ["vite"] }, "sha512-kYuzgietyP2aIt1KUNEV0DTyu8wXBZhV2Vl1oz2Q1hDN0h8+Qy9Lx46xmXpTeY7+k/QK6Zyb6Z6WeveCst9XYg=="],
 
     "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="],
 
@@ -516,7 +516,7 @@
 
     "vike-metadata-solid": ["vike-metadata-solid@1.0.4", "", { "peerDependencies": { "solid-js": "^1.6.0" } }, "sha512-LGJNVs1FJVQU/O8VicZKKwdnlTNwoRWn0JHbxzYrDZEYidYyGFnUSwmoPubBE/AVxHEUaiIDvzeb2pG6V/Q91g=="],
 
-    "vike-photon": ["vike-photon@0.1.22", "", { "dependencies": { "@brillout/picocolors": "^1.0.29", "@brillout/vite-plugin-server-entry": "^0.7.15", "@photonjs/core": "^0.1.16", "@photonjs/runtime": "^0.1.13", "@universal-middleware/compress": "^0.2.34", "@universal-middleware/core": "^0.4.13", "@universal-middleware/sirv": "^0.1.23", "pkg-types": "^2.3.0", "standaloner": "^0.1.10" }, "peerDependencies": { "@photonjs/cloudflare": ">=0.0.9", "@photonjs/vercel": "^0.1.1", "vike": ">=0.4.244", "vite": ">=7.1" }, "optionalPeers": ["@photonjs/cloudflare", "@photonjs/vercel", "vite"] }, "sha512-vR5L3u5glAZVwoW9VVfhkPzsUt9300lPp/CrPBfzFocoJk5GZi4jWdSr6mV253Jz8ohKaac/F4dZZVdNld6xKQ=="],
+    "vike-photon": ["vike-photon@0.1.23", "", { "dependencies": { "@brillout/picocolors": "^1.0.29", "@brillout/vite-plugin-server-entry": "^0.7.15", "@photonjs/core": "^0.1.19", "@photonjs/runtime": "^0.1.15", "@universal-middleware/compress": "^0.2.34", "@universal-middleware/core": "^0.4.13", "@universal-middleware/sirv": "^0.1.23", "pkg-types": "^2.3.0", "standaloner": "^0.1.11" }, "peerDependencies": { "@photonjs/cloudflare": ">=0.0.9", "@photonjs/vercel": "^0.1.1", "vike": ">=0.4.244", "vite": ">=7.1" }, "optionalPeers": ["@photonjs/cloudflare", "@photonjs/vercel", "vite"] }, "sha512-QKIKj3AoG9W8jVGlMZTL9cZVvphfGWa9OWXROTTUp90dm8aMv9rU7OWCwz7kPqhKUI2QmUKGhWjgqOESun9ULg=="],
 
     "vike-solid": ["vike-solid@0.7.13", "", { "dependencies": { "isbot-fast": "^1.2.0", "vite-plugin-solid": "^2.11.8" }, "peerDependencies": { "solid-js": "^1.8.7", "vike": ">=0.4.195", "vite": ">=5.0.0" } }, "sha512-yTlAtGF+V9Jhu2bob/tzm5dJsS1pz4fdMvJqE2SVJp4eBRuGeGM/EV31JvMvEgF8VF/pMXNQa2i877TADuNkNw=="],
 
diff --git a/package.json b/package.json
index 9425044..b48ef0e 100644
--- a/package.json
+++ b/package.json
@@ -24,12 +24,12 @@
     "vite-tsconfig-paths": "^5.1.4"
   },
   "dependencies": {
-    "@photonjs/hono": "^0.1.10",
+    "@photonjs/hono": "^0.1.11",
     "hono": "^4.10.7",
     "solid-js": "1.9.10",
     "vike": "^0.4.247",
     "vike-metadata-solid": "^1.0.4",
-    "vike-photon": "^0.1.22",
+    "vike-photon": "^0.1.23",
     "vike-solid": "^0.7.13"
   }
 }
diff --git a/src/server/server.ts b/src/server/server.ts
index c699dee..ea88383 100644
--- a/src/server/server.ts
+++ b/src/server/server.ts
@@ -55,7 +55,6 @@ app.onError((error, c) => {
 })
 
 function _serve() {
-  if (privateEnv.NODE_ENV === "development") return serve(app, { port: privateEnv.PORT })
-  serve(app, { port: privateEnv.PORT })
+  return serve(app, { port: privateEnv.PORT })
 }
 export default _serve()

I made the following changes and I have no issues (notice that I also updated the server entry).

@Blankeos
Copy link
Owner Author

Blankeos commented Dec 10, 2025

@magne4000 Interesting... I applied the changes you suggested but it seems to still be the same.

I was wondering if it's just on my machine so I made a workflow to check for it: https://github.com/Blankeos/solid-hop/actions/runs/20097729759/job/57660277154?pr=3

I made sure to incorporate the changes you suggested:

  • Made sure package.json is updated.
         "@photonjs/hono": "^0.1.11",
         "vike-photon": "^0.1.23",
  • Made sure the lockfiles are updated.
    +    "@photonjs/core": ["@photonjs/core@0.1.19", "", { "dependencies": { "@brillout/vite-plugin-server-entry": "^0.7.15", "@universal-middleware/cloudflare": "^0.4.10", "@universal-middleware/compress": "^0.2.34", "@universal-middleware/core": "^0.4.13", "@universal-middleware/express": "^0.4.22", "@universal-middleware/sirv": "^0.1.23", "estree-walker": "^3.0.3", "ts-deepmerge": "^7.0.3", "zod": "^4.1.13" }, "peerDependencies": { "vite": ">=7.1" }, "optionalPeers": ["vite"] }, "sha512-C8c9FavayGhvf/gbYNa4jm3WjvldeQDQNmXaqkFKZyVDQfs6aGbU8u5Nys0UiVKLZ9p+/KQH25K/ywPo9T0DZw=="],
    +    "@photonjs/hono": ["@photonjs/hono@0.1.11", "", { "dependencies": { "@photonjs/core": "^0.1.19", "@universal-middleware/hono": "^0.4.17" }, "peerDependencies": { "@hono/node-server": "^1", "vite": ">=7.1" }, "optionalPeers": ["@hono/node-server", "vite"] }, "sha512-hSZ3h/7m7Feh/OxDsBakWG2gfh7oMh3FvwbcevbLywt2ywHsxDGfoX5oxYPRcNAdxPbJomxJyzGkoIqEdrW+8g=="],
    +    "@photonjs/runtime": ["@photonjs/runtime@0.1.15", "", { "dependencies": { "@photonjs/core": "^0.1.19", "@photonjs/srvx": "^0.1.11", "@universal-middleware/core": "^0.4.13", "@universal-middleware/sirv": "^0.1.23", "srvx": "^0.9.7", "standaloner": "^0.1.10" }, "peerDependencies": { "vite": ">=7.1" }, "optionalPeers": ["vite"] }, "sha512-6oqPD6Ek4v1w8ljNNgPXAHPQDE6Z+dYxlerWyflO8RQykTCX4BdHGPD3QDr4XYLV5uGsMyrKvIm8iDz5gmgF8Q=="],
    +    "@photonjs/srvx": ["@photonjs/srvx@0.1.11", "", { "dependencies": { "@photonjs/core": "^0.1.19", "@universal-middleware/srvx": "^0.1.1" }, "peerDependencies": { "vite": ">=7.1" }, "optionalPeers": ["vite"] }, "sha512-kYuzgietyP2aIt1KUNEV0DTyu8wXBZhV2Vl1oz2Q1hDN0h8+Qy9Lx46xmXpTeY7+k/QK6Zyb6Z6WeveCst9XYg=="],
    +    "vike-photon": ["vike-photon@0.1.23", "", { "dependencies": { "@brillout/picocolors": "^1.0.29", "@brillout/vite-plugin-server-entry": "^0.7.15", "@photonjs/core": "^0.1.19", "@photonjs/runtime": "^0.1.15", "@universal-middleware/compress": "^0.2.34", "@universal-middleware/core": "^0.4.13", "@universal-middleware/sirv": "^0.1.23", "pkg-types": "^2.3.0", "standaloner": "^0.1.11" }, "peerDependencies": { "@photonjs/cloudflare": ">=0.0.9", "@photonjs/vercel": "^0.1.1", "vike": ">=0.4.244", "vite": ">=7.1" }, "optionalPeers": ["@photonjs/cloudflare", "@photonjs/vercel", "vite"] }, "sha512-QKIKj3AoG9W8jVGlMZTL9cZVvphfGWa9OWXROTTUp90dm8aMv9rU7OWCwz7kPqhKUI2QmUKGhWjgqOESun9ULg=="],
  • Made sure src/server/server.ts (server entry) always returns the serve() (btw the reasoning for this was because before vite-rolldown, in dev it would run with no problems, but in prod, it seemed to run the server twice leading to conflicting ports. Only happens on bun)
     function _serve() {
       return serve(app, { port: privateEnv.PORT })
     }
     export default _serve()

@magne4000
Copy link

😓 I just realized I wan't testing on the right branch, I do have the same issue on the rolldown branch.

I'm currently refactoring most of the resolution logic inside Photon, so I'll try to ensure that it does indeed work with rolldown-vite during my tests.

- It seamlessly works w/ dev. - Build for prod gets stuck though, but
yeah it's quick.
- It seamlessly works w/ dev. - Build for prod gets stuck though, but
yeah it's quick.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants