@bleedingdev/modern-js-app-tools 3.9.3-ultramodern.12 → 3.9.3-ultramodern.14

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.
@@ -88,6 +88,46 @@ source. SVG URLs remain supported. The
88
88
  defines the current preview profile and pinned dependencies. The federation,
89
89
  i18n and Cloudflare examples below describe the React profile.
90
90
 
91
+ ### Default React runtime: TanStack Redact
92
+
93
+ React applications use TanStack Redact on both the client and the server
94
+ (Node SSR and Cloudflare workerd SSR). It provides a lightweight React 19-compatible
95
+ runtime while keeping normal `react` / `react-dom` imports, JSX and types.
96
+ Upgrading the framework enables it without application edits:
97
+ `@modern-js/ultramodern-app-tools` supplies exact `@tanstack/redact` (the reviewed
98
+ `@bleedingdev/tanstack-redact@0.2.1` build) and `rsbuild-redact-plugin@0.1.0`
99
+ dependencies and resolves the runtime from its own installation. Do not install either package or register a Redact
100
+ plugin in the app. Keep the generated React and React DOM pins: they provide the
101
+ real React runtime for opt-out and RSC applications. RSC applications stay on
102
+ React on both server and client.
103
+
104
+ The top-level `redact` option is optional. Omit it for the default runtime, use
105
+ `false` for real React, or pass `{ viewTransitions: true }` to enable Redact's
106
+ experimental native View Transitions (off by default):
107
+
108
+ ```ts title="modern.config.ts"
109
+ import { defineConfig } from '@modern-js/ultramodern-app-tools';
110
+
111
+ export default defineConfig({
112
+ redact: false, // Or: { viewTransitions: true }
113
+ server: { ssr: { mode: 'stream' } },
114
+ });
115
+ ```
116
+
117
+ UltraModern requires its patched Redact 0.2.1 build. The patch fixes `useId`
118
+ identity across streamed Suspense and hydration, duplicate IDs on later client
119
+ mounts with `identifierPrefix`, streamed boundaries in table/SVG/MathML contexts,
120
+ and prefixed hexadecimal boundary/segment IDs and reveal ordering with deferred
121
+ scripts. An unpatched runtime fails the build rather than silently shipping.
122
+ The normal 24-hour third-party release-age gate still applies; neither package
123
+ has an age exemption.
124
+
125
+ Redact is experimental, not a guarantee of compatibility with every React
126
+ library. Libraries that depend on React internals may need `redact: false`.
127
+ Its stream implementation does not reproduce React's `progressiveChunkSize`
128
+ tuning or writable/Web Stream backpressure semantics; do not rely on identical
129
+ chunk sizes, buffering or scheduling.
130
+
91
131
  Localized Cloudflare SSR workspaces redirect `/` on the server to the negotiated locale. For example, `Accept-Language: cs-CZ` returns `302` with `Location: /cs`, `Cache-Control: private, no-store`, and `Vary` covering locale detection headers. Validate the deployed Worker with:
92
132
 
93
133
  ```bash
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "modern",
18
18
  "modern.js"
19
19
  ],
20
- "version": "3.9.3-ultramodern.12",
20
+ "version": "3.9.3-ultramodern.14",
21
21
  "types": "./dist/types/index.d.ts",
22
22
  "main": "./dist/cjs/index.js",
23
23
  "exports": {
@@ -132,18 +132,18 @@
132
132
  "@babel/parser": "^8.0.7",
133
133
  "@babel/traverse": "^8.0.7",
134
134
  "@babel/types": "^8.0.6",
135
- "@modern-js/app-tools-extensions": "npm:@bleedingdev/modern-js-app-tools-extensions@3.9.3-ultramodern.12",
136
- "@modern-js/builder": "npm:@bleedingdev/modern-js-builder@3.9.3-ultramodern.12",
137
- "@modern-js/i18n-utils": "npm:@bleedingdev/modern-js-i18n-utils@3.9.3-ultramodern.12",
138
- "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.9.3-ultramodern.12",
139
- "@modern-js/plugin-data-loader": "npm:@bleedingdev/modern-js-plugin-data-loader@3.9.3-ultramodern.12",
140
- "@modern-js/prod-server": "npm:@bleedingdev/modern-js-prod-server@3.9.3-ultramodern.12",
141
- "@modern-js/server": "npm:@bleedingdev/modern-js-server@3.9.3-ultramodern.12",
142
- "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.9.3-ultramodern.12",
143
- "@modern-js/server-runtime-extensions": "npm:@bleedingdev/modern-js-server-runtime-extensions@3.9.3-ultramodern.12",
144
- "@modern-js/server-utils": "npm:@bleedingdev/modern-js-server-utils@3.9.3-ultramodern.12",
145
- "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.9.3-ultramodern.12",
146
- "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.9.3-ultramodern.12",
135
+ "@modern-js/app-tools-extensions": "npm:@bleedingdev/modern-js-app-tools-extensions@3.9.3-ultramodern.14",
136
+ "@modern-js/builder": "npm:@bleedingdev/modern-js-builder@3.9.3-ultramodern.14",
137
+ "@modern-js/i18n-utils": "npm:@bleedingdev/modern-js-i18n-utils@3.9.3-ultramodern.14",
138
+ "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.9.3-ultramodern.14",
139
+ "@modern-js/plugin-data-loader": "npm:@bleedingdev/modern-js-plugin-data-loader@3.9.3-ultramodern.14",
140
+ "@modern-js/prod-server": "npm:@bleedingdev/modern-js-prod-server@3.9.3-ultramodern.14",
141
+ "@modern-js/server": "npm:@bleedingdev/modern-js-server@3.9.3-ultramodern.14",
142
+ "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.9.3-ultramodern.14",
143
+ "@modern-js/server-runtime-extensions": "npm:@bleedingdev/modern-js-server-runtime-extensions@3.9.3-ultramodern.14",
144
+ "@modern-js/server-utils": "npm:@bleedingdev/modern-js-server-utils@3.9.3-ultramodern.14",
145
+ "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.9.3-ultramodern.14",
146
+ "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.9.3-ultramodern.14",
147
147
  "@rsbuild/core": "2.2.13",
148
148
  "@swc/core": "1.16.18",
149
149
  "@swc/helpers": "^0.5.23",