About | ACP | Buy | Forum | Industry Watch | Learning Curve | Search | Twitter | Xnews
Home » Products » Reviews

Brave: First Look

A no-nonsense browser?


Buy It

Try It

BELLE RIVER (Rixstep) — Wikipedia describes the Brave web browser as being based on Chromium and Blink, and being the brainchild of Mozilla cofounder Brendan Eich. Brave blocks advert-related shenanigans by default. The project is less than two years old.

'The web has become a different place', says the Brave site. 'With the ad-tech ecosystem out of control, users have revolted and blocking ads has become the new weapon of choice for improving their browsing speed, safety and privacy.'

Most Internet surfers don't realise how deep that 'ad-tech ecosystem' goes.

The download for the Mac is around 90 MB, and expands, after trimming, to 238,811,786 bytes. It also drops 46,055,613 bytes on 'Application Support'. That's 284,867,399 bytes. For a browser. (But of course you can clean out 'Application Support'.)

  • Good news: there are gobs of language files, and yes, the app is code-signed, but the language files you don't want can be cleaned out.
  • Not great news: the bundle has half a dozen .DS_Store files. Evidently Brendan's crack team use Finder to (not) find things.
  • Weird news: the bundle even has a subdirectory called .DS_Store.

Brave sets up a temporary directory hierarchy (at /private/tmp) called 'Brave Developers Crashes'. Brave also toggles off NSScrollViewRubberbanding, NSFullScreenMenuItemEverywhere, and NSTreatUnknownArgumentsAsOpen in its settings files.

As can be seen below, Brave included 70 (seventy) compiler header files you absolutely don't need, an indication that things are still a bit sloppy at Belle River. [With a disk footprint over twice that of Chrome, 'sloppy' is a kind word. Ed.]

189 items. 238,811,786 bytes. 467,184 blocks. 0 bytes in extended attributes.

