Skip to content

Nuxt SSR flicker/shifting on primevue components #4

@julianpaulozzi

Description

@julianpaulozzi

I'm evaluating the use of this module and it seems very good.
However, I have a problem with SSR that causes flickering/shifting when loading.

I can resolve this by removing the exclude from the configuration, but this causes a lot of warnings.

Follow the nuxt config:

import pkg from './package.json';
import authConfig from './auth.config';
import AppPreset from './primevue.preset';

const SERVER_BASE_URL = process.env.services__apiservice__https__0 || process.env.services__apiservice__http__0;

export const wrappedPrimeInputs: string[] = ['AutoComplete', 'CascadeSelect', 'Checkbox', 'Chip', 'ColorPicker', 'DatePicker', 'Editor', 'InputMask', 'InputNumber', 'InputOtp', 'InputText', 'Knob', 'Listbox', 'MultiSelect', 'Password', 'RadioButton', 'Rating', 'Select', 'SelectButton', 'Slider', 'Textarea', 'ToggleButton', 'ToggleSwitch', 'TreeSelect'];

export default defineNuxtConfig({

  modules: [
    '@nuxt/eslint',
    '@nuxt/fonts',
    '@nuxt/icon',
    '@nuxt/scripts',
    '@pinia/nuxt',
    '@nuxtjs/i18n',
    '@vueuse/nuxt',
    '@unocss/nuxt',
    '@sidebase/nuxt-auth',
    '@primevue/nuxt-module',
    '@sfxcode/formkit-primevue-nuxt',
    'nuxt-open-fetch',
  ],

  ssr: true,
  devtools: { enabled: true },

  css: [
    '@unocss/reset/tailwind.css',
    '@/assets/css/uno-base.css',
    'primeicons/primeicons.css',
  ],
  runtimeConfig: {
    public: {
      APP_VERSION: pkg.version,
      APP_NAME: pkg.name,
      APP_MODE: process.env?.NODE_ENV,
    },
  },

  build: {
    transpile: ['primevue', '@primeuix/themes', '@sfxcode/formkit-primevue'], // 'nuxt', 'primevue', '@sfxcode/formkit-primevue'
  },

  sourcemap: {
    client: false,
    server: false,
  },
  compatibilityDate: '2025-05-15',

  auth: authConfig,

  eslint: {
    config: {
      stylistic: {
        indent: 2,
        quotes: 'single',
        semi: true,
      },
    },
  },

  formkitPrimevue: {
    includePrimeIcons: false,
    includeStyles: true,
    installFormKit: true,
    installI18N: false,
  },

  i18n: {
    lazy: true,
    langDir: 'locales',
    defaultLocale: 'en',
    strategy: 'no_prefix',
    locales: [
      { code: 'en', file: 'en.json', name: 'English' },
      { code: 'pt-BR', file: 'pt-BR.json', name: 'Português' },
    ],
    vueI18n: '../vue-i18n.options.ts',
    bundle: {
      optimizeTranslationDirective: false,
    },
  },

  openFetch: {
    disableNuxtPlugin: true,
    clients: {
      surveyApi: {
        schema: './openapi/feed-api-v1.json',
        baseURL: `${SERVER_BASE_URL}/`,
      },
    },
  },

  primevue: {
    autoImport: true,
    options: {
      theme: {
        preset: AppPreset,
        options: {
          darkModeSelector: '.dark',
        },
      },
      ripple: true,
    },
    components: {
      // Remove this resolve primevue components ssr flicker/shifting issue.
      // but it causes many warnings like [Vue warn]: Component "AutoComplete" has already been registered in target app.
      exclude: [...wrappedPrimeInputs, 'Button', 'Form', 'FormField', 'Chart'],
    },
  },
});

All dependencies were installed directly due to pnpm issues

"nuxt": "^3.17.5"
"@primevue/nuxt-module": "4.3.5"
"@formkit/addons": "^1.6.9"
"@formkit/core": "^1.6.9"
"@formkit/i18n": "^1.6.9"
"@formkit/nuxt": "^1.6.9"
"@formkit/vue": "^1.6.9"
"@primeuix/themes": "^1.1.1"
"@primevue/forms": "^4.3.5"
"@sfxcode/formkit-primevue": "^2.9.5"
"@sfxcode/formkit-primevue-nuxt": "1.3.8"

Any suggestions to solve this?
Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions