@bleedingdev/modern-js-app-tools 3.5.0-ultramodern.102 → 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.
- package/dist/cjs/builder/generator/getBuilderEnvironments.js +73 -11
- package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/index.js +1 -1
- package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.js +94 -18
- package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +1 -0
- package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +14 -0
- package/dist/cjs/ultramodern-release-envelope/framework-output.js +109 -57
- package/dist/esm/builder/generator/getBuilderEnvironments.mjs +63 -10
- package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/index.mjs +1 -1
- package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.mjs +93 -18
- package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +1 -0
- package/dist/esm/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +14 -0
- package/dist/esm/ultramodern-release-envelope/framework-output.mjs +107 -58
- package/dist/esm-node/builder/generator/getBuilderEnvironments.mjs +63 -10
- package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/index.mjs +1 -1
- package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.mjs +93 -18
- package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +1 -0
- package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +14 -0
- package/dist/esm-node/ultramodern-release-envelope/framework-output.mjs +107 -58
- package/dist/types/builder/generator/getBuilderEnvironments.d.ts +29 -0
- package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.d.ts +1 -1
- package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.d.mts +1 -1
- package/dist/types/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.d.mts +13 -0
- package/dist/types/ultramodern-release-envelope/framework-output.d.ts +1 -0
- package/docs/configure/app/bff/effect.md +13 -15
- package/docs/configure/app/server/rsc.md +8 -12
- package/docs/guides/basic-features/render/rsc.md +5 -14
- package/docs/guides/get-started/quick-start.md +1 -1
- package/docs/guides/get-started/ultramodern.md +19 -7
- package/docs/guides/get-started/upgrade.md +5 -10
- package/docs/llms.txt +1 -1
- 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.
|
|
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.
|
|
223
|
-
- '@effect/opentelemetry@4.0.0-beta.
|
|
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.
|
|
227
|
-
'@effect/vitest': 4.0.0-beta.
|
|
228
|
-
effect: 4.0.0-beta.
|
|
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.
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
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
|
-
|
|
6
|
+
Configure React Server Components (RSC).
|
|
7
7
|
|
|
8
|
-
|
|
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:
|
|
17
|
+
rsc: false,
|
|
14
18
|
},
|
|
15
19
|
});
|
|
16
20
|
```
|
|
17
21
|
|
|
18
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
33
|
+
rsc: false,
|
|
43
34
|
},
|
|
44
35
|
});
|
|
45
36
|
```
|
|
@@ -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.
|
|
142
|
-
and `@effect/vitest@4.0.0-beta.
|
|
143
|
-
versions that disagree with those overrides.
|
|
144
|
-
|
|
145
|
-
`@effect/
|
|
146
|
-
|
|
147
|
-
|
|
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
|
|
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
|
-
```
|
|
87
|
-
|
|
88
|
-
|
|
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,
|
|
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
|
|
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.
|
|
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.
|
|
138
|
-
"@modern-js/i18n-utils": "npm:@bleedingdev/modern-js-i18n-utils@3.5.0-ultramodern.
|
|
139
|
-
"@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.5.0-ultramodern.
|
|
140
|
-
"@modern-js/plugin-data-loader": "npm:@bleedingdev/modern-js-plugin-data-loader@3.5.0-ultramodern.
|
|
141
|
-
"@modern-js/prod-server": "npm:@bleedingdev/modern-js-prod-server@3.5.0-ultramodern.
|
|
142
|
-
"@modern-js/server": "npm:@bleedingdev/modern-js-server@3.5.0-ultramodern.
|
|
143
|
-
"@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.5.0-ultramodern.
|
|
144
|
-
"@modern-js/server-utils": "npm:@bleedingdev/modern-js-server-utils@3.5.0-ultramodern.
|
|
145
|
-
"@modern-js/types": "npm:@bleedingdev/modern-js-types@3.5.0-ultramodern.
|
|
146
|
-
"@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.5.0-ultramodern.
|
|
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.
|
|
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",
|