Basic Setup for React Router
Learn how to set up NextStep in your React Router project. This guide will walk you through the basic configuration needed to get started.
Wrap your application in NextStepProvider
and NextStepReact
, then supply the steps
array to NextStep. See the Tour Steps page for more information about creating steps.
React Router Setup
//app/root.tsx
import { NextStepProvider, NextStepReact } from 'nextstepjs';
import { useReactRouterAdapter } from 'nextstepjs/adapters/react-router';
import { Outlet } from 'react-router-dom';
const steps = [
{
tour: "mainTour",
steps: [
{
icon: "👋",
title: "Welcome",
content: "Let's get started with NextStep!",
selector: "#step1",
side: "right",
showControls: true,
showSkip: true
},
// More steps...
]
}
];
export default function App() {
return (
<NextStepProvider>
<NextStepReact navigationAdapter={useReactRouterAdapter} steps={steps}>
<Outlet />
</NextStepReact>
</NextStepProvider>
);
}
Vite Configuration
⚠️ Important: If you're using Vite with React Router, you need to configure Vite to handle nextstepjs properly and mock Next.js navigation.
1. Create Next.js Navigation Mock
Create a mock file at src/mocks/next-navigation.ts
:
// src/mocks/next-navigation.ts
// Mock for Next.js navigation to prevent build errors with nextstepjs
// This file is used to mock Next.js imports when using nextstepjs in a Vite app
export const useRouter = () => {
return {
push: () => {},
replace: () => {},
prefetch: () => {},
back: () => {},
forward: () => {},
refresh: () => {},
};
};
export const usePathname = () => {
return '';
};
export const useSearchParams = () => {
return new URLSearchParams();
};
export const useParams = () => {
return {};
};
2. Update vite.config.ts
// vite.config.ts
import path from 'node:path';
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [react()],
resolve: {
alias: [
// Mock Next.js navigation imports that nextstepjs might try to access
{
find: 'next/navigation',
replacement: path.join(process.cwd(), 'src/mocks/next-navigation.ts'),
},
]
},
ssr: {
noExternal: ['nextstepjs', 'motion']
}
});
Next Steps
Now that you have set up NextStepjs in your React Router project, you can explore more features: