@modern-js/app-tools 3.9.3 → 3.10.0

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 (291) hide show
  1. package/dist/cjs/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +54 -2
  2. package/dist/cjs/compat/hooks.js +0 -5
  3. package/dist/cjs/compat/index.js +0 -5
  4. package/dist/cjs/compat/utils.js +0 -5
  5. package/dist/cjs/plugins/initialize/index.js +0 -1
  6. package/dist/esm/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.mjs +54 -2
  7. package/dist/esm/compat/hooks.mjs +0 -5
  8. package/dist/esm/compat/index.mjs +0 -5
  9. package/dist/esm/compat/utils.mjs +0 -5
  10. package/dist/esm/plugins/initialize/index.mjs +0 -1
  11. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.mjs +54 -2
  12. package/dist/esm-node/compat/hooks.mjs +0 -5
  13. package/dist/esm-node/compat/index.mjs +0 -5
  14. package/dist/esm-node/compat/utils.mjs +0 -5
  15. package/dist/esm-node/plugins/initialize/index.mjs +0 -1
  16. package/dist/types/types/config/index.d.ts +0 -2
  17. package/dist/types/types/config/tools.d.ts +0 -8
  18. package/docs/apis/app/commands.md +2 -0
  19. package/docs/apis/app/hooks/api/lambda.md +2 -0
  20. package/docs/apis/app/hooks/config/favicon.md +2 -0
  21. package/docs/apis/app/hooks/config/html.md +2 -0
  22. package/docs/apis/app/hooks/config/icon.md +2 -0
  23. package/docs/apis/app/hooks/config/mock.md +2 -0
  24. package/docs/apis/app/hooks/config/public.md +2 -0
  25. package/docs/apis/app/hooks/config/upload.md +3 -3
  26. package/docs/apis/app/hooks/modern-config.md +2 -0
  27. package/docs/apis/app/hooks/server/server.md +2 -0
  28. package/docs/apis/app/hooks/shared.md +2 -0
  29. package/docs/apis/app/hooks/src/app.md +2 -0
  30. package/docs/apis/app/hooks/src/entry.md +2 -0
  31. package/docs/apis/app/hooks/src/entry.server.md +2 -0
  32. package/docs/apis/app/hooks/src/modern.runtime.md +2 -0
  33. package/docs/apis/app/hooks/src/routes.md +2 -0
  34. package/docs/apis/app/hooks/src/server.md +2 -0
  35. package/docs/apis/app/runtime/bff/use-hono-context.md +2 -0
  36. package/docs/apis/app/runtime/core/create-root.md +5 -1
  37. package/docs/apis/app/runtime/core/render.md +7 -2
  38. package/docs/apis/app/runtime/core/runtime-context.md +18 -16
  39. package/docs/apis/app/runtime/router/router.md +11 -6
  40. package/docs/apis/app/runtime/ssr/no-ssr.md +2 -0
  41. package/docs/apis/app/runtime/ssr/renderStreaming.md +2 -0
  42. package/docs/apis/app/runtime/ssr/renderString.md +2 -0
  43. package/docs/apis/app/runtime/ssr/requestHandler.md +2 -0
  44. package/docs/apis/app/runtime/utility/css-in-js.md +2 -0
  45. package/docs/apis/app/runtime/utility/head.md +2 -0
  46. package/docs/apis/app/runtime/utility/loadable.md +2 -0
  47. package/docs/community/blog/2022-0708-updates.md +2 -0
  48. package/docs/community/blog/2022-0910-updates.md +2 -0
  49. package/docs/community/blog/overview.md +2 -0
  50. package/docs/community/blog/v2-release-note.md +2 -0
  51. package/docs/community/blog/v3-release-note.md +18 -13
  52. package/docs/community/contributing-guide.md +17 -33
  53. package/docs/community/releases.md +2 -0
  54. package/docs/community/showcase.md +2 -0
  55. package/docs/community/team.md +2 -0
  56. package/docs/configure/app/bff/cross-project.md +2 -0
  57. package/docs/configure/app/bff/prefix.md +2 -0
  58. package/docs/configure/app/builder-plugins.md +2 -0
  59. package/docs/configure/app/dev/asset-prefix.md +2 -0
  60. package/docs/configure/app/dev/before-start-url.md +2 -0
  61. package/docs/configure/app/dev/client.md +2 -0
  62. package/docs/configure/app/dev/hmr.md +2 -0
  63. package/docs/configure/app/dev/host.md +2 -0
  64. package/docs/configure/app/dev/https.md +2 -0
  65. package/docs/configure/app/dev/lazy-compilation.md +19 -1
  66. package/docs/configure/app/dev/live-reload.md +2 -0
  67. package/docs/configure/app/dev/mock-dir.md +2 -0
  68. package/docs/configure/app/dev/progress-bar.md +2 -0
  69. package/docs/configure/app/dev/server.md +2 -0
  70. package/docs/configure/app/dev/setup-middlewares.md +2 -0
  71. package/docs/configure/app/dev/start-url.md +2 -0
  72. package/docs/configure/app/dev/watch-files.md +2 -0
  73. package/docs/configure/app/dev/write-to-disk.md +2 -0
  74. package/docs/configure/app/experiments/source-build.md +2 -0
  75. package/docs/configure/app/html/app-icon.md +2 -0
  76. package/docs/configure/app/html/crossorigin.md +2 -0
  77. package/docs/configure/app/html/favicon.md +2 -0
  78. package/docs/configure/app/html/inject.md +2 -0
  79. package/docs/configure/app/html/meta.md +2 -0
  80. package/docs/configure/app/html/mount-id.md +2 -0
  81. package/docs/configure/app/html/output-structure.md +2 -0
  82. package/docs/configure/app/html/script-loading.md +2 -0
  83. package/docs/configure/app/html/tags.md +2 -0
  84. package/docs/configure/app/html/template-parameters.md +2 -0
  85. package/docs/configure/app/html/template.md +2 -0
  86. package/docs/configure/app/html/title.md +2 -0
  87. package/docs/configure/app/output/asset-prefix.md +2 -0
  88. package/docs/configure/app/output/assets-retry.md +2 -0
  89. package/docs/configure/app/output/charset.md +2 -0
  90. package/docs/configure/app/output/clean-dist-path.md +2 -0
  91. package/docs/configure/app/output/convert-to-rem.md +2 -0
  92. package/docs/configure/app/output/copy.md +2 -0
  93. package/docs/configure/app/output/css-modules.md +3 -5
  94. package/docs/configure/app/output/data-uri-limit.md +2 -0
  95. package/docs/configure/app/output/disable-css-module-extension.md +2 -0
  96. package/docs/configure/app/output/disable-inline-runtime-chunk.md +2 -0
  97. package/docs/configure/app/output/disable-svgr.md +2 -0
  98. package/docs/configure/app/output/disable-ts-checker.md +2 -0
  99. package/docs/configure/app/output/dist-path.md +2 -0
  100. package/docs/configure/app/output/enable-asset-manifest.md +2 -0
  101. package/docs/configure/app/output/enable-css-module-tsdeclaration.md +2 -0
  102. package/docs/configure/app/output/enable-inline-route-manifests.md +2 -0
  103. package/docs/configure/app/output/externals.md +2 -0
  104. package/docs/configure/app/output/filename-hash.md +2 -0
  105. package/docs/configure/app/output/filename.md +2 -0
  106. package/docs/configure/app/output/inject-styles.md +2 -0
  107. package/docs/configure/app/output/inline-scripts.md +3 -2
  108. package/docs/configure/app/output/inline-styles.md +3 -2
  109. package/docs/configure/app/output/legal-comments.md +2 -0
  110. package/docs/configure/app/output/minify.md +2 -0
  111. package/docs/configure/app/output/override-browserslist.md +2 -0
  112. package/docs/configure/app/output/polyfill.md +2 -0
  113. package/docs/configure/app/output/source-map.md +2 -0
  114. package/docs/configure/app/output/split-route-chunks.md +3 -1
  115. package/docs/configure/app/output/ssg.md +2 -0
  116. package/docs/configure/app/output/ssgByEntries.md +2 -0
  117. package/docs/configure/app/output/svg-default-export.md +2 -0
  118. package/docs/configure/app/output/temp-dir.md +2 -0
  119. package/docs/configure/app/performance/build-cache.md +2 -0
  120. package/docs/configure/app/performance/chunk-split.md +3 -4
  121. package/docs/configure/app/performance/dns-prefetch.md +2 -0
  122. package/docs/configure/app/performance/preconnect.md +2 -0
  123. package/docs/configure/app/performance/prefetch.md +2 -0
  124. package/docs/configure/app/performance/preload.md +2 -0
  125. package/docs/configure/app/performance/print-file-size.md +2 -0
  126. package/docs/configure/app/performance/profile.md +2 -0
  127. package/docs/configure/app/performance/remove-console.md +2 -0
  128. package/docs/configure/app/performance/remove-moment-locale.md +2 -0
  129. package/docs/configure/app/plugins.md +2 -0
  130. package/docs/configure/app/resolve/alias-strategy.md +2 -0
  131. package/docs/configure/app/resolve/alias.md +2 -0
  132. package/docs/configure/app/resolve/condition-names.md +2 -0
  133. package/docs/configure/app/resolve/dedupe.md +2 -0
  134. package/docs/configure/app/resolve/extensions.md +2 -0
  135. package/docs/configure/app/runtime/0-intro.md +2 -0
  136. package/docs/configure/app/runtime/plugins.md +8 -4
  137. package/docs/configure/app/runtime/router.md +2 -0
  138. package/docs/configure/app/security/check-syntax.md +2 -0
  139. package/docs/configure/app/security/nonce.md +2 -0
  140. package/docs/configure/app/security/sri.md +2 -0
  141. package/docs/configure/app/server/base-url.md +2 -0
  142. package/docs/configure/app/server/port.md +2 -0
  143. package/docs/configure/app/server/public-routes.md +2 -0
  144. package/docs/configure/app/server/routes.md +2 -0
  145. package/docs/configure/app/server/rsc.md +2 -0
  146. package/docs/configure/app/server/ssr-by-entries.md +2 -0
  147. package/docs/configure/app/server/ssr.md +3 -1
  148. package/docs/configure/app/server/tsconfig-path.md +4 -2
  149. package/docs/configure/app/source/alias-strategy.md +2 -0
  150. package/docs/configure/app/source/alias.md +2 -0
  151. package/docs/configure/app/source/config-dir.md +2 -0
  152. package/docs/configure/app/source/decorators.md +2 -0
  153. package/docs/configure/app/source/define.md +2 -0
  154. package/docs/configure/app/source/disable-default-entries.md +2 -0
  155. package/docs/configure/app/source/enable-async-entry.md +2 -0
  156. package/docs/configure/app/source/enable-async-pre-entry.md +2 -0
  157. package/docs/configure/app/source/entries-dir.md +2 -0
  158. package/docs/configure/app/source/entries.md +2 -0
  159. package/docs/configure/app/source/exclude.md +2 -0
  160. package/docs/configure/app/source/global-vars.md +2 -0
  161. package/docs/configure/app/source/include.md +2 -0
  162. package/docs/configure/app/source/main-entry-name.md +2 -0
  163. package/docs/configure/app/source/pre-entry.md +2 -0
  164. package/docs/configure/app/source/react-compiler.md +2 -0
  165. package/docs/configure/app/source/transform-import.md +2 -0
  166. package/docs/configure/app/split-chunks.md +2 -0
  167. package/docs/configure/app/tools/autoprefixer.md +2 -0
  168. package/docs/configure/app/tools/bundler-chain.md +2 -0
  169. package/docs/configure/app/tools/css-extract.md +2 -0
  170. package/docs/configure/app/tools/css-loader.md +2 -0
  171. package/docs/configure/app/tools/dev-server.md +2 -0
  172. package/docs/configure/app/tools/html-plugin.md +2 -0
  173. package/docs/configure/app/tools/less.md +2 -0
  174. package/docs/configure/app/tools/lightningcss-loader.md +2 -0
  175. package/docs/configure/app/tools/minify-css.md +2 -0
  176. package/docs/configure/app/tools/postcss.md +2 -0
  177. package/docs/configure/app/tools/rspack.md +2 -0
  178. package/docs/configure/app/tools/sass.md +8 -6
  179. package/docs/configure/app/tools/style-loader.md +2 -0
  180. package/docs/configure/app/tools/svgr.md +2 -0
  181. package/docs/configure/app/tools/swc.md +2 -0
  182. package/docs/configure/app/tools/ts-checker.md +2 -0
  183. package/docs/configure/app/usage.md +3 -5
  184. package/docs/guides/advanced-features/bff/cross-project.md +6 -4
  185. package/docs/guides/advanced-features/bff/extend-server.md +2 -0
  186. package/docs/guides/advanced-features/bff/frameworks.md +2 -0
  187. package/docs/guides/advanced-features/bff/function.md +2 -0
  188. package/docs/guides/advanced-features/bff/operators.md +2 -0
  189. package/docs/guides/advanced-features/bff/sdk.md +2 -0
  190. package/docs/guides/advanced-features/bff/upload.md +2 -0
  191. package/docs/guides/advanced-features/bff.md +2 -0
  192. package/docs/guides/advanced-features/build-performance.md +2 -0
  193. package/docs/guides/advanced-features/compatibility.md +2 -0
  194. package/docs/guides/advanced-features/international/advanced.md +3 -1
  195. package/docs/guides/advanced-features/international/api.md +21 -13
  196. package/docs/guides/advanced-features/international/best-practices.md +17 -15
  197. package/docs/guides/advanced-features/international/configuration.md +3 -1
  198. package/docs/guides/advanced-features/international/locale-detection.md +15 -4
  199. package/docs/guides/advanced-features/international/quick-start.md +2 -0
  200. package/docs/guides/advanced-features/international/resource-loading.md +11 -7
  201. package/docs/guides/advanced-features/international/routing.md +5 -1
  202. package/docs/guides/advanced-features/international.md +2 -0
  203. package/docs/guides/advanced-features/low-level.md +2 -0
  204. package/docs/guides/advanced-features/page-performance/code-split.md +2 -0
  205. package/docs/guides/advanced-features/page-performance/inline-assets.md +2 -0
  206. package/docs/guides/advanced-features/page-performance/optimize-bundle.md +2 -0
  207. package/docs/guides/advanced-features/page-performance/react-compiler.md +2 -0
  208. package/docs/guides/advanced-features/server-monitor/logger.md +2 -0
  209. package/docs/guides/advanced-features/server-monitor/metrics.md +2 -0
  210. package/docs/guides/advanced-features/server-monitor/monitors.md +3 -3
  211. package/docs/guides/advanced-features/source-build.md +3 -1
  212. package/docs/guides/advanced-features/web-server.md +5 -3
  213. package/docs/guides/basic-features/alias.md +2 -0
  214. package/docs/guides/basic-features/css/css-in-js.md +2 -0
  215. package/docs/guides/basic-features/css/css-modules.md +2 -0
  216. package/docs/guides/basic-features/css/css.md +2 -0
  217. package/docs/guides/basic-features/css/tailwindcss.md +2 -0
  218. package/docs/guides/basic-features/data/data-cache.md +2 -0
  219. package/docs/guides/basic-features/data/data-fetch.md +3 -3
  220. package/docs/guides/basic-features/data/data-write.md +25 -28
  221. package/docs/guides/basic-features/debug/mock.md +4 -2
  222. package/docs/guides/basic-features/debug/proxy.md +2 -0
  223. package/docs/guides/basic-features/debug/rsdoctor.md +2 -0
  224. package/docs/guides/basic-features/debug/using-storybook.md +6 -4
  225. package/docs/guides/basic-features/deploy.md +2 -0
  226. package/docs/guides/basic-features/env-vars.md +2 -0
  227. package/docs/guides/basic-features/html.md +4 -3
  228. package/docs/guides/basic-features/output-files.md +3 -1
  229. package/docs/guides/basic-features/render/before-render.md +2 -0
  230. package/docs/guides/basic-features/render/overview.md +2 -0
  231. package/docs/guides/basic-features/render/rsc.md +12 -2
  232. package/docs/guides/basic-features/render/ssg.md +2 -0
  233. package/docs/guides/basic-features/render/ssr-cache.md +2 -0
  234. package/docs/guides/basic-features/render/ssr.md +10 -12
  235. package/docs/guides/basic-features/render/streaming-ssr.md +4 -1
  236. package/docs/guides/basic-features/routes/config-routes.md +54 -54
  237. package/docs/guides/basic-features/routes/routes.md +2 -0
  238. package/docs/guides/basic-features/static-assets/json-files.md +2 -0
  239. package/docs/guides/basic-features/static-assets/svg-assets.md +2 -0
  240. package/docs/guides/basic-features/static-assets/wasm-assets.md +2 -0
  241. package/docs/guides/basic-features/static-assets.md +2 -0
  242. package/docs/guides/basic-features/testing/playwright.md +8 -6
  243. package/docs/guides/basic-features/testing/rstest.md +7 -5
  244. package/docs/guides/concept/builder.md +2 -0
  245. package/docs/guides/concept/entries.md +2 -0
  246. package/docs/guides/concept/server.md +2 -0
  247. package/docs/guides/get-started/ai-coding-agents.md +5 -3
  248. package/docs/guides/get-started/glossary.md +2 -0
  249. package/docs/guides/get-started/introduction.md +2 -0
  250. package/docs/guides/get-started/quick-start.md +13 -5
  251. package/docs/guides/get-started/tech-stack.md +2 -0
  252. package/docs/guides/get-started/upgrade.md +2 -0
  253. package/docs/guides/topic-detail/module-federation/application.md +2 -0
  254. package/docs/guides/topic-detail/module-federation/deploy.md +4 -2
  255. package/docs/guides/topic-detail/module-federation/i18n.md +2 -0
  256. package/docs/guides/topic-detail/module-federation/introduce.md +2 -0
  257. package/docs/guides/topic-detail/module-federation/ssr.md +2 -0
  258. package/docs/guides/topic-detail/module-federation/usage.md +2 -0
  259. package/docs/guides/troubleshooting/builder.md +2 -0
  260. package/docs/guides/troubleshooting/cli.md +2 -0
  261. package/docs/guides/troubleshooting/dependencies.md +2 -0
  262. package/docs/guides/troubleshooting/hmr.md +2 -0
  263. package/docs/guides/upgrade/config.md +14 -0
  264. package/docs/guides/upgrade/entry.md +2 -0
  265. package/docs/guides/upgrade/other.md +2 -0
  266. package/docs/guides/upgrade/overview.md +2 -0
  267. package/docs/guides/upgrade/tailwindcss.md +2 -0
  268. package/docs/guides/upgrade/web-server.md +25 -6
  269. package/docs/index.md +2 -0
  270. package/docs/llms.txt +5 -5
  271. package/docs/plugin/cli-plugins/api.md +2 -0
  272. package/docs/plugin/cli-plugins/life-cycle.md +2 -0
  273. package/docs/plugin/introduction.md +2 -0
  274. package/docs/plugin/official/cli-plugins/plugin-bff.md +2 -0
  275. package/docs/plugin/official/cli-plugins/plugin-ssg.md +2 -0
  276. package/docs/plugin/official/cli-plugins/plugin-styled-components.md +2 -0
  277. package/docs/plugin/official/cli-plugins.md +2 -0
  278. package/docs/plugin/plugin-system.md +3 -3
  279. package/docs/plugin/runtime-plugins/api.md +2 -0
  280. package/docs/plugin/runtime-plugins/life-cycle.md +2 -0
  281. package/docs/plugin/server-plugins/api.md +2 -0
  282. package/docs/plugin/server-plugins/life-cycle.md +2 -0
  283. package/docs/tutorials/examples/csr-auth.md +2 -0
  284. package/docs/tutorials/foundations/introduction.md +2 -0
  285. package/lib/types.d.ts +0 -1
  286. package/package.json +16 -17
  287. package/{rslib.config.mts → rstack.config.mts} +4 -4
  288. package/dist/cjs/types/config/testing.js +0 -18
  289. package/dist/esm/types/config/testing.mjs +0 -0
  290. package/dist/esm-node/types/config/testing.mjs +0 -1
  291. package/dist/types/types/config/testing.d.ts +0 -8
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # RuntimeContext
2
4
 
