# Encapsulation & Scope — Fastify

Source: https://www.geekswithgeeks.com/en/fastify/ff-encapsulation

> Keep plugins, routes, and hooks properly scoped to avoid conflicts.

## Plugin scope isolation

Plugins registered inside another plugin are scoped to that plugin. Decorators, hooks, and routes don't leak to sibling plugins.

## Nested plugins

Create sub-apps by registering a plugin that registers child plugins.

```javascript
// routes/v1.js
export default async function v1Routes(fastify, opts) {
  fastify.get('/health', async () => ({ version: '1' }));
}

// routes/v2.js
export default async function v2Routes(fastify, opts) {
  fastify.get('/health', async () => ({ version: '2' }));
}

// server.js
fastify.register(v1Routes, { prefix: '/v1' });
fastify.register(v2Routes, { prefix: '/v2' });
// GET /v1/health -> { version: '1' }
// GET /v2/health -> { version: '2' }
```
