Skip to content

Commit 13e0e42

Browse files
authored
Merge pull request #48 from uploadcare/feat/dynamic-ssr-false-next
feat(next): added new import for nextjs with ssr disabled
2 parents 486c9c6 + aecbdc1 commit 13e0e42

File tree

8 files changed

+401
-29
lines changed

8 files changed

+401
-29
lines changed

package-lock.json

+346-17
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/react-uploader/README.md

+17-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ React principles.
2727
* [Styles](#styles)
2828
* [File Uploader API](#file-uploader-api)
2929
* [Events](#events)
30+
* [Next.js](#nextjs)
3031
* [Security issues](#security-issues)
3132
* [Feedback](#feedback)
3233

@@ -120,8 +121,7 @@ import {
120121
import "@uploadcare/react-uploader/core.css";
121122

122123
const Example = () => {
123-
const uploaderRef = useRef < InstanceType < UploadCtxProvider > | null > (null);
124-
124+
const uploaderRef = useRef <InstanceType<UploadCtxProvider> | null>(null);
125125

126126
<FileUploaderRegular apiRef={uploaderRef} pubkey="YOUR_PUBLIC_KEY"/>;
127127
}
@@ -172,6 +172,21 @@ import "@uploadcare/react-uploader/core.css";
172172
| change | onChange |
173173
| group-created | onGroupCreated |
174174

175+
## Next.js
176+
File Uploader does not support Server-side Rendering (SSR), we have a special import for nextjs that already has SSR disabled.
177+
You will need to import with import `@uploadcare/react-uploader/next`
178+
179+
```jsx
180+
'use client'
181+
import { FileUploaderRegular } from "@uploadcare/react-uploader/next";
182+
import "@uploadcare/react-uploader/core.css";
183+
184+
function App() {
185+
return <FileUploaderRegular pubkey="YOUR_PUBLIC_KEY" />
186+
};
187+
```
188+
189+
175190
## Security issues
176191

177192
If you think you ran into something in Uploadcare libraries that might have

packages/react-uploader/package.json

+9-5
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
"version": "1.0.0",
55
"private": false,
66
"type": "module",
7-
"files": [
8-
"dist"
9-
],
7+
"files": ["dist"],
108
"main": "./dist/react-uploader.cjs",
119
"module": "./dist/react-uploader.js",
1210
"types": "./dist/react-uploader.d.ts",
@@ -15,7 +13,12 @@
1513
"import": "./dist/react-uploader.js",
1614
"require": "./dist/react-uploader.cjs"
1715
},
18-
"./core.css": "./dist/libs.css"
16+
"./next": {
17+
"import": "./dist/nextjs.js",
18+
"require": "./dist/nextjs.cjs",
19+
"types": "./dist/nextjs.d.ts"
20+
},
21+
"./core.css": "./dist/style.css"
1922
},
2023
"scripts": {
2124
"dev": "tsc && vite build --watch",
@@ -24,7 +27,8 @@
2427
"test": "vitest"
2528
},
2629
"peerDependencies": {
27-
"@types/react": "17 || 18"
30+
"@types/react": "17 || 18",
31+
"next": "13 || 14"
2832
},
2933
"dependencies": {
3034
"@uploadcare/file-uploader": "^1.2.0",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import dynamic from "next/dynamic";
2+
3+
export const FileUploaderInline = dynamic(
4+
() => import("./FileUploaderInline").then((mod) => mod.FileUploaderInline),
5+
{ ssr: false },
6+
);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import dynamic from "next/dynamic";
2+
3+
export const FileUploaderMinimal = dynamic(
4+
() => import("./FileUploaderMinimal").then((mod) => mod.FileUploaderMinimal),
5+
{ ssr: false },
6+
);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import dynamic from "next/dynamic";
2+
3+
export const FileUploaderRegular = dynamic(
4+
() => import("./FileUploaderRegular").then((mod) => mod.FileUploaderRegular),
5+
{ ssr: false },
6+
);

packages/react-uploader/src/nextjs.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export { FileUploaderMinimal } from "./Uploader/Minimal/NextFileUploaderMinimal";
2+
export { FileUploaderRegular } from "./Uploader/Regular/NextFileUploaderRegular";
3+
export { FileUploaderInline } from "./Uploader/Inline/NextFileUploaderInline";

packages/react-uploader/vite.config.js

+8-5
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,23 @@ import dts from "vite-plugin-dts";
55

66
export default defineConfig({
77
build: {
8-
cssCodeSplit: true,
8+
cssCodeSplit: false,
99
lib: {
10-
entry: [resolve(__dirname, "src/libs.ts")],
10+
entry: {
11+
nextjs: resolve(__dirname, "src/nextjs.ts"),
12+
"react-uploader": resolve(__dirname, "src/libs.ts"),
13+
},
14+
1115
name: "@uploadcare/react-uploader",
1216

1317
formats: ["es", "cjs"],
14-
15-
fileName: "react-uploader",
1618
},
1719
rollupOptions: {
18-
external: ["react", "@uploadcare/file-uploader"],
20+
external: ["react", "next", "next/dynamic", "@uploadcare/file-uploader"],
1921
output: {
2022
globals: {
2123
react: "React",
24+
next: "next",
2225
},
2326
},
2427
},

0 commit comments

Comments
 (0)