‘Nobody Wants This’ Officially Renewed for Season 4 at Netflix

Picture: Nobody Wants This – Netflix
What comes next for Joanne and Noah? After an eventful finale featuring a big family blow-out and a secret elopement, Season 4 will bring even more drama. Netflix has officially renewed the series for a fourth season, and we can’t wait to see what happens next. Here’s what we know about Season 4 of Nobody Wants This on Netflix. 
Nobody Wants This is Netflix’s popular romantic comedy series starring Kristen Bell as Joanne, a sex podcaster, and Adam Brody as Noah, a devout Rabbi. Erin Foster created the series, and 3 Arts Entertainment produced it.
Below, we’ll take a deep dive into everything you need to know about Nobody Wants This season 4, including the series’ performance so far (including season 3), renewal status, cast information, and when we can expect the series to return to Netflix.

Nobody Wants This Season 4 Renewal Status
Official Renewal Status: Renewed (Last Updated: 22/10/2026)
Netflix has renewed Nobody Wants This for Season 4!

Nobody Wants This Season 4 is coming https://t.co/dsIB68EdlF
— Netflix (@netflix) November 6, 2026
 
How has the series performed so far?
How well is season 3 off too? In its opening four days on Netflix, it picked up 6.2M views ranking in the top 10 in 56 countries and reached #1 in 11 countries and hitting #2 in the weekly charts (just below, ahem, Below). The return also saw resurgence of viewing to seasons 1 and 2 by up to 3X, we’re told.  Here’s how that 4-day premiere compares to seasons 1 and 2: 

