Skip to content

Retire the legacy RTC product folders in favor of rtc - #1096

Merged
saudsami merged 10 commits into
mainfrom
rtc-folder-cleanup
Sep 29, 2026
Merged

saudsami merged 10 commits into
mainfrom
rtc-folder-cleanup

Conversation

@saudsami

Copy link
Copy Markdown
Collaborator

The video, voice, interactive-live-streaming, and broadcast-streaming folders under content/docs/en/realtime-media/ were merged into rtc in #890, but they still built as live routes. This PR moves everything that depended on them over to rtc, redirects every retired URL, and deletes the folders.

Supersedes #1086.

What changed

Links and legacy redirects (9ea2c23a0, cb2ca4203)

  • Repoints the four files outside the retired folders that linked into them. face-capture.mdx now links to the Marketplace MetaKit page, since the rtc copy was removed deliberately in Remove RTC metakit doc #972.
  • Retargets legacy docs.agora.io redirect rules that pointed into the retired folders, so old URLs reach rtc in one hop.

New rtc page (721126222)

  • Ports Cross-channel media stream relay to rtc/build/join-and-manage-channels/. It existed only in interactive-live-streaming and broadcast-streaming.
  • While porting: switched the support link to support@agora.io, fixed step indentation so content nests inside its steps, collapsed the workflow diagram into an accordion, and moved each Development considerations bullet into the step it applies to. That also drops a web bullet that named the native startOrUpdateChannelMediaRelay method.

