Fast and low overhead web framework, for Node.js | Fastify (2024)

Fast and low overhead web framework, for Node.js | Fastify (1)

Fast and low overhead web framework, for Node.js

An efficient server implies a lower cost of the infrastructure, a better responsiveness under load and happy users. How can you efficiently handle the resources of your server, knowing that you are serving the highest number of requests possible, without sacrificing security validations and handy development?

Enter Fastify. Fastify is a web framework highly focused on providing the best developer experience with the least overhead and a powerful plugin architecture. It is inspired by Hapi and Express and as far as we know, it is one of the fastest web frameworks in town.

Fastify is proudly powering a large ecosystem of organisations and products out there.

Sponsors

Would you like to sponsor Fastify financially? Support us on GitHub or Open Collective.

  • Fast and low overhead web framework, for Node.js | Fastify (2)
  • Fast and low overhead web framework, for Node.js | Fastify (3)

Using

Do you want your organisation to be featured here?

  • Fast and low overhead web framework, for Node.js | Fastify (4)
  • Fast and low overhead web framework, for Node.js | Fastify (5)
  • Fast and low overhead web framework, for Node.js | Fastify (6)
  • Fast and low overhead web framework, for Node.js | Fastify (7)
  • Fast and low overhead web framework, for Node.js | Fastify (8)
  • Fast and low overhead web framework, for Node.js | Fastify (9)
  • Fast and low overhead web framework, for Node.js | Fastify (10)
  • Fast and low overhead web framework, for Node.js | Fastify (11)

... and many more!

These are the main features and principles on which Fastify has been built:

  • Highly performant: as far as we know, Fastify is one of the fastest web frameworks in town, depending on the code complexity we can serve up to 30 thousand requests per second.
  • Extensible: Fastify is fully extensible via its hooks, plugins and decorators.
  • Schema based: even if it is not mandatory we recommend to use JSON Schema to validate your routes and serialize your outputs, internally Fastify compiles the schema in a highly performant function.
  • Logging: logs are extremely important but are costly; we chose the best logger to almost remove this cost, Pino!
  • Developer friendly: the framework is built to be very expressive and to help developers in their daily use, without sacrificing performance and security.
  • TypeScript ready: we work hard to maintain a TypeScript type declaration file so we can support the growing TypeScript community.

Get Fastify with NPM:

npm install fastify

Then create server.js and add the following content:

  • ESM
  • CJS
// Import the framework and instantiate it
import Fastify from 'fastify'
const fastify = Fastify({
logger: true
})

// Declare a route
fastify.get('/', async function handler (request, reply) {
return { hello: 'world' }
})

// Run the server!
try {
await fastify.listen({ port: 3000 })
} catch (err) {
fastify.log.error(err)
process.exit(1)
}

Finally, launch the server with:

node server

and test it with:

curl http://localhost:3000

Using CLI

Get the fastify-cli to create a new scaffolding project:

npm install --global fastify-cli
fastify generate myproject

Request/Response validation and hooks

Fastify can do much more than this. For example, you can easily provide input and output validation using JSON Schema and perform specific operations before the handler is executed:

  • ESM
  • CJS
import Fastify from 'fastify'
const fastify = Fastify({
logger: true
})

fastify.route({
method: 'GET',
url: '/',
schema: {
// request needs to have a querystring with a `name` parameter
querystring: {
type: 'object',
properties: {
name: { type: 'string'}
},
required: ['name'],
},
// the response needs to be an object with an `hello` property of type 'string'
response: {
200: {
type: 'object',
properties: {
hello: { type: 'string' }
}
}
}
},
// this function is executed for every request before the handler is executed
preHandler: async (request, reply) => {
// E.g. check authentication
},
handler: async (request, reply) => {
return { hello: 'world' }
}
})

try {
await fastify.listen({ port: 3000 })
} catch (err) {
fastify.log.error(err)
process.exit(1)
}

TypeScript Support

Fastify is shipped with a typings file, but you may need to install @types/node, depending on the Node.js version you are using.
The following example creates a http server.
We pass the relevant typings for our http version used. By passing types we get correctly typed access to the underlying http objects in routes.
If using http2 we would pass <http2.Http2Server, http2.Http2ServerRequest, http2.Http2ServerResponse>.
For https pass http2.Http2SecureServer or http.SecureServer instead of Server.
This ensures within the server handler we also get http.ServerResponse with correct typings on reply.res.

  • TypeScript
import Fastify, { FastifyInstance, RouteShorthandOptions } from 'fastify'
import { Server, IncomingMessage, ServerResponse } from 'http'

const server: FastifyInstance = Fastify({})

const opts: RouteShorthandOptions = {
schema: {
response: {
200: {
type: 'object',
properties: {
pong: {
type: 'string'
}
}
}
}
}
}

server.get('/ping', opts, async (request, reply) => {
return { pong: 'it worked!' }
})

