Skip to content

Plugins

Plugins run during app rendering and can provide values to the Resux app instance.

Create a plugin

ts
// plugins/app.ts
export default defineResuxPlugin((resuxApp) => {
  resuxApp.provide('version', '0.2.23')
})

Read the app instance

vue
<script setup lang="ts">
const app = useResuxApp()
const version = app.provides.version
</script>

<template>
  <small>Version: {{ version }}</small>
</template>

Plugin context

A plugin receives a ResuxAppLike object:

ts
type ResuxAppLike = {
  route: RouteContext
  payload: ResuxPayload
  $config: RuntimeConfig
  provides: Record<string, unknown>
  provide(key: string, value: unknown): void
}

Plugin modes

The compiler recognizes plugins from plugins/. The build manifest records a plugin mode of all, server, or client. Keep plugin side effects explicit and test them with resux inspect --json.

Good plugin use cases

  • Provide simple app-wide values.
  • Initialize serializable services.
  • Read public runtime config.
  • Add tiny helpers that pages can access through useResuxApp().

Avoid hiding large client-only runtime behavior in plugins. Use Vue islands for complex browser widgets.

Stable v1 core docs for Resux, with experimental areas clearly marked.