[Help] Contacts App Blank/Mixed up with files page on firefox

Nextcloud: 12.0.3
OS: Debian 9
Web Server: nginx/1.10.3
PHP: 7.0

Client OS: Windows 10
Client Browser: Firefox 56.0 (64-bit), Chrome Version 61.0.3163.100 (Official Build) (64-bit)

Cloudflare: Used for DyDNS only in pass through mode. No caching or minifying enabled

Nextcloud logs: Empty

Nginx logs: Empty

PHP7.0 logs: Empty

$CONFIG = array (
  'instanceid' => '##redacted##',
  'passwordsalt' => '##redacted##',
  'secret' => '##redacted##',
  'trusted_domains' =>
  array (
    0 => 'datawith.info',
  'datadirectory' => '/var/www/nextcloud/data',
  'overwrite.cli.url' => '##redacted##',
  'dbtype' => 'mysql',
  'version' => '',
  'dbname' => 'nextclouddb',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'nextcloud',
  'dbpassword' => '##redacted##',
  'installed' => true,
  'memcache.local' => '\OC\Memcache\APCu',
Nginx Config
upstream php-handler {
        server unix:/run/php/php7.0-fpm.sock;

server {
        listen 80;
        server_name redacted.tld;
        # enforce https
        return 301 https://$server_name$request_uri;

server {
        listen 443 ssl;
        server_name redacted.tld;

        ssl on;
        ssl_certificate /etc/letsencrypt/live/redacted.tld/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/redacted.tld/privkey.pem;

        add_header Strict-Transport-Security "max-age=15768000";
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;

        # Path to the root of your installation
        root /var/www/nextcloud/;

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;

        location = /.well-known/carddav {
                return 301 $scheme://$host/remote.php/dav;
        location = /.well-known/caldav {
                return 301 $scheme://$host/remote.php/dav;

        # set max upload size
        client_max_body_size 512M;
        fastcgi_buffers 64 4K;

        # Enable gzip but do not remove ETag headers
        gzip on;
        gzip_vary on;
        gzip_comp_level 4;
        gzip_min_length 256;
        gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
        gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/$

        location / {
                rewrite ^ /index.php$uri;

        location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
                deny all;
        location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
                deny all;

        location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_param HTTPS on;
                #Avoid sending the security headers twice
                fastcgi_param modHeadersAvailable true;
                fastcgi_param front_controller_active true;
                fastcgi_pass php-handler;
                fastcgi_intercept_errors on;
                fastcgi_request_buffering off;

        location ~ ^/(?:updater|ocs-provider)(?:$|/) {
                try_files $uri/ =404;
                index index.php;

        # Adding the cache control header for js and css files
        # Make sure it is BELOW the PHP block
        location ~ \.(?:css|js|woff|svg|gif)$ {
                try_files $uri /index.php$uri$is_args$args;
                add_header Cache-Control "public, max-age=15778463";
                # Add headers to serve security related headers (It is intended to
                # have those duplicated to the ones above)
                # Before enabling Strict-Transport-Security headers please read into
                # this topic first.
                add_header Strict-Transport-Security "max-age=15768000";
                #  includeSubDomains; preload;";
                # WARNING: Only add the preload option once you read about
                # the consequences in https://hstspreload.org/. This option
                # will add the domain to a hardcoded list that is shipped
                # in all major browsers and getting removed from this list
                # could take several months.
                add_header X-Content-Type-Options nosniff;
                add_header X-XSS-Protection "1; mode=block";
                add_header X-Robots-Tag none;
                add_header X-Download-Options noopen;
                add_header X-Permitted-Cross-Domain-Policies none;
                # Optional: Don't log access to assets
                access_log off;

        location ~ \.(?:png|ttf|ico|jpg|jpeg)$ {
                try_files $uri /index.php$uri$is_args$args;
                add_header Cache-Control "public, max-age=15778463";
                # Optional: Don't log access to other assets
                access_log off;
Mixed up page Screenshot


  1. Open Firefox
  2. log in
  3. add contacts app
  4. open contacts app - blank screen or mix of files screen and contacts

I am Unable to replicate behavior this in chrome and the contacts app works, albeit not very well as it frequently locks up when attempting to modify a contact.

Attempted fixes:
After experiencing this issue and having the less serious issue of firefox “hanging” for 6-10ish seconds after nextcloud loads the files tab I reinstalled to installed config both nginx and php7.0-fpm. I droped the nextclouddb from mysql and re-downloaded a fresh copy of nextcloud. Additionally I re-set Firefox with a new profile.

I just used the V12 Demo Instance and did not have any issues, although I do note that the contacts app is out of date.

You’ve an admin login for the instance, easy enough to update the app and validate :wink:

Ah yes good point! Gave it a go on the latest contacts app. It’s certainly something funky on my install, I’m tempted to frag it and start from scratch

Have you tried clearing your cache?

First thing I tried I’m afraid. I also see the same issue on a separate computer

Anything in your browser’s (Javascript) console? Anything in your nextcloud.log? Is the app directory out-of-tree?
Would you mind opening an issue on https://github.com/nextcloud/contacts/issues?

All I get in the Javascript console is:

JQMIGRATE: Migrate is installed, version 1.4.0  core.js:7:542
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help http://xhr.spec.whatwg.org/  core.js:4:14346

I’ll do a full rebuild from scratch, fresh OS install record every step. When I am convinced I haven’t done something royally stupid :stuck_out_tongue_winking_eye: I’ll open an issue on the repo

OK so I re-built my server from the ground up documenting every step. I think I might have done something wrong with my MiriaDB install, things suggested by mysqltuner. As that was the only thing I didn’t fully revert because I had forgotten I had even done it.

It’s all working perfectly now, thanks for the sugestions