const start = async () => {
try {
await server.listen({ port: 3000 })

const address = server.server.address()
const port = typeof address === 'string' ? address : address?.port

} catch (err) {
server.log.error(err)
process.exit(1)
}
}

start()

Visit the Documentation to learn more about all the features that Fastify has to offer.

Leveraging our experience with Node.js performance, Fastify has been built from the ground up to be as fast as possible. Have a look at our benchmarks section to compare Fastify performance to other common web frameworks.

Check out our benchmarks

Fastify has an ever-growing ecosystem of plugins. Probably there is already a plugin for your favourite database or template language. Have a look at the Ecosystem page to navigate through the currently available plugins. Can't you find the plugin you are looking for? No problem, it's very easy to write one!

Explore 296 plugins

In alphabetical order

Lead Maintainers

Fast and low overhead web framework, for Node.js | Fastify (12)

Matteo Collina

Fast and low overhead web framework, for Node.js | Fastify (13)

Tomas Della Vedova

Fast and low overhead web framework, for Node.js | Fastify (14)

Manuel Spigolon

Fast and low overhead web framework, for Node.js | Fastify (15)

James Sumners

Collaborators

Fast and low overhead web framework, for Node.js | Fastify (16)

Aras Abbasi

Fast and low overhead web framework, for Node.js | Fastify (17)

Tommaso Allevi

Fast and low overhead web framework, for Node.js | Fastify (18)

Ayoub El Khattabi

Fast and low overhead web framework, for Node.js | Fastify (20)

Dan Castilo

Fast and low overhead web framework, for Node.js | Fastify (21)

Gürgün Dayıoğlu

Fast and low overhead web framework, for Node.js | Fastify (22)

Dustin Deus

Fast and low overhead web framework, for Node.js | Fastify (23)

Carlos Fuentes

Fast and low overhead web framework, for Node.js | Fastify (24)

Rafael Gonzaga

Fast and low overhead web framework, for Node.js | Fastify (25)

Jean Michelet

Fast and low overhead web framework, for Node.js | Fastify (26)

Vincent Le Goff

Fast and low overhead web framework, for Node.js | Fastify (27)

Luciano Mammino

Fast and low overhead web framework, for Node.js | Fastify (28)

Salman Mitha

Fast and low overhead web framework, for Node.js | Fastify (29)

Igor Savin

Fast and low overhead web framework, for Node.js | Fastify (30)

Evan Shortiss

Fast and low overhead web framework, for Node.js | Fastify (31)

Maksim Sinik

Fast and low overhead web framework, for Node.js | Fastify (32)

Frazer Smith

Past Collaborators

Fast and low overhead web framework, for Node.js | Fastify (33)

Ethan Arrowood

Fast and low overhead web framework, for Node.js | Fastify (34)

Çağatay Çalı

Fast and low overhead web framework, for Node.js | Fastify (35)

Cemre Mengu

Fast and low overhead web framework, for Node.js | Fastify (36)

Trivikram Kamat

Fast and low overhead web framework, for Node.js | Fastify (37)

Nathan Woltman

This project is kindly sponsored by:

Past Sponsors:

Also thanks to:

We are an At Large project at the OpenJS Foundation

Fast and low overhead web framework, for Node.js | Fastify (38)


Fast and low overhead web framework, for Node.js | Fastify (2024)

FAQs

Which is the fastest NodeJS framework? ›

Express.

js is a Node. js web application platform that is simple and flexible and comes with many features for making web and mobile apps. Its API is easy to use and understand for handling HTTP calls, routing, middleware, and rendering views. Because it is fast, easy to use, and scalable, Express.

What is the simplest framework for NodeJS? ›

Express is the most popular and minimalistic web framework for NodeJS. Express is designed to simplify the backend application development with a robust set of features including routing, middleware, error handling, and templating.

What are the disadvantages of fastify? ›

Disadvantages of Fastify

Being a relatively newer web framework, Fastify may have a smaller community compared to more established frameworks. This can result in limited availability of community-developed plugins, extensions, and community-driven support resources.

What is the fastest JavaScript web server? ›

Bunzer - the fastest javascript server
FrameworkAveragePost JSON
bunzer (bun)298,366.237262,775.6
uws (node)259,184.253202,585.98
bun (bun)217,784.367197,963.3
elysia (bun)215,080.713189,568.83
23 more rows

Which web framework is fastest? ›

Express Js

Features like routing, debugging and fast server-side programing have not only proved Express to be the best framework for backend but also the favorite of developers. It provides exceptional performance, is easy to learn and offers minimalistic functionalities.

Is NodeJS is fast enough? ›

Node. js is very efficient with real-time applications, as it facilitates handling multiple client requests, enables sharing and reusing packages of library code, and the data sync between the client and server happens very fast. Some examples of projects that are well-suited to the use of Node.

Why is Fastify not popular? ›

