Shareable Deep Links
Let people copy a URL that reopens exactly what they were looking at.
What it adds
Encode the current record, tab, filter set, and selection in the URL so a copied link restores the same view for whoever opens it.
What your agent is told to do
5
What your agent is told to do
5-
1
Audit the app for view state that currently lives only in memory: active tab, applied filters, sort order, expanded rows, selected items, scroll target.
-
2
Move that state into the URL and make the app read it back on load, so a pasted link reconstructs the view rather than dumping the user on a default screen.
-
3
Add a visible copy-link affordance on every view that supports it, and confirm the copy so the user knows it worked.
-
4
Key the URL on stable identifiers, never on display names or labels — a renamed project must not break every link anyone has shared.
-
5
Do NOT put draft text, unsaved form input, search history, or anything with personal data into the URL. URLs end up in logs, referrers, and chat clients.
Edge cases it handles
6
Edge cases it handles
6- A link to a deleted or archived record must say so plainly and offer a way back to the list, not throw a 404 with no context.
- A recipient without permission must get an access message that does not disclose the record's contents or name.
- Complex filter state can outgrow practical URL length. Compress it, or persist the view server-side and put a short key in the URL.
- Old links must keep working after a filter is renamed or removed. Ignore unknown parameters instead of erroring.
- Updating the URL as the user changes filters must use replace, not push, or the back button becomes a filter-by-filter rewind.
- A link opened by a signed-out user must survive the sign-in round trip and land on the intended view.
Definition of done
8
Definition of done
8- Copying a link and opening it in a fresh session reproduces the same tab, filters, sort, and selection.
- Links are built from stable IDs and survive renames.
- No draft content or personal data appears in any URL.
- Deleted, archived, and forbidden targets each have their own message and a next action.
- Unknown or stale URL parameters are ignored rather than fatal.
- Filter changes do not flood the browser history.
- The feature matches the existing design system.
- No existing functionality is broken.
Related features
Tabs
Tabs
Split a crowded page into sections without another route.
What it does
Accessible tabbed sections, with the active tab reflected in the URL.
How it works
- 1 Use tabs for alternative views of the SAME thing. If the content is unrelated, it wants a separate page.
- 2 Put the active tab in the URL so a tab can be linked, bookmarked, and survives a refresh.
- 3 Implement the WAI-ARIA tabs pattern: arrow keys move between tabs, Tab moves into the panel.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/tabs
Pagination
Pagination
Split long lists into numbered pages without losing filters or the user's place.
What it does
Discrete paged lists with an explicit page control, where page number, page size, filters, and sort all live in the URL.
How it works
- 1 Build a real page control: previous, next, and a way to jump to a specific page or the last page. This feature is for lists people navigate deliberately. If the list is a feed people graze, choose progressive appending instead.
- 2 Put page, page size, filters, and sort in the URL so every page is linkable, bookmarkable, and survives a refresh.
- 3 Show enough context to orient: current page, total pages or a clear next-page affordance, and the range of items shown out of the total.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/pagination
Workspace Switcher
Workspace Switcher
Move between organizations without mixing their data.
What it does
A switcher for users who belong to several workspaces, with clean state isolation on every switch.
How it works
- 1 Show the current workspace at all times, prominently enough that nobody edits the wrong account's data by accident.
- 2 Resolve the active workspace on the server from the session or the URL. Never trust a client-held value to scope a query.
- 3 On switch, clear every piece of cached state tied to the previous workspace: query caches, filters, drafts, selections, realtime subscriptions.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/workspace-switcher
How it works
-
1
Copy the link
Grab the Markdown instruction URL for this feature.
-
2
Give it to your AI
Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.
-
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.