(function () {
if (!window.wonWatermarkPlugin) {
window.wonWatermarkPlugin = {
id: ‘wonWatermark’,
afterDraw: function (chart) {
var ctx = chart.ctx;
var area = chart.chartArea;
if (!ctx || !area) return;
// Scale watermark to the chart’s current pixel width so it stays
// a subtle attribution on phones (20px on a 320px canvas would
// dominate) while still reading on a 1200px desktop chart.
var w = area.right – area.left;
var fontSize = Math.max(11, Math.min(20, Math.round(w * 0.045)));
var offset = Math.max(6, Math.round(w * 0.018));
ctx.save();
ctx.font = ‘700 ‘ + fontSize + ‘px -apple-system, BlinkMacSystemFont, “Segoe UI”, Arial, sans-serif’;
ctx.fillStyle = ‘rgba(0, 0, 0, 0.22)’;
ctx.textAlign = ‘right’;
ctx.textBaseline = ‘bottom’;
ctx.fillText(‘whats-on-netflix.com’, area.right – offset, area.bottom – Math.max(4, Math.round(offset * 0.6)));
ctx.restore();
}
};
}

// Shared compact-number helper. Returns e.g. “1.2B”, “45.6M”, “789K” when
// useCompact is true, otherwise the full `toLocaleString()` form. Used by
// every chart’s datalabels and axis ticks on mobile so wide numbers like
// “1,234,567,890” don’t crowd small viewports. Tooltips keep the full
// number for accuracy.
if (!window.wonCompactNumber) {
window.wonCompactNumber = function (value, useCompact) {
if (value === null || value === undefined || isNaN(value)) return ”;
var n = Number(value);
if (!useCompact) {
return n.toLocaleString();
}
try {
if (typeof Intl !== ‘undefined’ && Intl.NumberFormat) {
if (!window.wonCompactFormatter) {
window.wonCompactFormatter = new Intl.NumberFormat(‘en’, {
notation: ‘compact’,
maximumFractionDigits: 1
});
}
return window.wonCompactFormatter.format(n);
}
} catch (e) {}
// Manual fallback for browsers without Intl compact notation support.
var abs = Math.abs(n);
var divisor, suffix;
if (abs >= 1e9) { divisor = 1e9; suffix = ‘B’; }
else if (abs >= 1e6) { divisor = 1e6; suffix = ‘M’; }
else if (abs >= 1e3) { divisor = 1e3; suffix = ‘K’; }
else { return n.toLocaleString(); }
var scaled = n / divisor;
var formatted = scaled.toFixed(scaled >= 100 ? 0 : (scaled >= 10 ? 1 : 2));
return formatted.replace(/(.d*?)0+$/, ‘$1’).replace(/.$/, ”) + suffix;
};
}

// End-of-line pills for the cumulative line charts. chartjs-plugin-datalabels
// always anchors them to the right of the final point, so a long title
// runs off the canvas. This draws them inside the canvas instead: the
// right gutter when it fits, otherwise to the left of the point, shortened
// with an ellipsis when neither side is wide enough, and nudged apart
// when two pills would cover each other.
if (!window.wonLineEndLabels) {
function wonLineLabelFont(fontSize) {
var family = ‘Arial, sans-serif’;
try {
if (window.Chart && Chart.defaults && Chart.defaults.font && Chart.defaults.font.family) {
family = Chart.defaults.font.family;
}
} catch (e) {}
return ‘700 ‘ + fontSize + ‘px ‘ + family;
}
function wonLineLabelWidth(ctx, text, fontSize) {
ctx.save();
ctx.font = wonLineLabelFont(fontSize);
var width = ctx.measureText(text).width;
ctx.restore();
return width;
}
function wonLineLabelFit(ctx, text, fontSize, maxWidth) {
if (maxWidth < 8) return ''; if (wonLineLabelWidth(ctx, text, fontSize) 1 && wonLineLabelWidth(ctx, trimmed + ellipsis, fontSize) > maxWidth) {
trimmed = trimmed.slice(0, -1).replace(/s+$/, ”);
}
return (trimmed || text.charAt(0)) + ellipsis;
}
window.wonLineEndLabels = {
id: ‘wonLineEndLabels’,
afterDatasetsDraw: function (chart) {
var ctx = chart.ctx;
var area = chart.chartArea;
if (!ctx || !area) return;
var opts = (chart.options.plugins && chart.options.plugins.wonLineEndLabels) || {};
var fontSize = opts.fontSize || 12;
var padX = fontSize canvasW – margin) x = Math.max(margin, canvasW – margin – drawnW);
var y = point.y – pillH / 2;
if (y < margin) y = margin; if (y + pillH > area.bottom) y = area.bottom – pillH;
if (y < margin) y = margin; pills.push({ x: x, y: y, w: drawnW, h: pillH, text: text, color: dataset.borderColor || '#221f1f', preferY: point.y }); }); pills.sort(function (a, b) { return a.preferY - b.preferY; }); var placed = []; function overlaps(pill, testY) { for (var n = 0; n < placed.length; n++) { var other = placed[n]; var xHit = pill.x < other.x + other.w + 4 && pill.x + pill.w + 4 > other.x;
var yHit = testY < other.y + other.h + 3 && testY + pill.h + 3 > other.y;
if (xHit && yHit) return true;
}
return false;
}
pills.forEach(function (pill) {
var y = pill.y;
var guard = 0;
while (overlaps(pill, y) && y + pill.h < area.bottom && guard < 30) { y += pill.h + 3; guard++; } if (overlaps(pill, y)) { y = pill.y; guard = 0; while (overlaps(pill, y) && y > margin && guard < 30) { y -= pill.h + 3; guard++; } } if (y < margin) y = margin; if (y + pill.h > canvasH – margin) y = canvasH – margin – pill.h;
pill.y = y;
placed.push(pill);
});
ctx.save();
ctx.font = wonLineLabelFont(fontSize);
ctx.textAlign = ‘left’;
ctx.textBaseline = ‘middle’;
placed.forEach(function (pill) {
ctx.beginPath();
if (ctx.roundRect) {
ctx.roundRect(pill.x, pill.y, pill.w, pill.h, 4);
} else {
ctx.rect(pill.x, pill.y, pill.w, pill.h);
}
ctx.fillStyle = pill.color;
ctx.fill();
ctx.fillStyle = ‘#fff’;
ctx.fillText(pill.text, pill.x + padX, pill.y + pill.h / 2);
});
ctx.restore();
}
};
}

// Mirror the host theme’s body font onto Chart.js defaults so chart text
// (ticks, legend, tooltips, datalabels) matches the surrounding article.
// Chart.js is loaded with `defer`, so we wait for DOMContentLoaded before
// touching `Chart.defaults` — by that point Chart.js is guaranteed to be
// parsed but no chart in this file has instantiated yet (their init code
// also runs on DOMContentLoaded, and they’re registered after this block
// in HTML source order, so listener-registration order keeps us first).
if (window.wonChartFontDefaults) return;
window.wonChartFontDefaults = true;

