Getting Started
Customizable, fast, and lightweight drop-in support for
Next.js
on native platforms
Quick start
Create a new Pilot.js app via our interactive CLI:
Terminal
npx create-pilot-app
This will guide you through a short customization process and create a fully working template.
Adding to an existing project
Install the package:
Terminal
npm install @waveplay/pilot
We assume you already have a working project with Expo and Next.js. If not, follow their respective guides:
Expo - Get started
Create a new Expo project
Next.js - Getting Started
Create a new Next.js project
Next.js - examples/with-expo
Example Next.js project with Expo
You can either let Pilot.js
manage your app's entry
or you can use the <PilotArea> component directly. The latter is useful if you need additional customization.
A) Managed AppEntry
Edit your app.json to include the following:
app.json
{
  "expo": {
    "entryPoint": "node_modules/@waveplay/pilot/AppEntry.js"
  }
}
B) Custom AppEntry
Update your App.js entry component to render PilotArea.
App.js
import { loadEnv } from '@waveplay/pilot/env'
import { PilotArea } from '@waveplay/pilot/ui'

// Loads public environment variables
loadEnv()

const App = () => {
  // ... your code

  return (
    <PilotArea/>
  )
}
export default App
You're now ready to use Pilot.js! Use it like you would use Next.js.
Usage
Pilot.js relies on the built-in CLI to detect pages and routes.
Build
The build command will prepare your project. You must run this before you can use the start command or routing may not work.
Terminal
pilot build
Development
The dev command will start a development server on native + web.
Terminal
pilot dev
Good to know: Running this command will... 1. Start a Next.js development server 2. Build Pilot.js & link to your local Next.js server 3. Start an Expo development server
Basic usage
You can use Pilot.js the same way as Next.js, except it now also works on React Native and Expo projects!
SomeComponent.tsx
// const router = useRouter();
const pilot = usePilot();

// router.push('/dashboard');
pilot.fly('/dashboard'); // or pilot.push('/dashboard');
Credits
This project was originally developed as an internal router for
WavePlay
.
License
The MIT License.
Supported Features
You are viewing the docs for Pilot.js
Next.js docs →
PILOT.JS
Showcase
Docs
Blog
GitHub