diff --git a/docz/docs/02-getting-started/01-installation/06-deno.md b/docz/docs/02-getting-started/01-installation/06-deno.md
index 91dd604c..c45e0630 100644
--- a/docz/docs/02-getting-started/01-installation/06-deno.md
+++ b/docz/docs/02-getting-started/01-installation/06-deno.md
@@ -7,19 +7,12 @@ sidebar_custom_props:
---
import current from '/version.js';
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
# Deno
-[Deno](https://deno.land/) is a JavaScript runtime powered by V8.
-
-:::caution Deno support is considered experimental.
-
-Great open source software grows with user tests and reports. Any issues should
-be reported to the Deno project for further diagnosis.
-
-:::
-
-Each standalone release script is available at .
+Module scripts and type definitions are available at .
Using the URL imports, `deno run` will automatically download scripts and types:
@@ -30,12 +23,10 @@ import * as XLSX from 'https://cdn.sheetjs.com/xlsx-${current}/package/xlsx.mjs'
The `@deno-types` comment instructs Deno to use the type definitions.
-:::warning
+:::caution Deno support is considered experimental.
-Older releases are technically available on [deno.land/x](https://deno.land/x/)
-but the Deno registry is out of date.
-
- is the authoritative source for SheetJS scripts.
+Great open source software grows with user tests and reports. Any issues should
+be reported to the Deno project for further diagnosis.
:::
@@ -48,3 +39,92 @@ If Encoding support is required, `cpexcel.full.mjs` must be manually imported:
import * as cptable from 'https://cdn.sheetjs.com/xlsx-${current}/package/dist/cpexcel.full.mjs';
XLSX.set_cptable(cptable);`}
+
+## Node Compatibility Mode
+
+:::caution
+
+Node Compatibility Mode is useful for migrating existing NodeJS scripts to Deno.
+It is considered unstable by the platform developers.
+
+For greenfield Deno projects, HTTP imports are strongly recommended.
+
+:::
+
+The ["NodeJS" installation section](/docs/getting-started/installation/nodejs)
+includes instructions for installing the NodeJS package.
+
+After installing, the `std/node` require can be used directly:
+
+```ts
+/* load the `require` machinery */
+import { createRequire } from "https://deno.land/std/node/module.ts";
+const require = createRequire(import.meta.url);
+
+/* require the library */
+const XLSX = require("xlsx");
+```
+
+## Upgrade Notes
+
+Upgrading to the latest version involves changing the import URLs. The import
+and the types URLs should be updated at the same time:
+
+
{`\
+-// @deno-types="https://cdn.sheetjs.com/xlsx-0.18.3/package/types/index.d.ts"
++// @deno-types="https://cdn.sheetjs.com/xlsx-${current}/package/types/index.d.ts"
+
+-import * as XLSX from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/xlsx.mjs';
++import * as XLSX from 'https://cdn.sheetjs.com/xlsx-${current}/package/xlsx.mjs';
+
+-import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/dist/cpexcel.full.mjs';
++import * as cptable from 'https://cdn.sheetjs.com/xlsx-${current}/package/dist/cpexcel.full.mjs';
+`}
+
+
+#### Deno Registry
+
+:::warning
+
+The official Deno registry is out of date. This is a registry bug.
+
+ is the authoritative source for SheetJS scripts.
+
+:::
+
+Applications using the Deno registry can migrate by changing the URLs.
+
+
+
+
+The SheetJS CDN version has no `v`. For example, `v0.18.3` maps to `0.18.3`:
+
+```diff
+-// @deno-types="https://deno.land/x/sheetjs@v0.18.3/types/index.d.ts"
++// @deno-types="https://cdn.sheetjs.com/xlsx-0.18.3/package/types/index.d.ts"
+
+-import * as XLSX from 'https://deno.land/x/sheetjs@v0.18.3/xlsx.mjs';
++import * as XLSX from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/xlsx.mjs';
+
+-import * as cptable from 'https://deno.land/x/sheetjs@v0.18.3/dist/cpexcel.full.mjs';
++import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/dist/cpexcel.full.mjs';
+```
+
+
+
+
+Version-less imports (`https://deno.land/x/sheetjs/xlsx.mjs`) map to `0.18.3`:
+
+```diff
+-// @deno-types="https://deno.land/x/sheetjs/types/index.d.ts"
++// @deno-types="https://cdn.sheetjs.com/xlsx-0.18.3/package/types/index.d.ts"
+
+-import * as XLSX from 'https://deno.land/x/sheetjs/xlsx.mjs';
++import * as XLSX from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/xlsx.mjs';
+
+-import * as cptable from 'https://deno.land/x/sheetjs/dist/cpexcel.full.mjs';
++import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/dist/cpexcel.full.mjs';
+```
+
+
+
diff --git a/docz/docs/03-demos/35-server.md b/docz/docs/03-demos/35-server.md
index 6ea0837d..7eb189fb 100644
--- a/docz/docs/03-demos/35-server.md
+++ b/docz/docs/03-demos/35-server.md
@@ -80,8 +80,6 @@ body parser out of the box.
In testing, [Drash](https://drash.land/drash/) had an in-memory body parser
which could handle file uploads on hosted services like Deno Deploy.
-The service is hosted on Deno Deploy using Drash!
-
_Reading Data_
`Request#bodyParam` reads body parameters. For uploaded files, the `content`
@@ -174,9 +172,9 @@ class ParseResource extends Drash.Resource {
SheetJS Spreadsheet Conversion Service
API
-Send a POST request to https://s2c.sheetjs.com/ with the file in the "file" body parameter:
+Send a POST request to http://localhost:3000/ with the file in the "file" body parameter:
-$ curl -X POST -F"file=@test.xlsx" https://s2c.sheetjs.com/
+$ curl -X POST -F"file=@test.xlsx" http://localhost:3000/
The response will be an HTML TABLE generated from the first worksheet.
@@ -459,8 +457,8 @@ fastify.post('/', async(req, reply) => {
Out of the box, Fastify will return an error `FST_ERR_CTP_BODY_TOO_LARGE` when
processing large spreadsheets (`statusCode 413`). This is a Fastify issue.
-[`bodyLimit`](https://www.fastify.io/docs/latest/Reference/Server/#bodylimit)
-in the docs explains the setting. It can be overridden during server creation:
+The default body size limit (including all uploaded files and fields) is 1 MB.
+It can be increased by setting the `bodyLimit` option during server creation:
```js
/* increase request body size limit to 5MB = 5 * 1024 * 1024 bytes */
diff --git a/docz/docs/index.md b/docz/docs/index.md
index 9acb3f1f..e40ed31f 100644
--- a/docz/docs/index.md
+++ b/docz/docs/index.md
@@ -126,12 +126,14 @@ support for CSS styling and rich text.
```html