
Product
Socket Firewall Now Blocks Malicious VS Code and Open VSX Extensions
Socket Firewall blocks malicious VS Code and Open VSX extensions before install, protecting developers from compromised editor marketplaces.
@logsnag/next
Advanced tools
npm install @logsnag/next
yarn add @logsnag/next
pnpm add @logsnag/next
The usage depends on whether you are using the app directory structure or the pages directory structure.
Set your token's scope to
publicin the LogSnag dashboard
App Directory:
In the app directory, you need to import the LogSnagProvider as a head element in your root layout component:
import { LogSnagProvider } from '@logsnag/next';
export default function RootLayout({
children
}: {
children: React.ReactNode;
}) {
return (
<html lang="en">
<head>
<LogSnagProvider token='<TOKEN_NAME>' project='<PROJECT_NAME>' />
{/* Other head elements */}
</head>
<body>
{/* Your layout */}
<main>{children}</main>
</body>
</html>
);
}
For setting the user id in server components, use the SetUserIdServerComponent:
import { SetUserIdServerComponent } from '@logsnag/next';
export default function Page() {
const userId: string | null = 'user-123';
return (
<>
{/* Your page content */}
<SetUserIdServerComponent userId={userId} />
</>
);
}
Pages Directory:
In the pages directory, you can wrap your app with the LogSnagProvider, similar to how you would do in a React application:
import { LogSnagProvider } from '@logsnag/next';
export default function App({ Component, pageProps }: AppProps) {
return (
<LogSnagProvider token='<TOKEN_NAME>' project='<PROJECT_NAME>'>
{/* Your app content */}
<Component {...pageProps} />
</LogSnagProvider>
);
}
The useLogSnag hook can be used across your client components and provides the following methods:
track(options: TrackOptions): Track custom events.identify(options: IdentifyOptions): Identify user traits.setUserId(userId: string | null): Set the user id for the current user. If the user is not logged in, pass null.clearUserId(): Clear the user id for the current user.setDebug(flag: boolean = true): Set debug mode for logging.Usage:
import { useLogSnag } from '@logsnag/next';
export function Component() {
// Get the hooks
const { setUserId, track, identify } = useLogSnag();
// Set the user id when a user logs in
setUserId('user-123');
// Track an event
track({
channel: "payments",
event: "New Subscription",
user_id: "user-123", // optional when set using setUserId
icon: "💰",
notify: true,
tags: {
plan: "premium",
cycle: "monthly",
trial: false
}
});
// Identify user traits (e.g., name, email, plan, etc.)
identify({
user_id: "user-123", // optional when set using setUserId
properties: {
name: "John Doe",
email: "john@doe.com",
plan: "premium",
}
});
// Rest of your component
}
These hooks have the same usage as their counterparts in the @logsnag/react package.
You can also track events directly from HTML elements using data attributes:
<button
data-event="Upgraded Plan"
data-user-id="user-123" // optional (optional when set using setUserId)
data-channel="billing" // optional (defaults to "events")
data-icon=":moneybag:" // optional
data-tag-plan="Pro" // optional
data-tag-period="Monthly" // optional
data-tag-price="9.99" // optional
>
Upgrade to Pro
</button>
In this example, when the button is clicked, an event named "Upgraded Plan" will be tracked with the specified tags.
For server-side usage, you can use LogSnag from @logsnag/next/server It behaves similarly to @logsnag/node
Use a different token for server-side usage and set its scope to
privatein the LogSnag dashboard.
import { LogSnag } from '@logsnag/next/server';
// Initialize LogSnagServer
const logsnag = new LogSnagServer({
token: '<TOKEN>',
project: '<PROJECT_NAME>',
});
// Use it in your server-side code
// Track an event
await logsnag.track({
channel: "payments",
event: "New Subscription",
user_id: "user-123",
icon: "💰",
notify: true,
tags: {
plan: "premium",
cycle: "monthly",
trial: false
}
});
// Identify a user
await logsnag.identify({
user_id: "user-123",
properties: {
name: "John Doe",
email: "john@doe.com",
plan: "premium",
}
});
// Track an insight
await logsnag.insight.track({
title: "User Count",
value: "100",
icon: "👨",
});
// Increment an insight value
await logsnag.insight.increment({
title: "User Count",
value: 1,
icon: "👨",
});
For more information about the LogSnag API, see: docs.logsnag.com
If you encounter any problems or issues, please contact us at shayan@logsnag.com
FAQs
LogSnag client for Next applications
The npm package @logsnag/next receives a total of 649 weekly downloads. As such, @logsnag/next popularity was classified as not popular.
We found that @logsnag/next demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket Firewall blocks malicious VS Code and Open VSX extensions before install, protecting developers from compromised editor marketplaces.

Research
More than 140 Mastra npm packages were compromised in a supply chain attack that used a typosquatted dependency to deliver a cross-platform infostealer during installation.

Research
/Security News
A new npm package tests AI malware scanners with prompt injection, safety-triggering comments, context flooding, and obfuscated JavaScript.