# What changed in praw

> 65 changes in praw 8 from its official release notes, upgrade guides and advisories: 43 breaking, 12 new APIs and options. Each one cited. Sources checked 2026-10-21. HTML: https://unstale.sh/pypi/praw/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## praw 8

### Breaking changes

- The APIException class is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Comment.award is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Comment.gild is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The after argument is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- InboxableMixin.unblock_subreddit is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The path argument is replaced by media, which takes a PostMedia instance. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The reset_timestamp key is removed from limits. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Uploads to Reddit S3 buckets respect the configured timeout and raise prawcore.RequestException on transport errors. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The data argument must now be passed by keyword. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- PRAW no longer supports Python 3.8. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- PRAW no longer supports Python 3.9. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The token_manager keyword argument and all associated token managers are removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Reddit.random_subreddit is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Raises ReadOnlyException when called in read_only mode. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The validate_on_submit configuration attribute is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Redditor.gild is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Redditor.gilded is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Redditor.gildings is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The reason_id argument is renamed to id. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- comment_sort and comment_limit must be set before fetching; setting either afterward raises ClientException instead of logging a warning. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Raises ClientException when called after a submission has been fetched, rather than logging a warning. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Submission.award is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Submission.gild is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Subreddit.gilded is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Subreddit.mod.inbox is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Subreddit.mod.stream.unread is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Subreddit.mod.unread is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The mark_read argument must now be passed by keyword. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Subreddit.random is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Subreddit.random_rising is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Gallery, image, poll, and video submission methods are merged into submit; the submission kind is selected by keyword argument, with optional Markdown body text. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The image_path argument is replaced by media, which takes an EmojiMedia instance. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The flair_type argument must now be passed by keyword. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- SubredditMessage.mute is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- SubredditMessage.unmute is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Subreddits.gold is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Subreddits.search_by_topic is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Stylesheet upload methods replace image_path with a positional media argument taking a StylesheetImage or StylesheetAsset as appropriate. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The file_path argument is replaced by a positional media argument taking a WidgetMedia instance. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Uploading an unknown media type now raises ClientException instead of falling back to JPEG. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- This obsolete configuration option is removed because adding fetch parameters after fetching now raises ClientException. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- This obsolete configuration option is removed because setting comment_sort or comment_limit after fetching now raises ClientException. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- WebSocketException.original_exception is removed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)

### New APIs and options

- Returns the announcement's read timestamp as a timezone-aware datetime, or None for unread announcements. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Returns the announcement's sent timestamp as a timezone-aware datetime. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Collection gains a timezone-aware updated_datetime attribute. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Objects with a creation time gain a timezone-aware created_datetime attribute. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Media classes consolidate uploads and can be constructed from a file path or from bytes with a name, avoiding the need to write content to disk before uploading. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- PollData gains a timezone-aware voting_end_datetime attribute. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- This environment variable silences the warning for a current-directory praw.ini that sets oauth_url or reddit_url. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Provides access to announcements for listing, hiding, and marking the authenticated user's announcements as read. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Iterates over a Redditor's combined comments and submissions, mirroring Reddit's user overview page. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Link, image, gallery, and video submissions can include optional Markdown-formatted body text. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The exception_handler keyword argument receives exceptions raised while fetching items, allowing a stream to resume; re-raising stops the stream. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- Video submissions accept an optional Markdown-formatted selftext parameter. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)

### Behavior and default changes

- selftext and url are no longer mutually exclusive; selftext can accompany a link submission, but inline_media cannot be used with selftext for a url submission. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)

### Tooling

- Declared in praw and praw.models so type checkers recognize documented imports as public re-exports instead of reporting them as private. (8.0.1) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.1)
- A PEP 561 marker lets downstream projects type check against PRAW's inline annotations. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)

### Fixes and other changes

- Rewinds seekable file objects before retrying after a rate limit response, preventing empty or truncated file uploads. (8.0.3) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.3)
- Objectifying a response whose json.errors field is null no longer raises TypeError. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The subreddit module is now a package with Subreddit and helper classes moved to dedicated modules; classes remain importable from praw.models.reddit.subreddit and praw.models for backward compatibility. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- PRAW adds support for Python 3.13. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- PRAW adds support for Python 3.14. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The subreddit attribute of Redditor is a UserSubreddit instance. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
- The API endpoint used by Submission.hide and Submission.unhide is fixed. (8.0.0) — [release notes](https://github.com/praw-dev/praw/releases/tag/v8.0.0)
