You only think they're (modern libraries) horrible because you can't customize them like you want. They have a lot of great functionality built into them that makes file management and usability very easy for the users.
Their guidance is to use Classic library experiences if you don't like the modern experience. This can be done on a list by list basis, or configured in the central admin section of SharePoint Online.
Customized Modern Pages? Yes
At one client we installed the TamperMonkey (GreaseMonkey on FF) browser extension
It pulls in scripts from our own CDN so we can inject our UX (all that CSR/JSLink stuff we did in 2013) into any Modern or Classic SPOnline page.
Good approach? Hmm...
Alas no alternative Browser extension for IE and Edge
And like the good old days you need Local Login Scripts to manage those extensions locally
Unfortunately as of this moment, you are stuck. The only thing that can work on "Modern" site pages is custom theme.
If your site happens to use a custom theme, then this custom theme will be respected in the "modern" page experience
What it says is that - If you developed your own theme using the SharePoint palette tool and then applied it on the site, then it will be respected.
You can use powershell code below or your CSOM code to
ApplyTheme. It will respect the theme color (
spcolor) and background image. Powershell is as below:
# Connect to a previously created Modern Site $cred = Get-Credential Connect-PnPOnline https://[tenant].sharepoint.com/sites/siteurl -Credentials $cred # Apply a custom theme to a Modern Site # First, upload the theme assets Add-PnPFile -Path .\sppnp.spcolor -Folder SiteAssets Add-PnPFile -Path .\sppnp-bg.png -Folder SiteAssets # Second, apply the theme assets to the site $web = Get-PnPWeb $palette = $web.ServerRelativeUrl + "/SiteAssets/sppnp.spcolor" $background = $web.ServerRelativeUrl + "/SiteAssets/sppnp-bg.png" # We use OOTB CSOM operation for this $web.ApplyTheme($palette, [NullString]::Value, $background, $true) $web.Update() # Set timeout as high as possible and execute $web.Context.RequestTimeout = [System.Threading.Timeout]::Infinite $web.Context.ExecuteQuery()
PnP Reference - modern-experience-customizations-customize-sites
What will not work on modern pages till now:
1) Alternative layouts
2) Custom page templates
3) Adding "classic" web parts on "modern" pages
4) Custom CSS via AlternateCSSUrl web property
6) Custom master pages
So as of this moment, the only way to customizing the modern pages is via themes. Everything else will not work.
There are now additional ways to customize modern pages within SharePoint Online. One of the biggest headaches was definitely the page title region. There are now a few options for configuring the page title with different layouts: Configure the Title Region – SharePoint Modern Pages
There are also ways to confirm the individual zones by adjusting the number of columns or even adding background images to rows to break up some of the white space.
I anticipate more options in the future as Microsoft begins to listen to some of the feedback.