
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
Custom CSS has been a popular workaround in Qlik Sense for years, helping developers tweak layouts, hide buttons, and get around styling limitations. But things are shifting. With the Multi-KPI object being deprecated and native styling options getting stronger with every release, it’s a good time to rethink how we approach custom styling in Qlik Sense moving forward.
In this post, we’ll break down:
- Why custom CSS is used in Qlik Sense
- What’s changing (and why Multi-KPI is being deprecated)
- Best practices for styling moving forward
- Alternatives for injecting CSS when needed
- What you can (and should) do now to future-proof your apps
Let’s dive in!
Why is custom CSS used in Qlik Sense?
In the past, Qlik’s built-in styling options were limited. That led to many developers using CSS to:
- Hide toolbars, buttons, and headers
- Apply custom fonts or background gradients
- Create grouped layouts or dashboards with unique branding
Most of this was made possible by either creating custom themes, building extensions, or using the Multi-KPI object as a helper to inject CSS code. But as powerful as these techniques were, they also came with downsides, like breakage after updates or difficulty governing app behavior at scale.
So, What’s Changing?
The biggest shift is the deprecation of the Multi-KPI object, which has served as a popular CSS injection tool. Here's what you need to know:
EOL of the Multi-KPI object is May 2026:
- Existing dashboards will still work for now, but migration is highly encouraged.
- The object is deprecated due to governance challenges and unintended side effects from injected CSS.
If you’ve been using the Multi-KPI as a styling workaround, it’s time to plan for alternatives.
Native Styling Has Come a Long Way
Before reaching for CSS, it's worth exploring what Qlik now offers natively. Many of the styling tweaks that once required CSS are now fully supported in the product UI.
Here’s a quick look at recent additions:
|
Native styling available now or coming in the next update |
Straight Table |
Background images, word wrap, mini charts, zebra striping, null styling, header toggle |
Pivot Table |
Indentation mode, expand/collapse, RTL support, cyclic dimensions |
Text Object |
Bullet lists, hover toggle, border control, support for up to 100 measures |
Line Chart |
Point and line annotations |
Scatter Plot |
Reference lines with slope, customizable outline color and width |
Layout Container |
Object resizing and custom tooltips |
Navigation Menu |
Sheet title expressions, left/right panel toggle, divider control |
And this list keeps growing. If you're building new apps or redesigning old ones, these built-in features will cover a huge percentage of use cases.
Many deprecated CSS tricks are now native. Check out the full Obsolete CSS Modifications post for examples and native replacements.
What About Themes?
Themes are not going anywhere. In fact, they remain the most robust and supported way to apply consistent styling across your app portfolio.
With custom themes, you can:
- Define global font families, sizes, and colors
- Style specific object types like bar charts, pie charts, list boxes, and even treemaps
- Customize titles, footers, legends, and more via the JSON schema
- Apply branding at scale without touching each sheet manually
You can still include CSS files in themes, but remember:
- Inline styles used by Qlik objects may require the use of "!important" to override.
- Themes are not ideal for object-ID-specific or user-interactive CSS injection.
If you're new to themes, Qlik.dev has a great guide to get started, or checkout my previous blog post for some tips and tricks.
Still Need Custom CSS? Here’s What You Can Do
If your use case goes beyond what native styling or themes can handle—like hiding a specific button, or styling based on object IDs—you still have a few options:
- Extensions (with scoped CSS)
Prefix styles with .qv-object-[extension-name] to isolate your rules.
Load styles using RequireJS or inject via <style> in JS.? - Mashups
Full control over styling via your own HTML + CSS + JavaScript.
Ideal for web apps embedding Qlik charts via qlik-embed
What's Missing
A lot of Qlik users have voiced the same thing: "we still need an officially supported way to inject CSS at the sheet or app level"
Some have suggested:
- A new “Advanced Styling” section in sheet properties.
- A standalone helper object just for advanced styling (like Multi-KPI but cleaner).
- Ability to define per-object-type styling rules in themes (e.g. “all straight tables”).
Qlik has acknowledged this feedback and hinted that future solutions are being considered.
What You Should Do Today
- Use native styling wherever possible—it's safer, easier to maintain, and now way more powerful
- Migrate away from Multi-KPI if you’ve been using it to inject CSS
- Explore themes for app-wide branding and consistent object styling
- Use extensions or mashups for truly custom experiences
- Follow community updates for new announcements around styling capabilities
That’s a wrap on this post. With more native styling features on the way, I’ll be keeping an eye out and will be likely sharing a follow-up as things evolve. If you're in the middle of refactoring or exploring new approaches, stay tuned, there’s more to come.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.