<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/push-v3-one-message-from-your-server-to-every-surface-u9rdqsnvb" -->

---
title: Push V3: One Message From Your Server to Every Surface
description: Codename One has merged Push V3 into its core, introducing a typed PushMessage model, managed provider credentials (including APNs .p8 keys), server-side...
canonical: https://daily.dev/posts/push-v3-one-message-from-your-server-to-every-surface-u9rdqsnvb
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Push V3: One Message From Your Server to Every Surface | daily.dev
og:description: Codename One has merged Push V3 into its core, introducing a typed PushMessage model, managed provider credentials (including APNs .p8 keys), server-side...
og:url: https://daily.dev/posts/push-v3-one-message-from-your-server-to-every-surface-u9rdqsnvb
og:image: https://api.daily.dev/og/posts/u9rdqsNvB.png
og:image:alt: Push V3: One Message From Your Server to Every Surface
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Push V3: One Message From Your Server to Every Surface

**[Foojay.io](https://daily.dev/sources/foojayio)** · 14 min read · 2 upvotes · 0 comments

## Summary

Codename One has merged Push V3 into its core, introducing a typed PushMessage model, managed provider credentials (including APNs .p8 keys), server-side segmentation, campaign analytics retained for 30 days, and direct Surface updates (Live Activities, Dynamic Island, widgets). Existing apps must migrate the push endpoint from push.codenameone.com to cloud.codenameone.com before the old server is decommissioned next week. The release also covers: a Maven repository move from Central to Cloudflare R2 (reducing release payload from 229.5 MB to 76.9 MB), on-device AI APIs (OCR, vision, LiteRT inference, MCP server for semantic app control), a new Health API covering HealthKit and Health Connect with careful handling of permission ambiguity, and a routing API using OSRM to turn two coordinates into road geometry with legs and step instructions.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://foojay.io/today/push-v3-one-message-from-your-server-to-every-surface>

## Questions this post answers

### How do I migrate my Codename One app from the old push service to the new cloud.codenameone.com endpoint?

Change only the request host from https://push.codenameone.com/push/push to https://cloud.codenameone.com/push/push and keep the rest of the request unchanged. The new server includes a classic compatibility layer that accepts the existing request format, so no code changes are required before the hostname switch. Test visible notifications, data payloads, cold starts, badges, and deep links on every platform, then compare results against the old host before the old service is shut down.

_Developers timing a push migration window can track breaking-change guidance like this on daily.dev._

### What changed in the Codename One PushCallback API with Push V3?

PushCallback is replaced by a PushClient built with a PushListener interface. Instead of push(String value), registeredForPush(String deviceId), and pushRegistrationError(...), the new API exposes onMessage(PushMessage message) with a parsed typed message, onRegistration(PushSubscription subscription) returning a subscription object, and onError(PushError error) carrying an error code plus retry information.

_Teams upgrading push integrations can follow API migration breakdowns like this via daily.dev._

### Why is Codename One moving its Maven artifacts off Maven Central to Cloudflare R2?

Codename One's weekly, multi-platform release cadence produces a workload that is expensive to host on Maven Central: one release measured 2.12 GB against an 80 MB guideline, 19,962 files against a 1,000 limit, and 27 releases against a 7 limit. Moving to a self-hosted repository on Cloudflare R2 lets the same Maven layout be served free while fitting the release shape; phase one already cut a measured release payload from 229.5 MB to 76.9 MB.

_Developers planning dependency-repo migrations can follow updates like this on daily.dev._

## Similar posts on daily.dev

- [More Surfaces, Same Deal: Cars, Sensors, Commerce, Video And Builds](https://daily.dev/posts/more-surfaces-same-deal-cars-sensors-commerce-video-and-builds-0az7iiwhg) · Foojay.io · 0 upvotes · 0 comments
- [A2A Java SDK 1.0.0.CR1 Released](https://daily.dev/posts/a2a-java-sdk-1-0-0-cr1-released-oztkicigx) · Quarkus · 0 upvotes · 0 comments
- [Android 17 \(API Level 37\): Everything Android Developers Need to Know](https://daily.dev/posts/android-17-api-level-37-everything-android-developers-need-to-know-lhokkvwyx) · Medium · 17 upvotes · 2 comments
- [Spring AI 1.1.0-M3 Available Now](https://daily.dev/posts/spring-ai-1-1-0-m3-available-now-yb8pbetkm) · Spring · 2 upvotes · 0 comments
- [Skills, Java 17, And Theme Accents with Codename One](https://daily.dev/posts/skills-java-17-and-theme-accents-with-codename-one-z6j5zcuxi) · Foojay.io · 3 upvotes · 0 comments

---

Tags: [#java](https://daily.dev/tags/java), [#mobile](https://daily.dev/tags/mobile), [#local-ai](https://daily.dev/tags/local-ai)

[View this post on daily.dev](https://daily.dev/posts/push-v3-one-message-from-your-server-to-every-surface-u9rdqsnvb)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Push V3: One Message From Your Server to Every Surface","url":"https://daily.dev/posts/push-v3-one-message-from-your-server-to-every-surface-u9rdqsnvb","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/push-v3-one-message-from-your-server-to-every-surface-u9rdqsnvb"},"datePublished":"2026-08-07T23:22:17.136Z","dateModified":"2026-09-14T09:19:29.385Z","description":"Codename One has merged Push V3 into its core, introducing a typed PushMessage model, managed provider credentials (including APNs .p8 keys), server-side...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/6b70097f3e5e3878dfa177351d59ae5f?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/6b70097f3e5e3878dfa177351d59ae5f?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Foojay.io","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Foojay.io","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/1820f6a6ae944760aa322b67ed85f848","url":"https://daily.dev/sources/foojayio"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/push-v3-one-message-from-your-server-to-every-surface-u9rdqsnvb","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"java,mobile,local-ai","timeRequired":"PT14M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Foojay.io","item":"https://daily.dev/sources/foojayio"},{"@type":"ListItem","position":3,"name":"Push V3: One Message From Your Server to Every Surface"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/push-v3-one-message-from-your-server-to-every-surface-u9rdqsnvb#faq","mainEntity":[{"@type":"Question","name":"How do I migrate my Codename One app from the old push service to the new cloud.codenameone.com endpoint?","acceptedAnswer":{"@type":"Answer","text":"Change only the request host from https://push.codenameone.com/push/push to https://cloud.codenameone.com/push/push and keep the rest of the request unchanged. The new server includes a classic compatibility layer that accepts the existing request format, so no code changes are required before the hostname switch. Test visible notifications, data payloads, cold starts, badges, and deep links on every platform, then compare results against the old host before the old service is shut down. Developers timing a push migration window can track breaking-change guidance like this on daily.dev."}},{"@type":"Question","name":"What changed in the Codename One PushCallback API with Push V3?","acceptedAnswer":{"@type":"Answer","text":"PushCallback is replaced by a PushClient built with a PushListener interface. Instead of push(String value), registeredForPush(String deviceId), and pushRegistrationError(...), the new API exposes onMessage(PushMessage message) with a parsed typed message, onRegistration(PushSubscription subscription) returning a subscription object, and onError(PushError error) carrying an error code plus retry information. Teams upgrading push integrations can follow API migration breakdowns like this via daily.dev."}},{"@type":"Question","name":"Why is Codename One moving its Maven artifacts off Maven Central to Cloudflare R2?","acceptedAnswer":{"@type":"Answer","text":"Codename One's weekly, multi-platform release cadence produces a workload that is expensive to host on Maven Central: one release measured 2.12 GB against an 80 MB guideline, 19,962 files against a 1,000 limit, and 27 releases against a 7 limit. Moving to a self-hosted repository on Cloudflare R2 lets the same Maven layout be served free while fitting the release shape; phase one already cut a measured release payload from 229.5 MB to 76.9 MB. Developers planning dependency-repo migrations can follow updates like this on daily.dev."}}]}
```

