feat: pre-compute developer apps selections in data layer #17180
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.

Extends
page-developer-appsbranchSummary
unstable_cacheto data-layer (trigger.dev task)DeveloperToolsDataEnvelopetype withappsByIdlookup + pre-computed selectionsunstable_cachewrappers from utils.tsProblem
The previous implementation used
unstable_cacheat the page level, butunstable_cachecreates cache keys from both thekeyPartsarray and functionarguments. Passing the full apps array or searchParams as arguments created unique cache entries for each request, defeating the cache entirely.
Solution
Pre-compute all randomized selections in the trigger.dev task (daily refresh):
mainPageHighlights- 3 apps for landing pagecategoryHighlights- 3 apps per category page (7 categories)categoryPreviews- 5 apps per category card on landing pageStore as an envelope with
appsByIdRecord for O(1) modal lookups.Audit Results
Test plan
?appId=param?tag=param🤖 Generated with Claude Code