diff --git configure.ac configure.ac
index 318cad4..7c4e53f 100644
--- configure.ac
+++ configure.ac
@@ -3850,13 +3850,6 @@ then
 
   VLC_ADD_LIBS([macosx], [-Wl,-framework,QTKit -Wl,-framework,IOKit -Wl,-framework,AddressBook -Wl,-framework,WebKit -Wl,-framework,CoreAudio -Wl,-framework,SystemConfiguration -Wl,-framework,ScriptingBridge])
 
-  if test ! -d ${CONTRIB_DIR}/Sparkle.framework
-  then
-    AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}])
-  fi
-  VLC_ADD_LIBS([macosx], [-F${CONTRIB_DIR} -Wl,-framework,Sparkle])
-  VLC_ADD_OBJCFLAGS([macosx], [-F${CONTRIB_DIR}])
-
   if test ! -d ${CONTRIB_DIR}/BGHUDAppKit.framework
   then
     AC_MSG_ERROR([BGHUDAppKit framework is required and was not found in ${CONTRIB_DIR}])
diff --git extras/package/macosx/Resources/English.lproj/MainMenu.xib extras/package/macosx/Resources/English.lproj/MainMenu.xib
index 1c880c9..08b3b9d 100644
--- extras/package/macosx/Resources/English.lproj/MainMenu.xib
+++ extras/package/macosx/Resources/English.lproj/MainMenu.xib
@@ -2106,9 +2106,6 @@
       <object class="NSCustomObject" id="651263286">
         <string key="NSClassName">VLCMainMenu</string>
       </object>
-      <object class="NSCustomObject" id="1040926652">
-        <string key="NSClassName">SUUpdater</string>
-      </object>
       <object class="NSCustomView" id="560875128">
         <reference key="NSNextResponder"/>
         <int key="NSvFlags">268</int>
@@ -2635,14 +2632,6 @@
           <int key="connectionID">2817</int>
         </object>
         <object class="IBConnectionRecord">
-          <object class="IBActionConnection" key="connection">
-            <string key="label">checkForUpdates:</string>
-            <reference key="source" ref="1040926652"/>
-            <reference key="destination" ref="354414928"/>
-          </object>
-          <int key="connectionID">4371</int>
-        </object>
-        <object class="IBConnectionRecord">
           <object class="IBOutletConnection" key="connection">
             <string key="label">o_dmi_mute</string>
             <reference key="source" ref="651263286"/>
@@ -5466,11 +5455,6 @@
             <string key="objectName">Application</string>
           </object>
           <object class="IBObjectRecord">
-            <int key="objectID">4370</int>
-            <reference key="object" ref="1040926652"/>
-            <reference key="parent" ref="0"/>
-          </object>
-          <object class="IBObjectRecord">
             <int key="objectID">4397</int>
             <reference key="object" ref="629699013"/>
             <object class="NSMutableArray" key="children">
diff --git modules/gui/macosx/simple_prefs.m modules/gui/macosx/simple_prefs.m
index 98f315d..0074c64 100644
--- modules/gui/macosx/simple_prefs.m
+++ modules/gui/macosx/simple_prefs.m
@@ -38,8 +38,6 @@
 #import "AppleRemote.h"
 #import "CoreInteraction.h"
 
