v5.48.1

pascalorg/editorv5.48.1Jun 17, 2026by internal-releases[bot]

AI Summary

Focuses on billing portal integration and OpenAPI specification enhancements. The release also includes numerous bug fixes for the admin panel, media library, and database interactions.

Key Highlights

  • Billing portal integration features
  • OpenAPI spec support with gated access
  • Media library improvements (pagination & animation)
  • Admin panel security and performance fixes

New Features

  • Billing portal linking and upsell banners
  • Optional OpenAPI spec route
  • Paginated GET /api/upload/files/page endpoint
  • Node 26 support

Full Release Notes

## 5.48.1 (2026-06-17)

### 🚀 New feature

- linking to the Billing Portal ([3df113f545](https://github.com/strapi/strapi/commit/3df113f545))
- pointing Upsell Banner to Strapi Billing ([06b0c31f47](https://github.com/strapi/strapi/commit/06b0c31f47))
- add optional openapi spec route ([#26239](https://github.com/strapi/strapi/pull/26239))
- updating billing portal address ([2d3fea21ff](https://github.com/strapi/strapi/commit/2d3fea21ff))
- **openapi:** gate endpoint access with config ([#26574](https://github.com/strapi/strapi/pull/26574))
- **upload:** add paginated GET /api/upload/files/page endpoint ([#26597](https://github.com/strapi/strapi/pull/26597))

### 🔥 Bug fix

- upload returns unsigned URL on update media info ([#25195](https://github.com/strapi/strapi/pull/25195))
- widgets show error when role has no access to mainfield of ct ([#26537](https://github.com/strapi/strapi/pull/26537))
- correct IME Enter key handling in BlocksInput ([#24997](https://github.com/strapi/strapi/pull/24997))
- **admin:** return empty object for empty json body in fetch client ([#26277](https://github.com/strapi/strapi/pull/26277))
- **admin:** exclude disabled plugins from admin build ([#26448](https://github.com/strapi/strapi/pull/26448))
- **admin:** rate limit and serialize first admin registration ([#26576](https://github.com/strapi/strapi/pull/26576))
- **admin:** validate current user email updates ([#26591](https://github.com/strapi/strapi/pull/26591))
- **admin:** guard stale admin configuration ([#26625](https://github.com/strapi/strapi/pull/26625))
- **build:** build does not run install; add install-deps arg ([#26483](https://github.com/strapi/strapi/pull/26483))
- **ci:** run build:size as full command for compressed-size-action v3 ([#26556](https://github.com/strapi/strapi/pull/26556))
- **ci:** restore allowed paths-filter pin ([#26575](https://github.com/strapi/strapi/pull/26575))
- **ci:** avoid syncing CPR labels to CMS tickets ([#26648](https://github.com/strapi/strapi/pull/26648))
- **content-manager:** use ReadonlyArray for layout prop and fix Repeatable test fixture ([#26522](https://github.com/strapi/strapi/pull/26522))
- **content-manager:** raise z-index of code block language selector ([#25010](https://github.com/strapi/strapi/pull/25010), [#26324](https://github.com/strapi/strapi/pull/26324))
- **content-manager:** dedupe bulk delete document ids ([#26613](https://github.com/strapi/strapi/pull/26613))
- **content-manager:** replace sanitize-html with dompurify in Wysiwyg preview ([#26150](https://github.com/strapi/strapi/pull/26150))
- **core:** validate numeric inputs before DB unique checks ([#26101](https://github.com/strapi/strapi/pull/26101))
- **core/admin | content-manager:** combine multi-role field-level permissions ([#26055](https://github.com/strapi/strapi/pull/26055))
- **data-transfer:** skip links referencing data that was never transferred ([#26531](https://github.com/strapi/strapi/pull/26531))
- **data-transfer:** buffer push assets before invoking uploadStream ([#26086](https://github.com/strapi/strapi/pull/26086))
- **database:** restore join-table relation sort order in components ([#26553](https://github.com/strapi/strapi/pull/26553))
- **database:** avoid double finalising completed transactions ([#26122](https://github.com/strapi/strapi/pull/26122))
- **database:** move document_id secondary indexes to schema sync ([#26241](https://github.com/strapi/strapi/pull/26241))
- **strapi:** stabilize admin redux deps during upgrade ([#26249](https://github.com/strapi/strapi/pull/26249))
- **tsconfig:** remove lodash from server compilerOptions.types ([#26627](https://github.com/strapi/strapi/pull/26627))
- **upload:** folder navigation bugs in Media Library ([#26515](https://github.com/strapi/strapi/pull/26515))
- **upload:** preserve animation frames in GIF and WebP images ([#26126](https://github.com/strapi/strapi/pull/26126))
- **users-permissions:** support documentId user relations ([#26607](https://github.com/strapi/strapi/pull/26607))
- **utils:** ignore empty sort when building orderBy ([#26427](https://github.com/strapi/strapi/pull/26427))

### 📚 Documentation Changes

- add CLAUDE.md alias and link PR template from AGENTS.md ([#26251](https://github.com/strapi/strapi/pull/26251))
- fix typos across contributor docs ([#26590](https://github.com/strapi/strapi/pull/26590))
- fix broken relative cross-doc links ([#26601](https://github.com/strapi/strapi/pull/26601))
- deprecate Node 20 in documentation ([#26623](https://github.com/strapi/strapi/pull/26623))
- **openapi:** add contributor documentation ([#26410](https://github.com/strapi/strapi/pull/26410))

### ⚙️ Chore

- remove experimental-dev example app ([#26552](https://github.com/strapi/strapi/pull/26552))
- update .gitignore for AI tooling directories ([#26526](https://github.com/strapi/strapi/pull/26526))
- release v5.48.0 update develop ([#26599](https://github.com/strapi/strapi/pull/26599))
- adding check for valid template on issue creation ([#26546](https://github.com/strapi/strapi/pull/26546))
- adding translations for manage subscription ([aa0b3da3eb](https://github.com/strapi/strapi/commit/aa0b3da3eb))
- getting tests to pass ([d2c06c6ca2](https://github.com/strapi/strapi/commit/d2c06c6ca2))
- ***:** support Node 26 ([#26232](https://github.com/strapi/strapi/pull/26232))
- **ai/skills:** add writing-a-skill skill ([#26428](https://github.com/strapi/strapi/pull/26428))
- **ai/skills:** add commit conventions ([#26431](https://github.com/strapi/strapi/pull/26431))
- **ci:** drop Node 20 from test workflow matrices ([6f1a21c528](https://github.com/strapi/strapi/commit/6f1a21c528))
- **ci:** drop Node 20 from test workflow matrices ([#26609](https://github.com/strapi/strapi/pull/26609))
- **core/strapi:** dynamically import browserslist-to-esbuild ([#25507](https://github.com/strapi/strapi/pull/25507))
- **data-transfer:** move types into src so they are type-checked ([#26352](https://github.com/strapi/strapi/pull/26352))
- **deps:** bump axios from 1.16.1 to 1.17.0 ([#26539](https://github.com/strapi/strapi/pull/26539))
- **deps:** bump the testing-library group across 1 directory with 2 updates ([#26506](https://github.com/strapi/strapi/pull/26506))
- **deps:** bump actions/setup-node from 4 to 6 ([#26496](https://github.com/strapi/strapi/pull/26496))
- **deps:** bump actions/stale from 10 to 10.2.0 ([#26497](https://github.com/strapi/strapi/pull/26497))
- **deps:** bump preactjs/compressed-size-action from 2 to 3 ([#26498](https://github.com/strapi/strapi/pull/26498))
- **deps:** resolve vulnerable transitive deps via lockfile dedupe and resolutions ([#26540](https://github.com/strapi/strapi/pull/26540))
- **deps:** bump cheerio from 1.0.0 to 1.2.0 ([#26569](https://github.com/strapi/strapi/pull/26569))
- **deps:** bump dorny/paths-filter from 3.0.3 to 4.0.1 ([#26566](https://github.com/strapi/strapi/pull/26566))
- **deps:** bump actions/download-artifact from 4.3.0 to 8.0.1 ([#26564](https://github.com/strapi/strapi/pull/26564))
- **deps:** bump follow-redirects from 1.15.6 to 1.16.0 ([#26580](https://github.com/strapi/strapi/pull/26580))
- **deps:** bump shell-quote from 1.8.1 to 1.8.4 ([#26585](https://github.com/strapi/strapi/pull/26585))
- **deps:** bump @vitejs/plugin-react-swc ([#26567](https://github.com/strapi/strapi/pull/26567))
- **deps:** bump the rollup group across 1 directory with 3 updates ([#26505](https://github.com/strapi/strapi/pull/26505))
- **deps:** bump nrwl/nx-set-shas from 4 to 5 ([#26565](https://github.com/strapi/strapi/pull/26565))
- **deps:** bump anthropics/claude-code-action from 1 to 1.0.123 ([#26640](https://github.com/strapi/strapi/pull/26640))
- **deps:** bump trunk-io/analytics-uploader from 1.15.0 to 2.0.9 ([#26638](https://github.com/strapi/strapi/pull/26638))
- **deps:** bump rollup from 4.60.1 to 4.60.4 in the rollup group across 1 directory ([#26641](https://github.com/strapi/strapi/pull/26641))
- **deps:** bump open from 8.4.0 to 8.4.2 ([#26643](https://github.com/strapi/strapi/pull/26643))
- **deps:** bump stream-json and @types/stream-json ([#26645](https://github.com/strapi/strapi/pull/26645))
- **deps:** bump koa-helmet from 7.0.2 to 7.1.0 ([#26642](https://github.com/strapi/strapi/pull/26642))
- **deps:** bump axios from 1.17.0 to 1.18.0 ([#26647](https://github.com/strapi/strapi/pull/26647))
- **deps-dev:** bump the eslint group across 1 directory with 10 updates ([#26500](https://github.com/strapi/strapi/pull/26500))
- **deps-dev:** bump @types/delegates from 1.0.0 to 1.0.3 ([#26570](https://github.com/strapi/strapi/pull/26570))
- **deps-dev:** bump the nx group across 1 directory with 2 updates ([#26502](https://github.com/strapi/strapi/pull/26502))
- **deps-dev:** bump @types/webpack-hot-middleware from 2.25.9 to 2.25.12 ([#26568](https://github.com/strapi/strapi/pull/26568))
- **deps-dev:** bump @types/invariant from 2.2.36 to 2.2.37 ([#26644](https://github.com/strapi/strapi/pull/26644))
- **repo:** skip change freeze ownership check when freeze disabled ([#26474](https://github.com/strapi/strapi/pull/26474))

### 💅 Enhancement

- **admin:** hide deploy-now widget in production ([#26660](https://github.com/strapi/strapi/pull/26660))
- **core/core:** rounded thin borders for startup banner ([#26273](https://github.com/strapi/strapi/pull/26273))
- **graphql:** use discriminated unions instead of unsafe type casting ([#25913](https://github.com/strapi/strapi/pull/25913))
- **upgrade:** unhide and document upgrade to command ([#26446](https://github.com/strapi/strapi/pull/26446))

### 🚨 Security

- **deps:** patch uuid (GHSA-w5hq-g745-h8pq) and qs DoS advisories ([9aef801f35](https://github.com/strapi/strapi/commit/9aef801f35))
- **deps:** scope uuid/qs resolutions to affected descriptors ([38b6831652](https://github.com/strapi/strapi/commit/38b6831652))

### ❤️ Thank You

- Adrien L @Adzouz
- Andrei L @unrevised6419
- Andrei Varapayeu @thisavoropaev
- Arav Menon @Arav-Menon
- Aurélien GEORGET
- Ayoub Hidri @ayhid
- Bassel Kanso @Bassel17
- Ben Irvin
- Dante Calderon @dantehemerson
- DMehaffy
- Giulio Montagner @giu1io
- Jamie Howard @jhoward1994
- Jasleen Kaur @Jasleen-Kaur96
- Maksim Zhukau @MaksZhukov
- Masamune Utsunomiya @masamunet
- mathildeleg @mathildeleg
- nclsndr
- Nico André
- Pierre Levavasseur @plevavas
- Simon Norris @cache-your-dreams
- Yazan Amer Abu Obaideh @yazan-abu-obaideh
- Ziyi @butcherZ