Skip to content

Commit 1dc6061

Browse files
Copilothotlong
authored andcommitted
fix(build): inline dynamic imports in library outputs
Library 'vite build --lib' outputs were emitting separate code-split chunks (rolldown-runtime-*.js, LookupField-*.js, etc.) when source files used React.lazy() / dynamic import(). When consumer apps re-bundled these multi-file dists, the library's per-chunk rolldown-runtime collided with the consumer's own runtime, causing 'TypeError: i is not a function' at runtime when lazy components tried to register themselves (e.g. TextField in @object-ui/fields after 4.0.4). Adding output.inlineDynamicImports: true to all @object-ui/* library vite configs forces a single dist/index.js per package, which lets consumer bundlers handle the library as an opaque ESM module without identifier mismatches across chunks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent adebdeb commit 1dc6061

24 files changed

Lines changed: 71 additions & 0 deletions

File tree

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
"@object-ui/components": patch
3+
"@object-ui/fields": patch
4+
"@object-ui/layout": patch
5+
"@object-ui/plugin-aggrid": patch
6+
"@object-ui/plugin-ai": patch
7+
"@object-ui/plugin-calendar": patch
8+
"@object-ui/plugin-charts": patch
9+
"@object-ui/plugin-chatbot": patch
10+
"@object-ui/plugin-dashboard": patch
11+
"@object-ui/plugin-designer": patch
12+
"@object-ui/plugin-detail": patch
13+
"@object-ui/plugin-editor": patch
14+
"@object-ui/plugin-form": patch
15+
"@object-ui/plugin-gantt": patch
16+
"@object-ui/plugin-grid": patch
17+
"@object-ui/plugin-kanban": patch
18+
"@object-ui/plugin-list": patch
19+
"@object-ui/plugin-map": patch
20+
"@object-ui/plugin-markdown": patch
21+
"@object-ui/plugin-report": patch
22+
"@object-ui/plugin-timeline": patch
23+
"@object-ui/plugin-view": patch
24+
"@object-ui/plugin-workflow": patch
25+
---
26+
27+
fix(build): inline dynamic imports in library outputs
28+
29+
Library `vite build --lib` outputs were emitting separate code-split chunks
30+
(`rolldown-runtime-*.js`, `LookupField-*.js`, etc.) when source files used
31+
`React.lazy()` / dynamic `import()`. When consumer apps re-bundled these
32+
multi-file dists, the library's per-chunk rolldown-runtime collided with the
33+
consumer's own runtime, causing "TypeError: i is not a function" at runtime
34+
when lazy components tried to register themselves (e.g. TextField in
35+
`@object-ui/fields` after 4.0.4).
36+
37+
Adding `output.inlineDynamicImports: true` to all `@object-ui/*` library vite
38+
configs forces a single `dist/index.js` per package, which lets consumer
39+
bundlers handle the library as an opaque ESM module without identifier
40+
mismatches across chunks.
41+
42+
Affected packages: components, fields, layout, plugin-aggrid, plugin-ai,
43+
plugin-calendar, plugin-charts, plugin-chatbot, plugin-dashboard,
44+
plugin-designer, plugin-detail, plugin-editor, plugin-form, plugin-gantt,
45+
plugin-grid, plugin-kanban, plugin-list, plugin-map, plugin-markdown,
46+
plugin-report, plugin-timeline, plugin-view, plugin-workflow.

packages/components/vite.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export default defineConfig({
4949
// so Rolldown does not bundle CJS wrappers that use require().
5050
external: (id) => !/^[./]/.test(id) && !id.startsWith(__dirname),
5151
output: {
52+
inlineDynamicImports: true,
5253
globals: {
5354
react: 'React',
5455
'react-dom': 'ReactDOM',

packages/fields/vite.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export default defineConfig({
3333
rollupOptions: {
3434
external: (id) => !/^[./]/.test(id) && !id.startsWith(__dirname),
3535
output: {
36+
inlineDynamicImports: true,
3637
globals: {
3738
react: 'React',
3839
'react-dom': 'ReactDOM',

packages/layout/vite.config.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ export default defineConfig({
2020
},
2121
rollupOptions: {
2222
external: (id) => !/^[./]/.test(id) && !id.startsWith(__dirname),
23+
output: {
24+
inlineDynamicImports: true,
25+
},
2326
},
2427
},
2528
test: {

packages/plugin-aggrid/vite.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export default defineConfig({
4343
rollupOptions: {
4444
external: (id) => !/^[./]/.test(id) && !id.startsWith(__dirname),
4545
output: {
46+
inlineDynamicImports: true,
4647
globals: {
4748
react: 'React',
4849
'react-dom': 'ReactDOM',

packages/plugin-ai/vite.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export default defineConfig({
3333
rollupOptions: {
3434
external: (id) => !/^[./]/.test(id) && !id.startsWith(__dirname),
3535
output: {
36+
inlineDynamicImports: true,
3637
globals: {
3738
react: 'React',
3839
'react-dom': 'ReactDOM',

packages/plugin-calendar/vite.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ export default defineConfig({
4242
rollupOptions: {
4343
external: (id) => !/^[./]/.test(id) && !id.startsWith(__dirname),
4444
output: {
45+
inlineDynamicImports: true,
4546
globals: {
4647
react: 'React',
4748
'react-dom': 'ReactDOM',

packages/plugin-charts/vite.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export default defineConfig({
4343
rollupOptions: {
4444
external: (id) => !/^[./]/.test(id) && !id.startsWith(__dirname),
4545
output: {
46+
inlineDynamicImports: true,
4647
globals: {
4748
react: 'React',
4849
'react-dom': 'ReactDOM',

packages/plugin-chatbot/vite.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export default defineConfig({
3636
rollupOptions: {
3737
external: (id) => !/^[./]/.test(id) && !id.startsWith(__dirname),
3838
output: {
39+
inlineDynamicImports: true,
3940
globals: {
4041
react: 'React',
4142
'react-dom': 'ReactDOM',

packages/plugin-dashboard/vite.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export default defineConfig({
3838
// rolldown's runtime stub and throw at runtime.
3939
external: (id) => !/^[./]/.test(id) && !id.startsWith(__dirname),
4040
output: {
41+
inlineDynamicImports: true,
4142
globals: {
4243
react: 'React',
4344
'react-dom': 'ReactDOM',

0 commit comments

Comments
 (0)