3
5
  `RuntimeContext` is a React Context used to get Runtime context information in components. This Context can be accessed through React's `use` or `useContext` API.
@@ -16,7 +18,7 @@ import { RuntimeContext } from '@modern-js/runtime';
16
18
 
17
19
  export function App() {
18
20
  const runtimeContext = use(RuntimeContext); // You can also use useContext(RuntimeContext)
19
- return <div>Hello World</div>
21
+ return <div>Hello World</div>;
20
22
  }
21
23
  ```
22
24
 
@@ -50,21 +52,21 @@ type TRuntimeContext = {
50
52
  ```ts
51
53
  type RequestContext = {
52
54
  request: {
53
- params: Record<string, string>; // Route parameters
54
- pathname: string; // Pathname
55
- query: Record<string, string>; // Query parameters
56
- headers: IncomingHttpHeaders; // Request headers
57
- host: string; // Hostname
58
- url: string; // Full URL
59
- referer?: string; // Referrer page
60
- userAgent?: string; // User agent
61
- cookie?: string; // Cookie string
62
- cookieMap?: Record<string, string>; // Cookie map object
55
+ params: Record<string, string>; // Route parameters
56
+ pathname: string; // Pathname
57
+ query: Record<string, string>; // Query parameters
58
+ headers: IncomingHttpHeaders; // Request headers
59
+ host: string; // Hostname
60
+ url: string; // Full URL
61
+ referer?: string; // Referrer page
62
+ userAgent?: string; // User agent
63
+ cookie?: string; // Cookie string
64
+ cookieMap?: Record<string, string>; // Cookie map object
63
65
  };
64
66
  response: {
65
- setHeader: (key: string, value: string) => void; // Set response header (server-side only)
66
- status: (code: number) => void; // Set status code (server-side only)
67
- locals: Record<string, any>; // Local data
67
+ setHeader: (key: string, value: string) => void; // Set response header (server-side only)
68
+ status: (code: number) => void; // Set status code (server-side only)
69
+ locals: Record<string, any>; // Local data
68
70
  };
69
71
  };
