@bleedingdev/modern-js-app-tools 3.5.0-ultramodern.101 → 3.5.0-ultramodern.103

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/cjs/builder/generator/getBuilderEnvironments.js +73 -11
  2. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/index.js +1 -1
  3. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.js +94 -18
  4. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +1 -0
  5. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +14 -0
  6. package/dist/cjs/ultramodern-release-envelope/framework-output.js +109 -57
  7. package/dist/esm/builder/generator/getBuilderEnvironments.mjs +63 -10
  8. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/index.mjs +1 -1
  9. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.mjs +93 -18
  10. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +1 -0
  11. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +14 -0
  12. package/dist/esm/ultramodern-release-envelope/framework-output.mjs +107 -58
  13. package/dist/esm-node/builder/generator/getBuilderEnvironments.mjs +63 -10
  14. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/index.mjs +1 -1
  15. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.mjs +93 -18
  16. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +1 -0
  17. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +14 -0
  18. package/dist/esm-node/ultramodern-release-envelope/framework-output.mjs +107 -58
  19. package/dist/types/builder/generator/getBuilderEnvironments.d.ts +29 -0
  20. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.d.ts +1 -1
  21. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.d.mts +1 -1
  22. package/dist/types/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.d.mts +13 -0
  23. package/dist/types/ultramodern-release-envelope/framework-output.d.ts +1 -0
  24. package/docs/configure/app/bff/effect.md +13 -15
  25. package/docs/configure/app/server/rsc.md +8 -12
  26. package/docs/guides/basic-features/render/rsc.md +5 -14
  27. package/docs/guides/get-started/quick-start.md +1 -1
  28. package/docs/guides/get-started/ultramodern.md +19 -7
  29. package/docs/guides/get-started/upgrade.md +5 -10
  30. package/docs/llms.txt +1 -1
  31. package/package.json +12 -12
@@ -50,7 +50,7 @@ would give your app a second Effect identity. Before setting
50
50
  `/effect-server`, `/effect-edge` or `/effect-client`, install the exact cohort:
51
51
 
52
52
  ```bash
53
- pnpm add effect@4.0.0-beta.102 @effect/opentelemetry@4.0.0-beta.102
53
+ pnpm add effect@4.0.0-beta.107 @effect/opentelemetry@4.0.0-beta.107
54
54
  ```
55
55
 
56
56
  The pin is exact because UltraModern ships Effect as one lockstep cohort. Apps
@@ -214,27 +214,25 @@ through `pnpm-workspace.yaml` overrides. For the current UltraModern cohort,
214
214
  generated apps use:
215
215
 
216
216
  ```yaml
217
- minimumReleaseAgeExclude:
218
- - 'effect@4.0.0-beta.102'
219
- - '@effect/opentelemetry@4.0.0-beta.102'
220
-
221
217
  trustPolicyExclude:
222
- - 'effect@4.0.0-beta.102'
223
- - '@effect/opentelemetry@4.0.0-beta.102'
218
+ - 'effect@4.0.0-beta.107'
219
+ - '@effect/opentelemetry@4.0.0-beta.107'
224
220
 
225
221
  overrides:
226
- '@effect/opentelemetry': 4.0.0-beta.102
227
- '@effect/vitest': 4.0.0-beta.102
228
- effect: 4.0.0-beta.102
222
+ '@effect/opentelemetry': 4.0.0-beta.107
223
+ '@effect/vitest': 4.0.0-beta.107
224
+ effect: 4.0.0-beta.107
229
225
  ```
230
226
 
231
227
  Do not add a different direct `effect` version in an app package. A mismatched
232
228
  Effect beta can fail while building layers or HTTP middleware because runtime
233
- services come from different package instances. Keep the generated
234
- policy exclusion entries with the same Effect cohort; they handle the
235
- framework-selected Effect beta versions before the 24-hour maturity window and
236
- the `effect`/`@effect/opentelemetry` trusted-publisher to provenance metadata
237
- transition without weakening UltraModern API architecture checks.
229
+ services come from different package instances. The strict 24-hour release-age
230
+ gate applies to installed packages; the current cohort has no Effect age
231
+ exemption, and override-only `@effect/vitest` is not an installed approval
232
+ target. `trustPolicyExclude` is a separate policy:
233
+ its exact `effect` and `@effect/opentelemetry` exceptions cover their
234
+ trusted-publisher to provenance metadata transition and are not release-age
235
+ approvals.
238
236
 
239
237
  ## Contract tests
240
238
 
@@ -3,24 +3,20 @@
3
3
  - **Type:** `boolean`
