CINXE.COM
Toward Judicial Realism: The Evolution of Rule 23
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> <script> /* * createElement: Creates an element and appends to parent * @param parent (Element | String): optional parent to attach child to. Can be a query selector or an actual element itself. * @param tag (String): element tag to create * @param c (String): optional class(es) of the element. Multiple classes are allowed when separated by a space. * @param text (String): optional innerText of the element * @param attributes (Obj): optional object whose key/value pairs will be added to the element (e.g. {src: 'https://google.com', id: 'myId'}) * @param style (Obj): optional set of styles to apply to the created element (e.g. {color: "red"}) * @return Element on success (the created child element); false on error (if tag contains invalid characters). * Example: createElement('body', 'div', 'hello-world-class hello-moon-class', 'Hello World', {id: 'helloWorldId'}, {color: 'blue'}); * Author: Michael Wood * License-1: Copyright February 2022. Michael Wood. All rights reserved. * License-2: BSD License for any company that employs Michael Wood either as a consultant or employee. */ function createElement (parent, tag, c = false, text = false, attributes = false, style = null) { let el = {}; try { el = document.createElement(tag); } catch (e) { return false; } let parentEl = null; try { if (parent) { if (typeof parent === 'string') parentEl = document.querySelector(parent); else parentEl = parent; if (parentEl) parentEl.appendChild(el); } if (c) el.className = c; if (text) el.innerText = text; if (attributes) { for (const [key, value] of Object.entries(attributes)) { el.setAttribute (key, value); }; } if (style) { for (const [key, value] of Object.entries(style)) { el.style[key] = value; }; } } catch (e) { console.error(e); return false; } return el } </script> <script> // const I = id => document.getElementById(id); // const A = selector => document.querySelectorAll(selector); // const Q = selector => document.querySelector(selector); function handleSeatLoginButtonClick (e) { // var screenWidth = window.innerWidth; // var email = I('login_email').value; const emailelement = document.getElementById('login_email'); const email = emailelement.value; const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); const originURL = urlParams.get('origin') let request = { url: "https://" + location.host + '/wp-content/themes/flex-mag-sixspoke/root/app/sendEmail.php', method: "get", params: { to: email, category: articleCategory } } if (originURL){ request.params.origin = originURL; } axios(request) .then(response => { alert (JSON.stringify(response.data)); //location.reload(); //alert (`A verification link has been sent to ${email}.`); }) .catch(error => { console.error(error); alert('Error. Please try again later.'); }) } const pageHasLoaded = () => { const accessbtn = document.getElementById('access_premium_btn'); if(accessbtn) { accessbtn.addEventListener("click", handleSeatLoginButtonClick); console.log('Found access button'); } } const parseCookie = (str) => { let parsedCookie = {}; try { parsedCookie = str .split(';') .map(v => v.split('=')) .reduce((acc, v) => { acc[decodeURIComponent(v[0].trim())] = decodeURIComponent(v[1].trim()); return acc; }, {}); } catch (error) { console.log("error parsing cookie"); } return parsedCookie; } const parsedCookie = parseCookie(document.cookie); let articleCategory; if (parsedCookie && parsedCookie['article-category']){ articleCategory = parsedCookie['article-category']; } console.log('articleCategory', articleCategory); document.addEventListener("DOMContentLoaded", pageHasLoaded); </script> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <!-- HTML Meta Markup --> <title>Toward Judicial Realism: The Evolution of Rule 23</title> <meta itemprop="image" content="https://www.pymnts.com/wp-content/uploads/2023/07/CPI_2023_about_us_1500x500.jpg" /> <!-- Link --> <meta name="theme-color" content="#712cf9"> <meta name="msapplication-TileImage" content="https://www.pymnts.com/wp-content/uploads/2023/07/cpi_favicon_270.jpg" /> <link rel="shortcut icon" href="https://www.pymnts.com/wp-content/uploads/2023/07/cpi_favicon_32.jpg" sizes="32x32" /> <link rel="shortcut icon" href="https://www.pymnts.com/wp-content/uploads/2023/07/cpi_favicon_192.jpg" sizes="192x192" /> <link rel="apple-touch-icon-precomposed" href="https://www.pymnts.com/wp-content/uploads/2023/07/cpi_favicon_180.jpg" /> <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="https://www.pymnts.com/feed/" /> <link rel="alternate" type="text/xml" title="RSS .92" href="https://www.pymnts.com/feed/rss/" /> <link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="https://www.pymnts.com/feed/atom/" /> <link rel="pingback" href="https://www.pymnts.com/xmlrpc.php" /> <link rel="dns-prefetch" href="https://www.google.com"> <link rel="dns-prefetch" href="https://stats.g.doubleclick.net"> <link rel="dns-prefetch" href="https://googleads.g.doubleclick.net"> <link rel="dns-prefetch" href="https://fonts.gstatic.com"> <link rel="dns-prefetch" href="https://www.google-analytics.com"> <link rel="dns-prefetch" href="https://www.pymnts.com"> <link rel="preload" href="/wp-content/themes/flex-mag-sixspoke/2020/bootstrap-icons.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <!-- <script type="text/javascript" src="/wp-content/themes/flex-mag-sixspoke/2020/jquery-3.6.0.slim.min.js?v=1.0"> </script>--> <link rel="preload" as="script" href="https://ak.sail-horizon.com/spm/spm.v1.min.js?ver=5.5.10" /> <script src='https://ak.sail-horizon.com/spm/spm.v1.min.js?ver=5.5.10' type='text/javascript' async></script> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"> </script> <link rel="stylesheet" href="/wp-content/themes/flex-mag-sixspoke/2020/bootstrap-icons.css"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet"> <!-- Font --> <link href="https://fonts.googleapis.com/css?family=Playfair+Display:700,900&display=swap" rel="stylesheet"> <!-- css --> <link rel="stylesheet" href="https://www.pymnts.com/wp-content/themes/flex-mag-sixspoke/cpi-mini-site/cpi.css?v=37"> <!-- Google analytics --> <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-3WHRCQ5780"></script> <script> let deviceIsBlockingAnalytics = null; let googleTracker = typeof ga !== 'undefined' && ga.getAll ? ga.getAll()[0] : null; console.log('googleTracker initial', googleTracker); if (!googleTracker) { let count = 0; let intervalId = setInterval(() => { ++count; googleTracker = typeof ga !== 'undefined' && ga.getAll ? ga.getAll()[0] : null; console.log('googleTracker', count, googleTracker); if (googleTracker || count > 5) { clearInterval(intervalId); console.log('tracker', googleTracker); return; } }, 500); } else { console.error('Google Tag Manager is blocked'); deviceIsBlockingAnalytics = true; } let lastUrlViewed = null; function parseCookieHeader() { const header = document.cookie; // Split the header into individual name-value pairs var pairs = header.split(';'); // Create an object to store the cookies var cookies = {}; // Loop through the name-value pairs and store them in the object for (var i = 0; i < pairs.length; i++) { var nameValue = pairs[i].split('='); cookies[nameValue[0].trim()] = nameValue[1]; } // Return the object return cookies; } // function registerPageView(url, tracker) { // console.log('registerPageView', url, tracker); // console.log('deviceIsBlockingAnalytics', deviceIsBlockingAnalytics); // tracker.set('page', url); // tracker.send('pageview', { // 'title': document.title, // 'url': url // }); // gtag("event", "pymnts_device_visit", { // path: url // }); // console.log('title', document.title); // if (!deviceIsBlockingAnalytics) doNotProxyReport(url); // } // let firstTrigger = true; // function triggerPageView (url, scrollingUp = false) { // console.log('triggerPageView', url); // if (!googleTracker) { // let count = 0; // let intervalId = setInterval(() => { // ++count; // if (googleTracker || count > 5) { // clearInterval(intervalId); // console.log('tracker', googleTracker); // registerPageView(url, googleTracker); // return; // } // }, 500); // } else { // console.log('tracker', googleTracker); // registerPageView(url, googleTracker); // } // } const cookies = parseCookieHeader(); let pymntsDeviceId; let storedId = localStorage.getItem('pymntsDeviceId'); if (cookies['pymnts-browser-id']) { pymntsDeviceId = cookies['pymnts-browser-id']; localStorage.setItem('pymntsDeviceId', pymntsDeviceId); } else { if (storedId) pymntsDeviceId = storedId; else pymntsDeviceId = 'unknown'; } console.log('pymntsDeviceId', pymntsDeviceId); if (!storedId || storedId === 'undefined') { localStorage.setItem('pymntsDeviceId', pymntsDeviceId); } /* * Setup GA4 */ window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); const { hostname } = window.location; let gtagCategory = hostname === 'gamma.pymnts.com' ? 'UA-11167465-10' : 'UA-11167465-1'; gtag('config', gtagCategory); console.log('gtag ua category', gtagCategory); gtagCategory = hostname === 'gamma.pymnts.com' ? 'G-NY60TDWHJ9' : 'G-3WHRCQ5780'; gtag('config', gtagCategory); console.log('gtag g4 category', gtagCategory); //gtag('set', {'user_id': pymntsDeviceId}); // Set the user ID using signed-in user_id. setTimeout(() => { gtag("event", "pymnts_device_visit", { path: window.location.pathname, }); }, 1000); let gaIsBlocked = null; let rtIsBlocked = false; let visitedPages = []; let connectionCount = 0; let maxConnectionAttempts = 3; const landingPage = window.location.pathname; const doNotProxyReport = pathname => { console.log('Do not report', pathname); let request = { url: `https://rt.pymnts.com:6300/dnr`, method: 'post', data: { pathname } } axios(request) .then(response => console.log(response.data)) .catch(error => console.error(error)); } async function checkIfGoogleAnalyticsIsBlocked() { let request = { url: 'https://www.google-analytics.com/collect', method: "post", params: { v: 1, tid: 'G-3WHRCQ5780', cid: pymntsDeviceId, t: 'web-view' } } console.log('request', request); let isBlocking; let response; try { response = await axios(request); deviceIsBlockingAnalytics = false; isBlocking = 'false'; console.log("Google Analytics is Allowed!!!!!!!!"); doNotProxyReport(landingPage) } catch (err) { // We are blocked!!! deviceIsBlockingAnalytics = true; isBlocking = 'true'; console.error('Google Analytics is Blocked!!!!!!!'); } } checkIfGoogleAnalyticsIsBlocked(); const recordLinkVisit = () => { const cookies = parseCookieHeader(); console.log('visit cookies', cookies); if (typeof cookies['cpi-org-info'] === 'undefined') return; const orgInfo = decodeURIComponent(cookies['cpi-org-info']).split(' --- '); //console.log(orgInfo); if (orgInfo.length < 2) return; const orderId = orgInfo[1]; const url = `https://www.competitionpolicyinternational.com/tracking/record-visit.php?order=${orderId}`; const request = { url, method: 'get' } axios(request) .then(response => console.log('axios success')) .catch(error => console.error('axios error', error)); } recordLinkVisit(); </script> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style> <!-- This site is optimized with the Yoast SEO Premium plugin v22.7 (Yoast SEO v23.4) - https://yoast.com/wordpress/plugins/seo/ --> <title>Toward Judicial Realism: The Evolution of Rule 23 | PYMNTS.com</title> <meta name="description" content="This article is part of a Chronicle. See more from this Chronicle Katherine Funk, May 13, 2009 The Rule 23 analysis is currently undergoing what can only be described as a seismic jurisprudential shift. A series of recent cases and recent amendments to Rule 23 auger a much more difficult road to certification for class" /> <link rel="canonical" href="https://www.pymnts.com/cpi-posts/toward-judicial-realism-the-evolution-of-rule-23/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="article" /> <meta property="og:title" content="Toward Judicial Realism: The Evolution of Rule 23 | PYMNTS.com" /> <meta property="og:description" content="This article is part of a Chronicle. See more from this Chronicle Katherine Funk, May 13, 2009 The Rule 23 analysis is currently undergoing what can only be described as a seismic jurisprudential shift. A series of recent cases and recent amendments to Rule 23 auger a much more difficult road to certification for class" /> <meta property="og:url" content="https://www.pymnts.com/cpi_posts/toward-judicial-realism-the-evolution-of-rule-23/" /> <meta property="og:site_name" content="PYMNTS.com" /> <meta property="article:publisher" content="https://www.facebook.com/pymnts/" /> <meta property="og:image" content="https://www.pymnts.com/wp-content/uploads/2022/10/PYMNTS_2022_open_graph_1280x720.jpg" /> <meta property="og:image:width" content="1280" /> <meta property="og:image:height" content="720" /> <meta property="og:image:type" content="image/jpeg" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:site" content="@pymnts" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://www.pymnts.com/cpi_posts/toward-judicial-realism-the-evolution-of-rule-23/","url":"https://www.pymnts.com/cpi_posts/toward-judicial-realism-the-evolution-of-rule-23/","name":"Toward Judicial Realism: The Evolution of Rule 23 | PYMNTS.com","isPartOf":{"@id":"https://www.pymnts.com/#website"},"datePublished":"2009-05-13T18:52:12+00:00","dateModified":"2009-05-13T18:52:12+00:00","description":"This article is part of a Chronicle. See more from this Chronicle Katherine Funk, May 13, 2009 The Rule 23 analysis is currently undergoing what can only be described as a seismic jurisprudential shift. A series of recent cases and recent amendments to Rule 23 auger a much more difficult road to certification for class","breadcrumb":{"@id":"https://www.pymnts.com/cpi_posts/toward-judicial-realism-the-evolution-of-rule-23/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://www.pymnts.com/cpi_posts/toward-judicial-realism-the-evolution-of-rule-23/"]}]},{"@type":"BreadcrumbList","@id":"https://www.pymnts.com/cpi_posts/toward-judicial-realism-the-evolution-of-rule-23/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.pymnts.com/"},{"@type":"ListItem","position":2,"name":"Toward Judicial Realism: The Evolution of Rule 23"}]},{"@type":"WebSite","@id":"https://www.pymnts.com/#website","url":"https://www.pymnts.com/","name":"PYMNTS.com","description":"What's next in payments and commerce","publisher":{"@id":"https://www.pymnts.com/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.pymnts.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://www.pymnts.com/#organization","name":"PYMNTS.com","url":"https://www.pymnts.com/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.pymnts.com/#/schema/logo/image/","url":"https://www.pymnts.com/wp-content/uploads/2023/05/PYMNTS_2023_logo_black-1.png","contentUrl":"https://www.pymnts.com/wp-content/uploads/2023/05/PYMNTS_2023_logo_black-1.png","width":3329,"height":687,"caption":"PYMNTS.com"},"image":{"@id":"https://www.pymnts.com/#/schema/logo/image/"},"sameAs":["https://www.facebook.com/pymnts/","https://x.com/pymnts"]}]}</script> <!-- / Yoast SEO Premium plugin. --> <link rel='dns-prefetch' href='//js.hs-scripts.com' /> <link rel='dns-prefetch' href='//stats.wp.com' /> <link rel='dns-prefetch' href='//fonts.googleapis.com' /> <link rel="alternate" type="application/rss+xml" title="PYMNTS.com » Feed" href="https://www.pymnts.com/feed/" /> <link rel="alternate" type="application/rss+xml" title="PYMNTS.com » Comments Feed" href="https://www.pymnts.com/comments/feed/" /> <link rel="alternate" type="application/rss+xml" title="PYMNTS.com » Toward Judicial Realism: The Evolution of Rule 23 Comments Feed" href="https://www.pymnts.com/cpi-posts/toward-judicial-realism-the-evolution-of-rule-23/feed/" /> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.pymnts.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.7.1"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <!-- pymnts.com is managing ads with Advanced Ads --><script id="pymnt-ready"> window.advanced_ads_ready=function(e,a){a=a||"complete";var d=function(e){return"interactive"===a?"loading"!==e:"complete"===e};d(document.readyState)?e():document.addEventListener("readystatechange",(function(a){d(a.target.readyState)&&e()}),{once:"interactive"===a})},window.advanced_ads_ready_queue=window.advanced_ads_ready_queue||[]; </script> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='all-css-4' href='https://www.pymnts.com/_static/??-eJzTLy/QzcxLzilNSS3WzyrWz01NyUxMzUnNTc0rQeEU5CRWphbp5qSmJyZX6uVm5uklFxfr6OPTDpRD5sM02efaGpobGxkZmBkYGQMARIMu1Q==' type='text/css' media='all' /> <style id='jetpack-sharing-buttons-style-inline-css'> .jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em} </style> <link rel='stylesheet' id='all-css-6' href='https://www.pymnts.com/wp-content/plugins/contact-form-7/includes/css/styles.css?m=1708458468g' type='text/css' media='all' /> <link rel='stylesheet' id='studio-fonts-css' href='//fonts.googleapis.com/css?family=Oswald%3ALato%3A400%2C700%7CWork+Sans%3A900%7CMontserrat%3A400%2C700%7COpen+Sans%3A800%7CPlayfair+Display%3A400%2C700%2C900%7CQuicksand%7CRaleway%3A200%2C400%2C700%7CRoboto+Slab%3A400%2C700%26subset%3Dlatin%2Clatin-ext&ver=1.0.0' media='all' /> <script type="text/javascript" id="advanced-ads-advanced-js-js-extra"> /* <![CDATA[ */ var advads_options = {"blog_id":"1","privacy":{"enabled":false,"state":"not_needed"}}; /* ]]> */ </script> <script type="text/javascript" src="https://www.pymnts.com/_static/??-eJyVjuEKwjAMhF/ImrmB/hKfJbaxy9ZmdWl1vr1VFPwhghAIXO67C1yTYbGhOFIY6pwLzbfXWkeW9aAr+GUykf2MmT7NdpJMkiGF4lkU0F1QLDmDTiGVY2ALqEr5Gfe+fkvIPcVaegq0mIjeKC+appEenJsi1rd6suM/mCKH3M/FSKi6l5IqfYj7za5r22bbtN1wBxwGZxE=" ></script><link rel="https://api.w.org/" href="https://www.pymnts.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.pymnts.com/wp-json/wp/v2/cpi_posts/1582275" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.pymnts.com/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress 6.7.1" /> <link rel='shortlink' href='https://www.pymnts.com/?p=1582275' /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.pymnts.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.pymnts.com%2Fcpi-posts%2Ftoward-judicial-realism-the-evolution-of-rule-23%2F" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.pymnts.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.pymnts.com%2Fcpi-posts%2Ftoward-judicial-realism-the-evolution-of-rule-23%2F&format=xml" /> <link rel="alternate" type="application/feed+json" title="PYMNTS.com » JSON Feed" href="https://www.pymnts.com/feed/json/" /> <link rel="alternate" type="application/feed+json" title="PYMNTS.com » Toward Judicial Realism: The Evolution of Rule 23 Comments Feed" href="https://www.pymnts.com/cpi-posts/toward-judicial-realism-the-evolution-of-rule-23/feed/json/" /> <!-- DO NOT COPY THIS SNIPPET! Start of Page Analytics Tracking for HubSpot WordPress plugin v11.1.40--> <script class="hsq-set-content-id" data-content-id="blog-post"> var _hsq = _hsq || []; _hsq.push(["setContentType", "blog-post"]); </script> <!-- DO NOT COPY THIS SNIPPET! End of Page Analytics Tracking for HubSpot WordPress plugin --> <style>img#wpstats{display:none}</style> <script type="text/javascript"> var advadsCfpQueue = []; var advadsCfpAd = function( adID ){ if ( 'undefined' == typeof advadsProCfp ) { advadsCfpQueue.push( adID ) } else { advadsProCfp.addElement( adID ) } }; </script> <script> var userObject; </script><meta property="article:published_time" content="2009-05-13T18:52:12-04:00" /> <!-- Begin comScore Tag --> <script> var _comscore = _comscore || []; _comscore.push({ c1: "2", c2: "39641934", options: { enableFirstPartyCookie: "true" } }); (function() { var s = document.createElement("script"), el = document.getElementsByTagName("script")[0]; s.async = true; s.src = "https://sb.scorecardresearch.com/cs/39641934/beacon.js"; el.parentNode.insertBefore(s, el); })(); </script> <noscript> <img src="https://sb.scorecardresearch.com/p?c1=2&c2=39641934&cv=3.9.1&cj=1"> </noscript> <!-- End comScore Tag --> <style type="text/css"> .post-cont-out, .post-cont-in { margin-right: 0; } .nav-links { display: none; } .nav-left-wrap { width: 60px; } .nav-logo-out { margin-left: -60px; } .nav-logo-in { margin-left: 60px; } .nav-logo-show { padding-right: 20px; width: 200px; height: 50px; } .nav-logo-show img { width: auto; padding-top: 5px; } .nav-left-width { width: 280px !important; } .nav-logo-out-fade { margin-left: -280px; } .nav-logo-in-fade { margin-left: 280px; } .share-count, .feat-info-views { display: none; }</style> <style type="text/css" id="custom-background-css"> body.custom-background { background-color: #f9f9f9; } </style> <link rel="icon" href="https://www.pymnts.com/wp-content/uploads/2022/11/cropped-PYMNTS-Icon-512x512-1.png?w=32" sizes="32x32" /> <link rel="icon" href="https://www.pymnts.com/wp-content/uploads/2022/11/cropped-PYMNTS-Icon-512x512-1.png?w=192" sizes="192x192" /> <link rel="apple-touch-icon" href="https://www.pymnts.com/wp-content/uploads/2022/11/cropped-PYMNTS-Icon-512x512-1.png?w=180" /> <meta name="msapplication-TileImage" content="https://www.pymnts.com/wp-content/uploads/2022/11/cropped-PYMNTS-Icon-512x512-1.png?w=270" /> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s);j.async=true;j.src="https://load.gtm.pymnts.com/4gb8jtcwxmzux.js?"+i;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','dzrxseq=aWQ9R1RNLVdWRldDRDk1JmFzPXk%3D&page=1');</script> <!-- End Google Tag Manager --> </head> <body class="d-flex flex-column" style="min-height:100vh;"> <div class="container-scroller" id="headerContainerScroller"> <div class="container"> <header class="blog-header lh-1 py-3"> <!-- <div class="d-flex flex-wrap flex-row border-bottom border-light"> <div id="cpi-verify" class="my-auto"> <ul class="nav col-12 col-md-auto"> <li><a class="px-2 link-dark" href="#" style="font-size:.9rem;"> Account</a> </li> </ul> </div> <div id="cpi-cart" class="text-end my-auto"> <i class="bi bi-cart-fill fs-5 text-secondary"></i> </div> </div> --> <div class="row flex-nowrap justify-content-between align-items-center g-1"> <div class="col col-md-3 col-lg-4 order-2 order-md-3 order-lg-1 align-self-center"> <ul class="nav col-12 col-md-auto flex-column flex-md-row justify-content-end justify-content-lg-start" id="utilityNav"> <!-- <li class="ps-2 ps-lg-0 d-none order-2 d-lg-block my-auto"><a class="nav-link py-1 link-secondary text-end text-md-start" style="font-size:.9rem;" href="http://www.pymnts.com/cpi/account-management">Verify Email</a> </li> --> <!-- IF THE USER IS LOGGED IN --> <li class="ps-2 ps-lg-0 order-1 my-auto d-none d-md-block"> <p class="p-0 text-end text-md-start mb-0"><a href="https://www.pymnts.com/cpi/account-management/" class="fw-bold text-uppercase" style="font-size:.8rem;"></a></p> </li> <!-- END USER IS LOGGED IN --> <!-- <li class="ps-2 ps-lg-0"><a class="p-0 py-md-1 link-secondary text-end text-md-start d-block d-lg-none" href="http://www.pymnts.com/cpi/account-management"><i class="bi bi-person-circle fs-3"></i></a> </li> --> </ul> <!-- <a class="link-secondary" href="https://www.competitionpolicyinternational.com/subscribe/">Subscribe</a> <span class="text-secondary">|</span> <a class="link-secondary" href="https://www.competitionpolicyinternational.com/cpi-subscriptions/">Join</a> --> </div> <div class="col-7 col-md-4 col-lg-4 px-2 ps-md-0 pe-md-3 order-1 order-lg-2 align-self-center"> <div class="text-center"> <a class="blog-header-logo text-dark" href="https://www.pymnts.com/cpi"> <img src="https://www.pymnts.com/wp-content/uploads/2023/03/CPI_Logo_Black-1.svg" width="100%" height="50px" class="img-fluid"> </a> <div class="d-block mt-1 mt-md-0"> <small><i>A PYMNTS Company</i></small> </div> </div> </div> <div class="col-md-4 col-lg-3 d-none d-md-block text-end text-lg-start order-md-2 order-lg-3"> <!-- <form class="col-12 col-lg-auto my-auto d-none d-md-block text-end me-3" role="search"> <input type="search" class="form-control" placeholder="Search" aria-label="Search"> </form> --> <form role="search" method="get" id="" action="https://www.pymnts.com/" class="col-12 col-lg-auto my-auto d-none d-md-block text-end me-3"> <input type="hidden" name="post_type" value="cpi_posts" /> <div class="input-group my-auto"> <input class="form-control" type="text" value="" name="s" id="s" placeholder="Search" /> <div class="input-group-append"> <button type="submit" class="input-group-text" style="border-top-left-radius: 0;border-bottom-left-radius: 0;height: 100%;" /> <i class="bi bi-search"></i> </button> </div> </div> </form> </div> <div class="col-2 col-md col-lg-auto my-auto text-end order-4"> <a class="link-white me-3 position-relative" href="https://www.competitionpolicyinternational.com/cart/" role="button"> <i class="bi bi-cart fs-4"></i> <!--<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-success"> 1 <span class="visually-hidden">unread messages</span> </span>--> </a> </div> </div> </header> <div class="nav-scroller py-1"> <nav class="nav d-flex justify-content-start justify-content-md-evenly"> <a class="p-2 link-primary fw-bold" href="https://www.pymnts.com/cpi/subscriptions">Pricing</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi/latest-news-for-cpi/">News</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi/cpi-column/">Columns</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi_category/antitrust-chronicle-2024/">Antitrust Chronicles</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi_category/techreg-chronicle-2024/">TechREG Chronicles</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi/cpi-blog/">Blog o' Blogs</a><a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/cpi-events/">Events</a><a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/cpi-tv">CPI TV</a><a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/cpi-books/">Books</a> <a class="my-auto px-2 link-secondary d-inline d-md-none" href="#"><i class="bi bi-search text-dark fw-bold"></i></a> <!-- <a class="p-2 link-secondary" href="/audio/">Audio</a> --> <!-- <a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/cpi-journal/">CPI Journal</a> --> <!-- <a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/library-recently-published/">Library</a> --> </nav> </div> </div> </div> <style> .custom-admin-wrapper { width: 100%; height: auto; background-color: #000; color: #fff; padding: 15px; } .custom-admin-wrapper a, .custom-admin-wrapper a:hover { color: #fff !important; padding: 5px 10px 5px 10px; background-color: #333; border-radius: 3px; } p.lead, h1, h2 { color: #000; } h1 { text-transform: none !important; } .background-img { position: relative; overflow: hidden; background-repeat: no-repeat; background-size: cover; background-position: 50%; } #intro { /* background-image: url("https://www.competitionpolicyinternational.com/wp-content/uploads/2023/03/0-ANTITRUST-CHRONICLE-March-2023-China-Edition.jpg"); */ height: 130vh; } @media (min-width: 768px) { #intro { height: 60vh; } } @media (min-width: 992px) { #intro { height: 60vh; } } .navbar .nav-link { color: #fff !important; } .background-transparent { position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%; overflow: hidden; background-attachment: fixed; } h1.txt-headline { font-family: 'Cormorant Garamond', serif; font-size: 4rem; } .lh-article p, .lh-article span, .lh-article ul, .lh-article ol { font-size: 1.3rem; color: #000; line-height: 2; } .lh-article, .lh-article p, .lh-article span, .lh-article h2, .lh-article h3, .lh-article h4, .lh-article h5, .lh-article h6 { font-family: 'Merriweather', serif; } .intro-copy { line-height: 2rem; font-family: 'Open Sans', sans-serif; font-size: 1.2rem } li.nav-item:hover { background: none; } li.nav-item a:hover { text-decoration: underline !important; } .lh-article a { color: #1e65c9; text-decoration: none; } .lh-article a:hover { color: #468df2; } .lh-article h1, .lh-article h2, .lh-article h3, .lh-article h4, .lh-article h5 { font-family: 'Open Sans', sans-serif; font-weight: 400; color: #000; font-size: 2.5rem; } .lh-article p { margin-bottom: 2rem; } .fact-feature p { font-family: 'Open Sans', sans-serif; font-weight: 400; color: #000; font-size: 2.2rem; } .fact-feature strong { font-weight: 700; } figure { font-family: 'Open Sans', sans-serif; } span.figure-top { position: relative; font-weight: 600; color: #000; font-size: 3.5rem; font-family: 'arial', sans-serif; } .figure-top::after { position: absolute; left: 0; bottom: 0; width: 100%; height: 1px; border-bottom: 3px solid #000; content: "" } figure { margin: 0 2rem 2rem 2rem; } .lh-article blockquote p { font-family: 'Open Sans', sans-serif; font-size: 1.8rem; color: #000; line-height: 1.2; } .lh-article blockquote p strong { font-weight: 600; } p.text-callout { font-family: 'Open Sans', sans-serif; font-size: 1rem; color: #fff; line-height: 1.7; } .callout { border-radius: none; background-color: #003366; border: 12px solid #003366; color: #fff; aspect-ratio: 1 / 1; width: fit-content; text-align: center; display: flex; justify-content: center; align-items: center; background: #003366; flex-direction: column; padding: 10px; } @media (min-width: 768px) { .callout { border-radius: 50%; } } </style> <header> <script> const cpiAuthSteps = []; </script> <!-- Background image --> <div id="intro" class="background-img shadow-2-strong" style="background-image:url('')"> <div class="background-transparent" style="background-color: rgba(0, 0, 0, 0.7);"> <div class="container d-flex align-items-center justify-content-center text-center h-100"> <div class="text-white p-5"> <h1 class="mb-3 text-white txt-headline mb-4"> Toward Judicial Realism: The Evolution of Rule 23 </h1> <h5 class="mb-4 small">BY <a href="" title="Posts by PYMNTS" rel="author" class="fs-6 text-white">PYMNTS</a> | May 13, 2009 </h5> <p class="intro-copy"> This article is part of a Chronicle. See more from this Chronicle Katherine Funk, May 13, 2009 The Rule 23 analysis is currently undergoing what can only be described as… </p> </div> </div> </div> </div> <!-- Background image --> <!-- Navbar --> <nav class="navbar navbar-expand-lg bg-black navbar-dark d-block px-2" style="z-index: 2000;"> <div class="container-fluid"> <!-- Navbar brand --> <ul class="navbar-nav d-flex flex-row ms-auto"> <!-- Icons --> <li class="nav-item me-3 me-lg-0"> <a class="nav-link" href="https://www.facebook.com/sharer.php?u=https://www.pymnts.com/cpi-posts/toward-judicial-realism-the-evolution-of-rule-23/" rel="nofollow" target="_blank"> <i class="bi bi-facebook text-white"></i> </a> </li> <li class="nav-item me-3 me-lg-0"> <a class="nav-link" href="https://twitter.com/intent/tweet?text=Toward+Judicial+Realism%3A+The+Evolution+of+Rule+23&url=https://www.pymnts.com/cpi-posts/toward-judicial-realism-the-evolution-of-rule-23/" rel="nofollow" target="_blank"> <i class="bi bi-twitter-x text-white"></i> </a> </li> <li class="nav-item me-3 me-lg-0"> <a class="nav-link" href="https://www.linkedin.com/sharing/share-offsite/?url=https://www.pymnts.com/cpi-posts/toward-judicial-realism-the-evolution-of-rule-23/" rel="nofollow" target="_blank"> <i class="bi bi-linkedin text-white"></i> </a> </li> <li class="nav-item me-3 me-lg-0"> <a class="nav-link" href="mailto:?subject=Toward+Judicial+Realism%3A+The+Evolution+of+Rule+23&body=I+found+this+article+interesting+and+want+to+share+it+with+you.+Check+it+out:+https://www.pymnts.com/cpi-posts/toward-judicial-realism-the-evolution-of-rule-23/" rel="nofollow" target="_blank"> <i class="bi bi-envelope text-white"></i> </a> </li> <li class="nav-item me-3 me-lg-0"> <a class="nav-link" href="javascript:window.print()" rel="nofollow" target="_blank"> <i class="bi bi-printer-fill text-white"></i> </a> </li> </ul> </div> </div> </nav> <!-- Navbar --> </header> <!--Main Navigation--> <!--Main layout--> <main class="my-5"> <div class="container"> <div class="row " id="articlePost"> <div class="col-12 mx-auto mb-4" id="insertArticle"> <div id="pymnts-content1482934" class="single lh-article mt-1 lnk-article"> <style> /* HTML: <div class="loader"></div> */ .cpi-spinner-loader { width: 60px; aspect-ratio: 2; --_g: no-repeat radial-gradient(circle closest-side,#000 90%,#0000); background: var(--_g) 0% 50%, var(--_g) 50% 50%, var(--_g) 100% 50%; background-size: calc(100%/3) 50%; animation: l3 1s infinite linear; } @keyframes l3 { 20%{background-position:0% 0%, 50% 50%,100% 50%} 40%{background-position:0% 100%, 50% 0%,100% 50%} 60%{background-position:0% 50%, 50% 100%,100% 0%} 80%{background-position:0% 50%, 50% 50%,100% 100%} } </style> <script> const isPaywall = false; const cpiPostId = 1582275; console.log("cpiPostId", cpiPostId); function handlePaywall () { // If token is in url then store in local storage const searchParams = new URLSearchParams(window.location.search); if (searchParams.has('token')) { console.log("STORING TOKEN") const token = searchParams.get('token') localStorage.removeItem('cpi_auth_token'); localStorage.setItem('cpi_auth_token', token.toString()) } const cpiAuthToken = localStorage.getItem('cpi_auth_token'); if (cpiAuthToken) { const validationEl = document.querySelector('.validation-notice-container'); let origHtml = validationEl.innerHTML; validationEl.innerHTML = "<div class='cpi-spinner-loader'></div>"; const request = { url: window.location.href, method: 'post', data: { cpiAuthToken } } console.log('request', request); axios(request) .then(response => { if (response.data) { const insertPoint = document.getElementById('cpi_chronicle_content'); if (insertPoint) insertPoint.innerHTML = response.data; else { validationEl.innerHTML = origHtml; } } }) .catch(err => { console.error(err) validationEl.innerHTML = origHtml; }) } // If token in local storage, post it to the current url // If any text is returned in the post, replace the article with it. //alert('handlePaywall'); } window.addEventListener('DOMContentLoaded', handlePaywall); </script> <div id="cpi_chronicle_content"> <script>cpiAuthSteps.push('checking if login required');</script><p>This article is part of a Chronicle. <a href="https://www.competitionpolicyinternational.com/may-091">See more from this Chronicle</a></p> <h3>Katherine Funk, May 13, 2009</h3> <p>The Rule 23 analysis is currently undergoing what can only be described as a seismic jurisprudential shift. A series of recent cases and recent amendments to Rule 23 auger a much more difficult road to certification for class representatives. Although it was always clear that class plaintiffs had to convince the trial court that the requirements of Rule 23 were met, there was little guidance on the pro</p>... <div class="validation-notice-container"> <div class="fade-out"></div> <div class="validation-notice my-auto text-center d-flex align-items-center justify-content-center" style="background-color: #94efff; padding: 1.5rem; border-radius: 4px;" > <div> <h6 class='fs-4'>THIS ARTICLE IS NOT AVAILABLE FOR IP ADDRESS 8.222.208.146</h6> <!-- <p> Please <a href="#" onclick="jQuery('.td-login-modal-js').click();"><i class="td-icon-font td-icon-logout"></i>sign in</a> or <a href="/subscription-options/">join us</a><br> to access premium content! </p> --> <p class='mb-0'> Please <a href="https://www.pymnts.com/cpi/account-management?origin=https%3A%2F%2Fwww.pymnts.com%2Fcpi-posts%2Ftoward-judicial-realism-the-evolution-of-rule-23%2F" id="signInButton"><i class="td-icon-font td-icon-logout"></i>verify email</a> or <a href="https://www.pymnts.com/cpi/subscriptions">join us</a> to access premium content! </p> </div> </div> </div> </div> <script> const companyInfo = JSON.parse('[]'); console.log('companyInfo', companyInfo); </script> <!-- <p>PYMNTS’ latest report on <a href="https://www.pymnts.com/consumer-finance/2023/consumers-say-losing-supplemental-income-would-ruin-their-finances/" target="_blank" rel="noopener noreferrer">paycheck-to-paycheck consumers</a> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. sources. Cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p> <figure class="text-end"> <span class="figure-top lh-sm"> 62% </span> <div class="fact-feature"> <p class="text-uppercase fw-light mb-0 lh-sm">This is a part of the fact<br> <strong>This is a bold part of the fact</strong><br> AS OF FEBRUARY 2023 </p> </div> </figure> <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. </p> <figure class="text-center p-2 mx-auto mb-1" style="max-width:800px;"> <blockquote> <p><strong>This is something we want to highlight! It is an important part of a paragraph to center on the page.</strong></p><p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> <blockquote> </figure> <p>Drill down a bit, and our research found that 23% of consumers overall had side jobs, and 30% of these consumers with issues paying their bills have embraced additional employment. The extra income runs into the billions of dollars, as seen in the chart below, where tips and gratuities run nearly $12 billion. Informal tasks might conceivably fall within the confines of gig economy work, too — one-off jobs that might be found through online platforms and sites that match supply and demand, though not on a dedicated, hourly setup.</p> <div class="row row-cols-1 row-cols-lg-2"> <div class="col col-md-11 col-12"> <div class="callout mb-5 mx-auto mx-lg-0 py-5 py-md-0 px-md-5 px-lg-0"> <h5 class="text-uppercase text-white">Methodology</h5> <p class="text-callout px-2 px-md-5 mb-0"> This is an example where you can call out text in a circle. consumers conducted from Feb. 7 to Feb. 23, as well as analysis of other economic data. The Paycheck-to-Paycheck Report series expands on existing data published by government agencies, such as the Federal Reserve System and the Bureau of Labor Statistics, to provide a deep look into the core elements of American consumers’ financial wellness: income, savings, debt and spending choices. Our sample was balanced to match the U.S. adult population in a set of key demographic variables: 51% of respondents identified as female, 31% had college educations and 36% declared incomes of more than $100,000 per year. </p> </div> </div> <div class="col"> <p>If paycheck-to-paycheck consumers are bringing in billions of dollars from these side gigs, and a significant percentage of these households are depended on these active forms of income to help offset the monthly struggle of making ends meet, any turbulence in the gig economy will have negative ripple effects.</p> <p>If paycheck-to-paycheck consumers are bringing in billions of dollars from these side gigs, and a significant percentage of these households are depended on these active forms of income to help offset the monthly struggle of making ends meet, any turbulence in the gig economy will have negative ripple effects.</p> </div> </div> <h2 class="text-center mt-2 mb-3">This is a section title H2. It should be centered! </h2> <p><a href="https://www.pymnts.com/consumer-finance/2023/consumers-tackle-inflation-by-pulling-back-on-cards-while-shopping/" target="_blank" rel="noopener noreferrer">Separate data from PYMNTS and LendingClub show</a> that consumers are recalibrating their spending, and reconsidering discretionary vs. essential expenses. In a few notable examples, we’ve found that among grocery shoppers who say they have noticed price changes, 59% have cut down on nonessential grocery items, while 35% are buying cheaper alternatives. And, <a href="https://www.pymnts.com/restaurant-innovation/2023/consumers-think-restaurant-prices-3x-higher-than-inflation-and-want-discounts/" target="_blank" rel="noopener noreferrer">as seen here</a>, consumers think that restaurant prices are as much as three times higher than inflation.</p> <h2 class="text-center mt-2 mb-3">This is another section title. </h2> <p>These are areas where it would be “low hanging” fruit to cut back on delivery, which in turn cuts back on demand for orders across platforms such as DoorDash, which lessens the need for drivers … you get the picture. What winds up happening is that tip volumes, and the delivery work, itself, face headwinds. <a href="https://www.pymnts.com/news/delivery/2023/instacart-reportedly-adding-deliveries-to-businesses-in-clash-with-amazon-walmart/" target="_blank" rel="noopener noreferrer">Companies such as Instacart</a> are broadening their business models to expand their addressable markets (in this case, to boost its business clientele).</p> <div class="pymntsChartContainer shadow p-4 my-5"> <div id="d4a4dbc3-2c8a-4e7e-bcb8-92149fdbfb0b" class="pymntsChart"> </div> </div> <p>We note that, depending on where you look, freelance demand in other areas is volatile, too. <a href="https://www.pymnts.com/earnings/2023/fiverr-sees-explosive-demand-for-ai-related-services-amid-gig-economy-down-cycle/" target="_blank" rel="noopener noreferrer">Fiverr’s recent results</a> showed only slight growth in clients hiring the talents of gig workers, though spending across that client population is up.</p> <p>CEO Micha Kaufman made note in remarks on the analyst conference call that the macro challenges resulted in “headwinds to overall freelance demand.” All, told, in the most recent period, Fiverr has said that active buyers (who buy gig services from “sellers”) were 4.3 million. That was up 1% year over year, according to company materials. There are, of course, pockets of notable growth in the gig economy.</p> <p>In one example, <a href="https://www.pymnts.com/earnings/2023/uber-sees-q4-bookings-boost-as-members-move-beyond-ride-hailing/" target="_blank" rel="noopener noreferrer">Uber has said</a> in its most recent results that active mobility drivers also reached an all-time high in Q4, up 35% year on year — 5.4 million people are earning across the platform on a global basis and growth had been continuing into 2023. CEO Dara Khosrowshahi said that 70% of drivers are coming onto the platform to earn money to help combat inflation. PYMNTS’ gig economy app provider rankings <a href="https://www.pymnts.com/gig-economy/2023/provider-ranking-of-gig-economy-apps-shows-the-ups-and-downs-of-gigs/" target="_blank" rel="noopener noreferrer">released just last week</a> show that Uber has remained the most popular app in that pantheon.</p> <p> </p> --> </div> <div class="row row-cols-1 row-cols-lg-1 my-5" style="clear:both;"> <div class="col mb-1"> <h6 class="border-bottom border-4 border-light text-uppercase fw-bold mb-0"> Recent News </span> </h6> <div class="row item noBorderLast remove-col-3 lh-sm"> <div class="col-12 col-md-3 border-bottom border-light py-2 fw-bolder recommended-1"> <a href="https://www.pymnts.com/cpi-posts/spanish-minister-defends-record-as-flood-crisis-casts-shadow-on-eu-role/" class="fw-bold link-dark lh-base" rel="bookmark" title="Spanish Minister Defends Record as Flood Crisis Casts Shadow on EU Role"> Spanish Minister Defends Record as Flood Crisis Casts Shadow on EU Role </a> </div> <div class="col-12 col-md-3 border-bottom border-light py-2 fw-bolder recommended-1"> <a href="https://www.pymnts.com/cpi-posts/uk-antitrust-regulator-signals-flexibility-in-merger-reviews-to-boost-economic-growth/" class="fw-bold link-dark lh-base" rel="bookmark" title="UK Antitrust Regulator Signals Flexibility in Merger Reviews to Boost Economic Growth"> UK Antitrust Regulator Signals Flexibility in Merger Reviews to Boost Economic Growth </a> </div> <div class="col-12 col-md-3 border-bottom border-light py-2 fw-bolder recommended-1"> <a href="https://www.pymnts.com/cpi-posts/us-supreme-court-declines-to-hear-appeal-in-google-antitrust-records-dispute/" class="fw-bold link-dark lh-base" rel="bookmark" title="US Supreme Court Declines to Hear Appeal in Google Antitrust Records Dispute"> US Supreme Court Declines to Hear Appeal in Google Antitrust Records Dispute </a> </div> <div class="col-12 col-md-3 border-bottom border-light py-2 fw-bolder recommended-1"> <a href="https://www.pymnts.com/cpi-posts/matt-gaetz-withdraws-from-consideration-for-us-attorney-general-amid-controversy/" class="fw-bold link-dark lh-base" rel="bookmark" title="Matt Gaetz Withdraws from Consideration for US Attorney General Amid Controversy"> Matt Gaetz Withdraws from Consideration for US Attorney General Amid Controversy </a> </div> </div> </div> </div> </main> <script> /* * Handle Pymnts Charts */ function getChartType(option) { const series = option.series; const isArray = Array.isArray(series); if (isArray) { console.log("series is array"); if (series[0].type) return series[0].type; } else { console.log("series is not array"); } console.log("SERIES", series); alert("UNKNOWN CHART"); } function adjustTitleLength(title) { let titleStr = title.replaceAll('<br>', ''); const max = 35; const titleWords = titleStr.split(' '); const titleArr = []; let curLine = titleWords[0] let count = curLine.length; for (let i = 1; i < titleWords.length; ++i) { count += titleWords[i].length; if (count > max) { titleArr.push(curLine); curLine = titleWords[i]; count = curLine.length; } else curLine += ' ' + titleWords[i]; } if (curLine.length) titleArr.push(curLine); return titleArr.join("\n"); } function adjustTitles(option) { if (option.title && option.title.text) option.title.text = adjustTitleLength(option.title.text); if (option.title && option.title.subtext) option.title.subtext = adjustTitleLength(option.title.subtext); } function adjustMobilePie(chartDom, option) { delete option.legend.top; option.legend.bottom = 0; const currentHeight = chartDom.clientHeight; chartDom.style.height = currentHeight + 60 + "px"; option.grid = {}; option.grid = { top: -30 } } function adjustMobileLine(chartDom, option) { const currentHeight = chartDom.clientHeight; chartDom.style.height = currentHeight + 35 + "px"; option.grid.height = 350; } function adjustMobileBar(chartDom, option) { // If vertical bar chart if (option.xAxis.type === 'value') { option.yAxis.show = false; } } function adjustToMobile(chartDom, option) { console.log("ADJUST TO MOBILE"); const chartType = getChartType(option); console.log('Chart Type', chartType); chartDom.style.margin = "" adjustTitles(option); const numTitleLines = option.title.text ? option.title.text.split("\n").length : 0; const numSubtitleLines = option.title.subtext ? option.title.subtext.split("\n").length : 0; const increase = (numTitleLines * 16) + (numSubtitleLines * 14); const curHeight = chartDom.clientHeight; chartDom.style.height = curHeight + increase + "px"; option.grid = {}; option.grid.top = increase + 50; option.tooltip.position = function(point, params, dom, rect, size) { console.log(dom.clientWidth, size.viewSize[0]) return [(size.viewSize[0] - dom.clientWidth) / 2, point[1]]; }; switch (chartType) { case 'bar': return adjustMobileBar(chartDom, option); case 'line': return adjustMobileLine(chartDom, option); case 'pie': return adjustMobilePie(chartDom, option); default: console.error('No Mobile adjustment for Chart Type: ', chartType); } } function mcwParser(str, token) { console.log('str', typeof str, str) const par = JSON.parse(str, (key, value) => { if (typeof value === 'string' && value.startsWith(token)) { const func = value.substring(8); return eval(func); } return value; }) return par; } async function loadPymntsCharts() { const charts = document.querySelectorAll('.pymntsChart'); console.log('charts', charts); for (let i = 0; i < charts.length; ++i) { let request = { url: `https://charts.pymnts.com:6300/id/${charts[i].getAttribute('id')}`, method: 'get' }; let response; try { response = await axios(request); var chartDom = charts[i]; var option = mcwParser(response.data[0].option, 'funcxyz_'); console.log('option', option); option.title.textStyle.fontSize = 14; option.title.textStyle.fontWeight = 'bold'; option.title.subtextStyle.fontSize = 12; chartDom.style.height = option.info.containerHeight ? option.info.containerHeight + 'px' : '500px'; chartDom.style.width = '90%'; chartDom.style.maxWidth = '1200px'; chartDom.style.margin = '1rem auto'; if (window.innerWidth <= 768) adjustToMobile(chartDom, option); var myChart = echarts.init(chartDom); myChart.setOption(option); if (option.info && option.info.source) { const parent = charts[i].parentNode; console.log('parentNode', parent); const node = document.createElement("div"); const below = option.info.below ? option.info.below : ''; node.innerHTML = below + "<br />Source: " + option.info.source; node.style.width = '90%'; node.style.maxWidth = '1200px'; node.style.margin = '1rem auto'; parent.appendChild(node); } } catch (e) { console.error(e); } } } window.addEventListener('DOMContentLoaded', loadPymntsCharts); // const parseCookie = str => // str // .split(';') // .map(v => v.split('=')) // .reduce((acc, v) => { // acc[decodeURIComponent(v[0].trim())] = decodeURIComponent(v[1].trim()); // return acc; // }, {}); async function getCpiCookie() { const cookies = parseCookie(document.cookie); console.log('cookies', cookies); const cookieEntries = Object.entries(cookies); cpiAuthSteps.push([...cookieEntries]) cpiAuthSteps.push(JSON.stringify(companyInfo, null, 4)); let request = { url: `https://www.pymnts.com/wp-content/themes/flex-mag-sixspoke/root/auth-db.php`, method: 'post', data: { info: cpiAuthSteps } } let response; try { response = await axios(request); console.log('axios response', response.data); } catch (err) { console.error('axios error'); console.error(err); } console.log('auth steps', cpiAuthSteps); if (typeof companyInfo.name !== 'undefined' && typeof companyInfo.order !== 'undefined') { let needsCookies = false; //if (typeof cookies['cpi-org-info'] === 'undefined') needsCookies = true; const cookieVal = `${companyInfo.name} --- ${companyInfo.order}`; if (cookies['cpi-org-info'] !== cookieVal) needsCookies = true; if (needsCookies) { return console.log('needs cookies'); window.location.href = `https://www.competitionpolicyinternational.com/set-cookie-sdfkjkwyroskjhfd.php?name=cpi-org-info&value=${encodeURIComponent(cookieVal)}&url=${encodeURIComponent(window.location.href)}`; } } if (typeof cookies['cpi-device-id'] !== 'undefined') return; // const url = `https://www.competitionpolicyinternational.com/transfer-the-cookie.php?url=${encodeURIComponent(window.location.href)}`; // window.location.href = url; // console.log(window.location.href); } window.addEventListener('DOMContentLoaded', getCpiCookie); </script> <footer class="blog-footer"> <div class="container mx-auto"> <div class="row mx-0 mx-md-5 py-4"> <div class="col-12 col-md-3 text-center text-md-start"> <a href="https://www.pymnts.com/cpi/" class="w-100"> <img src="https://www.pymnts.com/wp-content/uploads/2023/03/CPI_Logo_Black-1.svg" width="100%" height="40" class="img-fluid"> </a> <div class="d-block text-black text-center mt-1 mb-3 my-md-0"> <a href="https://www.competitionpolicyinternational.com/category/cpi-tv/" class="text-black text-uppercase fw-normal">CPI TV</a> | <a href="https://www.competitionpolicyinternational.com/subscribe/" class="text-black text-uppercase fw-normal">Subscribe</a> </div> </div> <div class="col-12 col-md-9 text-center"> <div class="row row-cols-3 g-0"> <div class="col text-center"> <h4 class="text-black mb-3">About</h4> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="https://www.pymnts.com/cpi/about-us/" class="nav-link p-0 text-black">About Us</a></li> <li class="nav-item mb-2"><a href="https://www.pymnts.com/cpi/our-editorial-policy/" class="nav-link p-0 text-black">Editorial Policy</a> </li> <li class="nav-item mb-2"><a href="https://www.pymnts.com/cpi/editorial-advisory-board/" class="nav-link p-0 text-black">Editorial Advisory Board</a> </li> </ul> </div> <div class="col text-center"> <h4 class="text-black mb-3">Getting Started</h4> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="https://www.competitionpolicyinternational.com/contact/" class="nav-link p-0 text-black">Contact Us</a> </li> <li class="nav-item mb-2"><a href="https://www.pymnts.com/cpi/promote-more-engage-more-connect-more/" class="nav-link p-0 text-black">Partnerships</a> </li> <li class="nav-item mb-2"><a href="https://www.competitionpolicyinternational.com/subscribe/" class="nav-link p-0 text-black">Newsletters</a> </li> </ul> </div> <div class="col text-center"> <h4 class="text-black mb-3">Follow CPI</h4> <ul class="nav flex-row justify-content-center"> <li class="nav-item mx-2"><a href="https://www.instagram.com/compolinter/"><i class="bi bi-instagram fs-4 text-black"></i></a></li> <li class="nav-item mx-2"><a href="https://www.linkedin.com/company/competition-policy-international/"><i class="bi bi-linkedin fs-4 text-black"></i></a> </li> <li class="nav-item mx-2"><a href="https://twitter.com/CompPolicyInt"><i class="bi bi-twitter-x fs-4 text-black"></i></a></li> <li class="nav-item mx-2"><a href="https://vimeo.com/competitionpolicyint"><i class="bi bi-vimeo fs-4 text-black"></i></a> </li> </ul> </div> </div> </div> </div> <div class="container"> <div class="row mt-5"> <div class="col-12 text-center"> © Competition Policy International 2024 </div> </div> <div class="row"> <div class="col-12 text-center"> <a href="https://www.pymnts.com/cpi/terms-conditions-cpi#cpiPrivacy" class="p-0 text-black smaller">Privacy Policy</a> <span class="smaller">|</span> <a href=https://www.pymnts.com/cpi/terms-conditions-cpi/" class="p-0 text-black smaller">Terms & Conditions</a> </div> </div> </div> </div> </footer> </body>