Redirects for every retired URL (e69052118)

  • src/lib/legacy-sitemap/rtc-folder-redirects.json holds 134 rules, which scripts/generate-legacy-redirect-artifacts.mjs merges into vercel.json after the vercel.base.json redirects:
    • 31 platform rules: platform URLs the rtc page doesn't have go to its Android version, or to the page itself when it has no platform versions. Python quickstart and sample project URLs go to rtc-server-sdk.
    • 99 page rules: pages that moved to a different rtc path, plus the decisions for use-tokens, quickstart, product overviews, MetaKit, and the Console REST API page.
    • 4 folder rules: everything else goes to the same path under rtc.
  • Removes the three video/reference/release-notes?platform= rules from vercel.base.json (feat: lazy-load Video release notes by platform #1054). The folder rule now handles those URLs.
  • Adds rtc-folder-redirects.test.ts, which resolves all 1,703 retired URLs (every page plus every published platform URL) through vercel.json in order, and checks that each destination page and platform exists.
  • Full mapping, decisions, and verification: docs/agents/reports/2026-09-15-rtc-folder-redirect-mapping.md.

Source code (658bd2086)

  • docs-link-normalize.ts: link aliases that targeted the retired folders now target rtc. /help/account-and-billing/billing_account pointed at a page that never existed and now goes to the billing FAQ.
  • analytics/docs-page-context.ts: analytics taxonomy moved to the rtc pages with product: 'rtc'.
  • search/algolia-records.server.ts: removes the search indexing exception for the ILS and Broadcast Streaming product overviews.
  • search/golden-search-queries.ts: the "interactive live streaming" and "broadcast streaming" queries now expect the rtc overview, which ranks in the top three for both.

Content fixes in rtc (1f77abd67, c67e3b958)

  • Picture-in-Picture: restores the React Native host OS tabs from fix: use regular tabs for React Native PiP #901. The rtc page was created in 1028 RTC products unification #890 from a copy that predates that fix, so only the retired folders had it. A regression test caught this during the deletion.
  • Voice-only quickstart: all 13 platform sections now open with "This page provides a step-by-step guide on how to create a voice-only app using the Agora RTC SDK."

Folder deletion and tests (ec9aa00d6)

  • Deletes the four folders (347 files) and the stray .tmp-voice-pages.json.
  • Drops the 13 link aliases whose sources were links inside the retired folders, and the voice, video, ILS, and Broadcast Streaming entries from realtime-media-api-reference-links.ts.
  • Tests that read retired pages now read their rtc equivalents. 31 content regression tests passed unchanged against rtc.
  • Removed as obsolete: the voice build route structure test, the screenshot upload provider tabs test (Update console screenshots for Screenshot upload feature #1009 made that page AWS-only), and video-release-notes-platform.test.ts.

Review guide

  • Redirect mapping: start with the report linked in the Redirects section. The page rules and platform rules are the parts worth reading. The 180 same-path pages are covered by the 4 folder rules.
  • Content changes: 1f77abd67 and c67e3b958 are the only edits to live rtc pages besides the new cross-channel page.
  • Analytics: the rtc pages now report product: 'rtc' in PostHog. Before 1028 RTC products unification #890 the old pages reported video or voice, and since then the rtc pages have reported unknown. Dashboards filtering on the old values need rtc added.
  • Deliberately unchanged: SdksCatalog.tsx. Its video and voice product filters are SDK product IDs, not paths, and are still linked from pages outside the retired folders.

Verification

  • npm run types:check and npm run legacy-redirects:check pass.
  • All 1,703 retired URLs resolve correctly through @vercel/routing-utils, the library Vercel uses to convert redirects. All 454 destinations return 200 on a local dev server.
  • The new redirect test fails on each of four deliberate breakages: dropped platform rules, reordered rules, a nonexistent destination, and a platform the destination doesn't have.
  • content/docs/ and live source code no longer reference the retired folders. Remaining matches are redirect sources, generated files, migration-era scripts and snapshots, and URL fixtures inside passing tests.
  • Full test suite: 39 failures, down from 41 on this branch's base, with no new failures. The remaining failures were already failing on main and are unrelated. CI doesn't run the test suite, so compare against main locally when reviewing.

Before merge

  • Spot-check redirects on the Vercel preview, including a platform-suffixed URL (for example /en/realtime-media/interactive-live-streaming/build/manage-video-and-streaming/configure-video-encoding/android) and a ?platform= URL.

After merge

  • Run npm run docs:last-updated.
  • Reindex Algolia (search:sync) right after deploy. Until then, search results can still point at retired URLs, and in-app navigation from a result bypasses the Vercel redirects.

Not in this PR

  • Cleanup of page-specific content regression tests, and adding the test suite to CI. That's planned as a separate PR.

🤖 Generated with Claude Code

saudsami and others added 9 commits September 11, 2026 12:10
The video, voice, interactive-live-streaming, and broadcast-streaming
folders are superseded by rtc and are slated for removal. Four files
outside those folders still linked into them:

- rtc/build/add-advanced-video-features/face-capture.mdx (x4) now points
  at the marketplace MetaKit page. The rtc copy of metakit.mdx was
  removed deliberately in #972, so the marketplace page is canonical.
- api-reference/faq/integration/switch_screen_camera_web.mdx (x2) now
  points at the rtc screen-sharing page.
- api-reference/faq/integration/video_profile.mdx used a hardcoded
  docs.agora.io URL, which no internal link check would have caught once
  the folder was deleted. It is now a relative link to the rtc encoding
  page, keeping the /android platform suffix.
- ai/best-practices/manual-turn-control.mdx now points at
  rtc/get-started-sdk, matching the absolute link style of its siblings.

content/docs/ no longer references the four folders from outside them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Six legacy redirect rules still pointed at
/en/realtime-media/video/build/add-advanced-video-features/metakit,
which no longer exists in rtc (the rtc copy was removed in #972). The
affected legacy paths are the android and ios variants of:

  /en/video-calling/advanced-features/metakit
  /en/interactive-live-streaming/advanced-features/metakit
  /en/broadcast-streaming/advanced-features/metakit

They now point at the marketplace MetaKit page, matching the existing
/en/extensions-marketplace/develop/integrate/metakit rules. Retargeting
rather than deleting keeps these inbound legacy URLs from 404ing once
the video folder is removed.

Generated artifacts refreshed with `npm run legacy-redirects:generate`.
This also resyncs artifacts that had drifted from the generator on main,
fixing three generate-legacy-redirect-artifacts tests.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The page existed only in the interactive-live-streaming and
broadcast-streaming folders, which are slated for removal. It now lives
at rtc/build/join-and-manage-channels/cross-channel-media-relay, next to
join-multiple-channels.

Ported from the broadcast-streaming copy with the usual rtc conventions
("RTC SDK", absolute rtc quickstart and pricing links), plus:

- Link to support@agora.io instead of the ticket portal.
- Re-indent step content to 4 spaces so paragraphs, code blocks, and
  notes nest inside their steps, and flatten the step 1 note bullets.
- Normalize the tab/space-mixed Windows callback sample to 4 spaces.
- Collapse the workflow diagram into an accordion.
- Fold the Development considerations section into the steps it applies
  to. This also drops a web bullet that named the native
  startOrUpdateChannelMediaRelay method instead of updateChannelMediaRelay.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The video, voice, interactive-live-streaming, and broadcast-streaming
folders are being removed now that their pages live under rtc. These
redirects cover all 279 of their pages, and every platform URL the app
published for them, before the folders are deleted.

src/lib/legacy-sitemap/rtc-folder-redirects.json holds 134 rules, which
generate-legacy-redirect-artifacts.mjs merges into vercel.json right
after the vercel.base.json redirects:

- 31 platform rules send platform URLs the rtc page doesn't have to its
  Android version, or to the page itself when it has no platform
  versions. Python quickstart and sample project URLs go to
  rtc-server-sdk.
- 99 page rules cover pages that moved to a different rtc path, plus
  the use-tokens, quickstart, product overview, MetaKit, and Console
  REST API decisions.
- 4 folder rules send everything else to the same path under rtc.

Also:

- Retarget the 20 legacy redirects.json rules that pointed into the
  retired folders, so old docs.agora.io URLs reach rtc in one hop.
- Remove the three video release notes ?platform= rules from
  vercel.base.json. The folder rule now handles those URLs.
- Add rtc-folder-redirects.test.ts, which resolves all 1,703 retired
  URLs through vercel.json in order and checks that each destination
  page and platform exists.
- Replace the release notes rule test with a check that no redirect
  points into the retired folders.

Mapping, decisions, and verification are in
docs/agents/reports/2026-09-15-rtc-folder-redirect-mapping.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Update the live code that still referenced pages in the video, voice,
interactive-live-streaming, and broadcast-streaming folders, ahead of
deleting them.

- docs-link-normalize.ts: point the 21 link aliases that targeted the
  retired folders at their rtc pages, using the redirect mapping.
  /help/account-and-billing/billing_account pointed at a video page
  that never existed; it now goes to the billing FAQ, matching
  redirects.json. Aliases whose sources are links inside the retired
  folders stay until those folders are deleted.
- analytics/docs-page-context.ts: move the analytics taxonomy entries to
  the rtc pages with product 'rtc'. The video and voice overview entries
  merge into one rtc entry.
- search/algolia-records.server.ts: remove the search indexing exception
  for the Interactive Live Streaming and Broadcast Streaming product
  overviews. The rtc overview is already indexed through navigation.
- search/golden-search-queries.ts: expect the rtc overview for the
  "interactive live streaming" and "broadcast streaming" queries. It
  ranks in the top three for both.

Tests follow each change. docs-page.server.test.ts now checks that the
analytics context is attached to the payload, and leaves the taxonomy
values to docs-page-context.test.ts.

Left unchanged on purpose: the video/quickstart redirect in
docs-page.server.ts already targets rtc, and SdksCatalog.tsx uses SDK
product IDs rather than paths, with product=video and product=voice
still linked from pages outside the retired folders.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
#901 replaced the React Native host OS CodeBlockTabs on the
Picture-in-Picture page with regular persisted tabs. The rtc copy was
created in #890 from a version that predates that fix, so only the
retired video, interactive-live-streaming, and broadcast-streaming
copies had it. Deleting those folders would have lost it.

Apply the same markup to rtc: the four React Native Android/iOS blocks
now use <Tabs defaultValue="android" groupId="react-native-host-os"
persist>. The rest of the page is unchanged; it now differs from the
old video copy only in RTC SDK naming and quickstart links.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Every platform section opened with "This <platform> quickstart shows you
how to create a basic Voice Calling app using the Agora RTC SDK." Only the
Web section followed it with a sentence pointing to other platforms'
quickstarts. Replace all 13 openings with one platform-neutral sentence:
"This page provides a step-by-step guide on how to create a voice-only
app using the Agora RTC SDK."

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Remove the video, voice, interactive-live-streaming, and
broadcast-streaming folders under content/docs/en/realtime-media (347
files), whose pages all live under rtc now, plus the stray
.tmp-voice-pages.json. Redirects for every retired URL landed in an
earlier commit.

Source:
- docs-link-normalize.ts: drop the 13 link aliases whose sources were
  links inside the retired folders.
- realtime-media-api-reference-links.ts: drop the voice, video,
  broadcast-streaming, and interactive-live-streaming product entries,
  which only applied to pages in those folders.

Tests that read retired pages now read their rtc equivalents. That
covers docs-content-regressions (31 tests passed unchanged against rtc),
source.server, docs-journeys, pricing, and the audio route, migration
guide, and voice quickstart tests, renamed from voice-* to rtc-*. Tests
adjusted to current rtc content: supported platforms ("RTC SDK") and
error codes (the combined page from #890). The old-folder entries in
the overview and API reference navigation tests are removed, and the
sidebar API reference test now checks an rtc page.

Removed as obsolete:
- the voice build route structure test;
- the screenshot upload provider tabs test (#1009 made the page
  AWS-only);
- video-release-notes-platform.test.ts, which covered the per-platform
  video release notes pages from #1054.

Two tests that were already failing now pass: the Realtime Media
journey test and the overview sidebar titles test. No new failures.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

Vercel Preview

Preview URL: https://docs-portal-2iceftv0q-agora-gdxe.vercel.app
Stable review URL: https://docs-portal-pr-1096.vercel.app

Conflicts resolved:

- 19 pages in the retired video, voice, interactive-live-streaming, and
  broadcast-streaming folders that main edited in #1111 (fold release
  notes by version) and #984 (Android codec library names). Both
  commits made the same changes to the rtc copies, so the retired
  copies are deleted as planned and nothing is lost.
- vercel.base.json: keep main's new server gateway cloud proxy
  redirect (#1100) and the removal of the three video release notes
  ?platform= rules (#1054), whose pages no longer exist.
- vercel.json, vercel-legacy-redirects.json, and static-redirects.json
  are generated, so they were regenerated from the resolved sources.

Follow-up inside the merge: main's high-traffic 404 redirects (#1147)
added 8 rules targeting retired URLs, which would have chained through
this branch's folder rules. They now point at their rtc destinations
directly, and posthog-404-redirects.test.ts is updated to match. The
four rtc destinations postdate the docs inventory snapshot, so they use
the test's existing migrated-article escape hatch.

Suite: 39 failures against 44 on main, with none unique to this branch.
Five that fail on main pass here, including three redirect artifact
tests that fail there because main's committed artifacts have drifted
from the generator.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@saudsami
saudsami merged commit cd4cf05 into main Sep 29, 2026
4 checks passed
@saudsami
saudsami deleted the rtc-folder-cleanup branch September 29, 2026 10:16
saudsami added a commit that referenced this pull request Sep 30, 2026
Re-apply the RTC 4.7.0 release notes work on top of the accordion structure
introduced by #1096, and act on review feedback:

- Drop the software-based H.265 sentence pending legal confirmation.
- Retitle the co-hosting and first-frame improvements, and describe them in
  past tense to match the bullet titles (4.6.x entries swept to match).
- Remove the MetaKit extension: the marketplace page, its sidebar entry, the
  release-note sections, and the face capture recommendations. Legacy MetaKit
  URLs now redirect to the marketplace section.
- Set the 4.7.0 release date to October 1, 2026.

Camera Movement still references MetaKit and is left for a follow-up.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
saudsami added a commit that referenced this pull request Sep 30, 2026
* docs: add RTC 4.7.0 English release notes

* docs: update RTC 4.7.0 SDK release metadata

* docs: address RTC release note wording comments

* docs: port RTC 4.7.0 companion updates and polish release notes

Port the product documentation updates that ship with RTC Native 4.7.0:

- ProGuard: document the consumer-proguard-rules.pro option in the Android
  quickstarts, split by AAR and JAR integration.
- App size: add the "Integrate the FFmpeg plugin as needed" section and list
  the plugin in the Voice SDK required libraries for Android and iOS.
- Audio formats FAQ: sync the Android format list, fix the AMR and FLAC codec
  names, and correct the Android multi-track switching statement to match the
  source.

Also tighten the release notes language: replace literal translations with
plain English, match the ProGuard wording used in the quickstarts, and open
bullets with the verb instead of repeating "This release" (4.6.x and 4.7.0).
The 4.7.0 date is a placeholder until the release ships.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* docs: remove MetaKit extension and set the RTC 4.7.0 release date

Re-apply the RTC 4.7.0 release notes work on top of the accordion structure
introduced by #1096, and act on review feedback:

- Drop the software-based H.265 sentence pending legal confirmation.
- Retitle the co-hosting and first-frame improvements, and describe them in
  past tense to match the bullet titles (4.6.x entries swept to match).
- Remove the MetaKit extension: the marketplace page, its sidebar entry, the
  release-note sections, and the face capture recommendations. Legacy MetaKit
  URLs now redirect to the marketplace section.
- Set the 4.7.0 release date to October 1, 2026.

Camera Movement still references MetaKit and is left for a follow-up.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* docs: drop MetaKit from Camera Movement prerequisites

Camera Movement is built on the Portrait Rhythm extension and never uses
MetaKit, so the note about MetaKit pulling in the Face Capture and Virtual
Background extensions did not apply. With that sentence gone each note holds a
single item, so drop the list wrapper too.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* docs: remove the Camera Movement extension and set the 4.7.0 date

Remove the Camera Movement extension documentation the same way as MetaKit:
the rtc and marketplace pages, their sidebar entries, and the release-note
sections with their platform wrappers and contents links.

Legacy and retired-folder URLs for both extensions now redirect to the
marketplace section. This also fixes rtc-folder-redirects, which still sent
retired-folder URLs to the deleted MetaKit page.

Set the 4.7.0 release date to September 30, 2026.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* docs: correct the Android FFmpeg library name for v4.7.0

The video SDK renamed libagora-ffmpeg.so to libagora_ffmpeg.so in v4.7.0,
confirmed against the published Android package. Neither the release notes nor
the CN source mention this rename, only the Voice SDK plugin change.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Saud <65331551+saudsami@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
saudsami added a commit that referenced this pull request Oct 1, 2026
Most entries come from the RTC folder consolidation (#1096) and other
recent commits on main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant