Summary
Readers cannot save or bookmark posts for later reading. A reading list feature lets visitors curate a personal collection of posts they want to return to.
Who Has This
- Substack — Reading lists and saved posts
Why This Matters
Reading lists increase return visits and engagement. When readers can save posts for later, they're more likely to come back. This is especially valuable for long-form content that readers discover but don't have time to read immediately.
Recommended Implementation
Approach
- Use
localStorage for anonymous readers (no account required)
- Use database for authenticated subscribers
- Bookmark button (heart/bookmark icon) on post cards and post pages
/reading-list page showing saved posts
For Subscribers
ReadingListItem model: subscriber_id, post_id, created_at
- Syncs across devices when logged in
For Anonymous Readers
- Store post IDs in
localStorage
- Reading list page reads from
localStorage and fetches post data
- Prompt to create subscriber account to sync across devices
Key Files to Create
app/models/reading_list_item.rb
app/controllers/reading_list_controller.rb
app/javascript/controllers/bookmark_controller.js
app/views/reading_list/index.html.erb
Summary
Readers cannot save or bookmark posts for later reading. A reading list feature lets visitors curate a personal collection of posts they want to return to.
Who Has This
Why This Matters
Reading lists increase return visits and engagement. When readers can save posts for later, they're more likely to come back. This is especially valuable for long-form content that readers discover but don't have time to read immediately.
Recommended Implementation
Approach
localStoragefor anonymous readers (no account required)/reading-listpage showing saved postsFor Subscribers
ReadingListItemmodel:subscriber_id,post_id,created_atFor Anonymous Readers
localStoragelocalStorageand fetches post dataKey Files to Create
app/models/reading_list_item.rbapp/controllers/reading_list_controller.rbapp/javascript/controllers/bookmark_controller.jsapp/views/reading_list/index.html.erb