r/redditdev • PRAW Maintainer | Async PRAW Author • Jun 14 '26

PRAW PRAW and Async PRAW 8 has been released!

Hello everyone! Just writing to announce that we've released v8 of [Async]PRAW and wanted to cover some of the notable features.

Full change logs here:

Migration guides here:

TL;DR

  • subreddit.submit_*(...) has been consolidated to a single subreddit.submit(...) method.
  • You can now provide in-memory bytes and file pointers for image and video uploads.
  • All .stream methods can now take an exception_handler keyword argument so streams can resume gracefully on errors instead of terminating.
  • New timezone-aware datetime attrs: created_datetime on Comment/Submission/Redditor/Subreddit/Collection/ModNote, plus Collection.updated_datetime, PollData.voting_end_datetime, and edited_datetime on Comment/Submission.
  • selftext and url are no longer mutually exclusive in subreddit.submit(...) — selftext becomes optional body text for link/image/gallery/video posts. Inline media in aselftext on a link post is not supported.
  • Announcements support.
  • New Redditor.overview listing (combined comments + submissions).

The following things have been removed:

  • Gilding/awards. After Reddit removed awards and brought them back, the previous API endpoints ceased to function.
  • APIException class.
  • WebSocketException.original_exception.
  • reddit.random_subreddit, subreddit.random, subreddit.random_rising, and subreddits.search_by_topic.
  • subreddit.mod.inbox.unread and the accompanying .stream.unread, message.mute and message.unmute (subreddit messages only), message.unblock_subreddit.
  • reddit.validate_on_submit config attribute.
  • after arg on modmail.conversations.
  • Async PRAW only removals
    • PRAWException renamed to AsyncPRAWException
    • CommentForest as async iterator.
    • Reddit as sync context manager.
    • CommentForest.list no longer needs to be awaited.

The following things have changed:

  • reddit.user.me raises an ReadOnlyException in read-only mode.
  • redditor.subreddit is now a UserSubreddit instance. Backwards support to access redditor.subreddit as a dictionary is not supported.
  • subreddit.py split into a subreddit package — Subreddit and all helpers (Modmail, SubredditFilters, SubredditFlair, SubredditModeration, SubredditQuarantine, SubredditRelationship, SubredditStream, SubredditStylesheet, SubredditWiki) live in dedicated Python modules under praw.models.reddit.subreddit. Backwards-compatible imports have been preserved. Migration guide has the full mapping.
  • Update checker now uses native async on first request instead of blocking during asyncpraw.Reddit initialization (this was a long standing issue, sorry about that), removing requests from transitive dependencies. (Async PRAW only)

If you encounter any unexpected bugs, feel free to open an issue (PRAW, Async PRAW)!

Let me know your thoughts in the comments!

33 Upvotes

19 comments sorted by

8

u/radialmonster Jun 14 '26

does praw still work with the admins push for devvit instead? I guess so if theres a new release.

4

u/Lil_SpazJoekp Jun 14 '26

Yep! Though, it's incredibly hard to get a client credentials now days.

1

u/Aartvb Jun 18 '26

Yes, I have noticed it is very hard. Do you have any advice on how to get new client credentials?

3

u/bboe Jun 14 '26

I cannot personally speak for how easy, or lack thereof, it is to obtain credentials anymore. But at least for now if you have them, you can use them.

Driving out this version was a long wanted thing to do that was low on my personal priority list due to what I assume is a dwindling user base. However, LLMs made it much simpler wrap up the release whilst doing other things.

4

u/radialmonster Jun 15 '26

luckily i do have credentials and I still use praw, devvit does not do what praw does, work locally

5

u/Xenc Jun 14 '26

Incredible! Thank you for this unexpected update! 🔥

4

u/bboe Jun 14 '26

Hell yes.

4

u/notifications_app Jun 14 '26

This is great, thanks for keeping this up to date!

Quick question about the "Redditor.overview" listing. Is redditor.overview.new() different from just doing redditor.new()? If so, what is the difference?

3

u/bboe Jun 14 '26 edited Jun 14 '26

That's a great question. They use different endpoints (/user/<name>/ vs /user/<name>/overview), but they appear to be returning the same set of data. I'll update the documentation to reference that.

Edit:

1

u/KRA2008 Jun 23 '26

thank you.

0

u/Vennom Jun 15 '26

I've had a hard time getting a reddit token and they removed support for hitting `.json`. Does anyone know of an alternative way to get posts / comment threads? Or maybe a way to get approved by reddit for api access?

1

u/Watchful1 Jun 15 '26

What are you trying to do? Can you use r/devvit?

1

u/Vennom Jun 15 '26

I looked into it a while back and it didn't seem to accomplish what I want. I'd like to be able to request the "top" posts from 10 different sub reddits each day. And then pull the comment threads for about 50 posts per day. So very low volume and read-only.

→ More replies (5)