[Snyk] Upgrade @payloadcms/ui from 3.60.0 to 3.62.0#73
Open
Conversation
Snyk has created this PR to upgrade @payloadcms/ui from 3.60.0 to 3.62.0. See this package in npm: @payloadcms/ui See this project in Snyk: https://app.snyk.io/org/mrfriggo/project/efa6ec70-0a43-4492-a67b-1dff7278de12?utm_source=github&utm_medium=referral&page=upgrade-pr
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Snyk has created this PR to upgrade @payloadcms/ui from 3.60.0 to 3.62.0.
ℹ️ Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.
The recommended version is 29 versions ahead of your current version.
The recommended version was released 22 days ago.
Release notes
Package name: @payloadcms/ui
v3.62.0 (2025-10-30)
🚀 Features
Jobs Access Control
Adds role-based access control for job queue and cancel operations, allowing you to restrict who can manage background jobs in your application. Both operations now support
overrideAccessparameter and respect custom access control functions defined in your jobs configuration. #14404jobs: {
access: {
queue: ({ req }) => req.user?.roles?.includes('admin'),
cancel: ({ req }) => req.user?.roles?.includes('admin'),
}
}
// Use in Local API
await payload.jobs.cancel({
where: { workflowSlug: { equals: 'sync' } },
overrideAccess: false,
req,
})
Per-Field Timezone Configuration
Date fields can now have individual timezone settings, allowing different date fields to support their own list of supported timezones with custom default values. This enables more flexible date handling across your application. #14410
You can also enforce a specific timezone by specifying just one with a default value:
KV Storage Adapters
Introduces a new key-value storage system with multiple adapter options (Database, In-Memory, Redis) for enhanced data persistence and performance. This provides the foundation for the upcoming Realtime API and other features requiring fast key-value access. #9913
Access the KV store via
payload.kvwith the following interface:/**
* Clears all entries in the store.
* @ returns A promise that resolves once the store is cleared.
*/
clear(): Promise<void>
/**
* Deletes a value from the store by its key.
* @ param key - The key to delete.
* @ returns A promise that resolves once the key is deleted.
*/
delete(key: string): Promise<void>
/**
* Retrieves a value from the store by its key.
* @ param key - The key to look up.
* @ returns A promise that resolves to the value, or
nullif not found.*/
get(key: string): Promise<KVStoreValue | null>
/**
* Checks if a key exists in the store.
* @ param key - The key to check.
* @ returns A promise that resolves to
trueif the key exists, otherwisefalse.*/
has(key: string): Promise<boolean>
/**
* Retrieves all the keys in the store.
* @ returns A promise that resolves to an array of keys.
*/
keys(): Promise<string[]>
/**
* Sets a value in the store with the given key.
* @ param key - The key to associate with the value.
* @ param value - The value to store.
* @ returns A promise that resolves once the value is stored.
*/
set(key: string, value: KVStoreValue): Promise<void>
}
Configure the adapter using the
kvproperty:Database KV adapter (default) - Uses your existing database with a hidden
payload-kvcollection:buildConfig({
kv: databaseKVAdapter({
kvCollectionOverrides: {
slug: 'custom-kv',
...(process.env.DEBUG === 'true' && {
admin: { hidden: false },
access: {},
}),
},
}),
})
In Memory KV adapter - Fast memory-based storage for development:
buildConfig({
kv: inMemoryKVAdapter(),
})
Redis KV Adapter - Production-ready Redis integration:
buildConfig({
kv: redisKVAdapter({
keyPrefix: "custom-prefix:", // defaults to 'payload-kv:'
redisURL: "redis://127.0.0.1:6379" // defaults to process.env.REDIS_URL
}),
})
Configurable Toast Position
Toast notifications can now be positioned anywhere on the screen (top-left, top-center, top-right, bottom-left, bottom-center, bottom-right), giving you control over where important messages appear to your users. This is particularly useful for applications with large screens or specific UI layouts. #14405
The
positionconfiguration is a direct pass-through of the Sonner library's position options, with'bottom-right'remaining the default.Feature PRs
🐛 Bug Fixes
findMigrationDirin projects withoutsrcfolder (#14381) (059185f)prodMigrations(#14394) (8e5e23a)select(#14399) (850cc38)defaultValue(#14365) (8996b35)🛠 Refactors
⚙️ CI
🤝 Contributors
v3.61.1 (2025-10-24)
🐛 Bug Fixes
$existson mongodb and improve performance when querying multiple times on postgres (#14315) (1f166ba)_relstable (#14341) (a2b1c9b)depth: 0for publish specific locale request (#14313) (b68715e)📚 Documentation
🤝 Contributors
v3.61.0 (2025-10-23)
🚀 Features
🐛 Bug Fixes
draft: true(#14271) (1016cd0)⚡ Performance
🛠 Refactors
📚 Documentation
useFormFields(#14288) (8cdb5dc)admin.timezoneslist configuration with example (#14238) (de5f3db)🔨 Build
🏡 Chores
🤝 Contributors
v3.60.0 (2025-10-16)
🚀 Features
Localization
Multiple fallback locales -
fallbackLocalenow accepts an array of locales for queries and locale configs. Payload will check each locale in order until finding a value, eliminating the need for manual fallback handling. #13822await payload.findByID({
id,
collection,
locale: 'en',
fallbackLocale: ['fr', 'es'],
})
/** REST API **/
await fetch(
<span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">baseURL</span><span class="pl-kos">}</span></span>/api/<span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">collectionSlug</span><span class="pl-kos">}</span></span>?locale=en&fallbackLocale[]=fr&fallbackLocale[]=es)/** GraphQL **/
await restClient.GRAPHQL_POST({
body,
query: { locale: 'en', fallbackLocale: ['fr', 'es']},
})
/** Locale Configs **/
locales: [
{
code: 'en',
label: 'English',
fallbackLocale: ['fr', 'es'],
},
]
Admin UI
Settings menu in navigation - New
admin.components.settingsMenuconfig option adds a gear icon above the logout button. Click to open a popup menu with custom admin-level utilities and actions that don't fit into collection or global navigation. #14139Multi-Tenant Plugin
Collection access overrides - New
accessResultOverridecallback allows modifying multi-tenant access control results per operation (read, create, update, delete, readVersions, unlock). Enables custom logic like allowing shared content across tenants. #14127