-#import <Sparkle/Sparkle.h>                        //for o_intf_last_update_lbl
-
 static const char *const ppsz_language[] =
 {
     "auto",
@@ -383,7 +381,6 @@ create_toolbar_item(NSString * o_itemIdent, NSString * o_name, NSString * o_desc
     [o_intf_mediakeys_ckb setTitle: _NS("Control playback with media keys")];
     [o_intf_art_ckb setTitle: _NS("Allow metadata network access")];
     [o_intf_update_ckb setTitle: _NS("Automatically check for updates")];
-    [o_intf_last_update_lbl setStringValue: @""];
     [o_intf_enableGrowl_ckb setTitle: _NS("Enable Growl notifications (on playlist item change)")];
     [o_intf_autoresize_ckb setTitle: _NS("Resize interface to the native video size")];
     [o_intf_pauseminimized_ckb setTitle: _NS("Pause the video playback when minimized")];
@@ -595,10 +592,6 @@ static inline char * __config_GetLabel(vlc_object_t *p_this, const char *psz_nam
     [self setupButton: o_intf_appleremote_sysvol_ckb forBoolValue: "macosx-appleremote-sysvol"];
 
     [self setupButton: o_intf_mediakeys_ckb forBoolValue: "macosx-mediakeys"];
-    if ([[SUUpdater sharedUpdater] lastUpdateCheckDate] != NULL)
-        [o_intf_last_update_lbl setStringValue: [NSString stringWithFormat: _NS("Last check on: %@"), [[[SUUpdater sharedUpdater] lastUpdateCheckDate] descriptionWithLocale: [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]]]];
-    else
-        [o_intf_last_update_lbl setStringValue: _NS("No check was performed yet.")];
     psz_tmp = config_GetPsz(p_intf, "control");
     if (psz_tmp) {
         [o_intf_enableGrowl_ckb setState: (NSInteger)strstr(psz_tmp, "growl")];
diff --git extras/package/macosx/Resources/English.lproj/Preferences.xib extras/package/macosx/Resources/English.lproj/Preferences.xib
index 2f264fd..d4049bd 100644
--- extras/package/macosx/Resources/English.lproj/Preferences.xib
+++ extras/package/macosx/Resources/English.lproj/Preferences.xib
@@ -4779,9 +4779,6 @@
 				<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
 				<bool key="NSWindowIsRestorable">YES</bool>
 			</object>
-			<object class="NSCustomObject" id="761483302">
-				<string key="NSClassName">SUUpdater</string>
-			</object>
 			<object class="NSWindowTemplate" id="898680423">
 				<int key="NSWindowStyleMask">15</int>
 				<int key="NSWindowBacking">2</int>
@@ -7629,22 +7626,6 @@
 					<int key="connectionID">2681</int>
 				</object>
 				<object class="IBConnectionRecord">
-					<object class="IBBindingConnection" key="connection">
-						<string key="label">value: automaticallyChecksForUpdates</string>
-						<reference key="source" ref="243384014"/>
-						<reference key="destination" ref="761483302"/>
-						<object class="NSNibBindingConnector" key="connector">
-							<reference key="NSSource" ref="243384014"/>
-							<reference key="NSDestination" ref="761483302"/>
-							<string key="NSLabel">value: automaticallyChecksForUpdates</string>
-							<string key="NSBinding">value</string>
-							<string key="NSKeyPath">automaticallyChecksForUpdates</string>
-							<int key="NSNibBindingConnectorVersion">2</int>
-						</object>
-					</object>
-					<int key="connectionID">3559</int>
-				</object>
-				<object class="IBConnectionRecord">
 					<object class="IBOutletConnection" key="connection">
 						<string key="label">nextKeyView</string>
 						<reference key="source" ref="588417130"/>
@@ -9360,12 +9341,6 @@
 						<reference key="parent" ref="492678965"/>
 					</object>
 					<object class="IBObjectRecord">
-						<int key="objectID">3555</int>
-						<reference key="object" ref="761483302"/>
-						<reference key="parent" ref="0"/>
-						<string key="objectName">Sparkle Updater</string>
-					</object>
-					<object class="IBObjectRecord">
 						<int key="objectID">3556</int>
 						<reference key="object" ref="243384014"/>
 						<array class="NSMutableArray" key="children">
diff --git modules/gui/macosx/intf.m modules/gui/macosx/intf.m
index 1d48150..c61a4aa 100644
--- modules/gui/macosx/intf.m
+++ modules/gui/macosx/intf.m
@@ -68,8 +68,6 @@
 #import "VideoEffects.h"
 #import "AudioEffects.h"
 
-#import <Sparkle/Sparkle.h>                 /* we're the update delegate */
-
 #import "iTunes.h"
 #import "Spotify.h"
 
@@ -785,8 +783,6 @@
     PL_LOCK;
     items_at_launch = p_playlist->p_local_category->i_children;
     PL_UNLOCK;
-
-    [[SUUpdater sharedUpdater] setDelegate:self];
 }
 
 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
@@ -974,25 +970,6 @@
 }
 
 #pragma mark -
-#pragma mark Sparkle delegate
-/* received directly before the update gets installed, so let's shut down a bit */
-- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update
-{
-    [NSApp activateIgnoringOtherApps:YES];
-    [o_remote stopListening: self];
-    [[VLCCoreInteraction sharedInstance] stop];
-}
-
-/* don't be enthusiastic about an update if we currently play a video */
-- (BOOL)updaterMayCheckForUpdates:(SUUpdater *)bundle
-{
-    if ([self activeVideoPlayback])
-        return NO;
-
-    return YES;
-}
-
-#pragma mark -
 #pragma mark Media Key support
 
 -(void)mediaKeyTap:(SPMediaKeyTap*)keyTap receivedMediaKeyEvent:(NSEvent*)event

--- extras/package/macosx/Info.plist.in	2017-08-27 23:58:56.000000000 +0800
+++ extras/package/macosx/Info.plist.in	2024-03-25 06:03:52.000000000 +0800
@@ -1342,12 +1342,6 @@
 			<string>Binary</string>
 		</dict>
 	</array>
-	<key>SUFeedURL</key>
-	<string>http://update.videolan.org/vlc/sparkle/vlc-intel64.xml</string>
-	<key>SUPublicDSAKeyFile</key>
-	<string>dsa_pub.pem</string>
-	<key>SUAllowsAutomaticUpdates</key>
-		<false/>
 	<key>NSAppTransportSecurity</key>
 	<dict>
 	<key>NSAllowsArbitraryLoads</key>

--- extras/package/macosx/ub.sh	2014-06-14 23:14:12.000000000 +0800
+++ extras/package/macosx/ub.sh	2024-03-25 06:08:00.000000000 +0800
@@ -43,11 +43,8 @@
 rm -Rf $SRCROOT/VLC.app/$LIBS/*
 rm -Rf $SRCROOT/VLC.app/Contents/MacOS/VLC
 rm -Rf $SRCROOT/VLC.app/$PLUGINS/*
-rm -Rf $SRCROOT/VLC.app/$FRAMEWORKS/Growl.framework/Versions/A/Growl
 rm -Rf $SRCROOT/VLC.app/$FRAMEWORKS/BGHUDAppKit.framework/BGHUDAppKit
 rm -Rf $SRCROOT/VLC.app/$FRAMEWORKS/BGHUDAppKit.framework/Versions/A/BGHUDAppKit
-rm -Rf $SRCROOT/VLC.app/$FRAMEWORKS/Sparkle.framework/Versions/A/Sparkle
-rm -Rf $SRCROOT/VLC.app/$FRAMEWORKS/Sparkle.framework/Resources/relaunch
 
 function do_lipo {
     file="$1"
@@ -86,11 +83,8 @@
 done
 
 echo "Installing frameworks"
-do_lipo $FRAMEWORKS/Growl.framework/Versions/A/Growl
 do_lipo $FRAMEWORKS/BGHUDAppKit.framework/BGHUDAppKit
 do_lipo $FRAMEWORKS/BGHUDAppKit.framework/Versions/A/BGHUDAppKit
-do_lipo $FRAMEWORKS/Sparkle.framework/Versions/A/Sparkle
-do_lipo $FRAMEWORKS/Sparkle.framework/Resources/relaunch
 
 echo "Installing VLC"
 do_lipo Contents/MacOS/VLC
