diff --git a/packages/integrations/vercel/test/fixtures/max-duration/astro.config.mjs b/packages/integrations/vercel/test/fixtures/max-duration/astro.config.mjs
new file mode 100644
index 0000000000000..a02d60c14a56f
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/max-duration/astro.config.mjs
@@ -0,0 +1,9 @@
+import { defineConfig } from 'astro/config';
+import vercel from '@astrojs/vercel/serverless';
+
+export default defineConfig({
+ output: "server",
+ adapter: vercel({
+ maxDuration: 60
+ })
+});
diff --git a/packages/integrations/vercel/test/fixtures/max-duration/package.json b/packages/integrations/vercel/test/fixtures/max-duration/package.json
new file mode 100644
index 0000000000000..9a45d782edd9f
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/max-duration/package.json
@@ -0,0 +1,10 @@
+{
+ "name": "@test/vercel-max-duration",
+ "version": "0.0.0",
+ "private": true,
+ "dependencies": {
+ "@astrojs/vercel": "workspace:*",
+ "astro": "workspace:*"
+ }
+}
+
\ No newline at end of file
diff --git a/packages/integrations/vercel/test/fixtures/max-duration/src/pages/one.astro b/packages/integrations/vercel/test/fixtures/max-duration/src/pages/one.astro
new file mode 100644
index 0000000000000..0c7fb90a735e6
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/max-duration/src/pages/one.astro
@@ -0,0 +1,8 @@
+
+
+ One
+
+
+ One
+
+
diff --git a/packages/integrations/vercel/test/fixtures/max-duration/src/pages/two.astro b/packages/integrations/vercel/test/fixtures/max-duration/src/pages/two.astro
new file mode 100644
index 0000000000000..e7ba9910e2a62
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/max-duration/src/pages/two.astro
@@ -0,0 +1,8 @@
+
+
+ Two
+
+
+ Two
+
+
diff --git a/packages/integrations/vercel/test/max-duration.test.js b/packages/integrations/vercel/test/max-duration.test.js
new file mode 100644
index 0000000000000..9826dcdfbb589
--- /dev/null
+++ b/packages/integrations/vercel/test/max-duration.test.js
@@ -0,0 +1,19 @@
+import { loadFixture } from './test-utils.js';
+import { expect } from 'chai';
+
+describe('maxDuration', () => {
+ /** @type {import('./test-utils.js').Fixture} */
+ let fixture;
+
+ before(async () => {
+ fixture = await loadFixture({
+ root: './fixtures/max-duration/',
+ });
+ await fixture.build();
+ });
+
+ it('makes it to vercel function configuration', async () => {
+ const vcConfig = JSON.parse(await fixture.readFile('../.vercel/output/functions/render.func/.vc-config.json'));
+ expect(vcConfig).to.deep.include({ maxDuration: 60 });
+ });
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6116f2c0c6619..6245da98f9cca 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4593,6 +4593,15 @@ importers:
specifier: workspace:*
version: link:../../../../../astro
+ packages/integrations/vercel/test/fixtures/max-duration:
+ dependencies:
+ '@astrojs/vercel':
+ specifier: workspace:*
+ version: link:../../..
+ astro:
+ specifier: workspace:*
+ version: link:../../../../../astro
+
packages/integrations/vercel/test/fixtures/middleware-with-edge-file:
dependencies:
'@astrojs/vercel':