Technology moves fast! โšก Don't get left behind.๐Ÿšถ Subscribe to our mailing list to keep up with latest and greatest in open source projects! ๐Ÿ†

Subscribe to our mailing list


Server Framework for Node.js

Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402 (1 ratings)
Rated 5.0 out of 5
Subscribe to updates I use hapi

Statistics on hapi

Number of watchers on Github 9182
Number of open issues 4
Average time to close an issue about 18 hours
Main language JavaScript
Average time to merge a PR 4 days
Open pull requests 46+
Closed pull requests 37+
Last commit over 1 year ago
Repo Created almost 8 years ago
Repo Last Updated over 1 year ago
Size 12.3 MB
Organization / Authorhapijs
Latest Releasev2.1.2
Page Updated
Do you use hapi? Leave a review!
View open issues (4)
View hapi activity
View on github
Fresh, new opensource launches ๐Ÿš€๐Ÿš€๐Ÿš€
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating hapi for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Web and services application framework

Lead Maintainer: Eran Hammer

hapi is a simple to use configuration-centric framework with built-in support for input validation, caching, authentication, and other essential facilities for building web and services applications. hapi enables developers to focus on writing reusable application logic in a highly modular and prescriptive approach.

Version 17.x only supports node v8.9.0 and over. For older version of node please use version 16.x.

Development version: 17.1.x (release notes) Build Status

For the latest updates, change log, and release information visit and follow @hapijs on twitter. If you have questions, please open an issue in the discussion forum.


Development of the hapi core module generously supported by contributions from individuals and corporations. If you are benefiting from hapi and would like to help keep the project financially sustainable, please visit Eran Hammer's Patreon page or contact him via email.

Featured Sponsors

Lob enables you to seamlessly print and mail documents, postcards, checks, and more via an API. They have been an early hapi adopters and vocal supporters. If you are looking to take your hapi and JS skills to the next level, check out their career page for exciting opportunities.


Cond Nast Technology

Active Supporters

Legacy Supporters

Past major financial support for the project was provided by:

hapi open issues Ask a question     (View All Issues)
  • over 2 years Hapi Server becomes unresponsive after second call #140
  • over 2 years Set-cookie header is not sent
  • over 2 years WebSocket connection to 'wss://' failed: WebSocket opening handshake was canceled
  • over 2 years Shrinkwrap error for boom due to pez
  • over 2 years support redirect in route pre-requisites
  • over 2 years Request: Change server.state default value for "path" to "/"
  • over 2 years 'reply.redirect' doesn't work
  • over 2 years Shrinkwrap fails with hapi version 15.1.1
  • almost 3 years Major performance issue with hapi.js 15.x
  • almost 3 years Handle multiple parallel registrations
  • almost 3 years Enable compression for 206 range responses
  • almost 3 years Pass plugin's server rather than root server to route config function
  • almost 3 years Using promises in prehandlers causes exceptions to be swallowed in handlers.
  • about 3 years Create connection via file descriptor instead of port
  • about 3 years reply.code(value) ignored when payload is empty and emptyStatusCode is set
  • about 3 years server.method doesn't resolve promise with cache options
  • about 3 years Allow decoration overrides with parent access support
  • over 3 years Handlers and Lifecycle hooks lose domain binding
  • over 3 years Allow access to parent realm
hapi open pull requests (View All Pulls)
  • Enable disabling cache-control headers
  • Typo fixes in
  • Allow custom expect-100 logic
  • Don't re-initialize the server
  • Fast server shutdown
  • Improve wording of auth strategy mode/default
  • Don't force header keys to lowercase
  • allow array as valid validate config on headers, params, query and payload
  • Send correct response for HEAD requests
  • Handle thrown error from res.setHeader() and res.writeHead()
  • Fixes #3155 - Calling reply without a payload on a JSONP route throws
  • Delay continuations when promises may be involved
  • handle more types of promise rejection, for #3102
  • Added support for brotli compression
  • Bind Promise's callbacks to current domain if set.
  • fix provide context to route custom validator
  • Update documentation for server.inject's option argument for headers
  • Fix encoder and decoder examples
  • Ensure that 206 responses are never compressed
  • Allow custom encoders to validate compression options
  • Correct minor typo
  • fix server not propagating errors on prehandler(promise) + handler error (#3242)
  • Invoke reply with promise returned from handler.
  • Bumping shrinkwrapped pez minor release version
  • Fix for hapijs/discuss#395.
  • support a header to override
  • Adding server.inspect to list decorated framework interfaces
  • Add test for base64json cookie setting and parsing
  • Update reply.takeover() docs to reflect implementation
  • Update Documentation for Code on onPreResponse
  • Updates to 16.1.1 API docs
  • Do not use raw request in api docs example
  • Send connection close when there is unconsumed payload
  • Defer 100-continue signalling until payload parsing
  • added route auth to plugin route config
  • explicitly destroy sockets on clientError
  • Attempt to fix #3431 when pre with failAction log or ignored won't assign to request.pre
  • Fixed modules require inconsistency
  • Bind request continuation methods to current domain
  • Customize validation error code
  • Fix several request.url property issues on setUrl()
  • Issue 3431
  • 3430 causes setUrl to update host, hostname, port and protocol fieldsโ€ฆ
  • Provide cover for unhandled rejections
  • allow tests using lsof to pass on ENOENT
  • Replace new Buffer()
hapi questions on Stackoverflow (View All Questions)
  • Hapi Lab why Test failed when all the tests are passed
  • Hapi server on heroku fails to bind port
  • How to import RESTful Server Hapi Fhir?
  • Pass data across Hapi JS application
  • Swagger-hapi: path /models generate errors
  • Hapi/Joi validation with nested object
  • Creating realtime project with Hapi, MongoDb, NodeJS & AngularJS
  • How do I make generator functions work with Hapi JS
  • How to use hapi-swaggered without a running server
  • Support additional mime types in hapi
  • React Router / Hapi Server Side Rendering Error
  • HL7 v2.4 Hapi resend if connection fails
  • Get the value of multiple OBX lines in PCD01 data using HAPI?
  • I am using hapi-job-queue for certain cron jobs but having trouble with schedule?
  • Does hapi js uses redis to share session?
  • hapi-swagger disables my routes
  • Creating multiple versions of HL7 messages within a single application using Hapi
  • Caching object with hapi js - catbox
  • Is there a library compatible with Hapi for fine-grained ACL / User permissions?
  • How to upload files using nodejs and HAPI?
  • How do I request a cookie when server rendering on hapi?
  • Hapi jwt extra auth check on owner id
  • Hl7 Hapi - I can't use object method without a main class
  • HAPI JS Node js creating https server
  • How do Express and hapi compare to each other?
  • Use Hapi server with React-Flux application
  • Hapi testing not loading plugins correctly
  • Authentication with hapi-auth-cookie not setting session
  • How to put authentication with apiKey in hapi-swagger?
  • Hapi JS send file
hapi list of languages used
Other projects in JavaScript