Brave.app/Contents
Brave.app/Contents/_CodeSignature
Brave.app/Contents/_CodeSignature/CodeResources
Brave.app/Contents/Frameworks
Brave.app/Contents/Frameworks/Brave Framework.framework
Brave.app/Contents/Frameworks/Brave Framework.framework/Brave Framework
Brave.app/Contents/Frameworks/Brave Framework.framework/Internet Plug-Ins
Brave.app/Contents/Frameworks/Brave Framework.framework/Libraries
Brave.app/Contents/Frameworks/Brave Framework.framework/Resources
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/_CodeSignature
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/_CodeSignature/CodeResources
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Brave Framework
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Internet Plug-Ins
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Internet Plug-Ins/widevinecdmadapter.plugin
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Libraries
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Libraries/libffmpeg.dylib
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Libraries/libnode.dylib
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/atom_resources.pak
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/content_shell.pak
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/crashpad_handler
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/en.lproj
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/en.lproj/locale.pak
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/en_GB.lproj
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/en_GB.lproj/locale.pak
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/extensions_api_resources.pak
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/extensions_renderer_resources.pak
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/extensions_resources.pak
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/icudtl.dat
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/Info.plist
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/MainMenu.nib
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/natives_blob.bin
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/A/Resources/snapshot_blob.bin
Brave.app/Contents/Frameworks/Brave Framework.framework/Versions/Current
Brave.app/Contents/Frameworks/Brave Helper EH.app
Brave.app/Contents/Frameworks/Brave Helper EH.app/Contents
Brave.app/Contents/Frameworks/Brave Helper EH.app/Contents/_CodeSignature
Brave.app/Contents/Frameworks/Brave Helper EH.app/Contents/_CodeSignature/CodeResources
Brave.app/Contents/Frameworks/Brave Helper EH.app/Contents/Info.plist
Brave.app/Contents/Frameworks/Brave Helper EH.app/Contents/MacOS
Brave.app/Contents/Frameworks/Brave Helper EH.app/Contents/MacOS/Brave Helper EH
Brave.app/Contents/Frameworks/Brave Helper NP.app
Brave.app/Contents/Frameworks/Brave Helper NP.app/Contents
Brave.app/Contents/Frameworks/Brave Helper NP.app/Contents/_CodeSignature
Brave.app/Contents/Frameworks/Brave Helper NP.app/Contents/_CodeSignature/CodeResources
Brave.app/Contents/Frameworks/Brave Helper NP.app/Contents/Info.plist
Brave.app/Contents/Frameworks/Brave Helper NP.app/Contents/MacOS
Brave.app/Contents/Frameworks/Brave Helper NP.app/Contents/MacOS/Brave Helper NP
Brave.app/Contents/Frameworks/Brave Helper.app
Brave.app/Contents/Frameworks/Brave Helper.app/Contents
Brave.app/Contents/Frameworks/Brave Helper.app/Contents/_CodeSignature
Brave.app/Contents/Frameworks/Brave Helper.app/Contents/_CodeSignature/CodeResources
Brave.app/Contents/Frameworks/Brave Helper.app/Contents/Info.plist
Brave.app/Contents/Frameworks/Brave Helper.app/Contents/MacOS
Brave.app/Contents/Frameworks/Brave Helper.app/Contents/MacOS/Brave Helper
Brave.app/Contents/Frameworks/Mantle.framework
Brave.app/Contents/Frameworks/Mantle.framework/Headers
Brave.app/Contents/Frameworks/Mantle.framework/Mantle
Brave.app/Contents/Frameworks/Mantle.framework/Modules
Brave.app/Contents/Frameworks/Mantle.framework/Resources
Brave.app/Contents/Frameworks/Mantle.framework/Versions
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/_CodeSignature
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/_CodeSignature/CodeResources
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/Mantle.h
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLJSONAdapter.h
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLManagedObjectAdapter.h
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLModel+NSCoding.h
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLModel.h
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLValueTransformer.h
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSArray+MTLManipulationAdditions.h
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSDictionary+MTLManipulationAdditions.h
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSObject+MTLComparisonAdditions.h
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSValueTransformer+MTLInversionAdditions.h
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSValueTransformer+MTLPredefinedTransformerAdditions.h
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Mantle
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Modules
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Modules/module.modulemap
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Resources
Brave.app/Contents/Frameworks/Mantle.framework/Versions/A/Resources/Info.plist
Brave.app/Contents/Frameworks/Mantle.framework/Versions/Current
Brave.app/Contents/Frameworks/ReactiveCocoa.framework
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Headers
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Modules
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/ReactiveCocoa
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Resources
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/_CodeSignature
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/_CodeSignature/CodeResources
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/EXTKeyPathCoding.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/EXTScope.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/metamacros.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSArray+RACSequenceAdditions.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSControl+RACCommandSupport.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSControl+RACTextSignalSupport.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSData+RACSupport.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSDictionary+RACSequenceAdditions.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSEnumerator+RACSequenceAdditions.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSFileHandle+RACSupport.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSIndexSet+RACSequenceAdditions.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSNotificationCenter+RACSupport.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACAppKitBindings.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACDeallocating.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACLifting.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACPropertySubscribing.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACSelectorSignal.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSOrderedSet+RACSequenceAdditions.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSSet+RACSequenceAdditions.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSString+RACSequenceAdditions.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSString+RACSupport.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSText+RACSignalSupport.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSURLConnection+RACSupport.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSUserDefaults+RACSupport.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACBacktrace.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACBehaviorSubject.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACChannel.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACCommand.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACCompoundDisposable.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACDisposable.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACEvent.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACGroupedSignal.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACKVOChannel.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACMulticastConnection.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACQueueScheduler+Subclass.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACQueueScheduler.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACReplaySubject.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScheduler+Subclass.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScheduler.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScopedDisposable.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSequence.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSerialDisposable.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSignal+Operations.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSignal.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACStream.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubject.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubscriber.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubscriptingAssignmentTrampoline.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTargetQueueScheduler.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTestScheduler.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTuple.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACUnit.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/ReactiveCocoa.h
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Modules
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Modules/module.modulemap
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/ReactiveCocoa
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Resources
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Resources/Info.plist
Brave.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/Current
Brave.app/Contents/Frameworks/Squirrel.framework
Brave.app/Contents/Frameworks/Squirrel.framework/Headers
Brave.app/Contents/Frameworks/Squirrel.framework/Modules
Brave.app/Contents/Frameworks/Squirrel.framework/Resources
Brave.app/Contents/Frameworks/Squirrel.framework/Squirrel
Brave.app/Contents/Frameworks/Squirrel.framework/Versions
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/_CodeSignature
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/_CodeSignature/CodeResources
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/NSBundle+SQRLVersionExtensions.h
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/NSProcessInfo+SQRLVersionExtensions.h
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLDownloadedUpdate.h
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLUpdate.h
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLUpdater.h
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/Squirrel.h
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/Modules
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/Modules/module.modulemap
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/Resources
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/Resources/Info.plist
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/Resources/ShipIt
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/A/Squirrel
Brave.app/Contents/Frameworks/Squirrel.framework/Versions/Current
Brave.app/Contents/Info.plist
Brave.app/Contents/MacOS
Brave.app/Contents/MacOS/Brave
Brave.app/Contents/Resources
Brave.app/Contents/Resources/app.asar
Brave.app/Contents/Resources/app.asar.unpacked
Brave.app/Contents/Resources/app.asar.unpacked/node_modules
Brave.app/Contents/Resources/app.asar.unpacked/node_modules/node-anonize2-relic-emscripten
Brave.app/Contents/Resources/app.asar.unpacked/node_modules/node-anonize2-relic-emscripten/anonize2.js.mem
Brave.app/Contents/Resources/electron.asar
Brave.app/Contents/Resources/electron.icns
Brave.app/Contents/Resources/en.lproj
Brave.app/Contents/Resources/en_GB.lproj

Only one NIB (MainMenu.nib) is found. No 'keystone' Google spy files were found.

The opening screen is quite compelling.



Note how the screen is keeping tabs on how much is being blocked and how much time is being saved.

The browsing 'experience' is much like any other. One thing that can annoy is the 'preview' one gets of page contents when simply hovering over an unselected tab. Lots more has to be checked, as integration with the NSText system and Cocoa services are essential. But Brave is looking good.

About | ACP | Buy | Forum | Industry Watch | Learning Curve | Search | Twitter | Xnews
Copyright © Rixstep. All rights reserved.