2024
DEVELOPMENT
AI
Tips
The future of document interactions: Voice-driven exchange with OpenAI’s Realtime API
Discover how OpenAI’s Realtime API with voice mode could transform document interactions. Simply navigate and access information with voice commands, setting the stage for the future of document workflows.
DEVELOPMENT
JavaScript
PDF Generation
Tips
PDF.js
PDF-lib
PDFKit
jsPDF
pdfmake
Puppeteer
Development
Top JavaScript PDF libraries for PDF generation and manipulation
The post compares leading JavaScript PDF libraries, such as PDF.js, PDF-lib, PDFKit, and Nutrient, highlighting their key features, use cases, and differences to help developers choose the best option for their projects.
DEVELOPMENT
Python
PDF Generation
Tips
Development
Top 10 Ways to Generate PDFs in Python
Explore 10 powerful methods for generating PDFs in Python, from open source libraries to premium solutions, to meet all your document creation needs.
DEVELOPMENT
HTML
JavaScript
Node
Tips
Development
Top 10 Ways to Convert HTML to PDF
Explore 10 effective methods for converting HTML to PDF, including open source options, as well as a premium choice.
DEVELOPMENT
iOS
Android
Room
Kotlin Multiplatform
Tips
Development
Seamless Room database integration for Kotlin Multiplatform projects
This blog post explores the process of integrating the Room database library into Kotlin Multiplatform projects with ease and efficiency.
DEVELOPMENT
iOS
Swift
Tips
Development
Privacy Manifests and Required Reason APIs on iOS
What privacy manifests and required reason APIs are, and the approach taken by PSPDFKit for adding support for these requirements.
2023
2022
2021
BLOG
iOS
Tips
Loading Images on iOS 15
We discuss the new iOS 15 APIs provided by UIKit for loading and displaying images and the SwiftUI APIs for loading an image from a remote URL.
DEVELOPMENT
Android
Kotlin
Tips
Development
Autosizing Fonts for Android EditTexts
Transfer Android's TextView autosizing capability to EditTexts
DEVELOPMENT
iOS
Swift
Tips
Development
Fitting Text into a Bounding Frame on iOS
How to use a binary search algorithm to precisely fit multiline text into a bounding frame on iOS.
DEVELOPMENT
Productivity
Tips
git
Development
How to Handle Stacked Pull Requests on GitHub
This blog post describes how to deal with dependent pull requests on GitHub, as well as the git concepts you need to master to understand them.
DEVELOPMENT
Web
JavaScript
Tips
Development
Practical Uses of Object URLs
Showcasing different applications of JavaScript object URLs in the browser.
DEVELOPMENT
iOS
Swift
Testing
Tips
Development
Swift Render Tests in Practice — Part III
How to automate regenerating and updating reference images for render tests.
DEVELOPMENT
iOS
Swift
Testing
Tips
Development
Swift Render Tests in Practice - Part II
How to improve test failures with attachments and grouping related test output.
DEVELOPMENT
iOS
Swift
Testing
Tips
Development
Swift Render Tests in Practice - Part I
How to pragmatically approach render testing for custom drawing code.
DEVELOPMENT
iOS
Swift
Tips
Debugging
Development
Debugging Image Loading and Cropping Performance on iOS
We talk about using the Image I/O and Core Graphics APIs to improve the image loading and cropping performance in the PSPDFKit iOS SDK.
DEVELOPMENT
PDF
Tips
Performance
Insights
Development
How a B-Tree Helped Reduce Memory Usage in Our Framework
This blog post describes the approach we took to save around 15 percent of memory in our framework by first identifying bottlenecks, and then changing one of our dictionary implementations to use a specialized data structure known as a B-tree.
DEVELOPMENT
Web
Tips
Debugging
Insights
Development
How to Identify Browser Bugs
Strategies to adopt for identifying browser bugs, and what to do after spotting one.
DEVELOPMENT
Web
Server
Elixir
Tips
Development
The Perils of Large Files in Elixir
A post about dealing with large files in Elixir applications.
DEVELOPMENT
iOS
Swift
Tips
Development
Streams of Cocoa: Why It's Still Worth Knowing NSStream
In this post, we'll look at a piece of API that many people rarely touch, if ever: Stream. It’s neither new nor shiny, but it's a powerful tool when you know how to use it.
DEVELOPMENT
C++
Tips
Insights
Development
String Literals, Character Encodings, and Multiplatform C++
How string literals are encoded by Clang and MSVC.
DEVELOPMENT
iOS
Swift
Tips
SwiftUI
UI/UX
Accessibility
Development
Keyboard Navigation in SwiftUI
SwiftUI wasn’t built with keyboard support in mind, and it shows. Learn how you can rewrite keyboardShortcut to work with iOS 13 and access the underlying navigation controller to pop views on ⌘-Left Arrow.
SOLUTIONS
iOS
macOS
Tips
PSPDFKit for Magazines
How to configure PSPDFKit for a magazine.
SOLUTIONS
iOS
macOS
Tips
PSPDFKit for Construction
How to configure PSPDFKit to display a building floorplan.
SOLUTIONS
iOS
macOS
Tips
PSPDFKit for E-Readers
How to configure PSPDFKit for an e-reader app.
SOLUTIONS
iOS
macOS
Tips
PSPDFKit for E-Learning
How PSPDFKit can be configured for taking and grading an e-learning exam.
DEVELOPMENT
iOS
Swift
SwiftUI
Tips
Development
Using the SwiftUI ColorPicker on iOS and macOS
While macOS has offered a system-provided color picker since OS X 10.0 Cheetah, iOS developers had to wait a bit longer. Let's take a closer look at the new ColorPicker (SwiftUI) and UIColorPickerViewController (UIKit) controls.
SOLUTIONS
iOS
macOS
Tips
PSPDFKit for Board Meetings
How PSPDFKit can be used to create or join a collaborative editing session for a board meeting.
SOLUTIONS
iOS
macOS
Tips
PSPDFKit for Aviation
How to configure PSPDFKit to display a flight manual and passenger list documents.
DEVELOPMENT
C++
Tips
Debugging
Development
Time Travel Debugging for C/C++
A quick look at reverse debugging/time travel debugging for C/C++.
2020
DEVELOPMENT
iOS
Swift
Tips
Development
Caching file downloads with URLCache in Swift
Apple has a sophisticated caching system in iOS, which is enabled by default. However, documentation around URLCache is quite sparse. Today, we'll look at the behavior of caching when dealing with large files.
DEVELOPMENT
Tips
Productivity
Development
Faster Compilation with Ccache 4.0
Ccache is a build cache to achieve faster compilation. With the 4.0 release, it now supports Modules, which makes it possible to accelerate projects that mix Objective-C and Swift.
DEVELOPMENT
iOS
Swift
Tips
SwiftUI
UI/UX
Development
Presenting popovers from SwiftUI
Is there a way to present UIKit popovers from toolbar buttons managed by SwiftUI?
DEVELOPMENT
Web
WebAssembly
Tips
Performance
Development
Migrating to the New Emscripten LLVM Backend
We share the experience of migrating from the old Fastcomp backend to the new LLVM backend in Emscripten.
DEVELOPMENT
Swift
Tips
Debugging
Development
An Introduction to LLDB Reproducers
An introduction to an experimental feature in LLDB, Reproducers, that helps reproduce bugs in the debugger itself.
DEVELOPMENT
Tips
Productivity
git
Development
A Better Way to Git Log to Understand Changes in a Big Codebase
How git log information may not be enough when developers need to understand changes in a codebase that has evolved over several years.
DEVELOPMENT
Web
JavaScript
TypeScript
Tips
Development
Generate TypeScript Declarations from a Flow Codebase
A short guide on how to generate TypeScript declarations from a Flow codebase.
DEVELOPMENT
iOS
Swift
Tips
UI/UX
Development
Level Up Your Trackpad Support Using UIInteraction
How to make your iOS app work well with scrolling, secondary clicking and dragging on a trackpad or mouse.
DEVELOPMENT
Android
Kotlin
Tips
Productivity
Development
Think First, Code Later
A case study on how we design features and APIs for PSPDFKit for Android.
DEVELOPMENT
C++
Tips
Productivity
Development
Best C++ IDEs of 2024
Discover the best C++ IDEs and text editors of 2024. Learn the pros and cons of each tool, from Visual Studio to Vim, and find the right fit for your development needs.
DEVELOPMENT
iOS
macOS
Tips
Performance
Xcode
Development
Automated Profiling Runs in Instruments
Learn how to automate measurement runs with Instruments.
DEVELOPMENT
C++
Tips
Performance
Development
How to Effectively Measure the Performance of Your Code
This blog post explains why software that performs well is important and how we measure code performance at PSPDFKit.
DEVELOPMENT
Android
Kotlin
Tips
Productivity
Testing
Development
How to Reduce Flakiness in Automated UI Testing on Android
This blog post discusses tips and best practices on how to reduce flakiness in automated UI testing on Android.
DEVELOPMENT
iOS
Objective-C
Tips
Development
Preventing Surprisingly Large Objective-C Type Encodings
Objective-C stores type encoding in the binary. These encodings can become surprisingly large.
INSIGHTS
Remote Work
Productivity
Tips
9 Tips to Help You Work Effectively from Home
This article describes some strategies first-time remote workers should follow to get the most out of working from home. This is part two of four of our remote work series.
DEVELOPMENT
iOS
Swift
Tips
UI/UX
Insights
Development
Supporting Pointer Interactions
Apple introduced new pointer events in iOS 13.4 to better support trackpad and mouse devices.
INSIGHTS
Culture
Remote Work
Productivity
Tips
Remote Work: How to Overcome Common Struggles of Working from Home
This article describes some struggles first-time remote workers may face and provides some strategies to help overcome them. This is part one of four of our remote work series.
DEVELOPMENT
C++
Tips
Productivity
Development
Effective Header Management in C++
How we can reduce build times and clean up our header dependencies with effective header management.
DEVELOPMENT
Android
Kotlin
Tips
UI/UX
Development
Change Android Themes Instantly Using the Circular Reveal Animation
This blog post investigates how to achieve nice animations when changing themes.
DEVELOPMENT
PDF
Tips
Insights
Development
Optimizing PDF File Size
When editing PDFs, they often grow in size, but that doesn't have to be the case. Here's how we optionally optimize for size.
DEVELOPMENT
C++
Tips
Testing
Development
Our Approach to Testing a Large-Scale C++ Codebase
This blog post outlines the frameworks and techniques PSPDFKit uses to test its large-scale C++ codebase.
DEVELOPMENT
C++
Tips
Performance
Development
Investigating the performance overhead of C++ exceptions
C++ exceptions have their place, but using an alternative is recommended for general program flow control.
DEVELOPMENT
C++
Tips
Performance
Development
Compiler-Based Lock Checking in C++
A short introduction to compiler-based lock checking in C++ with Clang using Thread Safety Analysis
DEVELOPMENT
Tips
Productivity
git
Development
Moving a Git Repository into Its Submodule
How we improved our Git repository setup by moving our PDF Viewer for iOS repository into our PSPDFKit repository.
DEVELOPMENT
iOS
Swift
Objective-C
Tips
UI/UX
Development
Adopting UIAppearance in Custom Views
Learn how to support styling your own custom views using UIAppearance.
2019
INSIGHTS
Culture
Insights
Tips
From zero to hero: How I got a full-time job in tech
A political scientist turned web engineer describes her journey of transformation. She also reveals a few aspects that can make or break an internship in tech (and in general).
DEVELOPMENT
iOS
Tips
UI/UX
Development
Open Links in Safari, Not Safari View Controller
Why we changed our default for opening web links from SFSafariViewController to the Safari app.
DEVELOPMENT
Android
Kotlin
Tips
Accessibility
Insights
Development
How We Improved Keyboard Navigation Accessibility in Our Android SDK
A look at the steps we took to start improving the accessibility of our Android SDK.
DEVELOPMENT
C++
Python
Tips
Development
Making C++ Talk to Other Languages with SWIG
Using SWIG to generate interfaces to talk to a C++ backend.
DEVELOPMENT
Web
Docker
Containers
Tips
Development
A beginner's guide to Docker: Import/export vs. load/save commands
A blog post that explains the difference between the Docker import/export and load/save commands.
DEVELOPMENT
Android
Tips
Development
The Android Drag-and-Drop Framework in Practice
Using the Android drag-and-drop framework — from theory to implementation.
DEVELOPMENT
Android
Tips
Development
Dealing with Large Memory Requirements on Android
This article provides tips for optimizing memory usage of your apps.
DEVELOPMENT
Android
Kotlin
Tips
Development
How Do I Fix NetworkOnMainThreadException?
A post detailing what NetworkOnMainThreadException is and how to prevent it.
DEVELOPMENT
Android
Java
Tips
Development
Performance Evaluation of Linked Lists
Today we'll delve into the performance evaluation of linked lists, a controversial topic among many experienced developers, and try to understand why they trigger a warning in the Error Prone report.
DEVELOPMENT
Windows
Tips
Development
How to Await an Async Event Handler Delegate in UWP
Asynchronous programming is hard, and the WinRT interface poses further issues. Learn how to implement a deferral to wait on a user action before completing additional work.
DEVELOPMENT
Web
JavaScript
Tips
Development
Smoother Interactions on the Web: getCoalescedEvents()
How to use the getCoalescedEvents() method of the PointerEvent API to improve the precision of drawing apps or of any web application.
DEVELOPMENT
iOS
Swift
Tips
Development
Making a Resource Thread-Safe with Locks
We discuss how to ensure thread safety and synchronization via locking.
DEVELOPMENT
C++
Tips
Debugging
Development
When C++ Doesn't Move
C++ move semantics make your code more efficient, but sometimes a move is not performed. In this blog post, we explore why.
DEVELOPMENT
Android
Tips
Development
The Soft Keyboard on Android
Tips for working with the soft keyboard on Android.
DEVELOPMENT
iOS
Swift
Tips
Development
Swizzling in Swift
A quick crash course on how to swizzle correctly, and how to do it in Swift 5.1
DEVELOPMENT
iOS
Swift
PDF
Tips
Development
Working with PDF Metadata in Swift
How and what metadata can be stored in a PDF, and how to programmatically work with this information.
DEVELOPMENT
Android
Kotlin
Tips
Development
Retaining Objects Using a Fragment
An overview of how to use a fragment to retain objects during a configuration change.
DEVELOPMENT
Android
Java
Tips
Insights
Development
Problems with Nullability Annotations
A look at some issues with Android's nullability annotations and how to fix them.
DEVELOPMENT
macOS
Tips
Insights
Development
How Xcode Indexing Works and How You Can Fix IDE Problems with Your Projects
This post provides an overview of how the code assistance feature in Xcode works and how you can debug code assistance problems in your projects.
DEVELOPMENT
Android
Tips
Development
Understanding Android Dimensions
A post about existing Android dimensions, their purpose, and common conversion rules.
DEVELOPMENT
Windows
UWP
C#
C++
Tips
Development
How to Use Native C++ in UWP
How to include native C++ in your UWP app and call into it from C#.
DEVELOPMENT
Android
Tips
Development
How to Use Android App Bundles
This blog post explains what Android App Bundles are and how to upload them to Google Play.
DEVELOPMENT
Tips
Development
The Many Benefits of Using a Monorepo
A monorepo? Isn't that just a weird Facebook and Google thing? Why is PSPDFKit using a monorepo?
DEVELOPMENT
Android
Java
Tips
Development
Handling Nullability in Your Code
A brief excursion into the Java type system, nullability, and remedies for the billion-dollar mistake.
DEVELOPMENT
Android
Kotlin
Tips
Jetpack Compose
Development
Using ViewModels to Retain State on Android
How to use Android's ViewModel class to retain complex objects across configuration changes.
DEVELOPMENT
iOS
Swift
Tips
Debugging
Development
Adding Logging to Crash Reports
Understanding crash reports is often difficult without extra context. Learn how we attach application logs to crash reports via Google's Firebase Crashlytics in the free PDF Viewer for iOS app.
DEVELOPMENT
Android
Tips
Development
What are configuration changes in Android?
An overview of configuration changes on Android, including best practices for modern development.
DEVELOPMENT
Productivity
Tips
Development
How Spaced Repetition Helps You Learn New Things
We present spaced repetition as a learning technique that can help you be more efficient at work.
DEVELOPMENT
Android
iOS
Windows
PDF
Tips
Insights
Development
Incremental and Full Save in PDFs
This article goes into what's involved when incrementally or fully saving a PDF, and why it matters.
DEVELOPMENT
Android
Kotlin
Tips
Instant
Development
How to Test REST API Clients in Android Apps
This article shows how we built simple and flexible integration tests for PSPDFKit Instant that are using a custom abstraction layer on top of an OkHttp mocked web server.
DEVELOPMENT
Tips
Development
What Is Ninja Refactoring, and When Should You Consider Doing It?
Tips and best practices for code refactoring.
DEVELOPMENT
Android
Java
Tips
Development
Saving the Activity State
An overview of how to make sure your activity state is saved.
DEVELOPMENT
iOS
macOS
Swift
Objective-C
Tips
Development
Writing and Maintaining Good Code Documentation
Tips, tricks, and techniques for documenting your code the correct way.
DEVELOPMENT
Android
Kotlin
Tips
Development
Using the Bottom Navigation View in Android
An introduction to implementing bottom navigation in your app with a simple example that incorporates synced page switching as well.
DEVELOPMENT
C++
Tips
Insights
Development
Visual Studio Code for C++
How to use Visual Studio Code for C++ development.
DEVELOPMENT
Android
Tips
Debugging
Development
Inspecting APK Files
This article discusses the basics of Android reverse engineering using the Apktool, smali, and Java decompilers.
2018
DEVELOPMENT
Android
Tips
Development
How to Increase the Logcat Buffer Size
Don't lose your logs. Increase your logcat buffer!
PRODUCTS
Cordova
Electron
Flutter
React Native
Xamarin
Tips
Supporting Hybrid Technologies
We support all major hybrid technologies, including Cordova, Electron, Flutter, Ionic, React Native, and Xamarin.
DEVELOPMENT
iOS
Swift
C++
Open Source
Tips
Development
Tips and Tricks for Contributing to the Swift Language
This post describes the process for contributing code to the Swift programming language, including how to propose changes to the language, write a pull request, address feedback, and make your code part of the next version of the language.
DEVELOPMENT
iOS
Tips
Development
Creating an Efficient App Store Screenshot Workflow
A look at how we generate our screenshots for the iOS App Store.
DEVELOPMENT
Android
Tips
Development
Using paths to draw shapes with borders
How to use a flexible path API to draw complex shapes with borders.
DEVELOPMENT
Tips
Development
Running multiple instances of a service with Docker Compose
Learn how to efficiently run multiple instances of a service using Docker Compose. This guide covers configuration examples, load balancing with NGINX, and best practices for local development.
DEVELOPMENT
iOS
Tips
Development
Refactoring Large Codebases: Tips and Tricks
If you're going to fall down a rabbit hole anyway, you might as well enjoy it!
DEVELOPMENT
iOS
Tips
Development
Improving Dynamic Type Support
How to improve Dynamic Type support in your app and bring it to the next level.
DEVELOPMENT
iOS
Debugging
Tips
Development
How to Extend LLDB to Provide a Better Debugging Experience
Explore the extensibility capabilities of LLDB, a debugger for Swift, C, C++, and Objective-C code.
PRODUCTS
iOS
Android
Web
Tips
Examples for Using Our Frameworks
Here at PSPDFKit, we believe doing practical work is the best way to learn things, so we decided to create a few example apps to help customers explore our framework.
DEVELOPMENT
Tips
Development
Naming Is Hard — Difficulties of Naming Variables
Is naming a variable so hard? According to Martin Fowler, it is. In this blog post, I'll try to shed some light on what naming entails and why it's a challenge.
DEVELOPMENT
Tips
Development
Naming Classes — Why It Matters, and How to Do It Well
Tips for choosing good class names.
DEVELOPMENT
Elixir
Tips
Development
How to Parse XML Documents in Elixir
A tutorial on how to parse XML documents in Elixir.
DEVELOPMENT
UWP
Windows
Tips
Development
Debugging WebView in UWP Apps with Edge DevTools
We show how a developer can use Edge DevTools to debug a WebView in a UWP app.
DEVELOPMENT
Android
RxJava
Kotlin
Tips
Development
RxJava for Multi-Level Data Retrieval
RxJava can be useful for many things, and in this post, we’ll have a look at how to use it to add offline support to your app.
DEVELOPMENT
Elixir
Tips
Development
Database Transactions with Ecto
How to use database transactions and Ecto.Multi in Elixir
DEVELOPMENT
Web
Tips
Development
Immutable.js and Lazy Evaluation
A short introduction to Immutable.js and how lazy operations improve performance and readability of your code.
DEVELOPMENT
Tips
Development
Modern CMake Tips
There are better ways to write CMake scripts.
DEVELOPMENT
Elixir
Tips
Development
How to Build a Back-Pressure Queuing System in Elixir with sbroker
Tutorial on how to set up a back-pressure queuing system in Elixir with sbroker.
DEVELOPMENT
Web
JavaScript
Tips
Development
An Introduction to Stimulus.js
In this article, we'll look at the Stimulus JavaScript framework and how it can help bring some order to a website's frontend codebase.
DEVELOPMENT
Android
Kotlin
Tips
Development
Moving Your Gradle Build Scripts to Kotlin
Another take on writing your project's Gradle build files in pure Kotlin code.
INSIGHTS
Culture
Remote Work
Tips
How to Use Slack and Not Go Bananas
Slack is both amazing and awful. At a time when many companies quit Slack, we refined our processes to make it work well for us.
DEVELOPMENT
Android
Tips
Development
Tips for Designing an Android Library
We take a look at some of the things you should keep in mind when designing an Android library.
DEVELOPMENT
Android
Java
Kotlin
Tips
Development
Async Stacktraces in Android Studio
How to create asynchronous stacktraces in Android Studio and IntelliJ.
DEVELOPMENT
Tips
Development
How to Manage Multiple System Configurations Using Docker Compose
This blog post is a short introduction to Docker Compose and will explain how we use it to manage different system configurations that are built off the same base configuration.
DEVELOPMENT
Android
Tips
Development
Hints for Beginners Navigating Around New Code
We share some tips on how to navigate a new codebase.
DEVELOPMENT
Tips
Development
Using webpack with Middleman
We explain how to integrate Middleman and webpack to boost your frontend productivity.
DEVELOPMENT
iOS
Tips
Development
Leveraging SQLite Full-Text Search on iOS
We look at SQLite’s FTS extension and how you can use it to add high performance search to your app.
DEVELOPMENT
PDF
Tips
Forms
Development
Forms in PDF
Forms provide a simple yet flexible way to gather data from users.
TUTORIALS
Web
WebAssembly
Tips
PDF Viewer
Deploy a WebAssembly-Based PDF Viewer to the Cloud with One Command
In this blog post, we show how easy it is to deploy our standalone, WebAssembly-powered version of PSPDFKit for Web to ZEIT’s now.sh, a cloud provider.
DEVELOPMENT
Elixir
Tips
Development
How to Run Your Phoenix Application with Docker
We’re taking a look at how to run Elixir applications within a Docker container, and how that can simplify the setup of development and deployment environments.
DEVELOPMENT
Android
Productivity
Tips
Development
Android Studio Shortcuts: How to Boost Your Productivity
The best shortcuts for Android Studio. The most famous and the most underrated.
2017
2016
DEVELOPMENT
iOS
Tips
Development
Hiding Your Action and Share Extensions In Your Own Apps
DEVELOPMENT
Android
Kotlin
Java
Tips
Development
A clean status bar with Android System UI and QuickDemo
How to enable Android's demo mode using a quick setting tile
DEVELOPMENT
Android
Kotlin
RxJava
Tips
Development
Android animations powered by RxJava
The purpose of this post is to show you how to combine RxJava features with animations on Android to create a great user interface without a lot of nested code.
DEVELOPMENT
iOS
Debugging
Tips
Development
Debugging a specific instance with scripted breakpoints
When debugging an issue that is somewhere deep inside your code, you easily end up debugging a class that has lots of living instances. Sometimes, you are only interested in a very particular one. This can become very tedious work.
INSIGHTS
Culture
Remote Work
Tips
Hiring a distributed team
Who you hire can have a dramatic effect on your team’s culture, company’s productivity and, overall, is the most influential factor in determining the success or failure of a company. Over the past six years at PSPDFKit, we’ve slowly learned what’s important, what works, and what doesn’t work, at least for us.
DEVELOPMENT
iOS
Debugging
Tips
Development
Writing Good Bug Reports
At PSPDFKit, we work every day to read through developers' bug reports. In fact, we forward many of them to the engineers at Apple. While this post is Apple-centric, many details can be applied to any sort of bug reporting.
DEVELOPMENT
iOS
Objective-C
Tips
UI/UX
Development
Spicing up status messages
At PSPDFKit, we likely spend just as much time polishing the UI as we do implementing PDF features or tweaking the performance. Here's a look at how one of our developers explored improving our status messages.
DEVELOPMENT
iOS
Tips
Development
Preventing Popovers on Popovers
DEVELOPMENT
iOS
Tips
Development
Efficient iOS Version Checking
DEVELOPMENT
Testing
Tips
Development
Selective Pull Request Testing
DEVELOPMENT
Android
Java
UI/UX
Tips
Development
Keyboard Handling on Android
DEVELOPMENT
iOS
Tips
Development
Adding live search to Jazzy docs
DEVELOPMENT
iOS
Tips
Debugging
Development
Debugging Rotation Issues
Discover how we resolved a freezing issue in our Document Editor app after rotation, ensuring smooth user interaction and event handling.