Integrations
Next.js Integration
Integrate Ask0's AI search and chat into your Next.js app with React component or script tag. Full TypeScript support.
Integrate Ask0 into your Next.js application with support for both App Router and Pages Router.
App Router (Next.js 13+)
Root Layout Integration
import Script from 'next/script';
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="en">
<body>
{children}
<Script
src="https://assets.ask0.ai/scripts/ask.js"
strategy="afterInteractive"
data-project-id={process.env.NEXT_PUBLIC_ASK0_PROJECT_ID}
data-position="bottom-right"
data-theme="auto"
/>
</body>
</html>
);
}Client Component
'use client';
import { useEffect } from 'react';
import { useTheme } from 'next-themes';
export function Ask0Widget() {
const { theme } = useTheme();
useEffect(() => {
if (window.ask0 && theme) {
window.ask0.setTheme(theme as 'light' | 'dark');
}
}, [theme]);
return null;
}Pages Router
_app.tsx Integration
import Script from 'next/script';
import type { AppProps } from 'next/app';
export default function App({ Component, pageProps }: AppProps) {
return (
<>
<Component {...pageProps} />
<Script
src="https://assets.ask0.ai/scripts/ask.js"
strategy="afterInteractive"
data-project-id={process.env.NEXT_PUBLIC_ASK0_PROJECT_ID}
/>
</>
);
}User Identification
With NextAuth
import { useSession } from 'next-auth/react';
import { useEffect } from 'react';
export function Ask0UserSync() {
const { data: session } = useSession();
useEffect(() => {
if (session?.user && window.ask0) {
window.ask0.identify({
id: session.user.id,
email: session.user.email,
name: session.user.name,
});
}
}, [session]);
return null;
}API Routes
Create API Endpoint
import { NextRequest, NextResponse } from 'next/server';
export async function POST(request: NextRequest) {
const body = await request.json();
// Handle Ask0 webhook or API calls
return NextResponse.json({ success: true });
}Server Components
import { Ask0TriggerButton } from '@/components/ask0-trigger';
export default function SupportPage() {
return (
<div>
<h1>Support</h1>
<p>Need help? Click below:</p>
<Ask0TriggerButton />
</div>
);
}Environment Variables
NEXT_PUBLIC_ASK0_PROJECT_ID=your_project_idMiddleware Integration
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
export function middleware(request: NextRequest) {
const response = NextResponse.next();
// Add Ask0 config to response headers if needed
response.headers.set('x-ask0-enabled', 'true');
return response;
}Next.js Tips:
- Use Script component with
strategy="afterInteractive" - Store project ID in environment variables
- Sync theme with next-themes if using
- Identify users with NextAuth session
- Use client components for interactive features