NextJS
Appear offers two methods to integrate with NextJS based on serverless or self-hosted use cases.
Hosted on Vercel and other serverless platforms
Self-hosted as service
Installation guide
1
2
Initialise Appear in your app startup
export const register = async () => {
if (process.env.NEXT_RUNTIME === "nodejs") {
// notice import from /nextjs entrypoint which comes with extra defaults
const { registerAppear } = await import("@appear.sh/introspector/nextjs")
registerAppear({
apiKey: process.env.APPEAR_REPORTING_KEY,
environment: process.env.NODE_ENV,
serviceName: "User Service",
})
}
}import { defaultInterceptFilter } from "@appear.sh/introspector/nextjs"Configuration
export interface AppearConfig {
/**
* API key used for reporting
* you can obtain your reporting key in keys section in Appear settings
* reporting keys have only the permission to report schema and can't read any data
* you can use any method to inject the key, in examples we used env variable
*/
apiKey: string
/**
* Environment where the report is sent from
* it can be any string that identifies environment data are reported from.
* Often used as "production" or "staging", however if you're using some form of ephemeral environment feel free to use its identifier
*/
environment: string
/**
* Name of current service
* used to improve accuracy of matching, useful when you're not using descriptive host names in incoming requests
* for example if you're using directly IP addresses
*
* @optional
* @default hostname if not provided the service name will be detected from hostname
*/
serviceName?: string
/**
* A flag you can use to disable introspector completely
* useful if you don't want to report in certain environments
*
* @default true
*/
enabled?: boolean
/**
* Enable debug mode which will output detailed debug information to the console,
* including all reported traffic, validation errors, and other diagnostic data.
* Useful for troubleshooting and understanding what data is being sent to Appear.
*
* @default false
*/
debug?: boolean
/** configuration of how often and where data are reported */
reporting?: {
/**
* endpoint reports are sent to, useful if you want to audit what data are reported
* simple audit can be done by navigating to https://public.requestbin.com/r which will give you endpoint url you can paste here and see in the debugger all traffic
*
* @default https://api.appear.sh/v1/reports
*/
endpoint?: string
}
interception?: {
/**
* Optional function that allows to filter what request/response pair is getting analyzed and reported.
* You can reuse default filter by importing it from `import { defaultInterceptFilter } from "@appear.sh/introspector" and using it inside the function`
*
* @default (req, req, config) => req.destination === "" && !request.url.includes(config.reporting.endpoint)
*/
filter?: (
request: Request,
response: Response,
config: ResolvedAppearConfig,
) => boolean
}
}Example of custom interception filter
Last updated