Qwik Plugins
Qwik plugins, named as plugin.ts
or plugin@<name>.ts
, handle incoming requests prior to root layout execution and are located in the src/routes
directory. Request handlers like onRequest
, onGet
, onPost
in these plugins are called before server$
functions. For multiple plugins, plugin.ts
handlers execute first, followed by plugin@<name>.ts
handlers in alphabetical order. Middleware functions should be defined in plugin.ts
to ensure execution for all requests.
plugin.ts
files
The order of execution of If plugin.ts
file exists and if it has exported request handlers, then they are executed first.
Then exported request handlers from plugin@<name>.ts
files are executed in alphabetical order of the file names. For example, onGet
from plugin@auth.ts
is executed before onGet
from plugin@security.ts
because auth
is alphabetically before security
.
Finally, if a server$
function exists, it's executed last.
server$
Middleware and When using server$
, it's important to understand how middleware functions are executed. Middleware functions defined in layout
files do not run for server$
requests. This can lead to confusion, especially when developers expect certain middleware to be executed for both page requests and server$
requests.
To ensure that a middleware function runs for both types of requests, it should be defined in the plugin.ts
file. This ensures that the middleware is executed consistently for all incoming requests, regardless of whether they are normal page requests or server$
requests.