function applyThemeChartFont() {
if (typeof Chart === ‘undefined’ || !Chart.defaults || !Chart.defaults.font) {
return false;
}
var bodyFont = ”;
try {
bodyFont = getComputedStyle(document.body).fontFamily || ”;
} catch (e) {}
if (bodyFont) {
Chart.defaults.font.family = bodyFont;
}
return true;
}

if (document.readyState === ‘loading’) {
document.addEventListener(‘DOMContentLoaded’, applyThemeChartFont);
} else {
applyThemeChartFont();
}
})();

{
“@context”: “https://schema.org”,
“@type”: “Dataset”,
“name”: “Netflix Viewership Comparison – Nobody Wants This – Season 1, Nobody Wants This – Season 2 and Nobody Wants This – Season 3 (1-week cumulative views)”,
“description”: “Cumulative weekly views for Nobody Wants This – Season 1, Nobody Wants This – Season 2 and Nobody Wants This – Season 3 on Netflix over 1 weeks. Nobody Wants This – Season 1 leads the comparison with 10,300,000 cumulative views. Combined total: 25,100,000 views. Data sourced from Netflix’s official Top 10 engagement reports.”,
“license”: “https://www.whats-on-netflix.com/corrections-policy/”,
“keywords”: “Netflix, viewership, streaming data, Netflix Top 10, weekly views, audience metrics, Nobody Wants This – Season 1, Nobody Wants This – Season 2, Nobody Wants This – Season 3”,
“creator”: {
“@type”: “Organization”,
“name”: “What’s on Netflix”,
“url”: “https://www.whats-on-netflix.com/”
},
“publisher”: {
“@type”: “Organization”,
“name”: “What’s on Netflix”,
“url”: “https://www.whats-on-netflix.com/”
},
“datePublished”: “2026-11-07”,
“dateModified”: “2026-11-07”,
“variableMeasured”: “Cumulative weekly views (Netflix Top 10)”,
“measurementTechnique”: “Aggregation of Netflix’s official weekly Top 10 engagement reports”,
“temporalCoverage”: “1 weeks”,
“spatialCoverage”: “Global”,
“isAccessibleForFree”: true,
“about”: [
{“@type”:”CreativeWork”,”name”:”Nobody Wants This – Season 1″},
{“@type”:”CreativeWork”,”name”:”Nobody Wants This – Season 2″},
{“@type”:”CreativeWork”,”name”:”Nobody Wants This – Season 3″} ],
“distribution”: {
“@type”: “DataDownload”,
“encodingFormat”: “JSON”,
“contentUrl”: “#netflix_bar_graph_6aee95300d36c” }
}

Netflix Viewership Comparison – Nobody Wants This – Season 1, Nobody Wants This – Season 2 and Nobody Wants This – Season 3 (1-week analysis)
Cumulative views over 1 weeks for 3 Netflix titles: Nobody Wants This – Season 1, Nobody Wants This – Season 2, Nobody Wants This – Season 3. Combined total: 25,100,000 views.

Netflix cumulative views ranking for Nobody Wants This – Season 1, Nobody Wants This – Season 2 and Nobody Wants This – Season 3 over 1 weeks.

Title
Opening Week Views
Rank

Nobody Wants This – Season 1
10,300,000
1

Nobody Wants This – Season 2
8,600,000
2

Nobody Wants This – Season 3
6,200,000
3

(function() {
var showLabels = true;
var titleHighlight = “”;
// Title rendered above the chart in place of the legend (1 week → “Opening Week”).
var chartTitle = “Opening Week Views”;

function loadScript(src, callback) {
var script = document.createElement(‘script’);
script.src = src;
script.onload = callback;
document.head.appendChild(script);
}

function createChart() {
var canvasEl = document.getElementById(‘netflix_bar_graph_6aee95300d36c’);
var ctx = canvasEl.getContext(‘2d’);

// Detect mobile screen size
var isMobile = window.innerWidth

Leave a Reply

Your email address will not be published. Required fields are marked *