{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/dev-37signals-com/2025-08-18-introducing-action-push-native/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "**Note:** Shortly after releasing this gem, we renamed it from *Action Native Push* to *Action Push Native*, in case you arrived here looking for the gem of the former name. [More details here](https://github.com/basecamp/action_push_native/pull/28).\n\n* * *\n\nWe’ve open-sourced [Action Push Native](https://github.com/basecamp/action_push_native), a Rails gem for sending push notifications to mobile platforms. It supports both Apple and Google push notification services.\n\n* * *\n\n## Why did we build it?\n\nWe created it to migrate off Amazon SNS and Pinpoint, as part of our broader [cloud exit](https://basecamp.com/cloud-exit). We’re using it in [Basecamp](https://basecamp.com/) and [HEY](https://www.hey.com/) to send more than 10 million push notifications per day without a hitch.\n\nAction Push Native relies on HTTP/2 persistent connections to the Apple Push Notification service, which significantly reduced job duration compared to our previous HTTP/1 setup with AWS Pinpoint:\n\n* * *\n\n## How does it work?\n\nThe gem connects directly to the Apple (APNs) and Google (FCM) push notification services. It handles retries, rate-limiting, and deleting dead devices automatically. Configure each platform with your credentials, and you can start sending notifications like this:\n\n```\ndevice = ApplicationPushDevice.create! \\\n  name: \"iPhone 16\",\n  token: \"6c267f26b173cd9595ae2f6702b1ab560371a60e7c8a9e27419bd0fa4a42e58f\",\n  platform: \"apple\"\n\nnotification = ApplicationPushNotification.new \\\n  title: \"Hello world!\",\n  body:  \"Welcome to Action Push Native\"\n\nnotification.deliver_later_to(device)\n```\n\n[Version 0.1.0](https://rubygems.org/gems/action_push_native) is available now. You can read more on [GitHub](https://github.com/basecamp/action_push_native#readme).\n\nWe hope you find it useful!\n\nSign up to get posts via email,\\\n or [grab the RSS feed](https://dev.37signals.com/feed/posts.xml).\n",
  "authors": [
    "Jacopo Beschi"
  ],
  "captured_at": "2026-09-19T21:30:23.395188495+00:00",
  "category": "programming",
  "content_html": "<p><strong>Note:</strong> Shortly after releasing this gem, we renamed it from <em>Action Native Push</em> to <em>Action Push Native</em>, in case you arrived here looking for the gem of the former name. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/basecamp/action_push_native/pull/28\">More details here</a>.</p>\n<hr />\n<p>We’ve open-sourced <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/basecamp/action_push_native\">Action Push Native</a>, a Rails gem for sending push notifications to mobile platforms. It supports both Apple and Google push notification services.</p>\n<hr />\n<h2>Why did we build it?</h2>\n<p>We created it to migrate off Amazon SNS and Pinpoint, as part of our broader <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://basecamp.com/cloud-exit\">cloud exit</a>. We’re using it in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://basecamp.com/\">Basecamp</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.hey.com/\">HEY</a> to send more than 10 million push notifications per day without a hitch.</p>\n<p>Action Push Native relies on HTTP/2 persistent connections to the Apple Push Notification service, which significantly reduced job duration compared to our previous HTTP/1 setup with AWS Pinpoint:</p>\n<hr />\n<h2>How does it work?</h2>\n<p>The gem connects directly to the Apple (APNs) and Google (FCM) push notification services. It handles retries, rate-limiting, and deleting dead devices automatically. Configure each platform with your credentials, and you can start sending notifications like this:</p>\n<pre><code><span class=\"code-snippet\">device = ApplicationPushDevice.create! \\\n  name: &quot;iPhone 16&quot;,\n  token: &quot;6c267f26b173cd9595ae2f6702b1ab560371a60e7c8a9e27419bd0fa4a42e58f&quot;,\n  platform: &quot;apple&quot;\n\nnotification = ApplicationPushNotification.new \\\n  title: &quot;Hello world!&quot;,\n  body:  &quot;Welcome to Action Push Native&quot;\n\nnotification.deliver_later_to(device)\n</span></code></pre>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://rubygems.org/gems/action_push_native\">Version 0.1.0</a> is available now. You can read more on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/basecamp/action_push_native#readme\">GitHub</a>.</p>\n<p>We hope you find it useful!</p>\n<p>Sign up to get posts via email,<br />\nor <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://dev.37signals.com/feed/posts.xml\">grab the RSS feed</a>.</p>\n",
  "content_markdown": "**Note:** Shortly after releasing this gem, we renamed it from *Action Native Push* to *Action Push Native*, in case you arrived here looking for the gem of the former name. [More details here](https://github.com/basecamp/action_push_native/pull/28).\n\n* * *\n\nWe’ve open-sourced [Action Push Native](https://github.com/basecamp/action_push_native), a Rails gem for sending push notifications to mobile platforms. It supports both Apple and Google push notification services.\n\n* * *\n\n## Why did we build it?\n\nWe created it to migrate off Amazon SNS and Pinpoint, as part of our broader [cloud exit](https://basecamp.com/cloud-exit). We’re using it in [Basecamp](https://basecamp.com/) and [HEY](https://www.hey.com/) to send more than 10 million push notifications per day without a hitch.\n\nAction Push Native relies on HTTP/2 persistent connections to the Apple Push Notification service, which significantly reduced job duration compared to our previous HTTP/1 setup with AWS Pinpoint:\n\n* * *\n\n## How does it work?\n\nThe gem connects directly to the Apple (APNs) and Google (FCM) push notification services. It handles retries, rate-limiting, and deleting dead devices automatically. Configure each platform with your credentials, and you can start sending notifications like this:\n\n```\ndevice = ApplicationPushDevice.create! \\\n  name: \"iPhone 16\",\n  token: \"6c267f26b173cd9595ae2f6702b1ab560371a60e7c8a9e27419bd0fa4a42e58f\",\n  platform: \"apple\"\n\nnotification = ApplicationPushNotification.new \\\n  title: \"Hello world!\",\n  body:  \"Welcome to Action Push Native\"\n\nnotification.deliver_later_to(device)\n```\n\n[Version 0.1.0](https://rubygems.org/gems/action_push_native) is available now. You can read more on [GitHub](https://github.com/basecamp/action_push_native#readme).\n\nWe hope you find it useful!\n\nSign up to get posts via email,\\\n or [grab the RSS feed](https://dev.37signals.com/feed/posts.xml).\n",
  "dateCreated": "2026-09-19T21:30:23.395188495+00:00",
  "date_created": "2025-08-18T17:00:00+00:00",
  "date_modified": "2025-08-18T17:00:00+00:00",
  "date_published": "2025-08-18T17:00:00+00:00",
  "description": "A Rails gem for sending push notifications to mobile platforms.",
  "external_url": "https://dev.37signals.com/introducing-action-push-native/",
  "git": {
    "commit": "ebb0941c5c06a2ab2377342d607535262a3e969e",
    "path": "items/dev-37signals-com/2025/08/2025-08-18-introducing-action-push-native.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/ebb0941c5c06a2ab2377342d607535262a3e969e/items/dev-37signals-com/2025/08/2025-08-18-introducing-action-push-native.md"
  },
  "id": "urn:aggr:item:333c2a77b368453dc4fde52ab5794395ab707b40",
  "isBasedOn": {
    "@id": "https://dev.37signals.com/introducing-action-push-native/"
  },
  "mainEntity": {
    "@id": "https://dev.37signals.com/introducing-action-push-native/",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/dev-37signals-com/2025-08-18-introducing-action-push-native/#webpage"
    },
    "author": [
      {
        "@type": "Person",
        "name": "Jacopo Beschi"
      }
    ],
    "dateModified": "2025-08-18T17:00:00+00:00",
    "datePublished": "2025-08-18T17:00:00+00:00",
    "headline": "Introducing Action Push Native",
    "timeRequired": "PT1M",
    "url": "https://dev.37signals.com/introducing-action-push-native/",
    "wordCount": 223
  },
  "name": "Archived snapshot: Introducing Action Push Native",
  "preview": null,
  "reading_minutes": 1,
  "replicated_at": null,
  "source": "dev-37signals-com",
  "source_name": "37signals Dev",
  "summary": "A Rails gem for sending push notifications to mobile platforms.",
  "tags": [],
  "temporalCoverage": "2026-09-19T21:30:23.395188495+00:00",
  "title": "Introducing Action Push Native",
  "url": "https://aggr.aymericbeaumet.com/items/dev-37signals-com/2025-08-18-introducing-action-push-native/",
  "word_count": 223
}