Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
1c7ede3
refactor(core): merge @uppy/store-default into core via ./store-defau…
qxprakash Jun 15, 2026
156b87e
refactor(core): merge @uppy/utils into core via ./utils export
qxprakash Jun 15, 2026
b3aa4cd
refactor(core): merge @uppy/companion-client into core via ./companio…
qxprakash Jun 15, 2026
d6a0132
refactor(core): merge @uppy/provider-views into core via ./provider-v…
qxprakash Jun 15, 2026
4397870
refactor(core): remove duplicate companion/provider bridge types, wir…
qxprakash Jun 21, 2026
ba083dc
refactor(core): merge @uppy/store-default into core (#6351)
qxprakash Jun 23, 2026
d6e8021
Merge branch 'merge-into-core' into core-merge-2-utils
qxprakash Jun 23, 2026
2bda51c
refactor(core): merge @uppy/utils into core (#6352)
qxprakash Jun 23, 2026
0cb2432
Merge branch 'merge-into-core' into core-merge-3-companion-client
qxprakash Jun 23, 2026
e2b6e36
refactor(core): merge @uppy/companion-client into core (#6353)
qxprakash Jun 23, 2026
5a82975
Merge branch 'merge-into-core' into core-merge-4-provider-views
qxprakash Jun 23, 2026
0b3bbf0
refactor(core): merge @uppy/provider-views into core (#6358)
qxprakash Jun 23, 2026
1421d2f
Merge branch 'merge-into-core' into core-merge-5-type-unification
qxprakash Jun 23, 2026
1f4b8e1
apply feedback
qxprakash Jun 24, 2026
888a29f
Merge branch 'core-merge-5-type-unification' of github.com:qxprakash/…
qxprakash Jun 24, 2026
6c05477
refactor(core): remove duplicate types (#6359)
qxprakash Jun 30, 2026
6ebe560
remove dangling import
qxprakash Jun 30, 2026
5a6f6a1
retarget changesets for packages merged into @uppy/core, there are old
qxprakash Jun 30, 2026
eea7029
Merge branch 'main' into merge-into-core
qxprakash Jun 30, 2026
b47a5c6
lint fix
qxprakash Jun 30, 2026
4c145da
migration doc
qxprakash Jun 30, 2026
7440c36
Merge branch 'merge-into-core' of github.com:transloadit/uppy into me…
qxprakash Jun 30, 2026
05d3c85
Merge branch 'main' into merge-into-core
qxprakash Jul 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 1 addition & 5 deletions .changeset/curvy-feet-chew.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,10 @@
"@uppy/google-photos-picker": patch
"@uppy/google-drive-picker": patch
"@uppy/thumbnail-generator": patch
"@uppy/companion-client": patch
"@uppy/golden-retriever": patch
"@uppy/image-generator": patch
"@uppy/provider-views": patch
"@uppy/remote-sources": patch
"@uppy/screen-capture": patch
"@uppy/store-default": patch
"@uppy/google-drive": patch
"@uppy/image-editor": patch
"@uppy/transloadit": patch
Expand All @@ -31,7 +28,6 @@
"@uppy/webdav": patch
"@uppy/audio": patch
"@uppy/react": patch
"@uppy/utils": patch
"@uppy/core": patch
"@uppy/form": patch
"@uppy/zoom": patch
Expand All @@ -42,4 +38,4 @@
"uppy": patch
---

Bump shared runtime dependencies (preact, nanoid, lodash, classnames, shallow-equal, pretty-bytes, p-queue, tus-js-client, @transloadit/types @transloadit/prettier-bytes v1, is-mobile, exifr, compressorjs, rxjs, tslib). Also includes type-only fixes in `@uppy/companion`'s `jwt.ts` and `request.ts` to track `@types/jsonwebtoken` v9 and `@types/node`.
Bump shared runtime dependencies (preact, nanoid, lodash, classnames, shallow-equal, pretty-bytes, p-queue, tus-js-client, @transloadit/types @transloadit/prettier-bytes v1, is-mobile, exifr, compressorjs, rxjs, tslib). Also includes type-only fixes in `@uppy/companion`'s `jwt.ts` and `request.ts` to track `@types/jsonwebtoken` v9 and `@types/node`.
2 changes: 1 addition & 1 deletion .changeset/lazy-berries-brake.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
"@uppy/companion-client": patch
"@uppy/core": patch
---

uploadRemoteFile() now queues token request and websocket request as a single job in the request queue.
4 changes: 2 additions & 2 deletions .changeset/mighty-deers-sin.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
"@uppy/companion-client": major
"@uppy/core": major
"@uppy/companion": major
---

Send token using websocket instead of window.opener.
Breaking in `@uppy/companion-client` because it needs newest version of Companion in order to work.
Breaking in `@uppy/core` because it needs newest version of Companion in order to work.
Breaking in `@uppy/companion` because `companion.socket()` now requires `companionOptions` to be passed as the second argument.
82 changes: 82 additions & 0 deletions MIGRATION-6.0-merge-into-core.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Migration: packages merged into `@uppy/core` (6.0)

In Uppy 6.0, four packages were folded into `@uppy/core` and are now exposed through
subpath exports. The standalone packages are **removed from npm**. This eliminates a
class of duplicate-version bugs (every plugin already depends on `@uppy/core`, so there
is now a single source of truth) and lets co-dependent types reference each other
directly instead of through hand-maintained duplicates.

## 1. Import paths

Update imports from the removed packages to the matching `@uppy/core` subpath:

| Removed package | New import |
| ------------------------ | ------------------------------ |
| `@uppy/utils` | `@uppy/core/utils` |
| `@uppy/store-default` | `@uppy/core/store-default` |
| `@uppy/companion-client` | `@uppy/core/companion-client` |
| `@uppy/provider-views` | `@uppy/core/provider-views` |

```diff
- import { fetcher } from '@uppy/utils'
+ import { fetcher } from '@uppy/core/utils'

- import { RequestClient } from '@uppy/companion-client'
+ import { RequestClient } from '@uppy/core/companion-client'
```

Then:

1. Remove `@uppy/utils`, `@uppy/store-default`, `@uppy/companion-client`, and
`@uppy/provider-views` from your `package.json`.
2. Make sure `@uppy/core` is listed as a dependency (it already is for any plugin).

## 2. CSS

The provider UI styles moved with the code:

| Old | New |
| ---------------------------------------- | ---------------------------------------------- |
| `@uppy/provider-views/css/style.min.css` | `@uppy/core/provider-views/css/style.min.css` |
| `@uppy/provider-views/css/style.css` | `@uppy/core/provider-views/css/style.css` |

> Most apps don't import this directly — it ships bundled in `@uppy/dashboard`'s CSS.
> Only update it if you were importing the provider-views stylesheet explicitly.

## 3. TypeScript types

- **`RequestOptions`** moved from `@uppy/utils` to `@uppy/core/companion-client`
(it is the companion request type and now lives next to `RequestClient`).

```diff
- import type { RequestOptions } from '@uppy/utils'
+ import type { RequestOptions } from '@uppy/core/companion-client'
```

- **`CompanionClientProvider` / `CompanionClientSearchProvider`** are **removed**. They
were hand-maintained stand-ins that only existed because `@uppy/utils` couldn't see
the real provider classes. Now that everything lives in `@uppy/core`, the real classes
are used directly. If you typed against them, import the real class from
`@uppy/core/companion-client` instead (or `Pick` the members you need):

```diff
- import type { CompanionClientProvider } from '@uppy/utils'
+ import type Provider from '@uppy/core/companion-client'
- const p: CompanionClientProvider = ...
+ const p: Provider<MyMeta, MyBody> = ...
```

Note: `UnknownProviderPlugin['provider']` is now typed as a structural subset of
`Provider` (via `Pick`), so a custom provider that matches the public surface still
fits without subclassing the exact class.

## 4. The `uppy` all-in-one package — no change

If you use the meta-package or the CDN bundle, nothing changes:

```js
import { Uppy, Dashboard, DefaultStore } from 'uppy' // still works
// window.Uppy.DefaultStore — still works
```

These re-exports were repointed to the new `@uppy/core` subpaths internally.
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
/** @jsx h */

import { getAllowedHosts, Provider, tokenStorage } from '@uppy/companion-client'
import { UIPlugin } from '@uppy/core'
import { ProviderViews } from '@uppy/provider-views'
import {
getAllowedHosts,
Provider,
tokenStorage,
} from '@uppy/core/companion-client'
import { ProviderViews } from '@uppy/core/provider-views'

const defaultOptions = {}

Expand Down
2 changes: 0 additions & 2 deletions examples/companion-custom-provider/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@
"private": true,
"type": "module",
"dependencies": {
"@uppy/companion-client": "workspace:*",
"@uppy/core": "workspace:*",
"@uppy/dashboard": "workspace:*",
"@uppy/google-drive": "workspace:*",
"@uppy/provider-views": "workspace:*",
"@uppy/tus": "workspace:*",
"preact": "^10.29.2"
},
Expand Down
6 changes: 1 addition & 5 deletions packages/@uppy/angular/turbo.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@
"extends": ["//"],
"tasks": {
"build": {
"dependsOn": [
"@uppy/core#build",
"@uppy/dashboard#build",
"@uppy/utils#build"
],
"dependsOn": ["@uppy/core#build", "@uppy/dashboard#build"],
"inputs": [
"projects/uppy/angular/src/**/*.{js,ts,jsx,tsx}",
"package.json",
Expand Down
1 change: 0 additions & 1 deletion packages/@uppy/audio/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
"./package.json": "./package.json"
},
"dependencies": {
"@uppy/utils": "workspace:^",
"preact": "^10.29.2"
},
"devDependencies": {
Expand Down
4 changes: 2 additions & 2 deletions packages/@uppy/audio/src/Audio.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import type {
} from '@uppy/core'

import { UIPlugin } from '@uppy/core'
import type { LocaleStrings } from '@uppy/utils'
import { getFileTypeExtension } from '@uppy/utils'
import type { LocaleStrings } from '@uppy/core/utils'
import { getFileTypeExtension } from '@uppy/core/utils'
import packageJson from '../package.json' with { type: 'json' }
import locale from './locale.js'
import PermissionsScreen from './PermissionsScreen.js'
Expand Down
2 changes: 1 addition & 1 deletion packages/@uppy/audio/src/DiscardButton.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { I18n } from '@uppy/utils'
import type { I18n } from '@uppy/core/utils'

interface DiscardButtonProps {
onDiscard: () => void
Expand Down
2 changes: 1 addition & 1 deletion packages/@uppy/audio/src/PermissionsScreen.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { I18n } from '@uppy/utils'
import type { I18n } from '@uppy/core/utils'
import type { h } from 'preact'

interface PermissionsScreenProps {
Expand Down
2 changes: 1 addition & 1 deletion packages/@uppy/audio/src/RecordButton.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { I18n } from '@uppy/utils'
import type { I18n } from '@uppy/core/utils'

interface RecordButtonProps {
recording: boolean
Expand Down
2 changes: 1 addition & 1 deletion packages/@uppy/audio/src/RecordingScreen.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { I18n } from '@uppy/utils'
import type { I18n } from '@uppy/core/utils'
import { useEffect, useRef } from 'preact/hooks'
import AudioSourceSelect, {
type AudioSourceSelectProps,
Expand Down
2 changes: 1 addition & 1 deletion packages/@uppy/audio/src/SubmitButton.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { I18n } from '@uppy/utils'
import type { I18n } from '@uppy/core/utils'

interface SubmitButtonProps {
onSubmit: () => void
Expand Down
3 changes: 0 additions & 3 deletions packages/@uppy/audio/tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@
"include": ["./src/**/*.*"],
"exclude": ["./src/**/*.test.ts"],
"references": [
{
"path": "../utils/tsconfig.build.json"
},
{
"path": "../core/tsconfig.build.json"
}
Expand Down
3 changes: 0 additions & 3 deletions packages/@uppy/audio/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@
},
"include": ["./package.json", "./src/**/*.*"],
"references": [
{
"path": "../utils/tsconfig.build.json"
},
{
"path": "../core/tsconfig.build.json"
}
Expand Down
4 changes: 0 additions & 4 deletions packages/@uppy/aws-s3/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,6 @@
".": "./lib/index.js",
"./package.json": "./package.json"
},
"dependencies": {
"@uppy/companion-client": "workspace:^",
"@uppy/utils": "workspace:^"
},
"devDependencies": {
"@aws-sdk/client-s3": "^3.362.0",
"@aws-sdk/s3-request-presigner": "^3.362.0",
Expand Down
5 changes: 4 additions & 1 deletion packages/@uppy/aws-s3/src/HTTPCommunicationQueue.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import type { Body, Meta, UppyFile } from '@uppy/core'
import type { RateLimitedQueue, WrapPromiseFunctionType } from '@uppy/utils'
import type {
RateLimitedQueue,
WrapPromiseFunctionType,
} from '@uppy/core/utils'
import type AwsS3Multipart from './index.js'
import type {
AwsS3MultipartOptions,
Expand Down
4 changes: 2 additions & 2 deletions packages/@uppy/aws-s3/src/MultipartUploader.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Uppy } from '@uppy/core'
import type { Body, Meta, UppyFile } from '@uppy/utils'
import { AbortController } from '@uppy/utils'
import type { Body, Meta, UppyFile } from '@uppy/core/utils'
import { AbortController } from '@uppy/core/utils'
import type { HTTPCommunicationQueue } from './HTTPCommunicationQueue.js'

const MB = 1024 * 1024
Expand Down
13 changes: 4 additions & 9 deletions packages/@uppy/aws-s3/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,25 +1,20 @@
import { RequestClient } from '@uppy/companion-client'
import {
BasePlugin,
type DefinePluginOpts,
EventManager,
type PluginOpts,
type Uppy,
} from '@uppy/core'
import type {
Body,
LocalUppyFile,
Meta,
RequestOptions,
UppyFile,
} from '@uppy/utils'
import type { RequestOptions } from '@uppy/core/companion-client'
import { RequestClient } from '@uppy/core/companion-client'
import type { Body, LocalUppyFile, Meta, UppyFile } from '@uppy/core/utils'
import {
createAbortError,
filterFilesToEmitUploadStarted,
filterFilesToUpload,
getAllowedMetaFields,
RateLimitedQueue,
} from '@uppy/utils'
} from '@uppy/core/utils'
import packageJson from '../package.json' with { type: 'json' }
import createSignedURL from './createSignedURL.js'
import { HTTPCommunicationQueue } from './HTTPCommunicationQueue.js'
Expand Down
4 changes: 2 additions & 2 deletions packages/@uppy/aws-s3/src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { Body } from '@uppy/utils'
import { createAbortError } from '@uppy/utils'
import type { Body } from '@uppy/core/utils'
import { createAbortError } from '@uppy/core/utils'

import type { AwsS3Part } from './index.js'

Expand Down
6 changes: 0 additions & 6 deletions packages/@uppy/aws-s3/tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,6 @@
"include": ["./src/**/*.*"],
"exclude": ["./src/**/*.test.ts"],
"references": [
{
"path": "../companion-client/tsconfig.build.json"
},
{
"path": "../utils/tsconfig.build.json"
},
{
"path": "../core/tsconfig.build.json"
}
Expand Down
6 changes: 0 additions & 6 deletions packages/@uppy/aws-s3/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,6 @@
},
"include": ["./package.json", "./src/**/*.*"],
"references": [
{
"path": "../companion-client/tsconfig.build.json"
},
{
"path": "../utils/tsconfig.build.json"
},
{
"path": "../core/tsconfig.build.json"
}
Expand Down
3 changes: 0 additions & 3 deletions packages/@uppy/box/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,6 @@
"./package.json": "./package.json"
},
"dependencies": {
"@uppy/companion-client": "workspace:^",
"@uppy/provider-views": "workspace:^",
"@uppy/utils": "workspace:^",
"preact": "^10.29.2"
},
"peerDependencies": {
Expand Down
17 changes: 8 additions & 9 deletions packages/@uppy/box/src/Box.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
import {
type CompanionPluginOptions,
getAllowedHosts,
Provider,
tokenStorage,
} from '@uppy/companion-client'
import type {
AsyncStore,
Body,
Expand All @@ -13,9 +7,14 @@ import type {
UppyFile,
} from '@uppy/core'
import { UIPlugin, type Uppy } from '@uppy/core'
import { ProviderViews } from '@uppy/provider-views'

import type { LocaleStrings } from '@uppy/utils'
import {
type CompanionPluginOptions,
getAllowedHosts,
Provider,
tokenStorage,
} from '@uppy/core/companion-client'
import { ProviderViews } from '@uppy/core/provider-views'
import type { LocaleStrings } from '@uppy/core/utils'
// biome-ignore lint/style/useImportType: h is not a type
import { type ComponentChild, h } from 'preact'
import packageJson from '../package.json' with { type: 'json' }
Expand Down
9 changes: 0 additions & 9 deletions packages/@uppy/box/tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,6 @@
"include": ["./src/**/*.*"],
"exclude": ["./src/**/*.test.ts"],
"references": [
{
"path": "../companion-client/tsconfig.build.json"
},
{
"path": "../provider-views/tsconfig.build.json"
},
{
"path": "../utils/tsconfig.build.json"
},
{
"path": "../core/tsconfig.build.json"
}
Expand Down
Loading