Skip to content

Conversation

@alexjoverm
Copy link
Contributor

@alexjoverm alexjoverm commented Jan 13, 2026

Note

Nuxt 4 migration and ESM updates

  • Bumps @storyblok/nuxt to 9.0.0, switches to ESM-only (exports types to types.d.mts, main/import to module.mjs), and updates peer/dev dependencies to Nuxt ^4.2.2.
  • Cleans up playgrounds: removes playground-e2e, migrates to app/ structure, updates nuxt.config.ts (new compatibilityDate), adjusts scripts/ports, and minor page fixes (error guards, #components import, bridge options usage).

Composable improvements (src/runtime/composables/useAsyncStoryblok.ts)

  • Adds default bridge config and mirrors api.resolve_relations/resolve_links to bridge (resolveRelations/resolveLinks).
  • Adapts types for Nuxt 3/4 (data and error can be null/undefined) and updates dedupe union.
  • Uses watch-based bridge registration and shallowRef-safe state replacement for live updates.

Misc

  • Updates ESLint ignore paths.

Written by Cursor Bugbot for commit 5296c67. This will update automatically on new commits. Configure here.

Updates the ref to work both with deep and shallow ref, and updates
dedup values

Breaking change: new default dir is `~/app/storyblok`
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is being reviewed by Cursor Bugbot

Details

Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

Copy link
Contributor

@maoberlehner maoberlehner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. As we've discussed, you might consider making it backward compatible but I think a new major is okay too in this case.


<template>
<main v-editable class="container mx-auto pt-24">
<h2>{{ story?.content.title }}</h2>
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incomplete optional chaining throws on undefined story

Medium Severity

The expression story?.content.title will throw a TypeError when story is undefined (e.g., on API error). The optional chaining ?. only protects the access to content, but if story is undefined, story?.content evaluates to undefined, and then accessing .title on undefined throws. Unlike other pages in the playground that use v-if="story" guards, this template directly renders the expression without protection. The pattern needs an additional ?. before title to be null-safe.

Fix in Cursor Fix in Web

@pkg-pr-new
Copy link

pkg-pr-new bot commented Jan 13, 2026

Open in StackBlitz

@storyblok/astro

npm i https://pkg.pr.new/@storyblok/astro@407

storyblok

npm i https://pkg.pr.new/storyblok@407

@storyblok/eslint-config

npm i https://pkg.pr.new/@storyblok/eslint-config@407

@storyblok/js

npm i https://pkg.pr.new/@storyblok/js@407

storyblok-js-client

npm i https://pkg.pr.new/storyblok-js-client@407

@storyblok/management-api-client

npm i https://pkg.pr.new/@storyblok/management-api-client@407

@storyblok/nuxt

npm i https://pkg.pr.new/@storyblok/nuxt@407

@storyblok/react

npm i https://pkg.pr.new/@storyblok/react@407

@storyblok/region-helper

npm i https://pkg.pr.new/@storyblok/region-helper@407

@storyblok/richtext

npm i https://pkg.pr.new/@storyblok/richtext@407

@storyblok/svelte

npm i https://pkg.pr.new/@storyblok/svelte@407

@storyblok/vue

npm i https://pkg.pr.new/@storyblok/vue@407

commit: 5296c67

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants