Skip to main content
Version: 0.12

Support this app

You can ask users to contribute to your app’s development by adding the “support this app” feature. This allows users to support your app with Reddit Gold in exchange for some kind of award or recognition.

Requirements

The “Support this App” purchase button must meet the Developer Platform’s design guidelines.

You can choose to give something in return to users who support your app. This could be unique custom user flair, an honorable mention in a thank you post, or another creative way to show your appreciation.

If you choose to not give the user anything for supporting your app, ensure that it's clear to the user that they are contributing to a "tip jar" without receiving anything in return.

How to integrate app support

Create the product

Use the Devvit CLI to generate the product configuration.

devvit products add support-app

Add a payment handler

In Devvit Web, the payment handler is your server’s fulfill endpoint. That’s where you award the promised incentive (e.g. custom user flair). Implement it in your server and reference it in devvit.json under payments.endpoints.fulfillOrder.

Example: award custom user flair when a user completes a support purchase:

server/index.ts
import type { PaymentHandlerResponse, Order } from "@devvit/web/server";
import { reddit } from "@devvit/web/server";

app.post("/internal/payments/fulfill", async (c) => {
const order = await c.req.json<Order>();
const username = order.userId; // or the username field on the order
if (!username) {
return c.json<PaymentHandlerResponse>({ success: false, reason: "User not found" });
}

const subredditName = order.subredditName ?? order.subredditId;

await reddit.setUserFlair({
text: "Super Duper User",
subredditName,
username,
backgroundColor: "#ffbea6",
textColor: "dark",
});

return c.json<PaymentHandlerResponse>({ success: true });
});

Initiate purchases

Provide a way for users to support your app from your client:

  • Devvit Web: Add a button or link that calls purchase("support-app") from @devvit/web/client. Handle the result (e.g. show a toast on success). Optionally fetch product info from your /api/products endpoint to display the support option.
  • Follow the design guidelines when initiating purchases.

Support App Example

Example client code:

client/index.ts
import { purchase, OrderResultStatus } from "@devvit/web/client";

async function handleSupportApp() {
const result = await purchase("support-app");
if (result.status === OrderResultStatus.STATUS_SUCCESS) {
// show success, e.g. toast: "Thanks for your support!"
} else {
// show error or retry (result.errorMessage may be set)
}
}

Example

At r/BirbGame, they created the Birb Club. Members can join the club and get exclusive flair to support the app.

Birb gif

Birb flair