Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions fern/products/docs/pages/changelog/2026-04-02.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,20 @@ agents:

## Missing redirects check rule

The `missing-redirects` rule for `fern check` detects pages that were removed or moved without a redirect. It compares your current docs navigation against the previously published state and warns when a previously published URL would return a 404. Configure its severity in `docs.yml`:
The `missing-redirects` rule for `fern check` detects pages that were removed or moved without a redirect. It compares your current docs navigation against the previously published state and warns when a previously published URL would return a 404.

```bash title="Example" wordWrap
[warning] Page "products/api-def/openapi/extensions/default.mdx" was removed. The previously published URL "/learn/api-definitions/openapi/extensions/default-values" will return 404 without a redirect. Consider adding a redirect in docs.yml to preserve existing links.
```

Configure its severity in `docs.yml`:

```yaml docs.yml
check:
rules:
missing-redirects: error
```

Requires authentication via `fern login` or the `FERN_TOKEN` environment variable. The check is skipped on first publish, when unauthenticated, or when the network is unavailable.

Requires Fern CLI version `4.57.0` or later.

<Button intent="none" outlined rightIcon="arrow-right" href="/learn/docs/configuration/site-level-settings#check-configuration">Read the docs</Button>

## Library docs generator
Expand Down
4 changes: 4 additions & 0 deletions fern/products/docs/pages/seo/configuring-slugs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ In the example above, the **Welcome** page would be hosted at `plantstore.docs.b

You can customize these default slugs by renaming them or skipping them entirely.

<Note>
Changing a slug updates the page's URL. Run [`fern check`](/learn/cli-api-reference/cli-reference/commands#fern-check) to detect pages that moved without a [redirect](/learn/docs/seo/redirects#catching-missing-redirects), so existing links don't break.
</Note>

## Renaming slugs

Set the `slug` property in `docs.yml` or in a page's frontmatter to customize the URL path.
Expand Down
8 changes: 6 additions & 2 deletions fern/products/docs/pages/seo/redirects.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,16 @@ subtitle: Learn how to configure redirects in Fern Docs. Set up exact path redir
To add external links to your sidebar navigation, see [Navigation](/learn/docs/configuration/navigation#links).
</Tip>

## Catching missing redirects

You can use [`fern check`](/learn/cli-api-reference/cli-reference/commands#fern-check) to automatically detect pages that were removed or moved without a redirect. Configure the [`missing-redirects` rule](/learn/docs/configuration/site-level-settings#check-configuration) in `docs.yml` to control its severity.

<llms-only>
## Common errors

Errors below are surfaced by `fern check` and `fern generate --docs`.

### Page "X" was moved from "/old" to "/new". The old URL will return 404 without a redirect.
### Page "X" was moved from "/old" to "/new". The old URL will return 404 without a redirect. Consider adding a redirect in docs.yml to preserve existing links.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[FernStyles.Current] Avoid time-relative terms like 'old' that become outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[FernStyles.Current] Avoid time-relative terms like 'old' that become outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 [vale] reported by reviewdog 🐶
[FernStyles.HeadingPunctuation] Don't use end punctuation in headings.


A page's [slug](/learn/docs/seo/configuring-slugs) changed relative to the last [published version](/learn/docs/preview-publish/publishing-your-docs) of your docs. Add a [redirect](/learn/docs/configuration/site-level-settings#redirects-configuration) in `docs.yml` so existing links keep working:

Expand All @@ -27,7 +31,7 @@ redirects:
destination: /new
```

### Page "X" was removed. The previously published URL "/old" will return 404 without a redirect.
### Page "X" was removed. The previously published URL "/old" will return 404 without a redirect. Consider adding a redirect in docs.yml to preserve existing links.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[FernStyles.Current] Avoid time-relative terms like 'old' that become outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 [vale] reported by reviewdog 🐶
[FernStyles.HeadingPunctuation] Don't use end punctuation in headings.


A [published page](/learn/docs/preview-publish/publishing-your-docs) no longer exists in the [navigation](/learn/docs/configuration/navigation). Add a [redirect](/learn/docs/configuration/site-level-settings#redirects-configuration) to another relevant page to avoid breaking incoming links:

Expand Down
Loading