# Aktualisiert initCheckout, sodass es synchron ausgeführt wird
## Das ändert sich
Die Methode [stripe.initCheckout](https://docs.stripe.com/js/custom_checkout/init) ist jetzt synchron statt asynchron.
## Warum ist dies eine wichtige Änderung?
Diese grundlegende Änderung betrifft Sie, wenn Ihre Integration [Elements mit der Checkout Sessions API](https://docs.stripe.com/payments/quickstart-checkout-sessions.md) verwendet.
#### HTML + JS
Um zu migrieren, müssen Sie:
1. Entfernen Sie alle mit `initCheckout` verknüpften Aufrufe von `await` oder `.then()`.
1. Ersetzen Sie Ihre `fetchClientSecret`-Funktion durch eine Client-Geheimnis-Zeichenfolge oder ein Promise, das in eine Client-Geheimnis-Zeichenfolge aufgelöst wird.
1. Rufen Sie die neue asynchrone Funktion `checkout.loadActions()` auf, um auf Aktionen wie `getSession()` zuzugreifen, die `session()` ersetzt oder `confirm()`. Sie müssen `loadActions()` nur einmal aufrufen.
1. Wenn Sie zuvor `initCheckout` in einen `try...catch`-Block eingebunden haben, sollten Sie stattdessen den aufgelösten `type`-Wert von `loadActions()` prüfen, um Fehler zu erkennen.
```javascript
const clientSecret = fetch("/create-checkout-session", {
method: "POST",
headers: { "Content-Type": "application/json" },
})
.then((r) => r.json())
.then((r) => r.clientSecret);
const checkout = stripe.initCheckout({
clientSecret
});
const paymentElement = checkout.createPaymentElement();
paymentElement.mount("#payment-element");
const loadActionsResult = await checkout.loadActions();
if (loadActionsResult.type === 'success') {
const session = loadActionsResult.actions.getSession();
}
```
#### React
Ihre `@stripe/react-stripe-js`-Abhängigkeit auf mindestens Version 5.0.0 aktualisieren. Wenn Sie von einer Version vor 4.0.0 aktualisieren, lesen Sie unbedingt die [Release Notes](https://github.com/stripe/react-stripe-js/releases/tag/v4.0.0), um die Änderungen nachzuvollziehen.
Wenn Sie ein Upgrade von Version 4.0.0 oder höher durchführen, müssen Sie Ihre `fetchClientSecret`-Funktion durch eine Client-Geheimnis-Zeichenfolge oder ein Promise ersetzen, das in eine Client-Geheimnis-Zeichenfolge aufgelöst wird. Sie können jedes Element auch rendern, ohne zuvor zu prüfen, ob `useCheckout` `type: 'success'` zurückgegeben hat, um die Latenz in Ihrer Integration zu reduzieren und Elements zu ermöglichen, ihre Skeleton-Loader früher anzuzeigen.
```jsx
const App = () => {
const promise = useMemo(() => {
return fetch('/create-checkout-session', {
method: 'POST',
headers: { "Content-Type": "application/json" },
})
.then((res) => res.json())
.then((data) => data.clientSecret);
}, []);
return (