Heat a large skillet over medium. Swirl in the oil.
Brown the bratwurst on all sides, 6–8 minutes. Transfer to a plate.
Soften the onions in the skillet until golden at edges, about 5 minutes.
Stir in garlic for 30 seconds. Pour in half the beer, scraping up browned bits.
Add sauerkraut, caraway, vinegar, brown sugar, and pepper. Nestle sausages back in.
Pour in remaining beer to come about halfway up. Cover and simmer 12–15 minutes.
Uncover and reduce liquid 3–5 minutes. Stir in butter, then season with salt to taste.