70
72
  ```
@@ -88,11 +90,11 @@ function App() {
88
90
 
89
91
  if (isBrowser === true) {
90
92
  // Browser-side execution logic
91
- console.log('browser render')
93
+ console.log('browser render');
92
94
  } else {
93
95
  // Server-side execution logic
94
96
  // Note: Functions like logger need to be injected into context through Runtime plugins
95
- console.log('server render')
97
+ console.log('server render');
96
98
  }
97
99
  }
98
100
  ```
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # router
2
4
 
3
5
  :::info
@@ -131,8 +133,10 @@ export default ErrorBoundary;
131
133
  ```ts
132
134
  declare function Link(props: LinkProps): React.ReactElement;
133
135
 
134
- interface LinkProps
135
- extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
136
+ interface LinkProps extends Omit<
137
+ React.AnchorHTMLAttributes<HTMLAnchorElement>,
138
+ 'href'
139
+ > {
136
140
  replace?: boolean;
137
141
  state?: any;
138
142
  to: To;
@@ -153,12 +157,13 @@ A `<Link>` is an element that lets the user navigate to another page by clicking
153
157
  ```ts
154
158
  declare function NavLink(props: NavLinkProps): React.ReactElement;
155
159
 
156
- interface NavLinkProps
157
- extends Omit<LinkProps, 'className' | 'style' | 'children'> {
160
+ interface NavLinkProps extends Omit<
161
+ LinkProps,
162
+ 'className' | 'style' | 'children'
163
+ > {
158
164
  caseSensitive?: boolean;
159
165
  children?:
160
- | React.ReactNode
161
- | ((props: { isActive: boolean }) => React.ReactNode);
166
+ React.ReactNode | ((props: { isActive: boolean }) => React.ReactNode);
162
167
  className?: string | ((props: { isActive: boolean }) => string | undefined);
163
168
  end?: boolean;
164
169
  style?:
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # NoSSR
2
4
 
3
5
  The content wrapped by NoSSR will not be rendered at the server, nor will it be rendered during the client side hydrate. it will only be rendered immediately after the entire app is rendered.
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # renderStreaming
2
4
 
3
5
  Used for `React v18` + `Streaming SSR` to render readable streams, used in conjunction with `createRequestHandler`.
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # renderString
2
4
 
3
5
  Used for React String SSR to render strings, used in conjunction with `createRequestHandler`.
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # createRequestHandler
2
4
 
3
5
  Used to customize the Server-Side Rendering entry to return the `requestHandler`.
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # CSS-In-JS API
2
4
 
3
5
  Use Style Component to write CSS.
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # Head
2
4
 
3
5
  Used to add html elements (such as title, meta, script, etc.) to the `<head>` element, supports SSR.
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # loadable
2
4
 
3
5
  Used to create Loadable component
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # 2022 年 7 \~ 8 月更新内容
2
4
 
3
5
  > 发表于 2022.09.05
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # 2022 年 9 \~ 10 月更新内容
2
4
 
3
5
  > 发表于 2022.11.01
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # Overview
2
4
 
3
5
  Welcome to Modern.js blog!
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # Modern.js v2 发布:支持 Rspack 构建
2
4
 
3
5
  > 发表于 2023.03.16
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # Modern.js v3 Release: Focused on web framework, embracing ecosystem development
2
4
 
3
5
  > Published on 2025.02.06
@@ -63,7 +65,7 @@ In Modern.js 3.0, simply enable RSC in the configuration:
63
65
  export default defineConfig({
64
66
  server: {
65
67
  rsc: true,
66
- }
68
+ },
67
69
  });
68
70
  ```
69
71
 
@@ -151,7 +153,7 @@ import('./module').then(({ value }) => {
151
153
  });
152
154
 
153
155
  // Destructuring in function body
154
- import('./module').then((mod) => {
156
+ import('./module').then(mod => {
155
157
  const { value } = mod;
156
158
  console.log(value);
157
159
  });
@@ -231,7 +233,10 @@ In practice, we found that some projects need to extend the Web Server — for e
231
233
  In Modern.js 3.0, we rebuilt the Web Server using [Hono](https://hono.dev) and officially opened up server middleware and plugin capabilities. Developers can use Hono middleware to meet their needs:
232
234
 
233
235
  ```ts title="server/modern.server.ts"
234
- import { defineServerConfig, type MiddlewareHandler } from "@modern-js/server-runtime";
236
+ import {
237
+ defineServerConfig,
238
+ type MiddlewareHandler,
239
+ } from '@modern-js/server-runtime';
235
240
 
236
241
  const timingMiddleware: MiddlewareHandler = async (c, next) => {
237
242
  const start = Date.now();
@@ -244,8 +249,8 @@ const htmlMiddleware: MiddlewareHandler = async (c, next) => {
244
249
  await next();
245
250
  const html = await c.res.text();
246
251
  const modified = html.replace(
247
- "<head>",
248
- '<head><meta name="generator" content="Modern.js">'
252
+ '<head>',
253
+ '<head><meta name="generator" content="Modern.js">',
249
254
  );
250
255
  c.res = c.body(modified, { status: c.res.status, headers: c.res.headers });
251
256
  };
@@ -316,13 +321,13 @@ In Modern.js, we recommend using convention-based routing to organize code. Howe
316
321
  Therefore, Modern.js 3.0 provides full config-based routing support, which can be used alongside convention-based routing or independently.
317
322
 
318
323
  ```ts title="src/modern.routes.ts"
319
- import { defineRoutes } from "@modern-js/runtime/config-routes";
324
+ import { defineRoutes } from '@modern-js/runtime/config-routes';
320
325
 
321
326
  export default defineRoutes(({ route, layout, page }) => {
322
327
  return [
323
- route("home.tsx", "/"),
324
- route("about.tsx", "about"),
325
- route("blog.tsx", "blog/:id"),
328
+ route('home.tsx', '/'),
329
+ route('about.tsx', 'about'),
330
+ route('blog.tsx', 'blog/:id'),
326
331
  ];
327
332
  });
328
333
  ```
@@ -408,19 +413,19 @@ For render cache usage, see the docs: [Render Cache](/guides/basic-features/rend
408
413
  The new version provides a `cache` function that offers finer-grained data-level control compared to render cache. When multiple data requests depend on the same data, `cache` can avoid duplicate requests:
409
414
 
410
415
  ```ts title="server/loader.ts"
411
- import { cache } from "@modern-js/runtime/cache";
412
- import { fetchUserData, fetchUserProjects, fetchUserTeam } from "./api";
416
+ import { cache } from '@modern-js/runtime/cache';
417
+ import { fetchUserData, fetchUserProjects, fetchUserTeam } from './api';
413
418
 
414
419
  // Cache user data to avoid duplicate requests
415
420
  const getUser = cache(fetchUserData);
416
421
 
417
422
  const getProjects = async () => {
418
- const user = await getUser("test-user");
423
+ const user = await getUser('test-user');
419
424
  return fetchUserProjects(user.id);
420
425
  };
421
426
 
422
427
  const getTeam = async () => {
423
- const user = await getUser("test-user"); // Reuses cache, no duplicate request
428
+ const user = await getUser('test-user'); // Reuses cache, no duplicate request
424
429
  return fetchUserTeam(user.id);
425
430
  };
426
431
 
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # Contributing Guide
2
4
 
3
5
  Thanks for that you are interested in contributing to Modern.js. Before starting your contribution, please take a moment to read the following guidelines.
@@ -32,13 +34,6 @@ nvm alias default 22
32
34
  nvm use 22
33
35
  ```
34
36
 
35
- ### Install pnpm
36
-
37
- ```sh
38
- # Enable pnpm with corepack, only available on Node.js >= `v14.19.0`
39
- corepack enable
40
- ```
41
-
42
37
  ### Install Dependencies
43
38
 
44
39
  ```sh
@@ -53,28 +48,6 @@ What this will do:
53
48
 
54
49
  > A full rebuild of all packages is generally not required after this. If a new feature you are developing requires an updated version of another package, it is usually sufficient to build the changed dependencies.
55
50
 
56
- ### Set Git Email
57
-
58
- Please make sure you have your email set up in `<https://github.com/settings/emails>`. This will be needed later when you want to submit a pull request.
59
-
60
- Check that your git client is already configured the email:
61
-
62
- ```sh
63
- git config --list | grep email
64
- ```
65
-
66
- Set the email to global config:
67
-
68
- ```sh
69
- git config --global user.email "SOME_EMAIL@example.com"
70
- ```
71
-
72
- Set the email for local repo:
73
-
74
- ```sh
75
- git config user.email "SOME_EMAIL@example.com"
76
- ```
77
-
78
51
  ## Making Changes and Building
79
52
 
80
53
  Once you have set up the local development environment in your forked repo, we can start development.
@@ -128,7 +101,7 @@ Modern.js uses [Rstest](https://rstest.rs/) for unit tests across the repository
128
101
  Before submitting a pull request, it's important to make sure that the changes haven't introduced any regressions or bugs. You can run the unit tests for the project by executing the following command:
129
102
 
130
103
  ```sh
131
- pnpm run test
104
+ pnpm run test:ut
132
105
  ```
133
106
 
134
107
  Alternatively, you can run the unit tests of single package using the `--filter` option:
@@ -141,10 +114,11 @@ pnpm run --filter @modern-js/some-package test
141
114
 
142
115
  In addition to the unit tests, the Modern.js also includes end-to-end (E2E) tests, which checks the functionality of the application as a whole.
143
116
 
144
- You can run the `test:e2e` command to run the E2E tests:
117
+ Run the framework integration tests and Builder E2E tests with the following commands:
145
118
 
146
119
  ```sh
147
- pnpm run test:e2e
120
+ pnpm run test:framework
121
+ pnpm run test:builder
148
122
  ```
149
123
 
150
124
  If you need to run a specified test, you can add keywords to filter:
@@ -156,7 +130,7 @@ npx rstest copy-assets
156
130
 
157
131
  ## Linting
158
132
 
159
- To help maintain consistency and readability of the codebase, we use a ESLint to lint the codes.
133
+ To help maintain consistency and readability across the codebase, we use [Rstack CLI](https://rstack.rs/) for linting and formatting.
160
134
 
161
135
  You can run the Linter by executing the following command:
162
136
 
@@ -164,6 +138,14 @@ You can run the Linter by executing the following command:
164
138
  pnpm run lint
165
139
  ```
166
140
 
141
+ Run the formatter from the repository root:
142
+
143
+ ```sh
144
+ pnpm run format
145
+ ```
146
+
147
+ Append a file or directory path to either command to limit its scope.
148
+
167
149
  ## Benchmarking
168
150
 
169
151
  You can input `!bench-framework` or `!bench-module` in the comment area of ​​the PR to do benchmarking on `@modern-js/app-tools` and `@modern-js/module-tools` respectively (you need to have Collaborator and above permissions).
@@ -245,6 +227,8 @@ pnpm run prepare
245
227
  pnpm run bump
246
228
  ```
247
229
 
230
+ After Changesets updates the package versions, this command synchronizes internal `peerDependencies` ranges to `workspace:^<dependency version>` to satisfy the changeset validation.
231
+
248
232
  5. Commit the version change.
249
233
 
250
234
  ```sh
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # Releases
2
4
 
3
5
  ## Changelog
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # Showcase
2
4
 
3
5
  Welcome to the Modern.js showcase page! Here, we present a collection of websites that have been built using Modern.js.
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # Meet the Team
2
4
 
3
5
  The development of Modern.js is driven by ByteDance's Modern.js team and community contributors.
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # bff.crossProject
2
4
 
3
5
  - **Type:** `boolean`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # bff.prefix
2
4
 
3
5
  - **Type:** `string`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # builderPlugins
2
4
 
3
5
  - **Type:** `RsbuildPlugin[]`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.assetPrefix
2
4
 
3
5
  - **Type:** `boolean | string | 'auto'`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.beforeStartUrl
2
4
 
3
5
  - **Type:** `() => Promise<void> | void`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.client
2
4
 
3
5
  - **Type:**
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.hmr
2
4
 
3
5
  - **Type:** `boolean`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.host
2
4
 
3
5
  - **Type:** `string`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.https
2
4
 
3
5
  - **Type:** `boolean | { key: string; cert: string }`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.lazyCompilation
2
4
 
3
5
  - **Type:**
@@ -29,10 +31,26 @@ type LazyCompilationOptions =
29
31
  };
30
32
  ```
31
33
 
32
- - **Default:** `false`
34
+ - **Default:** depends on how the application renders:
35
+ - Pure CSR and streaming SSR applications: `{ imports: true, entries: false }`, which compiles dynamic imports on demand;
36
+ - Applications using string SSR (including any entry in `server.ssrByEntries` using string SSR), RSC or SSG: `false`.
33
37
 
34
38
  Enable lazy compilation (compilation on demand), implemented based on Rspack's [lazy compilation](https://rspack.rs/guide/features/lazy-compilation) feature.
35
39
 
40
+ This option only takes effect in the dev server and does not affect production build output. When enabled for streaming SSR applications, route components are still compiled eagerly so that first-screen JS/CSS injection stays correct.
41
+
42
+ An explicitly configured `dev.lazyCompilation` always takes precedence over the default. To disable it:
43
+
44
+ ```ts
45
+ import { defineConfig } from '@modern-js/app-tools';
46
+
47
+ export default defineConfig({
48
+ dev: {
49
+ lazyCompilation: false,
50
+ },
51
+ });
52
+ ```
53
+
36
54
  :::info
37
55
  The usage of this configuration item is exactly the same as that of Rsbuild. For detailed information, please refer to [Rsbuild - dev.lazyCompilation](https://v2.rsbuild.dev/config/dev/lazy-compilation)。
38
56
  In Rspack build mode,
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.liveReload
2
4
 
3
5
  - **Type:** `boolean`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.mockDir
2
4
 
3
5
  - **Type:** `string`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.progressBar
2
4
 
3
5
  - **Type:**
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.server
2
4
 
3
5
  - **Type:** `Object`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.setupMiddlewares
2
4
 
3
5
  - **Type:**
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.startUrl
2
4
 
3
5
  - **Type:** `boolean | string | string[] | undefined`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.watchFiles
2
4
 
3
5
  - **Type:**
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # dev.writeToDisk
2
4
 
3
5
  - **Type:** `boolean | ((filename: string) => boolean)`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # sourceBuild
2
4
 
3
5
  - **Type:** `boolean | PluginSourceBuildOptions`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # html.appIcon
2
4
 
3
5
  - **Type:**
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # html.crossorigin
2
4
 
3
5
  - **Type:** `boolean | 'anonymous' | 'use-credentials'`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # html.favicon
2
4
 
3
5
  - **Type:** `string | Function`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # html.inject
2
4
 
3
5
  - **Type:** `'head' | 'body' | boolean | Function`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # html.meta
2
4
 
3
5
  - **Type:** `Object | Function`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # html.mountId
2
4
 
3
5
  - **Type:** `string`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # html.outputStructure
2
4
 
3
5
  - **Type:** `'flat' | 'nested'`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # html.scriptLoading
2
4
 
3
5
  - **Type:** `'defer' | 'blocking' | 'module'`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # html.tags
2
4
 
3
5
  - **Type:**
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # html.templateParameters
2
4
 
3
5
  - **Type:** `Record<string, unknown> | Function`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # html.template
2
4
 
3
5
  - **Type:** `string | Function`
@@ -1,3 +1,5 @@
1
+ > For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.
2
+
1
3
  # html.title
2
4
 
3
5
  - **Type:** `string | Function`