4
4
  - **Default:** `false`
5
5
 
6
- Enable React Server Components (RSC) configuration.
6
+ Configure React Server Components (RSC).
7
7
 
8
- When set to `true`, enables React Server Components support in Modern.js. This allows components to be rendered on the server, providing better performance and developer experience.
8
+ :::warning UltraModern availability
9
+ RSC is not shipped or supported in the current UltraModern company distribution. Keep this option `false`. The Rspack Flight runtime remains under upstream review, and enabling RSC intentionally fails unless an application supplies the complete optional toolchain.
10
+
11
+ Do not install `react-server-dom-rspack` or add an application-level pnpm patch to bypass this boundary.
12
+ :::
9
13
 
10
14
  ```ts title="modern.config.ts"
11
15
  export default defineConfig({
12
16
  server: {
13
- rsc: true,
17
+ rsc: false,
14
18
  },
15
19
  });
16
20
  ```
17
21
 
18
- :::tip Prerequisites
19
- Before enabling RSC, ensure:
20
-
21
- 1. React and React DOM are upgraded to version 19 (recommended 19.2.4 or above)
22
- 2. Install the `react-server-dom-rspack@0.0.2` dependency
23
-
24
- :::
25
-
26
- For more information about using RSC, see the [React Server Components guide](/guides/basic-features/render/rsc.md).
22
+ The [React Server Components guide](/guides/basic-features/render/rsc.md) is retained as reference material for future upstream adoption.
@@ -17,29 +17,20 @@ Before starting, we recommend reading React's official [Server Components docume
17
17
 
18
18
  ## Quick Start
19
19
 
