Skip to content

Commit ad715bf

Browse files
perf: preconnect to Plausible API host (fixes #42)
1 parent 80bc815 commit ad715bf

File tree

7 files changed

+55
-25
lines changed

7 files changed

+55
-25
lines changed

playground/app.vue

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,28 @@
11
<script setup lang="ts">
2-
import { navigateTo, useRuntimeConfig, useTrackEvent, useTrackPageview } from '#imports'
2+
import { navigateTo, useHead, useRuntimeConfig, useTrackEvent, useTrackPageview } from '#imports'
33
44
const { plausible } = useRuntimeConfig().public
55
6+
if (import.meta.server) {
7+
useHead({
8+
title: '@nuxtjs/plausible',
9+
link: [
10+
{
11+
rel: 'stylesheet',
12+
href: 'https://cdn.jsdelivr.net/npm/@exampledev/[email protected]/new.min.css',
13+
},
14+
],
15+
})
16+
}
17+
618
function trackEvent() {
719
useTrackEvent('playground', {
8-
props: { action: 'click' },
9-
callback: () => console.log('Event tracked'),
20+
props: {
21+
action: 'click',
22+
},
23+
callback() {
24+
console.log('Event tracked')
25+
},
1026
})
1127
}
1228
@@ -20,14 +36,6 @@ function pushRoute() {
2036
</script>
2137

2238
<template>
23-
<Head>
24-
<Title>@nuxtjs/plausible</Title>
25-
<Link
26-
rel="stylesheet"
27-
href="https://cdn.jsdelivr.net/npm/@exampledev/[email protected]/new.min.css"
28-
/>
29-
</Head>
30-
3139
<header>
3240
<h1>@nuxtjs/plausible</h1>
3341
</header>

playground/nuxt.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import NuxtPlausible from '../src/module'
33
export default defineNuxtConfig({
44
modules: [NuxtPlausible],
55

6-
compatibilityDate: '2024-04-03',
6+
compatibilityDate: '2025-09-01',
77

88
plausible: {
99
// Enable tracking events on localhost

src/module.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,5 +208,14 @@ export default defineNuxtModule<ModuleOptions>({
208208
order: 2,
209209
})
210210
}
211+
212+
// Add preconnect link when proxy is not used
213+
if (!options.proxy) {
214+
addPlugin({
215+
src: resolve('runtime/plugin-preconnect.client'),
216+
mode: 'client',
217+
order: -1, // Run early to add preconnect before other resources
218+
})
219+
}
211220
},
212221
})

src/runtime/plugin-auto-outbound-tracking.client.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
import type { Plausible } from '@barbapapazes/plausible-tracker'
22
import type {} from 'nuxt/app'
3-
import type { ModuleOptions } from '../module'
43
import { defineNuxtPlugin, useNuxtApp, useRuntimeConfig } from '#imports'
54
import { useAutoOutboundTracking } from '@barbapapazes/plausible-tracker/extensions/auto-outbound-tracking'
65

76
export default defineNuxtPlugin({
87
name: 'plausible:auto-outbound-tracking',
98
setup() {
10-
const options = useRuntimeConfig().public
11-
.plausible as Required<ModuleOptions>
12-
9+
const { plausible: options } = useRuntimeConfig().public
1310
const { $plausible } = useNuxtApp()
1411

1512
if (options.enabled && options.autoOutboundTracking) {

src/runtime/plugin-auto-pageviews.client.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
import type { Plausible } from '@barbapapazes/plausible-tracker'
22
import type {} from 'nuxt/app'
3-
import type { ModuleOptions } from '../module'
43
import { defineNuxtPlugin, useNuxtApp, useRuntimeConfig } from '#imports'
54
import { useAutoPageviews } from '@barbapapazes/plausible-tracker/extensions/auto-pageviews'
65

76
export default defineNuxtPlugin({
87
name: 'plausible:auto-pageviews',
98
setup() {
10-
const options = useRuntimeConfig().public
11-
.plausible as Required<ModuleOptions>
12-
9+
const { plausible: options } = useRuntimeConfig().public
1310
const { $plausible } = useNuxtApp()
1411

1512
if (options.enabled && options.autoPageviews) {
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { defineNuxtPlugin, useHead, useRuntimeConfig } from '#imports'
2+
3+
export default defineNuxtPlugin({
4+
name: 'plausible:preconnect',
5+
setup() {
6+
const { plausible: options } = useRuntimeConfig().public
7+
8+
// Add preconnect to Plausible API host for better performance
9+
// Note: This plugin is only loaded when proxy is disabled
10+
if (options.enabled && options.apiHost) {
11+
useHead({
12+
link: [
13+
{
14+
rel: 'preconnect',
15+
href: options.apiHost,
16+
},
17+
],
18+
})
19+
}
20+
},
21+
})

src/runtime/plugin.client.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
1-
import type { } from 'nuxt/app'
2-
import type { ModuleOptions } from '../module'
1+
import type {} from 'nuxt/app'
32
import { defineNuxtPlugin, useRuntimeConfig } from '#imports'
43
import { createPlausibleTracker } from '@barbapapazes/plausible-tracker'
54

65
export default defineNuxtPlugin({
76
name: 'plausible',
87
setup() {
9-
const options = useRuntimeConfig().public.plausible as Required<ModuleOptions>
8+
const { plausible: options } = useRuntimeConfig().public
109

11-
if (!options.enabled) {
10+
if (!options.enabled)
1211
return
13-
}
1412

1513
const plausible = createPlausibleTracker({
1614
...options,

0 commit comments

Comments
 (0)