Runners take pictures of a humanoid robot in the second
Beijing-e-town" class="entity-link entity-location" data-entity-id="118773" data-entity-type="location">
Beijing E-Town Half Marathon and Humanoid Robot Half Marathon in
Beijing Sunday, April 19, 2026. (Haruna Furuhashi/Pool Photo via AP) 2026-04-19T04:00:36Z
Beijing (AP) — A humanoid robot that won a half-marathon race for robots in
Beijing on Sunday ran faster than the human world record in a show of
China’s technological leaps. The winner from
Honor, a Chinese smartphone maker, completed the 21-kilometer (13-mile) race in 50 minutes and 26 seconds, according to a WeChat post by the
Beijing Economic-Technological Development Area, also known as
Beijing-e-town" class="entity-link entity-location" data-entity-id="118773" data-entity-type="location">
Beijing E-Town, where the race kicked off. That was faster than the human world record holder,
Uganda’s
Jacob Kiplimo, who finished the same distance in about 57 minutes in March at the Lisbon road race. The performance by the robot marked a significant step forward from last year’s inaugural race, during which the winning robot finished in 2 hours, 40 minutes and 42 seconds. But the competition, which was held alongside a race for humans, wasn’t without hiccups — one robot fell flat at the start line, another bumped into a barrier. freestar.queue.push(function () { window.fsAdCount = window.fsAdCount + 1 || 0; let customChannel = '/dynamic_' + fsAdCount; let adList = document.querySelectorAll(".fs-feed-ad") let thisAd = adList[fsAdCount]; let randId = Math.random().toString(36).slice(2); thisAd.id = randId; let thisPlacement = fsAdCount == 0 ? "apnews_story_feed" : "apnews_story_feed_dynamic"; freestar.newAdSlots({ placementName: thisPlacement, slotId: randId }, customChannel); });
Du Xiaodi,
Honor’s test development engineer, said his team was happy with the results. Du said its robot design was modeled on outstanding human athletes, with long legs of about 95 cm (around 37 inches), and was equipped with what he called a powerful liquid-cooling system, which was largely developed in-house. “Looking ahead, some of these technologies might be transferred to other areas. For example, structural reliability and liquid-cooling technology could be applied in future industrial scenarios,” he said. /* Desktop-first: fully collapse by default */ #ap-readmore-embed { display: none; margin: 0; padding: 0; height: 0; min-height: 0; overflow: hidden; text-align: center; position: relative; z-index: 2; } /* Only show on mobile */ @media (max-width: 767px) { #ap-readmore-embed { display: block; margin: 28px 0; height: auto; overflow: visible; } } #ap-readmore-embed .ap-readmore-btn { appearance: none; -webkit-appearance: none; border: 0; background: #000; color: #fff; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 14px 22px; border-radius: 999px; font-family: inherit, "AP Sans", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif; font-weight: 700; font-size: 16px; letter-spacing: 0.2px; line-height: 1; box-shadow: 0 10px 18px rgba(0,0,0,0.12); transition: transform 120ms ease, box-shadow 120ms ease, opacity 120ms ease; touch-action: manipulation; -webkit-tap-highlight-color: transparent; position: relative; z-index: 3; } #ap-readmore-embed .ap-readmore-btn:hover { transform: translateY(-1px); box-shadow: 0 14px 22px rgba(0,0,0,0.16); } #ap-readmore-embed .ap-readmore-btn:active { transform: translateY(0); box-shadow: 0 10px 18px rgba(0,0,0,0.12); opacity: 0.95; } #ap-readmore-embed .ap-readmore-btn:focus-visible { outline: 3px solid rgba(228, 0, 43, 0.35); outline-offset: 3px; } #ap-readmore-embed .ap-readmore-icon { width: 10px; height: 10px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); margin-top: -2px; } #ap-readmore-embed .ap-readmore-fade { display: none; height: 48px; margin-top: -48px; pointer-events: none; background: linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,1)); } Read More (function () { var APRM_EMBED_ID = "ap-readmore-embed"; var APRM_MOBILE_MQ = "(max-width: 767px)"; function APRM_onReady(fn) { if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", fn); } else { fn(); } } APRM_onReady(function () { var APRM_embedEl = document.getElementById(APRM_EMBED_ID); if (!APRM_embedEl) return; // 🚨 DESKTOP: remove entire module wrapper and bail early if (!window.matchMedia(APRM_MOBILE_MQ).matches) { var APRM_rootModule = APRM_embedEl.closest(".HTMLModuleEnhancement") || APRM_embedEl.closest(".HtmlModule"); if (APRM_rootModule && APRM_rootModule.parentNode) { APRM_rootModule.parentNode.removeChild(APRM_rootModule); } else if (APRM_embedEl.parentNode) { APRM_embedEl.parentNode.removeChild(APRM_embedEl); } return; // stop the rest of the script from running } }); })(); (function () { var EMBED_ID = "ap-readmore-embed"; var BTN_ID = "apReadMoreBtn"; var FADE_ID = "apReadMoreFade"; var STOP_SELECTOR = ".Page-below"; var SIGN_IN_GATE_SELECTOR = ".sign-in-gate-content"; var HIDDEN_ATTR = "data-ap-readmore-hidden"; var MOBILE_MQ = "(max-width: 767px)"; function ready(fn) { if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", fn); } else { fn(); } } function isElementNode(n) { return n && n.nodeType === 1; } function cancelEvent(e) { if (!e) return; if (typeof e.preventDefault === "function") e.preventDefault(); if (typeof e.stopPropagation === "function") e.stopPropagation(); if (typeof e.stopImmediatePropagation === "function") e.stopImmediatePropagation(); e.cancelBubble = true; e.returnValue = false; } function collapseDesktopEmbed(embed) { if (!embed) return true; if (!window.matchMedia(MOBILE_MQ).matches) { var maybeWrappers = [ embed.parentElement, embed.closest(".html-embed"), embed.closest("[data-type='htmlembed']"), embed.closest("[class*='embed']"), embed.closest("[class*='Embed']") ].filter(Boolean); embed.style.display = "none"; embed.style.margin = "0"; embed.style.padding = "0"; embed.style.height = "0"; embed.style.minHeight = "0"; embed.style.overflow = "hidden"; maybeWrappers.forEach(function (el) { el.style.margin = "0"; el.style.padding = "0"; el.style.height = "0"; el.style.minHeight = "0"; el.style.overflow = "hidden"; }); if (embed.parentNode) { embed.parentNode.removeChild(embed); } return true; } return false; } ready(function () { var embed = document.getElementById(EMBED_ID); var btn = document.getElementById(BTN_ID); var fade = document.getElementById(FADE_ID); if (!embed || !btn) return; if (collapseDesktopEmbed(embed)) return; var signInGate = document.querySelector(SIGN_IN_GATE_SELECTOR); if (signInGate) { embed.innerHTML = ""; return; } // — Analytics: impression when embed enters viewport — if ("IntersectionObserver" in window) { var io = new IntersectionObserver(function (entries, observer) { if (entries[0].isIntersecting) { window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: "ap_readmore_impression" }); observer.disconnect(); } }, { threshold: 0 }); io.observe(btn); } var stopEl = document.querySelector(STOP_SELECTOR); if (!stopEl) return; var rootCandidates = [ embed.closest(".Page"), embed.closest("article"), embed.closest("main"), document.body ].filter(Boolean); var root = rootCandidates.find(function (c) { return c.contains(stopEl); }) || document.body; var all = root.getElementsByTagName("*"); var hidden = []; for (var i = 0; i While it will still take time to achieve widespread commercialization of humanoid robots, spectators were already impressed by the robots. Sun Zhigang, who had been in the audience last year, watched Sunday’s race with his son. “I feel enormous changes this year,” Sun said. “It’s the first time robots have surpassed humans, and that’s something I never imagined.” Wang Wen, who came with his family, said robots seemed to have stolen much of the spotlight from human runners in the event. freestar.queue.push(function () { window.fsAdCount = window.fsAdCount + 1 || 0; let customChannel = '/dynamic_' + fsAdCount; let adList = document.querySelectorAll(".fs-feed-ad") let thisAd = adList[fsAdCount]; let randId = Math.random().toString(36).slice(2); thisAd.id = randId; let thisPlacement = fsAdCount == 0 ? "apnews_story_feed" : "apnews_story_feed_dynamic"; freestar.newAdSlots({ placementName: thisPlacement, slotId: randId }, customChannel); }); “The robots’ speed far exceeds that of humans,” he said. “This may signal the arrival of sort of a new era.”
Beijing-e-town" class="entity-link entity-location" data-entity-id="118773" data-entity-type="location">
Beijing E-Town said about 40% of the robots navigated the course autonomously, while the others were remotely controlled. State media outlet Global Times reported that a separate, remotely-controlled robot from
Honor was the first to cross the finish line in 48 minutes and 19 seconds. But it said the winning one used autonomous navigation and received the championship under the event’s weighted scoring rules. State broadcaster CCTV reported that the runners-up, which were also from
Honor and used autonomous navigation, finished the race in about 51 minutes and 53 minutes respectively. A robot served as a traffic officer to direct the participants with its arm gestures and voice, CCTV added. Sign up for Morning Wire: Our flagship newsletter breaks down the biggest headlines of the day. Email address Sign up By checking this box, you agree to AP's Terms of Use and acknowledge that AP may collect and use your data pursuant to our Privacy Policy . [data-ap-newsletter-embed-nlmw25] { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; width: 100%; max-width: 720px; min-width: 0; padding: 16px 16px 16px 16px; box-sizing: border-box; border-radius: 8px; border: 1px solid #E6E6E7; background: #F2F2F2; box-shadow: 0 4px 4px 4px rgba(102, 102, 102, 0.40); font-family: "AP Var", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif; color: #000; container-type: inline-size; container-name: ap-nl-nlmw25; margin-left: auto; margin-right: auto; align-self: center; justify-self: center; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-accent-nlmw25 { width: 48px; height: 6px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-title-nlmw25 { align-self: stretch; color: #000; font-family: "AP Var", system-ui, sans-serif; font-size: 18px; font-style: normal; font-weight: 400; line-height: 150%; margin: 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-title-nlmw25 strong { font-weight: 700; line-height: 130%; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-form-nlmw25 { margin: 0; display: flex; flex-direction: column; gap: 16px; width: 100%; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-row-nlmw25 { display: flex; align-items: center; gap: 12px; width: 100%; flex-wrap: nowrap; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-nlmw25 { width: 100%; min-width: 0; border: 1px solid #E6E6E7; border-radius: 10px; padding: 11px 12px; font-size: 14px; line-height: 1.2; outline: none; box-sizing: border-box; background: #fff; color: #000; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-wrapper-nlmw25 { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; flex: 1 0 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-nlmw25:focus { border-color: rgba(0,0,0,.35); box-shadow: 0 0 0 3px rgba(255, 50, 46, 0.18); } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25 { display: flex; justify-content: center; align-items: center; height: 40px; max-height: 40px; padding: 8px 16px; border-radius: 24px; background: #191919; color: #ffffff; border: none; font-size: 14px; font-weight: 600; line-height: 1; cursor: pointer; white-space: nowrap; transition: background 150ms ease, transform 120ms ease; flex: 0 0 auto; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25:hover { background: #000000; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25:active { transform: scale(0.98); } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-disclaimer-nlmw25 { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; align-self: stretch; background: rgba(255, 255, 255, 0); background-blend-mode: multiply; margin: 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-check-nlmw25 { display: flex; gap: 8px; align-items: flex-start; user-select: none; cursor: pointer; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-checkbox-nlmw25 { margin-top: 2px; width: 16px; height: 16px; accent-color: var(--ap-accent); flex: 0 0 auto; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-checktext-nlmw25 { font-size: 12px; line-height: 1.35; color: var(--ap-muted); } [data-ap-newsletter-embed-nlmw25] a { color: var(--ap-text); text-decoration: underline; text-underline-offset: 2px; } [data-ap-newsletter-embed-nlmw25] a:hover { color: var(--ap-accent); } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-messages-nlmw25 { margin: 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-error-nlmw25:empty, [data-ap-newsletter-embed-nlmw25] .ap-newsletter-help-nlmw25:empty { display: none; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-help-nlmw25 { margin: 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-messages-nlmw25:has(.ap-newsletter-error-nlmw25:empty):has(.ap-newsletter-help-nlmw25:empty) { display: none; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-error-nlmw25 { margin: 0; font-size: 12px; line-height: 1.35; color: var(--ap-error); min-height: 1.2em; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-help-nlmw25 { margin: 6px 0 0; font-size: 12px; line-height: 1.35; color: var(--ap-muted); } [data-ap-newsletter-embed-nlmw25].is-submitted-nlmw25 .ap-newsletter-input-nlmw25 { background: rgba(0,0,0,.04); border-color: rgba(0,0,0,.10); color: rgba(0,0,0,.70); cursor: default; } [data-ap-newsletter-embed-nlmw25].is-submitted-nlmw25 .ap-newsletter-button-nlmw25 { display: none; } [data-ap-newsletter-embed-nlmw25].is-submitted-nlmw25 .ap-newsletter-disclaimer-nlmw25 { display: none; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-bot-field-nlmw25 { position: absolute !important; left: -9999px; top: -9999px; width: 1px; height: 1px; opacity: 0; pointer-events: none; } [data-ap-newsletter-embed-nlmw25] .ap-sr-only-nlmw25 { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; } @container ap-nl-nlmw25 (max-width: 420px) { [data-ap-newsletter-embed-nlmw25] { max-width: 350px; padding: 16px; gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-form-nlmw25 { gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-row-nlmw25 { flex-direction: column; align-items: stretch; gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25 { width: 100%; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-wrapper-nlmw25, [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-nlmw25 { width: 100%; } } @media (max-width: 420px) { [data-ap-newsletter-embed-nlmw25] { max-width: 350px; padding: 16px; gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-form-nlmw25 { gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-row-nlmw25 { flex-direction: column; align-items: stretch; gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25 { width: 100%; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-wrapper-nlmw25, [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-nlmw25 { width: 100%; } } const NL_DEFAULT_CONFIG_NLMW25 = { apiUrl: '/api/newsletter/signup', defaultNewsletterList: ['Morning Wire Subscribers'], recaptchaSiteKey: '6Lf06WQrAAAAABB9Ms3Gru2SFLSxUYrLqP5YLDMn', recaptchaHeader: 'X-ReCaptcha-Token', /* UTM params to append to the page URL used as the request referrer. This does NOT modify the subscription payload. */ referrerUtmParams: { utm_source: 'embed' }, messages: { invalidEmail: 'Please use a valid email address.', disclaimerRequired: 'Please check disclaimer before proceeding.', invalidBoth: 'Please provide a valid email address, and check disclaimer.', genericError: 'Something went wrong. Please try again later.', botBlocked: 'Please try again.', recaptchaLoadFail: 'Failed to load reCAPTCHA. Please refresh the page and try again.', recaptchaRequired: 'reCAPTCHA verification is required. Please ensure reCAPTCHA is loaded on this page.', recaptchaFailed: 'reCAPTCHA verification failed. Please refresh the page and try again.', verificationFailed: 'Verification failed. Please try again.' } }; (function (nlConfigNLMW25) { const nlEmailRegexNLMW25 = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/; const nlRecaptchaCheckIntervalNLMW25 = 100; const nlRecaptchaMaxAttemptsNLMW25 = 50; function nlIsValidEmailNLMW25(email) { return nlEmailRegexNLMW25.test(String(email || '').trim()); } function nlBuildReferrerUrlNLMW25(utmParams) { try { const url = new URL(window.location.href); Object.entries(utmParams || {}).forEach(([key, value]) => { if (value !== undefined && value !== null && value !== '') { url.searchParams.set(key, value); } }); return url.toString(); } catch (err) { console.warn('Unable to build referrer URL with UTM params:', err); return window.location.href; } } function nlLoadRecaptchaScriptNLMW25(siteKey, callback) { if (typeof window.grecaptcha !== 'undefined') { callback && callback(); return; } const existingScript = document.querySelector('script[src*="recaptcha/api.js"]'); if (existingScript) { const checkInterval = setInterval(() => { if (typeof window.grecaptcha !== 'undefined') { clearInterval(checkInterval); callback && callback(); } }, nlRecaptchaCheckIntervalNLMW25); return; } const script = document.createElement('script'); script.src = `https://www.google.com/recaptcha/api.js?render=${encodeURIComponent(siteKey)}`; script.async = true; script.defer = true; script.onload = () => callback && callback(); script.onerror = () => { console.error('Failed to load reCAPTCHA script'); callback && callback(false); }; document.head.appendChild(script); } function nlWaitForRecaptchaNLMW25(callback, maxAttempts = nlRecaptchaMaxAttemptsNLMW25) { let attempts = 0; const checkRecaptcha = () => { attempts++; if ( typeof window.grecaptcha !== 'undefined' && typeof window.grecaptcha.execute === 'function' ) { callback(true); } else if (attempts token && token.length > 0 ? token : null) .catch(error => { const errorMsg = error?.message || String(error); if ( errorMsg.includes('No reCAPTCHA clients') || errorMsg.includes('not initialized') || errorMsg.includes('Invalid site key') ) { throw new Error('recaptcha_failed'); } throw error; }); } const nlEmbedsNLMW25 = document.querySelectorAll('[data-ap-newsletter-embed-nlmw25]'); nlEmbedsNLMW25.forEach((rootNLMW25, idxNLMW25) => { const formNLMW25 = rootNLMW25.querySelector('.ap-newsletter-form-nlmw25'); const emailInputNLMW25 = rootNLMW25.querySelector('.ap-newsletter-input-nlmw25'); const checkboxNLMW25 = rootNLMW25.querySelector('.ap-newsletter-checkbox-nlmw25'); const errorElNLMW25 = rootNLMW25.querySelector('.ap-newsletter-error-nlmw25'); const helpElNLMW25 = rootNLMW25.querySelector('.ap-newsletter-help-nlmw25'); const botFieldNLMW25 = rootNLMW25.querySelector('.ap-newsletter-bot-field-nlmw25'); const recaptchaDivNLMW25 = rootNLMW25.querySelector('.ap-newsletter-recaptcha-nlmw25'); let nlIsSubmittingNLMW25 = false; const newsletterListNLMW25 = nlConfigNLMW25.defaultNewsletterList; const recaptchaSiteKeyNLMW25 = nlConfigNLMW25.recaptchaSiteKey; const requestReferrerNLMW25 = nlBuildReferrerUrlNLMW25(nlConfigNLMW25.referrerUtmParams); const emailIdNLMW25 = `nl-email-nlmw25-${idxNLMW25}`; const helpIdNLMW25 = `nl-help-nlmw25-${idxNLMW25}`; const errIdNLMW25 = `nl-error-nlmw25-${idxNLMW25}`; const recaptchaIdNLMW25 = `recaptcha-nlmw25-${idxNLMW25}`; emailInputNLMW25.id = emailIdNLMW25; helpElNLMW25.id = helpIdNLMW25; errorElNLMW25.id = errIdNLMW25; if (recaptchaDivNLMW25) { recaptchaDivNLMW25.id = recaptchaIdNLMW25; if (recaptchaSiteKeyNLMW25) { recaptchaDivNLMW25.setAttribute('data-sitekey', recaptchaSiteKeyNLMW25); } } emailInputNLMW25.setAttribute('aria-describedby', `${helpIdNLMW25} ${errIdNLMW25}`); const nlSetErrorNLMW25 = (msg) => { errorElNLMW25.textContent = msg || ''; errorElNLMW25.style.display = msg ? 'block' : 'none'; }; const nlHideErrorNLMW25 = () => nlSetErrorNLMW25(''); const nlSetSubmittedNLMW25 = () => { rootNLMW25.classList.add('is-submitted-nlmw25'); emailInputNLMW25.value = 'SUBMITTED'; emailInputNLMW25.style.fontWeight = 'bold'; emailInputNLMW25.setAttribute('readonly', 'readonly'); emailInputNLMW25.setAttribute('aria-invalid', 'false'); nlHideErrorNLMW25(); }; const nlSubscribeNLMW25 = (tokenNLMW25) => { if (nlIsSubmittingNLMW25) return; if (botFieldNLMW25?.value) { console.warn('Bot field filled --', botFieldNLMW25.value); nlSetErrorNLMW25(nlConfigNLMW25.messages.botBlocked); return; } const emailNLMW25 = String(emailInputNLMW25.value || '').trim(); const emailOkNLMW25 = nlIsValidEmailNLMW25(emailNLMW25); const disclaimerOkNLMW25 = checkboxNLMW25.checked; if (!emailOkNLMW25 && !disclaimerOkNLMW25) { nlSetErrorNLMW25(nlConfigNLMW25.messages.invalidBoth); emailInputNLMW25.setAttribute('aria-invalid', 'true'); emailInputNLMW25.focus(); return; } if (!emailOkNLMW25) { nlSetErrorNLMW25(nlConfigNLMW25.messages.invalidEmail); emailInputNLMW25.setAttribute('aria-invalid', 'true'); emailInputNLMW25.focus(); return; } if (!disclaimerOkNLMW25) { nlSetErrorNLMW25(nlConfigNLMW25.messages.disclaimerRequired); checkboxNLMW25.focus(); return; } nlIsSubmittingNLMW25 = true; const headersNLMW25 = { 'Content-Type': 'application/json' }; if (tokenNLMW25) { headersNLMW25[nlConfigNLMW25.recaptchaHeader] = tokenNLMW25; } fetch(nlConfigNLMW25.apiUrl, { method: 'POST', headers: headersNLMW25, body: JSON.stringify({ emailId: emailNLMW25, newsLetterListToSubscribe: newsletterListNLMW25 }), /* This is the key change: send the current page URL + UTM params as the referrer. Example: https://.../article/... ?utm_source=embed */ referrer: requestReferrerNLMW25, referrerPolicy: 'strict-origin-when-cross-origin' }) .then(response => response.json() .then(data => ({ status: response.status, data })) .catch(() => ({ status: response.status, data: null })) ) .then(result => { nlIsSubmittingNLMW25 = false; const hasVerificationErrorNLMW25 = result.data && ( result.data.message?.includes('Verification Failed') || result.data.error?.includes('Verification Failed') ); if (hasVerificationErrorNLMW25) { nlSetErrorNLMW25(nlConfigNLMW25.messages.verificationFailed); return; } if (result.status === 200) { if (typeof window.NLSignup === 'function') { try { window.NLSignup(emailNLMW25); } catch (err) {} } window.dispatchEvent(new CustomEvent('nl:newsletterSignup:nlmw25', { detail: { email: emailNLMW25, source: 'Morning Wire Embed', newsletters: newsletterListNLMW25, referrer: requestReferrerNLMW25 } })); nlSetSubmittedNLMW25(); } else { const errorMsgNLMW25 = result.data?.message || result.data?.error || nlConfigNLMW25.messages.genericError; nlSetErrorNLMW25(errorMsgNLMW25); } }) .catch(error => { nlIsSubmittingNLMW25 = false; console.error('Newsletter subscription error:', error); nlSetErrorNLMW25(nlConfigNLMW25.messages.genericError); }); }; const nlAttemptRecaptchaNLMW25 = () => { if (!recaptchaSiteKeyNLMW25) { nlWaitForRecaptchaNLMW25(isAvailable => { if (!isAvailable) { nlSetErrorNLMW25(nlConfigNLMW25.messages.recaptchaRequired); nlIsSubmittingNLMW25 = false; return; } nlExecuteRecaptchaNLMW25() .then(token => nlSubscribeNLMW25(token)) .catch(() => nlSubscribeNLMW25(null)); }); return; } nlLoadRecaptchaScriptNLMW25(recaptchaSiteKeyNLMW25, success => { if (success === false) { nlSetErrorNLMW25(nlConfigNLMW25.messages.recaptchaLoadFail); nlIsSubmittingNLMW25 = false; return; } nlWaitForRecaptchaNLMW25(isAvailable => { if (!isAvailable) { nlSetErrorNLMW25(nlConfigNLMW25.messages.recaptchaRequired); nlIsSubmittingNLMW25 = false; return; } const runExecuteNLMW25 = () => { nlExecuteRecaptchaNLMW25() .then(token => nlSubscribeNLMW25(token)) .catch(error => { if (error?.message === 'recaptcha_failed') { nlSetErrorNLMW25(nlConfigNLMW25.messages.recaptchaFailed); nlIsSubmittingNLMW25 = false; } else { console.warn('reCAPTCHA error:', error); nlSubscribeNLMW25(null); } }); }; if (typeof window.grecaptcha.ready === 'function') { window.grecaptcha.ready(runExecuteNLMW25); } else { runExecuteNLMW25(); } }); }); }; formNLMW25.addEventListener('submit', e => { e.preventDefault(); if (rootNLMW25.classList.contains('is-submitted-nlmw25') || nlIsSubmittingNLMW25) return; nlHideErrorNLMW25(); nlAttemptRecaptchaNLMW25(); }); emailInputNLMW25.addEventListener('input', () => { nlHideErrorNLMW25(); emailInputNLMW25.setAttribute('aria-invalid', 'false'); }); checkboxNLMW25.addEventListener('change', nlHideErrorNLMW25); }); })(NL_DEFAULT_CONFIG_NLMW25); In
China, technology has evolved into an area of competition with the U.S. with national security implications.
Beijing’s latest five-year plan vows to “target the frontiers of science and technology.” Speeding up the development of products like humanoid robots and their applications is part of the 2026-2030 plan for the world’s second-largest economy. freestar.queue.push(function () { window.fsAdCount = window.fsAdCount + 1 || 0; let customChannel = '/dynamic_' + fsAdCount; let adList = document.querySelectorAll(".fs-feed-ad") let thisAd = adList[fsAdCount]; let randId = Math.random().toString(36).slice(2); thisAd.id = randId; let thisPlacement = fsAdCount == 0 ? "apnews_story_feed" : "apnews_story_feed_dynamic"; freestar.newAdSlots({ placementName: thisPlacement, slotId: randId }, customChannel); }); London-based technology research and advisory group Omdia recently ranked three Chinese companies — AGIBOT, Unitree Robotics and UBTech Robotics Corp. — as the only first-tier vendors in its global assessment for shipment numbers for general-purpose embodied intelligent robots. They all shipped more than 1,000 units of the robots last year, with the first two companies shipping more than 5,000 units, the report said. ___ Associated Press video producer Liu Zheng in
Beijing contributed to this report.