20
- 1. **Ensure React and React DOM are upgraded to version 19** (recommended version 19.2.4 or above)
21
-
22
- 2. **Install the `react-server-dom-rspack@0.0.2` dependency**
23
-
24
- ```bash
25
- npm install react-server-dom-rspack@0.0.2
26
- ```
27
-
28
- :::warning Notes
29
-
30
- 1. Currently, [Server Functions](https://react.dev/reference/rsc/server-functions) are not supported in SPA projects
31
- 2. Currently, when building with Rspack, the output chunks and bundle size are not yet optimal. We will further optimize this in the near future
20
+ :::warning UltraModern availability
21
+ RSC is not shipped or supported in the current UltraModern company distribution. The framework keeps [`server.rsc`](/configure/app/server/rsc.md) disabled while the Rspack Flight runtime is completed upstream. Do not install `react-server-dom-rspack` or carry an application-level pnpm patch to enable it early.
32
22
 
23
+ The remainder of this page is retained as reference material for future upstream adoption.
33
24
  :::
34
25
 
35
- 3. Set [`server.rsc`](/configure/app/server/rsc.md) to `true`:
26
+ Keep [`server.rsc`](/configure/app/server/rsc.md) set to `false`:
36
27
 
37
28
  ```ts title="modern.config.ts"
38
29
  import { defineConfig } from '@modern-js/app-tools';
39
30
 
40
31
  export default defineConfig({
41
32
  server: {
42
- rsc: true,
33
+ rsc: false,
43
34
  },
44
35
  });
45
36
  ```
@@ -38,7 +38,7 @@ Additionally, after installing nvm or fnm, when there is a `.nvmrc` file contain
38
38
  It is recommended to use [pnpm](https://pnpm.io/installation) to manage dependencies:
39
39
 
40
40
  ```bash
41
- mise use pnpm@11.17.0
41
+ mise use pnpm@11.21.0
42
42
  ```
43
43
 
44
44
  :::note
@@ -138,13 +138,25 @@ migration work: move code to `shared/api.ts`, `api/index.ts`, and
138
138
  and `src/effect`.
139
139
 
140
140
  Generated strict Effect workspaces pin the compatible Effect cohort with pnpm
141
- overrides: `effect@4.0.0-beta.102`, `@effect/opentelemetry@4.0.0-beta.102`,
142
- and `@effect/vitest@4.0.0-beta.102`. Do not add app-local direct Effect
143
- versions that disagree with those overrides. They also carry generated pnpm
144
- policy exclusions for `effect@4.0.0-beta.102` and
145
- `@effect/opentelemetry@4.0.0-beta.102` so the framework-selected Effect beta
146
- cohort is not blocked by the 24-hour age gate or trusted-publisher to
147
- provenance metadata transition.
141
+ overrides: `effect@4.0.0-beta.107`, `@effect/opentelemetry@4.0.0-beta.107`,
142
+ and `@effect/vitest@4.0.0-beta.107`. Do not add app-local direct Effect
143
+ versions that disagree with those overrides. The strict 24-hour release-age
144
+ gate applies to installed packages; this cohort carries no Effect age
145
+ exemption, and override-only `@effect/vitest` is not an installed approval
146
+ target. Independently, exact `trustPolicyExclude` entries for `effect`
147
+ and `@effect/opentelemetry` cover their trusted-publisher to provenance
148
+ metadata transition; they are not release-age approvals.
149
+
150
+ ### Current generated dependency baseline
151
+
152
+ | Surface | Pin |
153
+ | ------------------------------ | --------------------------------------------------------------------------------------------------- |
154
+ | Effect runtime and test cohort | `effect`, `@effect/opentelemetry`, and `@effect/vitest`: `4.0.0-beta.107` |
155
+ | Effect compiler | `@effect/tsgo@0.36.2` |
156
+ | TanStack Router | `@tanstack/react-router@1.170.25`, `@tanstack/router-core@1.171.21`, `@tanstack/history@1.162.1` |
157
+ | Module Federation | `bridge-react`, `manifest`, `modern-js-v3`, and `rspack`: `2.8.2`; `@module-federation/node@2.7.49` |
158
+ | React Router | `react-router@7.18.2` |
159
+ | Node and package tooling | Node `26.7.0`, `@types/node@^26.2.0`, pnpm `11.21.0` |
148
160
 
149
161
  Gradual migration means old, unmigrated Modern.js apps can keep their existing
150
162
  runtime until they are converted. Once a surface is generated or migrated as
@@ -81,16 +81,11 @@ When a nested dependency of the project has a problem and Modern.js cannot be up
81
81
 
82
82
  ### pnpm
83
83
 
84
- For projects using pnpm, add the following configuration to the `package.json` in the **root directory** of the project, and then run `pnpm install` again:
84
+ For projects using pnpm, add the following configuration to `pnpm-workspace.yaml` in the **root directory** of the project, and then run `pnpm install` again:
85
85
 
86
- ```json title="package.json"
87
- {
88
- "pnpm": {
89
- "overrides": {
90
- "package-name": "^1.0.0"
91
- }
92
- }
93
- }
86
+ ```yaml title="pnpm-workspace.yaml"
87
+ overrides:
88
+ package-name: ^1.0.0
94
89
  ```
95
90
 
96
91
  ### Yarn
@@ -118,6 +113,6 @@ For projects using Npm, add the following configuration to the `package.json` in
118
113
  ```
119
114
 
120
115
  :::info
121
- For Monorepo repositories, you can only lock dependency versions in the `package.json` in the root directory of the project, and it will affect all packages in the Monorepo.
116
+ For Monorepo repositories, lock dependency versions in the package-manager configuration at the project root. The override affects every package in the Monorepo.
122
117
 
123
118
  :::
package/docs/llms.txt CHANGED
@@ -167,7 +167,7 @@
167
167
  - [port](/configure/app/server/port.md): Type: numberDefault: 8080 When running the dev and serve commands, Modern.js will start with 8080 as the default port and automatically increase the port number when the port is occupied. You can use this configuration to modify the port number that the Server starts with:
168
168
  - [publicRoutes](/configure/app/server/public-routes.md): Type: ObjectDefault: Server-side routing rules generated based on file conventions, with one route rule generated for each file. This configuration option only applies to server-side routing and can customize the access route of resources under config/public/. The key of the object is the relative file path of the config/public/ (without using ./), and the value can be a string.
169
169
  - [routes](/configure/app/server/routes.md): Type: ObjectDefault: Server-side routing rules generated based on file conventions, with one route rule generated for each entry, and the entry name is equal to the route path. This configuration option only applies to server-side routing and can customize the access route of application entries.
170
- - [rsc](/configure/app/server/rsc.md): Type: booleanDefault: false Enable React Server Components (RSC) configuration. When set to true, enables React Server Components support in Modern.js. This allows components to be rendered on the server, providing better performance and developer experience. For more information about using RSC, see the React Server Components guide.
170
+ - [rsc](/configure/app/server/rsc.md): Type: booleanDefault: false Configure React Server Components (RSC). The React Server Components guide is retained as reference material for future upstream adoption.
171
171
  - [ssrByEntries](/configure/app/server/ssr-by-entries.md): Type: ObjectDefault: undefined Set SSR options by entry, and the properties inside the option are the same as ssr. The specified value will be replaced and merged with the content of the SSR attribute, for example: In the above configuration, the project enables SSR as a whole, but the SSR rendering ability is disabled for the page-a entry.
172
172
  - [ssr](/configure/app/server/ssr.md): Type: boolean | ObjectDefault: false Enable SSR configuration. Boolean Type When the value type is boolean, it indicates whether to enable SSR deployment mode. The default is false to disable it. Object Type When the value type is Object, the following properties can be configured: Active Fallback In a production environment, there are scenarios where it is necessary to actively fallback an SSR project to CSR. Examples include When the SSR fails, a fallback to the CSR is required to ensure product availability.When the SSR is working normally, but there are rendering failures during csr, debugging is required.When the SSR server is under heavy load, it may be necessary to fallback some traffic directly to the CSR to avoid service downtime. By configuring server.ssr.forceCSR to true in the project, you can control this behavior through query strings or request headers. For example, in a custom Web Server middleware, you can actively fallback when traffic exceeds a certain threshold:
173
173
  - [tsconfigPath](/configure/app/server/tsconfig-path.md): Type: stringDefault: <appDirectory>/tsconfig.json Specifies the tsconfig file used by server-side TypeScript processes. This option affects: BFF / API compilation (@modern-js/plugin-bff)Custom server compilation (*.ts files under server/)Runtime Node-native TypeScript registration, such as SSR, modern.config.ts, and .ts files under config/ When this option is not set, <appDirectory>/tsconfig.json is used by default.
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "modern",
18
18
  "modern.js"
19
19
  ],
20
- "version": "3.5.0-ultramodern.101",
20
+ "version": "3.5.0-ultramodern.103",
21
21
  "types": "./dist/types/index.d.ts",
22
22
  "main": "./dist/cjs/index.js",
23
23
  "exports": {
@@ -134,16 +134,16 @@
134
134
  "@babel/traverse": "^8.0.0",
135
135
  "@babel/types": "^8.0.0",
136
136
  "@loadable/component": "5.16.7",
137
- "@modern-js/builder": "npm:@bleedingdev/modern-js-builder@3.5.0-ultramodern.101",
138
- "@modern-js/i18n-utils": "npm:@bleedingdev/modern-js-i18n-utils@3.5.0-ultramodern.101",
139
- "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.5.0-ultramodern.101",
140
- "@modern-js/plugin-data-loader": "npm:@bleedingdev/modern-js-plugin-data-loader@3.5.0-ultramodern.101",
141
- "@modern-js/prod-server": "npm:@bleedingdev/modern-js-prod-server@3.5.0-ultramodern.101",
142
- "@modern-js/server": "npm:@bleedingdev/modern-js-server@3.5.0-ultramodern.101",
143
- "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.5.0-ultramodern.101",
144
- "@modern-js/server-utils": "npm:@bleedingdev/modern-js-server-utils@3.5.0-ultramodern.101",
145
- "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.5.0-ultramodern.101",
146
- "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.5.0-ultramodern.101",
137
+ "@modern-js/builder": "npm:@bleedingdev/modern-js-builder@3.5.0-ultramodern.103",
138
+ "@modern-js/i18n-utils": "npm:@bleedingdev/modern-js-i18n-utils@3.5.0-ultramodern.103",
139
+ "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.5.0-ultramodern.103",
140
+ "@modern-js/plugin-data-loader": "npm:@bleedingdev/modern-js-plugin-data-loader@3.5.0-ultramodern.103",
141
+ "@modern-js/prod-server": "npm:@bleedingdev/modern-js-prod-server@3.5.0-ultramodern.103",
142
+ "@modern-js/server": "npm:@bleedingdev/modern-js-server@3.5.0-ultramodern.103",
143
+ "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.5.0-ultramodern.103",
144
+ "@modern-js/server-utils": "npm:@bleedingdev/modern-js-server-utils@3.5.0-ultramodern.103",
145
+ "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.5.0-ultramodern.103",
146
+ "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.5.0-ultramodern.103",
147
147
  "@rsbuild/core": "2.1.5",
148
148
  "@swc/core": "1.15.43",
149
149
  "@swc/helpers": "^0.5.23",
@@ -161,7 +161,7 @@
161
161
  "@rslib/core": "0.23.2",
162
162
  "@scripts/rstest-config": "2.66.0",
163
163
  "@types/babel__traverse": "7.28.0",
164
- "@types/node": "^26.1.1",
164
+ "@types/node": "^26.2.0",
165
165
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
166
166
  "ts-node": "^10.9.2",
167
167
  "tsconfig-paths": "^4.2.0",