AddThisFeature

Link in Bio Page

Give each user one shareable mobile page of links behind a handle they choose.

moderate Content & Publishing

What it adds

A public single-page list of a user's links, served from a chosen handle and editable without a deploy.

What your agent is told to do

5
  1. 1

    Reuse whatever handle or username the app already assigns for public profile pages instead of introducing a second namespace. Two independent handle systems will eventually collide on the same path.

  2. 2

    Reserve system paths and obvious impersonation risks before opening handle selection, and check the reserved list on every rename rather than only on creation.

  3. 3

    Design for a phone first and for slow connections. The page must render its links from the server with no client-side data fetch, because it will be opened inside social app browsers that block or delay scripts.

  4. 4

    Reuse the app's existing scheduled publishing behaviour for links that should appear or expire on a date, rather than writing a second scheduler for this one page.

  5. 5

    Do not build a general-purpose page builder here. Ship a heading, an avatar, an ordered list of link tiles, and a small set of theme choices, and defer arbitrary blocks and custom layout.

Edge cases it handles

8
  • Handles need a reserved word list covering system routes, support and admin names, and anything that reads as official. Freeing a handle after an account is deleted invites squatting on a name people already trust, so hold it for a period before release.
  • Scheduled links must appear and disappear on time in the visitor's experience even if the page is cached, which means the cache key or the render has to account for the schedule boundary.
  • Click counts are inflated by social platform link previewers fetching every URL on the page. Filter known preview and bot traffic before counting, and never present raw hits as human clicks.
  • In-app browsers strip styles, ignore some navigation, and sometimes block outbound links. Keep the layout functional with no custom styling applied and make every tile a plain link that works without interception.
  • A deleted or unreachable destination leaves a broken tile on a live page. Check destinations periodically and flag or hide dead links for the owner rather than silently serving them.
  • The page is public and user-generated, so it will be used for spam and phishing. Run new and edited destinations through the app's existing content reporting and moderation path, and give visitors a way to report a page.
  • The avatar and any tile images need reserved dimensions and alt text, or the list will jump under a thumb already reaching for the first link.
  • Renaming a handle breaks every share of the old one. Redirect the previous handle to the new one for a period and tell the owner that is happening.

Definition of done

9
  • Each page is served from a unique handle validated against a reserved word list on create and on rename.
  • The page renders fully from the server and remains usable with scripts and custom styles blocked.
  • Scheduled links appear and expire at their configured times even on a cached page.
  • Click counts exclude known previewer and bot traffic.
  • Links to unreachable destinations are detected and reported to the owner.
  • Visitors can report a page, and reports land in the existing moderation path.
  • A renamed handle redirects from its previous value.
  • The feature matches the existing design system.
  • No existing functionality is broken.

Related features

How it works

  1. 1

    Copy the link

    Grab the Markdown instruction URL for this feature.

  2. 2

    Give it to your AI

    Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.

  3. 3

    It inspects, then implements

    Your agent reads your existing app first, then adds the feature to fit it.

Works with your stack

These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.

Need it tighter than that? Customize the feature and tell it exactly what you're running.