Cons of Fastify: Fastify is not as easy to learn and use as Express, making it less suitable for beginners. It has a steeper learning curve due to its focus on performance and scalability. Fastify does not provide built-in support for templating engines, making it less suitable for building dynamic web pages.

Should I use NestJS or fastify? ›

Performance Overhead: Due to its extensive feature set and abstractions, NestJS may not match the performance of more lightweight frameworks like Fastify. Complexity: The extensive feature set and opinionated structure can lead to a steeper learning curve for beginners or those coming from other frameworks.

Is Fastify better than Express? ›

If you prioritize performance and scalability, Fastify is the clear winner. However, if ease of use and a mature ecosystem are more important, Express might be the better choice. Consider your project's specific needs to make the best decision.

What is the fastest JavaScript framework? ›

After evaluating these frameworks against our defined criteria, Svelte emerges as the fastest JavaScript framework in many scenarios, particularly in terms of update performance and bundle size.

Is Fast API faster than node JS? ›

When it comes to speed, FastAPI has an advantage over Node. js. This is due to its use of the ASGI server, specifically designed for web applications, and provides superior performance compared to traditional web servers like Nginx or Apache.

Which browser runs JavaScript the fastest? ›

If you look at actual benchmarks (there are many out there) it seems like Chrome, FF 3. x, and Safari are about even in terms of Javascript performance, IE8 lags just a bit behind, and IE7 quite a bit further behind (although, IMO, IE7 is still fast enough for most things).

What is the fastest version of node? ›

Therefore, it's correct to state that Node. js 20 is the fastest version of Node.

What is the fastest logger for NodeJS? ›

Pino. Pino is a fast and lightweight Node. js logging library focusing on high performance and minimal overhead. It produces structured log messages in a JSON format, making it suitable for apps that need to log a significant amount of data with low overhead.

Which version of NodeJS is best? ›

The LTS version of Node. js is the version that the Node. js Foundation considers to be highly stable, mature, and suitable for most production environments. This version is intended to provide long-term support, with important bug fixes and security updates being regularly released.

Top Articles
10 Best Performing Growth Stocks in January & February 2024
10 Best Multibagger Stocks to Buy Now
English Bulldog Puppies For Sale Under 1000 In Florida
Katie Pavlich Bikini Photos
Gamevault Agent
Pieology Nutrition Calculator Mobile
Hocus Pocus Showtimes Near Harkins Theatres Yuma Palms 14
Hendersonville (Tennessee) – Travel guide at Wikivoyage
Compare the Samsung Galaxy S24 - 256GB - Cobalt Violet vs Apple iPhone 16 Pro - 128GB - Desert Titanium | AT&T
Vardis Olive Garden (Georgioupolis, Kreta) ✈️ inkl. Flug buchen
Craigslist Dog Kennels For Sale
Things To Do In Atlanta Tomorrow Night
Non Sequitur
Crossword Nexus Solver
How To Cut Eelgrass Grounded
Pac Man Deviantart
Alexander Funeral Home Gallatin Obituaries
Energy Healing Conference Utah
Geometry Review Quiz 5 Answer Key
Hobby Stores Near Me Now
Icivics The Electoral Process Answer Key
Allybearloves
Bible Gateway passage: Revelation 3 - New Living Translation
Yisd Home Access Center
Pearson Correlation Coefficient
Home
Shadbase Get Out Of Jail
Gina Wilson Angle Addition Postulate
Celina Powell Lil Meech Video: A Controversial Encounter Shakes Social Media - Video Reddit Trend
Walmart Pharmacy Near Me Open
Marquette Gas Prices
A Christmas Horse - Alison Senxation
Ou Football Brainiacs
Access a Shared Resource | Computing for Arts + Sciences
Vera Bradley Factory Outlet Sunbury Products
Pixel Combat Unblocked
Movies - EPIC Theatres
Cvs Sport Physicals
Mercedes W204 Belt Diagram
Mia Malkova Bio, Net Worth, Age & More - Magzica
'Conan Exiles' 3.0 Guide: How To Unlock Spells And Sorcery
Teenbeautyfitness
Where Can I Cash A Huntington National Bank Check
Topos De Bolos Engraçados
Sand Castle Parents Guide
Gregory (Five Nights at Freddy's)
Grand Valley State University Library Hours
Hello – Cornerstone Chapel
Stoughton Commuter Rail Schedule
Nfsd Web Portal
Selly Medaline
Latest Posts
Article information

Author: Aron Pacocha

Last Updated:

Views: 6224

Rating: 4.8 / 5 (48 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Aron Pacocha

Birthday: 1999-08-12

Address: 3808 Moen Corner, Gorczanyport, FL 67364-2074

Phone: +393457723392

Job: Retail Consultant

Hobby: Jewelry making, Cooking, Gaming, Reading, Juggling, Cabaret, Origami

Introduction: My name is Aron Pacocha, I am a happy, tasty, innocent, proud, talented, courageous, magnificent person who loves writing and wants to share my knowledge and understanding with you.